From f26fbb6bddfae5073186fa817762da4e1da16d02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xavier=20Chr=C3=A9tien?= Date: Mon, 19 Oct 2020 11:12:03 -0400 Subject: [PATCH] Set slider semantics flag for sliders (#68019) --- packages/flutter/lib/src/cupertino/slider.dart | 1 + packages/flutter/lib/src/material/range_slider.dart | 1 + packages/flutter/lib/src/material/slider.dart | 1 + packages/flutter/test/cupertino/slider_test.dart | 12 +++++++++++- .../flutter/test/material/range_slider_test.dart | 2 ++ packages/flutter/test/material/slider_test.dart | 10 ++++++---- packages/flutter_test/lib/src/matchers.dart | 2 ++ 7 files changed, 24 insertions(+), 5 deletions(-) diff --git a/packages/flutter/lib/src/cupertino/slider.dart b/packages/flutter/lib/src/cupertino/slider.dart index 6eab3335d1c..697f1002ddb 100644 --- a/packages/flutter/lib/src/cupertino/slider.dart +++ b/packages/flutter/lib/src/cupertino/slider.dart @@ -548,6 +548,7 @@ class _RenderCupertinoSlider extends RenderConstrainedBox { super.describeSemanticsConfiguration(config); config.isSemanticBoundary = isInteractive; + config.isSlider = true; if (isInteractive) { config.textDirection = textDirection; config.onIncrease = _increaseAction; diff --git a/packages/flutter/lib/src/material/range_slider.dart b/packages/flutter/lib/src/material/range_slider.dart index ef07c181d51..35495f64eb2 100644 --- a/packages/flutter/lib/src/material/range_slider.dart +++ b/packages/flutter/lib/src/material/range_slider.dart @@ -1529,6 +1529,7 @@ class _RenderRangeSlider extends RenderBox with RelayoutWhenSystemFontsChangeMix final SemanticsConfiguration config = SemanticsConfiguration(); config.isEnabled = isEnabled; config.textDirection = textDirection; + config.isSlider = true; if (isEnabled) { config.onIncrease = increaseAction; config.onDecrease = decreaseAction; diff --git a/packages/flutter/lib/src/material/slider.dart b/packages/flutter/lib/src/material/slider.dart index e58e2dbee0d..e77af4767e7 100644 --- a/packages/flutter/lib/src/material/slider.dart +++ b/packages/flutter/lib/src/material/slider.dart @@ -707,6 +707,7 @@ class _SliderState extends State with TickerProviderStateMixin { return Semantics( container: true, + slider: true, child: FocusableActionDetector( actions: _actionMap, shortcuts: _shortcutMap, diff --git a/packages/flutter/test/cupertino/slider_test.dart b/packages/flutter/test/cupertino/slider_test.dart index 15a9623da37..2afed420ad8 100644 --- a/packages/flutter/test/cupertino/slider_test.dart +++ b/packages/flutter/test/cupertino/slider_test.dart @@ -318,6 +318,7 @@ void main() { increasedValue: '60%', decreasedValue: '40%', textDirection: TextDirection.ltr, + flags: [SemanticsFlag.isSlider], actions: SemanticsAction.decrease.index | SemanticsAction.increase.index, ), ], @@ -341,7 +342,14 @@ void main() { ); expect(semantics, hasSemantics( - TestSemantics.root(), + TestSemantics.root( + children: [ + TestSemantics( + id: 1, + flags: [SemanticsFlag.isSlider], + ) + ], + ), ignoreRect: true, ignoreTransform: true, )); @@ -365,6 +373,7 @@ void main() { ); expect(tester.getSemantics(find.byType(CupertinoSlider)), matchesSemantics( + isSlider: true, hasIncreaseAction: true, hasDecreaseAction: true, value: '50%', @@ -387,6 +396,7 @@ void main() { ); expect(tester.getSemantics(find.byType(CupertinoSlider)), matchesSemantics( + isSlider: true, hasIncreaseAction: true, hasDecreaseAction: true, value: '60%', diff --git a/packages/flutter/test/material/range_slider_test.dart b/packages/flutter/test/material/range_slider_test.dart index ecf5d68447f..66c4e711869 100644 --- a/packages/flutter/test/material/range_slider_test.dart +++ b/packages/flutter/test/material/range_slider_test.dart @@ -1775,6 +1775,7 @@ void main() { children: [ matchesSemantics( isEnabled: true, + isSlider: true, hasEnabledState: true, hasIncreaseAction: true, hasDecreaseAction: true, @@ -1784,6 +1785,7 @@ void main() { ), matchesSemantics( isEnabled: true, + isSlider: true, hasEnabledState: true, hasIncreaseAction: true, hasDecreaseAction: true, diff --git a/packages/flutter/test/material/slider_test.dart b/packages/flutter/test/material/slider_test.dart index 1e8c586eb7b..e75421694d5 100644 --- a/packages/flutter/test/material/slider_test.dart +++ b/packages/flutter/test/material/slider_test.dart @@ -1345,7 +1345,7 @@ void main() { children: [ TestSemantics( id: 4, - flags: [SemanticsFlag.hasEnabledState, SemanticsFlag.isEnabled, SemanticsFlag.isFocusable], + flags: [SemanticsFlag.hasEnabledState, SemanticsFlag.isEnabled, SemanticsFlag.isFocusable, SemanticsFlag.isSlider], actions: [SemanticsAction.increase, SemanticsAction.decrease], value: '50%', increasedValue: '55%', @@ -1403,6 +1403,7 @@ void main() { SemanticsFlag.hasEnabledState, // isFocusable is delayed by 1 frame. SemanticsFlag.isFocusable, + SemanticsFlag.isSlider, ], value: '50%', increasedValue: '55%', @@ -1443,6 +1444,7 @@ void main() { id: 4, flags: [ SemanticsFlag.hasEnabledState, + SemanticsFlag.isSlider, ], value: '50%', increasedValue: '55%', @@ -1508,7 +1510,7 @@ void main() { children: [ TestSemantics( id: 4, - flags: [SemanticsFlag.hasEnabledState, SemanticsFlag.isEnabled, SemanticsFlag.isFocusable], + flags: [SemanticsFlag.hasEnabledState, SemanticsFlag.isEnabled, SemanticsFlag.isFocusable, SemanticsFlag.isSlider], actions: [SemanticsAction.increase, SemanticsAction.decrease], value: '50%', increasedValue: '60%', @@ -1562,7 +1564,7 @@ void main() { children: [ TestSemantics( id: 5, - flags: [SemanticsFlag.hasEnabledState], + flags: [SemanticsFlag.hasEnabledState, SemanticsFlag.isSlider], value: '50%', increasedValue: '60%', decreasedValue: '40%', @@ -1623,7 +1625,7 @@ void main() { children: [ TestSemantics( id: 4, - flags: [SemanticsFlag.hasEnabledState, SemanticsFlag.isEnabled, SemanticsFlag.isFocusable], + flags: [SemanticsFlag.hasEnabledState, SemanticsFlag.isEnabled, SemanticsFlag.isFocusable, SemanticsFlag.isSlider], actions: [SemanticsAction.increase, SemanticsAction.decrease], value: '40', increasedValue: '60', diff --git a/packages/flutter_test/lib/src/matchers.dart b/packages/flutter_test/lib/src/matchers.dart index 46a15b2b3a3..0a4f912f5bc 100644 --- a/packages/flutter_test/lib/src/matchers.dart +++ b/packages/flutter_test/lib/src/matchers.dart @@ -468,6 +468,7 @@ Matcher matchesSemantics({ bool hasToggledState = false, bool isToggled = false, bool hasImplicitScrolling = false, + bool isSlider = false, // Actions // bool hasTapAction = false, bool hasLongPressAction = false, @@ -519,6 +520,7 @@ Matcher matchesSemantics({ if (hasToggledState) SemanticsFlag.hasToggledState, if (isToggled) SemanticsFlag.isToggled, if (hasImplicitScrolling) SemanticsFlag.hasImplicitScrolling, + if (isSlider) SemanticsFlag.isSlider ]; final List actions = [