Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 86f663d

Browse files
committed
Addresses PR comments.
1 parent f6b1aae commit 86f663d

File tree

2 files changed

+45
-37
lines changed

2 files changed

+45
-37
lines changed

lib/web_ui/lib/src/engine/configuration.dart

Lines changed: 40 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -15,28 +15,27 @@
1515
///
1616
/// Both methods are **disallowed** to be used at the same time.
1717
///
18-
/// Example (Before):
19-
///
20-
/// <head>
21-
/// <script>
22-
/// window.flutterConfiguration = {
23-
/// canvasKitBaseUrl: "https://example.com/my-custom-canvaskit/"
24-
/// };
25-
/// </script>
26-
/// </head>
27-
///
28-
/// Example (After):
18+
/// Example:
2919
///
3020
/// _flutter.loader.loadEntrypoint({
3121
/// // ...
3222
/// onEntrypointLoaded: async function(engineInitializer) {
3323
/// let appRunner = await engineInitializer.initializeEngine({
34-
/// canvasKitBaseUrl: "https://example.com/my-custom-canvaskit/"
24+
/// // JsFlutterConfiguration goes here...
25+
/// canvasKitBaseUrl: "https://example.com/my-custom-canvaskit/",
3526
/// });
3627
/// appRunner.runApp();
3728
/// }
3829
/// });
3930
///
31+
/// Example of the **deprecated** style (this will issue a JS console warning!):
32+
///
33+
/// <script>
34+
/// window.flutterConfiguration = {
35+
/// canvasKitBaseUrl: "https://example.com/my-custom-canvaskit/"
36+
/// };
37+
/// </script>
38+
///
4039
/// Configuration properties supplied via this object override those supplied
4140
/// using the corresponding environment variables. For example, if both the
4241
/// `canvasKitBaseUrl` config entry and the `FLUTTER_WEB_CANVASKIT_URL`
@@ -55,7 +54,8 @@ import 'dom.dart';
5554
const String _canvaskitVersion = '0.37.0';
5655

5756
/// The Web Engine configuration for the current application.
58-
FlutterConfiguration get configuration => _configuration ??= FlutterConfiguration.fromJsGlobals(_jsConfiguration);
57+
FlutterConfiguration get configuration =>
58+
_configuration ??= FlutterConfiguration.legacy(_jsConfiguration);
5959
FlutterConfiguration? _configuration;
6060

6161
/// Sets the given configuration as the current one.
@@ -76,23 +76,30 @@ class FlutterConfiguration {
7676

7777
/// Constucts a "tainted by JS globals" configuration object.
7878
///
79-
/// This is deprecated, and warns the user about the new API.
80-
FlutterConfiguration.fromJsGlobals(JsFlutterConfiguration? config) {
79+
/// This configuration style is deprecated. It will warn the user about the
80+
/// new API (if used)
81+
FlutterConfiguration.legacy(JsFlutterConfiguration? config) {
8182
if (config != null) {
82-
domWindow.console.warn('window.flutterConfiguration is now deprecated.\n'
83-
'Use engineInitializer.initializeEngine(config) instead.\n'
84-
'See: https://docs.flutter.dev/development/platform-integration/web/initialization');
85-
_createdFromJsGlobals = true;
83+
_usedLegacyConfigStyle = true;
8684
_configuration = config;
8785
}
88-
if (_requestedRendererType != null) {
89-
domWindow.console.warn('window.flutterWebRenderer is now deprecated.\n'
90-
'Use engineInitializer.initializeEngine(config) instead.\n'
91-
'See: https://docs.flutter.dev/development/platform-integration/web/initialization');
92-
}
86+
// Warn the user of the deprecated behavior.
87+
assert(() {
88+
if (config != null) {
89+
domWindow.console.warn('window.flutterConfiguration is now deprecated.\n'
90+
'Use engineInitializer.initializeEngine(config) instead.\n'
91+
'See: https://docs.flutter.dev/development/platform-integration/web/initialization');
92+
}
93+
if (_requestedRendererType != null) {
94+
domWindow.console.warn('window.flutterWebRenderer is now deprecated.\n'
95+
'Use engineInitializer.initializeEngine(config) instead.\n'
96+
'See: https://docs.flutter.dev/development/platform-integration/web/initialization');
97+
}
98+
return true;
99+
}());
93100
}
94101

95-
bool _createdFromJsGlobals = false;
102+
bool _usedLegacyConfigStyle = false;
96103
JsFlutterConfiguration? _configuration;
97104

98105
/// Sets a value for [_configuration].
@@ -101,17 +108,18 @@ class FlutterConfiguration {
101108
/// [initEngineServices] method.
102109
///
103110
/// This method throws an AssertionError, if the _configuration object has
104-
/// been set to anything non-null through the [FlutterConfiguration.fromJsGlobals]
111+
/// been set to anything non-null through the [FlutterConfiguration.legacy]
105112
/// constructor.
106113
void setUserConfiguration(JsFlutterConfiguration? configuration) {
107114
if (configuration != null) {
108-
assert(!_createdFromJsGlobals, 'Do not mix-and-match configuration styles. '
109-
'Use engineInitializer.initializeEngine(config) instead of '
110-
'window.flutterConfiguration.');
115+
assert(!_usedLegacyConfigStyle,
116+
'Use engineInitializer.initializeEngine(config) only. '
117+
'Using the (deprecated) window.flutterConfiguration and initializeEngine '
118+
'configuration simultaneously is not supported.');
111119
assert(_requestedRendererType == null || configuration.renderer == null,
112-
'Do not mix-and-match configuration styles. '
113-
'Use engineInitializer.initializeEngine(config) instead of '
114-
'window.flutterWebRenderer.');
120+
'Use engineInitializer.initializeEngine(config) only. '
121+
'Using the (deprecated) window.flutterWebRenderer and initializeEngine '
122+
'configuration simultaneously is not supported.');
115123
_configuration = configuration;
116124
}
117125
}

lib/web_ui/test/engine/configuration_test.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@ void main() {
1919
void testMain() {
2020
group('FlutterConfiguration', () {
2121
test('initializes with null', () async {
22-
final FlutterConfiguration config = FlutterConfiguration.fromJsGlobals(null);
22+
final FlutterConfiguration config = FlutterConfiguration.legacy(null);
2323

2424
expect(config.canvasKitMaximumSurfaces, 8); // _defaultCanvasKitMaximumSurfaces
2525
});
2626

27-
test('fromJsGlobals initializes with a Js Object', () async {
28-
final FlutterConfiguration config = FlutterConfiguration.fromJsGlobals(
27+
test('legacy constructor initializes with a Js Object', () async {
28+
final FlutterConfiguration config = FlutterConfiguration.legacy(
2929
js_util.jsify(<String, Object?>{
3030
'canvasKitMaximumSurfaces': 16,
3131
}) as JsFlutterConfiguration);
@@ -36,7 +36,7 @@ void testMain() {
3636

3737
group('setUserConfiguration', () {
3838
test('throws assertion error if already initialized from JS', () async {
39-
final FlutterConfiguration config = FlutterConfiguration.fromJsGlobals(
39+
final FlutterConfiguration config = FlutterConfiguration.legacy(
4040
js_util.jsify(<String, Object?>{
4141
'canvasKitMaximumSurfaces': 12,
4242
}) as JsFlutterConfiguration);
@@ -50,7 +50,7 @@ void testMain() {
5050
});
5151

5252
test('stores config if JS configuration was null', () async {
53-
final FlutterConfiguration config = FlutterConfiguration.fromJsGlobals(null);
53+
final FlutterConfiguration config = FlutterConfiguration.legacy(null);
5454

5555
config.setUserConfiguration(
5656
js_util.jsify(<String, Object?>{

0 commit comments

Comments
 (0)