mirror of
https://github.com/flutter/flutter
synced 2024-09-13 05:11:45 +00:00
[web] Migrate web-only initialization APIs (#129856)
- `ui_web.warmupEngine` - `ui_web.setPluginHandler` - `ui_web.debugEmulateFlutterTesterEnvironment`
This commit is contained in:
parent
157660afc1
commit
87d5214da6
|
@ -2,7 +2,7 @@
|
|||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'dart:ui' as ui;
|
||||
import 'dart:ui_web' as ui_web;
|
||||
|
||||
import '../services/dom.dart';
|
||||
|
||||
|
@ -23,9 +23,7 @@ platform.TargetPlatform get defaultTargetPlatform {
|
|||
final platform.TargetPlatform? _testPlatform = () {
|
||||
platform.TargetPlatform? result;
|
||||
assert(() {
|
||||
// This member is only available in the web's dart:ui implementation.
|
||||
// ignore: undefined_prefixed_name
|
||||
if (ui.debugEmulateFlutterTesterEnvironment as bool) {
|
||||
if (ui_web.debugEmulateFlutterTesterEnvironment) {
|
||||
result = platform.TargetPlatform.android;
|
||||
}
|
||||
return true;
|
||||
|
|
|
@ -219,6 +219,7 @@ String generateTestEntrypoint({
|
|||
// @dart = ${languageVersion.major}.${languageVersion.minor}
|
||||
import 'org-dartlang-app:///$relativeTestPath' as test;
|
||||
import 'dart:ui' as ui;
|
||||
import 'dart:ui_web' as ui_web;
|
||||
import 'dart:html';
|
||||
import 'dart:js';
|
||||
${testConfigPath != null ? "import '${Uri.file(testConfigPath)}' as test_config;" : ""}
|
||||
|
@ -227,7 +228,7 @@ String generateTestEntrypoint({
|
|||
import 'package:test_api/backend.dart';
|
||||
|
||||
Future<void> main() async {
|
||||
ui.debugEmulateFlutterTesterEnvironment = true;
|
||||
ui_web.debugEmulateFlutterTesterEnvironment = true;
|
||||
await ui.webOnlyInitializePlatform();
|
||||
webGoldenComparator = DefaultWebGoldenComparator(Uri.parse('${Uri.file(absolutePath)}'));
|
||||
(ui.window as dynamic).debugOverrideDevicePixelRatio(3.0);
|
||||
|
|
|
@ -19,7 +19,7 @@ String generateMainDartFile(String appEntrypoint, {
|
|||
'',
|
||||
'// ignore_for_file: type=lint',
|
||||
'',
|
||||
"import 'dart:ui' as ui;",
|
||||
"import 'dart:ui_web' as ui_web;",
|
||||
"import 'dart:async';",
|
||||
'',
|
||||
"import '$appEntrypoint' as entrypoint;",
|
||||
|
@ -29,7 +29,7 @@ String generateMainDartFile(String appEntrypoint, {
|
|||
'typedef _NullaryFunction = dynamic Function();',
|
||||
'',
|
||||
'Future<void> main() async {',
|
||||
' await ui.webOnlyWarmupEngine(',
|
||||
' await ui_web.bootstrapEngine(',
|
||||
' runApp: () {',
|
||||
' if (entrypoint.main is _UnaryFunction) {',
|
||||
' return (entrypoint.main as _UnaryFunction)(<String>[]);',
|
||||
|
|
|
@ -118,7 +118,7 @@ void main() {
|
|||
expect(generated, contains("import 'package:foo/main.dart' as entrypoint;"));
|
||||
|
||||
// Main
|
||||
expect(generated, contains('ui.webOnlyWarmupEngine('));
|
||||
expect(generated, contains('ui_web.bootstrapEngine('));
|
||||
expect(generated, contains('entrypoint.main as _'));
|
||||
}, overrides: <Type, Generator>{
|
||||
TemplateRenderer: () => const MustacheTemplateRenderer(),
|
||||
|
@ -270,7 +270,7 @@ void main() {
|
|||
expect(generated, contains("import 'package:foo/main.dart' as entrypoint;"));
|
||||
|
||||
// Main
|
||||
expect(generated, contains('ui.webOnlyWarmupEngine('));
|
||||
expect(generated, contains('ui_web.bootstrapEngine('));
|
||||
expect(generated, contains('entrypoint.main as _'));
|
||||
}, overrides: <Type, Generator>{
|
||||
Platform: () => windows,
|
||||
|
@ -295,7 +295,7 @@ void main() {
|
|||
expect(generated, contains("import 'package:foo/main.dart' as entrypoint;"));
|
||||
|
||||
// Main
|
||||
expect(generated, contains('ui.webOnlyWarmupEngine('));
|
||||
expect(generated, contains('ui_web.bootstrapEngine('));
|
||||
expect(generated, contains('entrypoint.main as _'));
|
||||
}, overrides: <Type, Generator>{
|
||||
TemplateRenderer: () => const MustacheTemplateRenderer(),
|
||||
|
@ -351,7 +351,7 @@ void main() {
|
|||
expect(generated, contains("import 'package:foo/main.dart' as entrypoint;"));
|
||||
|
||||
// Main
|
||||
expect(generated, contains('ui.webOnlyWarmupEngine('));
|
||||
expect(generated, contains('ui_web.bootstrapEngine('));
|
||||
expect(generated, contains('entrypoint.main as _'));
|
||||
}, overrides: <Type, Generator>{
|
||||
TemplateRenderer: () => const MustacheTemplateRenderer(),
|
||||
|
|
|
@ -730,8 +730,8 @@ void main() {
|
|||
final String entrypointContents =
|
||||
fileSystem.file(webDevFS.mainUri).readAsStringSync();
|
||||
expect(entrypointContents, contains('// Flutter web bootstrap script'));
|
||||
expect(entrypointContents, contains("import 'dart:ui' as ui;"));
|
||||
expect(entrypointContents, contains('await ui.webOnlyWarmupEngine('));
|
||||
expect(entrypointContents, contains("import 'dart:ui_web' as ui_web;"));
|
||||
expect(entrypointContents, contains('await ui_web.bootstrapEngine('));
|
||||
|
||||
expect(logger.statusText, contains('Restarted application in'));
|
||||
expect(result.code, 0);
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
import 'dart:async';
|
||||
import 'dart:ui' as ui;
|
||||
import 'dart:ui_web' as ui_web;
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
|
@ -57,13 +58,11 @@ class Registrar extends BinaryMessenger {
|
|||
/// previously-registered handler and replaces it with the handler
|
||||
/// from this object.
|
||||
///
|
||||
/// This method uses a function called `webOnlySetPluginHandler` in
|
||||
/// the [dart:ui] library. That function is only available when
|
||||
/// This method uses a function called `setPluginHandler` in
|
||||
/// the [dart:ui_web] library. That function is only available when
|
||||
/// compiling for the web.
|
||||
void registerMessageHandler() {
|
||||
// The `ui.webOnlySetPluginHandler` function below is only defined in the Web dart:ui.
|
||||
// ignore: undefined_function, avoid_dynamic_calls
|
||||
ui.webOnlySetPluginHandler(handleFrameworkMessage);
|
||||
ui_web.setPluginHandler(handleFrameworkMessage);
|
||||
}
|
||||
|
||||
/// Receives a platform message from the framework.
|
||||
|
@ -101,7 +100,7 @@ class Registrar extends BinaryMessenger {
|
|||
/// the following:
|
||||
///
|
||||
/// ```dart
|
||||
/// ui.webOnlySetPluginHandler(webPluginRegistrar.handleFrameworkMessage);
|
||||
/// ui_web.setPluginHandler(handleFrameworkMessage);
|
||||
/// ```
|
||||
Future<void> handleFrameworkMessage(
|
||||
String channel,
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
library;
|
||||
|
||||
import 'dart:async';
|
||||
import 'dart:ui' as ui;
|
||||
import 'dart:ui_web' as ui_web;
|
||||
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
@ -14,7 +14,7 @@ import 'package:flutter_web_plugins/flutter_web_plugins.dart';
|
|||
|
||||
void main() {
|
||||
// Disabling tester emulation because this test relies on real message channel communication.
|
||||
ui.debugEmulateFlutterTesterEnvironment = false; // ignore: undefined_prefixed_name
|
||||
ui_web.debugEmulateFlutterTesterEnvironment = false;
|
||||
|
||||
group('Plugin Event Channel', () {
|
||||
setUp(() {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
@TestOn('chrome') // Uses web-only Flutter SDK
|
||||
library;
|
||||
|
||||
import 'dart:ui' as ui;
|
||||
import 'dart:ui_web' as ui_web;
|
||||
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
@ -31,7 +31,7 @@ class TestPlugin {
|
|||
|
||||
void main() {
|
||||
// Disabling tester emulation because this test relies on real message channel communication.
|
||||
ui.debugEmulateFlutterTesterEnvironment = false; // ignore: undefined_prefixed_name
|
||||
ui_web.debugEmulateFlutterTesterEnvironment = false;
|
||||
|
||||
group('Plugin Registry', () {
|
||||
setUp(() {
|
||||
|
|
Loading…
Reference in a new issue