diff --git a/lib/ui/platform_dispatcher.dart b/lib/ui/platform_dispatcher.dart index e5ebda9961017..20349ded2fe43 100644 --- a/lib/ui/platform_dispatcher.dart +++ b/lib/ui/platform_dispatcher.dart @@ -750,6 +750,27 @@ class PlatformDispatcher { _invoke(onAccessibilityFeaturesChanged, _onAccessibilityFeaturesChangedZone,); } + /// Change the retained semantics data about this platform dispatcher. + /// + /// If [semanticsEnabled] is true, the user has requested that this function + /// be called whenever the semantic content of this platform dispatcher + /// changes. + /// + /// In either case, this function disposes the given update, which means the + /// semantics update cannot be used further. + @Deprecated(''' + In a multi-view world, the platform dispatcher can no longer provide apis + to update semantics since each view will host its own semantics tree. + + Semantics updates must be passed to an individual [FlutterView]. To update + semantics, use PlatformDispatcher.instance.views to get a [FlutterView] and + call `updateSemantics`. + ''') + void updateSemantics(SemanticsUpdate update) => _updateSemantics(update); + + @FfiNative)>('PlatformConfigurationNativeApi::UpdateSemantics') + external static void _updateSemantics(SemanticsUpdate update); + /// The system-reported default locale of the device. /// /// This establishes the language and formatting conventions that application diff --git a/lib/web_ui/lib/platform_dispatcher.dart b/lib/web_ui/lib/platform_dispatcher.dart index 7c67e7c3d5f4f..6d508576df1cc 100644 --- a/lib/web_ui/lib/platform_dispatcher.dart +++ b/lib/web_ui/lib/platform_dispatcher.dart @@ -83,6 +83,14 @@ abstract class PlatformDispatcher { VoidCallback? get onAccessibilityFeaturesChanged; set onAccessibilityFeaturesChanged(VoidCallback? callback); + @Deprecated(''' + In a multi-view world, the platform dispatcher can no longer provide apis + to update semantics since each view will host its own semantics tree. + + Semantics updates must be passed to an individual [FlutterView]. To update + semantics, use PlatformDispatcher.instance.views to get a [FlutterView] and + call `updateSemantics`. + ''') void updateSemantics(SemanticsUpdate update); Locale get locale; diff --git a/lib/web_ui/lib/src/engine/platform_dispatcher.dart b/lib/web_ui/lib/src/engine/platform_dispatcher.dart index fee88b2ca2b26..3cfbffeb1fcc2 100644 --- a/lib/web_ui/lib/src/engine/platform_dispatcher.dart +++ b/lib/web_ui/lib/src/engine/platform_dispatcher.dart @@ -690,7 +690,22 @@ class EnginePlatformDispatcher extends ui.PlatformDispatcher { _onAccessibilityFeaturesChanged, _onAccessibilityFeaturesChangedZone); } + /// Change the retained semantics data about this window. + /// + /// If [semanticsEnabled] is true, the user has requested that this function + /// be called whenever the semantic content of this window changes. + /// + /// In either case, this function disposes the given update, which means the + /// semantics update cannot be used further. @override + @Deprecated(''' + In a multi-view world, the platform dispatcher can no longer provide apis + to update semantics since each view will host its own semantics tree. + + Semantics updates must be passed to an individual [FlutterView]. To update + semantics, use PlatformDispatcher.instance.views to get a [FlutterView] and + call `updateSemantics`. + ''') void updateSemantics(ui.SemanticsUpdate update) { EngineSemanticsOwner.instance.updateSemantics(update); }