Reland: Remove the Window class now that it is no longer used. (#22566)
Reland #22505, now that flutter/flutter#70637 has landed.
Removes references to dart:ui.Window, and switch usages to PlatformDispatcher or SingletonFlutterWindow, as appropriate.
diff --git a/analysis_options.yaml b/analysis_options.yaml
index a92f9fb..4bd9407 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -7,7 +7,7 @@
# - "sort_constructors_first" disabled (because we have private fake
# constructors),
# - "prefer_final_fields" disabled (because we do weird things with
-# private fields, especially on the Window object):
+# private fields, especially on the PlatformDispatcher object):
analyzer:
enable-experiment:
diff --git a/common/settings.h b/common/settings.h
index c956423..e408454 100644
--- a/common/settings.h
+++ b/common/settings.h
@@ -221,11 +221,11 @@
FrameRasterizedCallback frame_rasterized_callback;
// This data will be available to the isolate immediately on launch via the
- // Window.getPersistentIsolateData callback. This is meant for information
- // that the isolate cannot request asynchronously (platform messages can be
- // used for that purpose). This data is held for the lifetime of the shell and
- // is available on isolate restarts in the shell instance. Due to this,
- // the buffer must be as small as possible.
+ // PlatformDispatcher.getPersistentIsolateData callback. This is meant for
+ // information that the isolate cannot request asynchronously (platform
+ // messages can be used for that purpose). This data is held for the lifetime
+ // of the shell and is available on isolate restarts in the shell instance.
+ // Due to this, the buffer must be as small as possible.
std::shared_ptr<const fml::Mapping> persistent_isolate_data;
/// Max size of old gen heap size in MB, or 0 for unlimited, -1 for default
diff --git a/lib/ui/window.dart b/lib/ui/window.dart
index 7c8e514..f4795b0 100644
--- a/lib/ui/window.dart
+++ b/lib/ui/window.dart
@@ -795,220 +795,6 @@
int get hashCode => _index.hashCode;
}
-/// A soon-to-be deprecated class that is wholly replaced by
-/// [SingletonFlutterWindow].
-///
-/// This class will be removed once the framework no longer refers to it.
-// In order for the documentation build to succeed, this interface duplicates
-// all of the methods with documentation, overrides them, and calls the super
-// implementation. Once this merges into the framework and the framework
-// references to it can be updated, this class will be removed entirely.
-class Window extends SingletonFlutterWindow {
- Window._(Object windowId, PlatformDispatcher platformDispatcher)
- : super._(windowId, platformDispatcher);
-
- @override
- // ignore: unnecessary_overrides
- double get devicePixelRatio => super.devicePixelRatio;
-
- @override
- // ignore: unnecessary_overrides
- Rect get physicalGeometry => super.physicalGeometry;
-
- @override
- // ignore: unnecessary_overrides
- Size get physicalSize => super.physicalSize;
-
- @override
- // ignore: unnecessary_overrides
- WindowPadding get viewInsets => super.viewInsets;
-
- @override
- // ignore: unnecessary_overrides
- WindowPadding get viewPadding => super.viewPadding;
-
- @override
- // ignore: unnecessary_overrides
- WindowPadding get systemGestureInsets => super.systemGestureInsets;
-
- @override
- // ignore: unnecessary_overrides
- WindowPadding get padding => super.padding;
-
- @override
- // ignore: unnecessary_overrides
- void render(Scene scene) => super.render(scene);
-
- @override
- // ignore: unnecessary_overrides
- VoidCallback? get onMetricsChanged => super.onMetricsChanged;
- @override
- // ignore: unnecessary_overrides
- set onMetricsChanged(VoidCallback? callback) {
- super.onMetricsChanged = callback;
- }
-
- @override
- // ignore: unnecessary_overrides
- Locale get locale => super.locale;
-
- @override
- // ignore: unnecessary_overrides
- List<Locale> get locales => super.locales;
-
- @override
- // ignore: unnecessary_overrides
- Locale? computePlatformResolvedLocale(List<Locale> supportedLocales) {
- return super.computePlatformResolvedLocale(supportedLocales);
- }
-
- @override
- // ignore: unnecessary_overrides
- VoidCallback? get onLocaleChanged => super.onLocaleChanged;
- @override
- // ignore: unnecessary_overrides
- set onLocaleChanged(VoidCallback? callback) {
- super.onLocaleChanged = callback;
- }
-
- @override
- // ignore: unnecessary_overrides
- String get initialLifecycleState => super.initialLifecycleState;
-
- @override
- // ignore: unnecessary_overrides
- double get textScaleFactor => super.textScaleFactor;
-
- @override
- // ignore: unnecessary_overrides
- bool get alwaysUse24HourFormat => super.alwaysUse24HourFormat;
-
- @override
- // ignore: unnecessary_overrides
- VoidCallback? get onTextScaleFactorChanged => super.onTextScaleFactorChanged;
- @override
- // ignore: unnecessary_overrides
- set onTextScaleFactorChanged(VoidCallback? callback) {
- super.onTextScaleFactorChanged = callback;
- }
-
- @override
- // ignore: unnecessary_overrides
- Brightness get platformBrightness => super.platformBrightness;
-
- @override
- // ignore: unnecessary_overrides
- VoidCallback? get onPlatformBrightnessChanged => super.onPlatformBrightnessChanged;
- @override
- // ignore: unnecessary_overrides
- set onPlatformBrightnessChanged(VoidCallback? callback) {
- super.onPlatformBrightnessChanged = callback;
- }
-
- @override
- // ignore: unnecessary_overrides
- FrameCallback? get onBeginFrame => super.onBeginFrame;
- @override
- // ignore: unnecessary_overrides
- set onBeginFrame(FrameCallback? callback) {
- super.onBeginFrame = callback;
- }
-
- @override
- // ignore: unnecessary_overrides
- VoidCallback? get onDrawFrame => super.onDrawFrame;
- @override
- // ignore: unnecessary_overrides
- set onDrawFrame(VoidCallback? callback) {
- super.onDrawFrame = callback;
- }
-
- @override
- // ignore: unnecessary_overrides
- TimingsCallback? get onReportTimings => super.onReportTimings;
- @override
- // ignore: unnecessary_overrides
- set onReportTimings(TimingsCallback? callback) {
- super.onReportTimings = callback;
- }
-
- @override
- // ignore: unnecessary_overrides
- PointerDataPacketCallback? get onPointerDataPacket => super.onPointerDataPacket;
- @override
- // ignore: unnecessary_overrides
- set onPointerDataPacket(PointerDataPacketCallback? callback) {
- super.onPointerDataPacket = callback;
- }
-
- @override
- // ignore: unnecessary_overrides
- String get defaultRouteName => super.defaultRouteName;
-
- @override
- // ignore: unnecessary_overrides
- void scheduleFrame() => super.scheduleFrame();
-
- @override
- // ignore: unnecessary_overrides
- bool get semanticsEnabled => super.semanticsEnabled;
-
- @override
- // ignore: unnecessary_overrides
- VoidCallback? get onSemanticsEnabledChanged => super.onSemanticsEnabledChanged;
- @override
- // ignore: unnecessary_overrides
- set onSemanticsEnabledChanged(VoidCallback? callback) {
- super.onSemanticsEnabledChanged = callback;
- }
-
- @override
- // ignore: unnecessary_overrides
- SemanticsActionCallback? get onSemanticsAction => super.onSemanticsAction;
- @override
- // ignore: unnecessary_overrides
- set onSemanticsAction(SemanticsActionCallback? callback) {
- super.onSemanticsAction = callback;
- }
-
- @override
- // ignore: unnecessary_overrides
- AccessibilityFeatures get accessibilityFeatures => super.accessibilityFeatures;
-
- @override
- // ignore: unnecessary_overrides
- VoidCallback? get onAccessibilityFeaturesChanged =>
- super.onAccessibilityFeaturesChanged;
- @override
- // ignore: unnecessary_overrides
- set onAccessibilityFeaturesChanged(VoidCallback? callback) {
- super.onAccessibilityFeaturesChanged = callback;
- }
-
- @override
- // ignore: unnecessary_overrides
- void updateSemantics(SemanticsUpdate update) => super.updateSemantics(update);
-
- @override
- // ignore: unnecessary_overrides
- void sendPlatformMessage(String name, ByteData? data, PlatformMessageResponseCallback? callback) {
- super.sendPlatformMessage(name, data, callback);
- }
-
- @override
- // ignore: unnecessary_overrides
- PlatformMessageCallback? get onPlatformMessage => super.onPlatformMessage;
- @override
- // ignore: unnecessary_overrides
- set onPlatformMessage(PlatformMessageCallback? callback) {
- super.onPlatformMessage = callback;
- }
-
- @override
- // ignore: unnecessary_overrides
- void setIsolateDebugName(String name) => super.setIsolateDebugName(name);
-}
-
/// Describes the contrast of a theme or color palette.
enum Brightness {
/// The color is dark and will require a light text color to achieve readable
@@ -1053,4 +839,4 @@
/// * [PlatformDispatcher.views], contains the current list of Flutter windows
/// belonging to the application, including top level application windows like
/// this one.
-final Window window = Window._(0, PlatformDispatcher.instance);
+final SingletonFlutterWindow window = SingletonFlutterWindow._(0, PlatformDispatcher.instance);
diff --git a/lib/web_ui/lib/src/engine/dom_renderer.dart b/lib/web_ui/lib/src/engine/dom_renderer.dart
index d650614..af01cbc 100644
--- a/lib/web_ui/lib/src/engine/dom_renderer.dart
+++ b/lib/web_ui/lib/src/engine/dom_renderer.dart
@@ -478,8 +478,8 @@
///
/// When there is a text editing going on in mobile devices, do not change
/// the physicalSize, change the [window.viewInsets]. See:
- /// https://api.flutter.dev/flutter/dart-ui/Window/viewInsets.html
- /// https://api.flutter.dev/flutter/dart-ui/Window/physicalSize.html
+ /// https://api.flutter.dev/flutter/dart-ui/FlutterView/viewInsets.html
+ /// https://api.flutter.dev/flutter/dart-ui/FlutterView/physicalSize.html
///
/// Note: always check for rotations for a mobile device. Update the physical
/// size if the change is caused by a rotation.
diff --git a/lib/web_ui/lib/src/engine/html/scene_builder.dart b/lib/web_ui/lib/src/engine/html/scene_builder.dart
index 80cf5ed..03d4701 100644
--- a/lib/web_ui/lib/src/engine/html/scene_builder.dart
+++ b/lib/web_ui/lib/src/engine/html/scene_builder.dart
@@ -307,13 +307,12 @@
/// - 0x08: visualizeEngineStatistics - graph UI thread frame times
/// Set enabledOptions to 0x0F to enable all the currently defined features.
///
- /// The "UI thread" is the thread that includes all the execution of
- /// the main Dart isolate (the isolate that can call
- /// [Window.render]). The UI thread frame time is the total time
- /// spent executing the [Window.onBeginFrame] callback. The "raster
- /// thread" is the thread (running on the CPU) that subsequently
- /// processes the [Scene] provided by the Dart code to turn it into
- /// GPU commands and send it to the GPU.
+ /// The "UI thread" is the thread that includes all the execution of the main
+ /// Dart isolate (the isolate that can call [FlutterView.render]). The UI
+ /// thread frame time is the total time spent executing the
+ /// [FlutterView.onBeginFrame] callback. The "raster thread" is the thread
+ /// (running on the CPU) that subsequently processes the [Scene] provided by
+ /// the Dart code to turn it into GPU commands and send it to the GPU.
///
/// See also the [PerformanceOverlayOption] enum in the rendering library.
/// for more details.
@@ -522,7 +521,7 @@
///
/// Returns a [Scene] containing the objects that have been added to
/// this scene builder. The [Scene] can then be displayed on the
- /// screen with [Window.render].
+ /// screen with [FlutterView.render].
///
/// After calling this function, the scene builder object is invalid and
/// cannot be used further.
diff --git a/lib/web_ui/lib/src/engine/platform_dispatcher.dart b/lib/web_ui/lib/src/engine/platform_dispatcher.dart
index d196ef5..78e9124 100644
--- a/lib/web_ui/lib/src/engine/platform_dispatcher.dart
+++ b/lib/web_ui/lib/src/engine/platform_dispatcher.dart
@@ -174,7 +174,7 @@
/// rasterized frames.
///
/// It's preferred to use [SchedulerBinding.addTimingsCallback] than to use
- /// [Window.onReportTimings] directly because
+ /// [PlatformDispatcher.onReportTimings] directly because
/// [SchedulerBinding.addTimingsCallback] allows multiple callbacks.
///
/// This can be used to see if the application has missed frames (through
diff --git a/lib/web_ui/lib/src/engine/semantics/semantics.dart b/lib/web_ui/lib/src/engine/semantics/semantics.dart
index 226d9a4..1d511e5 100644
--- a/lib/web_ui/lib/src/engine/semantics/semantics.dart
+++ b/lib/web_ui/lib/src/engine/semantics/semantics.dart
@@ -1265,11 +1265,11 @@
final SemanticsHelper semanticsHelper = SemanticsHelper();
- /// Whether the user has requested that [updateSemantics] be called when
- /// the semantic contents of window changes.
+ /// Whether the user has requested that [updateSemantics] be called when the
+ /// semantic contents of window changes.
///
- /// The [ui.Window.onSemanticsEnabledChanged] callback is called whenever this
- /// value changes.
+ /// The [ui.PlatformDispatcher.onSemanticsEnabledChanged] callback is called
+ /// whenever this value changes.
///
/// This is separate from accessibility [mode], which controls how gestures
/// are interpreted when this value is true.
diff --git a/lib/web_ui/lib/src/engine/window.dart b/lib/web_ui/lib/src/engine/window.dart
index 78defa3..0557acd 100644
--- a/lib/web_ui/lib/src/engine/window.dart
+++ b/lib/web_ui/lib/src/engine/window.dart
@@ -22,10 +22,8 @@
_customUrlStrategy = strategy;
}
-/// The Web implementation of [ui.Window].
-// TODO(gspencergoog): Once the framework no longer uses ui.Window, make this extend
-// ui.SingletonFlutterWindow instead.
-class EngineFlutterWindow extends ui.Window {
+/// The Web implementation of [ui.SingletonFlutterWindow].
+class EngineFlutterWindow extends ui.SingletonFlutterWindow {
EngineFlutterWindow(this._windowId, this.platformDispatcher) {
final EnginePlatformDispatcher engineDispatcher = platformDispatcher as EnginePlatformDispatcher;
engineDispatcher._windows[_windowId] = this;
@@ -245,7 +243,7 @@
: const HashUrlStrategy();
}
-/// The Web implementation of [ui.Window].
+/// The Web implementation of [ui.SingletonFlutterWindow].
class EngineSingletonFlutterWindow extends EngineFlutterWindow {
EngineSingletonFlutterWindow(Object windowId, ui.PlatformDispatcher platformDispatcher) : super(windowId, platformDispatcher);
diff --git a/lib/web_ui/lib/src/ui/window.dart b/lib/web_ui/lib/src/ui/window.dart
index 9966ef3..6fc8b90 100644
--- a/lib/web_ui/lib/src/ui/window.dart
+++ b/lib/web_ui/lib/src/ui/window.dart
@@ -124,138 +124,6 @@
void setIsolateDebugName(String name) => PlatformDispatcher.instance.setIsolateDebugName(name);
}
-// This class will go away entirely once references to it are removed from the
-// framework. The many explicit overrides are an artifact of needing to add the
-// same overrides to the one in dart:ui in order to get dartdoc to find the docs
-// for them.
-abstract class Window extends SingletonFlutterWindow {
- @override
- double get devicePixelRatio;
-
- @override
- Rect get physicalGeometry;
-
- @override
- Size get physicalSize;
-
- @override
- WindowPadding get viewInsets;
-
- @override
- WindowPadding get viewPadding;
-
- @override
- WindowPadding get systemGestureInsets;
-
- @override
- WindowPadding get padding;
-
- @override
- void render(Scene scene);
-
- @override
- VoidCallback? get onMetricsChanged;
- @override
- set onMetricsChanged(VoidCallback? callback);
-
- @override
- Locale? get locale => super.locale;
-
- @override
- List<Locale>? get locales => super.locales;
-
- @override
- Locale? computePlatformResolvedLocale(List<Locale> supportedLocales);
-
- @override
- VoidCallback? get onLocaleChanged;
- @override
- set onLocaleChanged(VoidCallback? callback);
-
- @override
- String get initialLifecycleState;
-
- @override
- double get textScaleFactor;
-
- @override
- bool get alwaysUse24HourFormat;
-
- @override
- VoidCallback? get onTextScaleFactorChanged;
- @override
- set onTextScaleFactorChanged(VoidCallback? callback);
-
- @override
- Brightness get platformBrightness;
-
- @override
- VoidCallback? get onPlatformBrightnessChanged;
- @override
- set onPlatformBrightnessChanged(VoidCallback? callback);
-
- @override
- FrameCallback? get onBeginFrame;
- @override
- set onBeginFrame(FrameCallback? callback);
-
- @override
- VoidCallback? get onDrawFrame;
- @override
- set onDrawFrame(VoidCallback? callback);
-
- @override
- TimingsCallback? get onReportTimings;
- @override
- set onReportTimings(TimingsCallback? callback);
-
- @override
- PointerDataPacketCallback? get onPointerDataPacket;
- @override
- set onPointerDataPacket(PointerDataPacketCallback? callback);
-
- @override
- String get defaultRouteName;
-
- @override
- void scheduleFrame();
-
- @override
- bool get semanticsEnabled;
-
- @override
- VoidCallback? get onSemanticsEnabledChanged;
- @override
- set onSemanticsEnabledChanged(VoidCallback? callback);
-
- @override
- SemanticsActionCallback? get onSemanticsAction;
- @override
- set onSemanticsAction(SemanticsActionCallback? callback);
-
- @override
- AccessibilityFeatures get accessibilityFeatures;
-
- @override
- VoidCallback? get onAccessibilityFeaturesChanged;
- @override
- set onAccessibilityFeaturesChanged(VoidCallback? callback);
-
- @override
- void updateSemantics(SemanticsUpdate update);
-
- @override
- void sendPlatformMessage(String name, ByteData? data, PlatformMessageResponseCallback? callback);
-
- @override
- PlatformMessageCallback? get onPlatformMessage;
- @override
- set onPlatformMessage(PlatformMessageCallback? callback);
-
- @override
- void setIsolateDebugName(String name);
-}
-
class AccessibilityFeatures {
const AccessibilityFeatures._(this._index);
@@ -368,4 +236,4 @@
}
}
-Window get window => engine.window;
+SingletonFlutterWindow get window => engine.window;
diff --git a/lib/web_ui/test/engine/window_test.dart b/lib/web_ui/test/engine/window_test.dart
index e61c9f1..04ae422 100644
--- a/lib/web_ui/test/engine/window_test.dart
+++ b/lib/web_ui/test/engine/window_test.dart
@@ -271,7 +271,7 @@
expect(responded, true);
});
- test('Window implements locale, locales, and locale change notifications', () async {
+ test('SingletonFlutterWindow implements locale, locales, and locale change notifications', () async {
// This will count how many times we notified about locale changes.
int localeChangedCount = 0;
window.onLocaleChanged = () {