diff --git a/lib/web_ui/lib/initialization.dart b/lib/web_ui/lib/initialization.dart index 13662b627b2a5..be7572cedcccc 100644 --- a/lib/web_ui/lib/initialization.dart +++ b/lib/web_ui/lib/initialization.dart @@ -95,3 +95,61 @@ set debugEmulateFlutterTesterEnvironment(bool value) { bool _debugEmulateFlutterTesterEnvironment = false; engine.AssetManager get webOnlyAssetManager => _assetManager!; engine.FontCollection get webOnlyFontCollection => _fontCollection!; + +/// Provides a compile time constant to customize flutter framework and other +/// users of ui engine for web runtime. +const bool isWeb = true; + +/// Web specific SMI. Used by bitfield. The 0x3FFFFFFFFFFFFFFF used on VM +/// is not supported on Web platform. +const int kMaxUnsignedSMI = -1; + +void webOnlyInitializeEngine() { + engine.initializeEngine(); +} + +void webOnlySetPluginHandler(Future Function(String, ByteData?, PlatformMessageResponseCallback?) handler) { + engine.pluginMessageCallHandler = handler; +} + +// TODO(yjbanov): The code below was temporarily moved from lib/web_ui/lib/src/engine/platform_views.dart +// during the NNBD migration so that `dart:ui` does not have to export `dart:_engine`. NNBD +// does not allow exported non-migrated libraries from migrated libraries. When `dart:_engine` +// is migrated, we can move it back. + +/// A function which takes a unique `id` and creates an HTML element. +typedef PlatformViewFactory = html.Element Function(int viewId); + +/// A registry for factories that create platform views. +class PlatformViewRegistry { + /// Register [viewTypeId] as being creating by the given [factory]. + bool registerViewFactory(String viewTypeId, PlatformViewFactory viewFactory, + {bool isVisible = true}) { + // TODO(web): Deprecate this once there's another way of calling `registerFactory` (js interop?) + return engine.platformViewManager + .registerFactory(viewTypeId, viewFactory, isVisible: isVisible); + } +} + +/// The platform view registry for this app. +final PlatformViewRegistry platformViewRegistry = PlatformViewRegistry(); + +// TODO(yjbanov): remove _Callback, _Callbacker, and _futurize. They are here only +// because the analyzer wasn't able to infer the correct types during +// NNBD migration. +typedef _Callback = void Function(T result); +typedef _Callbacker = String? Function(_Callback callback); +Future _futurize(_Callbacker callbacker) { + final Completer completer = Completer.sync(); + final String? error = callbacker((T t) { + if (t == null) { + completer.completeError(Exception('operation failed')); + } else { + completer.complete(t); + } + }); + if (error != null) { + throw Exception(error); + } + return completer.future; +} diff --git a/lib/web_ui/lib/ui.dart b/lib/web_ui/lib/ui.dart index e47bb5a2dc577..baa2a5c2b7a26 100644 --- a/lib/web_ui/lib/ui.dart +++ b/lib/web_ui/lib/ui.dart @@ -35,61 +35,3 @@ part 'semantics.dart'; part 'text.dart'; part 'tile_mode.dart'; part 'window.dart'; - -/// Provides a compile time constant to customize flutter framework and other -/// users of ui engine for web runtime. -const bool isWeb = true; - -/// Web specific SMI. Used by bitfield. The 0x3FFFFFFFFFFFFFFF used on VM -/// is not supported on Web platform. -const int kMaxUnsignedSMI = -1; - -void webOnlyInitializeEngine() { - engine.initializeEngine(); -} - -void webOnlySetPluginHandler(Future Function(String, ByteData?, PlatformMessageResponseCallback?) handler) { - engine.pluginMessageCallHandler = handler; -} - -// TODO(yjbanov): The code below was temporarily moved from lib/web_ui/lib/src/engine/platform_views.dart -// during the NNBD migration so that `dart:ui` does not have to export `dart:_engine`. NNBD -// does not allow exported non-migrated libraries from migrated libraries. When `dart:_engine` -// is migrated, we can move it back. - -/// A function which takes a unique `id` and creates an HTML element. -typedef PlatformViewFactory = html.Element Function(int viewId); - -/// A registry for factories that create platform views. -class PlatformViewRegistry { - /// Register [viewTypeId] as being creating by the given [factory]. - bool registerViewFactory(String viewTypeId, PlatformViewFactory viewFactory, - {bool isVisible = true}) { - // TODO(web): Deprecate this once there's another way of calling `registerFactory` (js interop?) - return engine.platformViewManager - .registerFactory(viewTypeId, viewFactory, isVisible: isVisible); - } -} - -/// The platform view registry for this app. -final PlatformViewRegistry platformViewRegistry = PlatformViewRegistry(); - -// TODO(yjbanov): remove _Callback, _Callbacker, and _futurize. They are here only -// because the analyzer wasn't able to infer the correct types during -// NNBD migration. -typedef _Callback = void Function(T result); -typedef _Callbacker = String? Function(_Callback callback); -Future _futurize(_Callbacker callbacker) { - final Completer completer = Completer.sync(); - final String? error = callbacker((T t) { - if (t == null) { - completer.completeError(Exception('operation failed')); - } else { - completer.complete(t); - } - }); - if (error != null) { - throw Exception(error); - } - return completer.future; -}