make parameter properly respects key-value pairs
diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/platform_dispatcher.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/platform_dispatcher.dart index 8d9301c..ca5cba9 100644 --- a/engine/src/flutter/lib/web_ui/lib/src/engine/platform_dispatcher.dart +++ b/engine/src/flutter/lib/web_ui/lib/src/engine/platform_dispatcher.dart
@@ -56,14 +56,21 @@ } /// Checks if the given URI contains the flutter-semantics query parameter. - /// If present, enables semantics. This allows automation testing tools to - /// enable semantics without modifying the app. + /// If present and not explicitly set to false, enables semantics. This allows + /// automation testing tools to enable semantics without modifying the app. + /// + /// Accepted values: + /// - `?flutter-semantics` or `?flutter-semantics=true` → enables + /// - `?flutter-semantics=false` → does not enable /// /// This method is separated for testing purposes. @visibleForTesting void checkUriForSemanticsParameter(Uri uri) { - if (uri.queryParameters.containsKey('flutter-semantics')) { - EngineSemantics.instance.semanticsEnabled = true; + final String? value = uri.queryParameters['flutter-semantics']; + if (value != null) { + if (value.toLowerCase() != 'false') { + EngineSemantics.instance.semanticsEnabled = true; + } } }
diff --git a/engine/src/flutter/lib/web_ui/test/engine/platform_dispatcher/platform_dispatcher_test.dart b/engine/src/flutter/lib/web_ui/test/engine/platform_dispatcher/platform_dispatcher_test.dart index 702e962..10a07fb 100644 --- a/engine/src/flutter/lib/web_ui/test/engine/platform_dispatcher/platform_dispatcher_test.dart +++ b/engine/src/flutter/lib/web_ui/test/engine/platform_dispatcher/platform_dispatcher_test.dart
@@ -420,6 +420,24 @@ expect(semantics().semanticsEnabled, isTrue); }); + test('query parameter enables semantics when set to true', () { + semantics().semanticsEnabled = false; + final Uri uriWithTrue = Uri.parse('https://example.com/?flutter-semantics=true'); + + dispatcher.checkUriForSemanticsParameter(uriWithTrue); + + expect(semantics().semanticsEnabled, isTrue); + }); + + test('query parameter does not enable semantics when set to false', () { + semantics().semanticsEnabled = false; + final Uri uriWithFalse = Uri.parse('https://example.com/?flutter-semantics=false'); + + dispatcher.checkUriForSemanticsParameter(uriWithFalse); + + expect(semantics().semanticsEnabled, isFalse); + }); + test('query parameter does not enable semantics when absent', () { semantics().semanticsEnabled = false; final Uri uriWithoutParameter = Uri.parse('https://example.com/');