From 671bcbe6d6009e0a0bcb794cae8a82153df5eb74 Mon Sep 17 00:00:00 2001 From: Kevin Moore Date: Thu, 27 Feb 2025 12:46:01 -0600 Subject: [PATCH] [web_ui] move several uses of (deprecated) pkg:js to js_interop_unsafe (#164264) --- .../lib/src/engine/js_interop/js_loader.dart | 4 ++-- .../does_not_mock_module_exports_test.dart | 9 +++++--- .../initialization/stores_config_test.dart | 19 ++++++++------- .../test/engine/initialization_test.dart | 23 ++++++++++--------- 4 files changed, 31 insertions(+), 24 deletions(-) diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/js_interop/js_loader.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/js_interop/js_loader.dart index a0755a8e73..43b40d388e 100644 --- a/engine/src/flutter/lib/web_ui/lib/src/engine/js_interop/js_loader.dart +++ b/engine/src/flutter/lib/web_ui/lib/src/engine/js_interop/js_loader.dart @@ -6,8 +6,8 @@ library js_loader; import 'dart:js_interop'; +import 'dart:js_interop_unsafe'; -import 'package:js/js_util.dart' as js_util; import 'package:ui/src/engine.dart'; @JS() @@ -29,7 +29,7 @@ class FlutterLoader {} extension FlutterLoaderExtension on FlutterLoader { external void didCreateEngineInitializer(FlutterEngineInitializer initializer); - bool get isAutoStart => !js_util.hasProperty(this, 'didCreateEngineInitializer'); + bool get isAutoStart => !(this as JSObject).has('didCreateEngineInitializer'); } /// Typedef for the function that initializes the flutter engine. diff --git a/engine/src/flutter/lib/web_ui/test/canvaskit/initialization/does_not_mock_module_exports_test.dart b/engine/src/flutter/lib/web_ui/test/canvaskit/initialization/does_not_mock_module_exports_test.dart index 96e0c8a6d1..1ab657b504 100644 --- a/engine/src/flutter/lib/web_ui/test/canvaskit/initialization/does_not_mock_module_exports_test.dart +++ b/engine/src/flutter/lib/web_ui/test/canvaskit/initialization/does_not_mock_module_exports_test.dart @@ -1,7 +1,10 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'package:js/js_util.dart' as js_util; + +import 'dart:js_interop'; +import 'dart:js_interop_unsafe'; + import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; import 'package:ui/src/engine.dart'; @@ -20,12 +23,12 @@ void testMain() { // window.exports and window.module should be undefined! expect( - js_util.hasProperty(domWindow, 'exports'), + (domWindow as JSObject).has('exports'), isFalse, reason: '`window.exports` should not be defined.', ); expect( - js_util.hasProperty(domWindow, 'module'), + (domWindow as JSObject).has('module'), isFalse, reason: '`window.module` should not be defined.', ); diff --git a/engine/src/flutter/lib/web_ui/test/canvaskit/initialization/stores_config_test.dart b/engine/src/flutter/lib/web_ui/test/canvaskit/initialization/stores_config_test.dart index 1955f8009b..57248ac262 100644 --- a/engine/src/flutter/lib/web_ui/test/canvaskit/initialization/stores_config_test.dart +++ b/engine/src/flutter/lib/web_ui/test/canvaskit/initialization/stores_config_test.dart @@ -2,7 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'package:js/js_util.dart' as js_util; +import 'dart:js_interop'; +import 'dart:js_interop_unsafe'; + import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; import 'package:ui/src/engine.dart'; @@ -15,15 +17,16 @@ void testMain() { group('initializeEngineServices', () { test('stores user configuration', () async { final JsFlutterConfiguration config = JsFlutterConfiguration(); - // `canvasKitBaseUrl` is required for the test to actually run. - js_util.setProperty(config, 'canvasKitBaseUrl', '/canvaskit/'); - // A property under test, that we'll try to read later. - js_util.setProperty(config, 'nonce', 'some_nonce'); - // A non-existing property to verify our js-interop doesn't crash. - js_util.setProperty(config, 'nonexistentProperty', 32.0); + (config as JSObject) + // `canvasKitBaseUrl` is required for the test to actually run. + ..['canvasKitBaseUrl'] = '/canvaskit/'.toJS + // A property under test, that we'll try to read later. + ..['nonce'] = 'some_nonce'.toJS + // A non-existing property to verify our js-interop doesn't crash. + ..['nonexistentProperty'] = 32.0.toJS; // Remove window.flutterConfiguration (if it's there) - js_util.setProperty(domWindow, 'flutterConfiguration', null); + (domWindow as JSObject)['flutterConfiguration'] = null; // TODO(web): Replace the above nullification by the following assertion // when wasm and JS tests initialize their config the same way: diff --git a/engine/src/flutter/lib/web_ui/test/engine/initialization_test.dart b/engine/src/flutter/lib/web_ui/test/engine/initialization_test.dart index 60c9158571..8c591cff3e 100644 --- a/engine/src/flutter/lib/web_ui/test/engine/initialization_test.dart +++ b/engine/src/flutter/lib/web_ui/test/engine/initialization_test.dart @@ -3,8 +3,8 @@ // found in the LICENSE file. import 'dart:js_interop'; +import 'dart:js_interop_unsafe'; -import 'package:js/js_util.dart' as js_util; import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; import 'package:ui/src/engine.dart' as engine; @@ -20,14 +20,15 @@ external set didCreateEngineInitializer(JSFunction? callback); void main() { // Prepare _flutter.loader.didCreateEngineInitializer, so it's ready in the page ASAP. - loader = js_util.jsify({ - 'loader': { - 'didCreateEngineInitializer': - () { - print('not mocked'); - }.toJS, - }, - }); + loader = + { + 'loader': { + 'didCreateEngineInitializer': + () { + print('not mocked'); + }.toJS, + }, + }.jsify(); internalBootstrapBrowserTest(() => testMain); } @@ -52,12 +53,12 @@ void testMain() { // Check that the object we captured is actually a loader expect(engineInitializer, isNotNull); expect( - js_util.hasProperty(engineInitializer!, 'initializeEngine'), + (engineInitializer! as JSObject).has('initializeEngine'), isTrue, reason: 'Missing FlutterEngineInitializer method: initializeEngine.', ); expect( - js_util.hasProperty(engineInitializer!, 'autoStart'), + (engineInitializer! as JSObject).has('autoStart'), isTrue, reason: 'Missing FlutterEngineInitializer method: autoStart.', );