Skip to content

Commit 100cf21

Browse files
authored
Prefer enum over class. (flutter#123312)
Convert `AndroidSemanticsAction` to enum.
1 parent 716d252 commit 100cf21

File tree

4 files changed

+52
-116
lines changed

4 files changed

+52
-116
lines changed

dev/integration_tests/android_semantics_testing/lib/src/constants.dart

Lines changed: 49 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
import 'package:meta/meta.dart';
6-
75
/// Class name constants which correspond to the class names used by the
86
/// Android accessibility bridge.
97
class AndroidClassName {
@@ -30,147 +28,97 @@ class AndroidClassName {
3028
}
3129

3230
/// Action constants which correspond to `AccessibilityAction` in Android.
33-
@immutable
34-
class AndroidSemanticsAction {
35-
const AndroidSemanticsAction._(this.id);
36-
37-
/// The Android id of the action.
38-
final int id;
39-
40-
static const int _kFocusIndex = 1 << 0;
41-
static const int _kClearFocusIndex = 1 << 1;
42-
static const int _kSelectIndex = 1 << 2;
43-
static const int _kClearSelectionIndex = 1 << 3;
44-
static const int _kClickIndex = 1 << 4;
45-
static const int _kLongClickIndex = 1 << 5;
46-
static const int _kAccessibilityFocusIndex = 1 << 6;
47-
static const int _kClearAccessibilityFocusIndex = 1 << 7;
48-
static const int _kNextAtMovementGranularityIndex = 1 << 8;
49-
static const int _kPreviousAtMovementGranularityIndex = 1 << 9;
50-
static const int _kNextHtmlElementIndex = 1 << 10;
51-
static const int _kPreviousHtmlElementIndex = 1 << 11;
52-
static const int _kScrollForwardIndex = 1 << 12;
53-
static const int _kScrollBackwardIndex = 1 << 13;
54-
static const int _kCutIndex = 1 << 14;
55-
static const int _kCopyIndex = 1 << 15;
56-
static const int _kPasteIndex = 1 << 16;
57-
static const int _kSetSelectionIndex = 1 << 17;
58-
static const int _kExpandIndex = 1 << 18;
59-
static const int _kCollapseIndex = 1 << 19;
60-
static const int _kSetText = 1 << 21;
31+
enum AndroidSemanticsAction {
6132

6233
/// Matches `AccessibilityAction.ACTION_FOCUS`.
63-
static const AndroidSemanticsAction focus = AndroidSemanticsAction._(_kFocusIndex);
34+
focus(_kFocusIndex),
6435

6536
/// Matches `AccessibilityAction.ACTION_CLEAR_FOCUS`.
66-
static const AndroidSemanticsAction clearFocus = AndroidSemanticsAction._(_kClearFocusIndex);
37+
clearFocus(_kClearFocusIndex),
6738

6839
/// Matches `AccessibilityAction.ACTION_SELECT`.
69-
static const AndroidSemanticsAction select = AndroidSemanticsAction._(_kSelectIndex);
40+
select(_kSelectIndex),
7041

7142
/// Matches `AccessibilityAction.ACTION_CLEAR_SELECTION`.
72-
static const AndroidSemanticsAction clearSelection = AndroidSemanticsAction._(_kClearSelectionIndex);
43+
clearSelection(_kClearSelectionIndex),
7344

7445
/// Matches `AccessibilityAction.ACTION_CLICK`.
75-
static const AndroidSemanticsAction click = AndroidSemanticsAction._(_kClickIndex);
46+
click(_kClickIndex),
7647

7748
/// Matches `AccessibilityAction.ACTION_LONG_CLICK`.
78-
static const AndroidSemanticsAction longClick = AndroidSemanticsAction._(_kLongClickIndex);
49+
longClick(_kLongClickIndex),
7950

8051
/// Matches `AccessibilityAction.ACTION_ACCESSIBILITY_FOCUS`.
81-
static const AndroidSemanticsAction accessibilityFocus = AndroidSemanticsAction._(_kAccessibilityFocusIndex);
52+
accessibilityFocus(_kAccessibilityFocusIndex),
8253

8354
/// Matches `AccessibilityAction.ACTION_CLEAR_ACCESSIBILITY_FOCUS`.
84-
static const AndroidSemanticsAction clearAccessibilityFocus = AndroidSemanticsAction._(_kClearAccessibilityFocusIndex);
55+
clearAccessibilityFocus(_kClearAccessibilityFocusIndex),
8556

8657
/// Matches `AccessibilityAction.ACTION_NEXT_AT_MOVEMENT_GRANULARITY`.
87-
static const AndroidSemanticsAction nextAtMovementGranularity = AndroidSemanticsAction._(_kNextAtMovementGranularityIndex);
58+
nextAtMovementGranularity(_kNextAtMovementGranularityIndex),
8859

8960
/// Matches `AccessibilityAction.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY`.
90-
static const AndroidSemanticsAction previousAtMovementGranularity = AndroidSemanticsAction._(_kPreviousAtMovementGranularityIndex);
61+
previousAtMovementGranularity(_kPreviousAtMovementGranularityIndex),
9162

9263
/// Matches `AccessibilityAction.ACTION_NEXT_HTML_ELEMENT`.
93-
static const AndroidSemanticsAction nextHtmlElement = AndroidSemanticsAction._(_kNextHtmlElementIndex);
64+
nextHtmlElement(_kNextHtmlElementIndex),
9465

9566
/// Matches `AccessibilityAction.ACTION_PREVIOUS_HTML_ELEMENT`.
96-
static const AndroidSemanticsAction previousHtmlElement = AndroidSemanticsAction._(_kPreviousHtmlElementIndex);
67+
previousHtmlElement(_kPreviousHtmlElementIndex),
9768

9869
/// Matches `AccessibilityAction.ACTION_SCROLL_FORWARD`.
99-
static const AndroidSemanticsAction scrollForward = AndroidSemanticsAction._(_kScrollForwardIndex);
70+
scrollForward(_kScrollForwardIndex),
10071

10172
/// Matches `AccessibilityAction.ACTION_SCROLL_BACKWARD`.
102-
static const AndroidSemanticsAction scrollBackward = AndroidSemanticsAction._(_kScrollBackwardIndex);
73+
scrollBackward(_kScrollBackwardIndex),
10374

10475
/// Matches `AccessibilityAction.ACTION_CUT`.
105-
static const AndroidSemanticsAction cut = AndroidSemanticsAction._(_kCutIndex);
76+
cut(_kCutIndex),
10677

10778
/// Matches `AccessibilityAction.ACTION_COPY`.
108-
static const AndroidSemanticsAction copy = AndroidSemanticsAction._(_kCopyIndex);
79+
copy(_kCopyIndex),
10980

11081
/// Matches `AccessibilityAction.ACTION_PASTE`.
111-
static const AndroidSemanticsAction paste = AndroidSemanticsAction._(_kPasteIndex);
82+
paste(_kPasteIndex),
11283

11384
/// Matches `AccessibilityAction.ACTION_SET_SELECTION`.
114-
static const AndroidSemanticsAction setSelection = AndroidSemanticsAction._(_kSetSelectionIndex);
85+
setSelection(_kSetSelectionIndex),
11586

11687
/// Matches `AccessibilityAction.ACTION_EXPAND`.
117-
static const AndroidSemanticsAction expand = AndroidSemanticsAction._(_kExpandIndex);
88+
expand(_kExpandIndex),
11889

11990
/// Matches `AccessibilityAction.ACTION_COLLAPSE`.
120-
static const AndroidSemanticsAction collapse = AndroidSemanticsAction._(_kCollapseIndex);
91+
collapse(_kCollapseIndex),
12192

12293
/// Matches `AccessibilityAction.SET_TEXT`.
123-
static const AndroidSemanticsAction setText = AndroidSemanticsAction._(_kSetText);
124-
125-
@override
126-
String toString() {
127-
switch (id) {
128-
case _kFocusIndex:
129-
return 'AndroidSemanticsAction.focus';
130-
case _kClearFocusIndex:
131-
return 'AndroidSemanticsAction.clearFocus';
132-
case _kSelectIndex:
133-
return 'AndroidSemanticsAction.select';
134-
case _kClearSelectionIndex:
135-
return 'AndroidSemanticsAction.clearSelection';
136-
case _kClickIndex:
137-
return 'AndroidSemanticsAction.click';
138-
case _kLongClickIndex:
139-
return 'AndroidSemanticsAction.longClick';
140-
case _kAccessibilityFocusIndex:
141-
return 'AndroidSemanticsAction.accessibilityFocus';
142-
case _kClearAccessibilityFocusIndex:
143-
return 'AndroidSemanticsAction.clearAccessibilityFocus';
144-
case _kNextAtMovementGranularityIndex:
145-
return 'AndroidSemanticsAction.nextAtMovementGranularity';
146-
case _kPreviousAtMovementGranularityIndex:
147-
return 'AndroidSemanticsAction.previousAtMovementGranularity';
148-
case _kNextHtmlElementIndex:
149-
return 'AndroidSemanticsAction.nextHtmlElement';
150-
case _kPreviousHtmlElementIndex:
151-
return 'AndroidSemanticsAction.previousHtmlElement';
152-
case _kScrollForwardIndex:
153-
return 'AndroidSemanticsAction.scrollForward';
154-
case _kScrollBackwardIndex:
155-
return 'AndroidSemanticsAction.scrollBackward';
156-
case _kCutIndex:
157-
return 'AndroidSemanticsAction.cut';
158-
case _kCopyIndex:
159-
return 'AndroidSemanticsAction.copy';
160-
case _kPasteIndex:
161-
return 'AndroidSemanticsAction.paste';
162-
case _kSetSelectionIndex:
163-
return 'AndroidSemanticsAction.setSelection';
164-
case _kExpandIndex:
165-
return 'AndroidSemanticsAction.expand';
166-
case _kCollapseIndex:
167-
return 'AndroidSemanticsAction.collapse';
168-
case _kSetText:
169-
return 'AndroidSemanticsAction.setText';
170-
default:
171-
throw UnimplementedError();
172-
}
173-
}
94+
setText(_kSetText);
95+
96+
const AndroidSemanticsAction(this.id);
97+
98+
/// The Android id of the action.
99+
final int id;
100+
101+
static const int _kFocusIndex = 1 << 0;
102+
static const int _kClearFocusIndex = 1 << 1;
103+
static const int _kSelectIndex = 1 << 2;
104+
static const int _kClearSelectionIndex = 1 << 3;
105+
static const int _kClickIndex = 1 << 4;
106+
static const int _kLongClickIndex = 1 << 5;
107+
static const int _kAccessibilityFocusIndex = 1 << 6;
108+
static const int _kClearAccessibilityFocusIndex = 1 << 7;
109+
static const int _kNextAtMovementGranularityIndex = 1 << 8;
110+
static const int _kPreviousAtMovementGranularityIndex = 1 << 9;
111+
static const int _kNextHtmlElementIndex = 1 << 10;
112+
static const int _kPreviousHtmlElementIndex = 1 << 11;
113+
static const int _kScrollForwardIndex = 1 << 12;
114+
static const int _kScrollBackwardIndex = 1 << 13;
115+
static const int _kCutIndex = 1 << 14;
116+
static const int _kCopyIndex = 1 << 15;
117+
static const int _kPasteIndex = 1 << 16;
118+
static const int _kSetSelectionIndex = 1 << 17;
119+
static const int _kExpandIndex = 1 << 18;
120+
static const int _kCollapseIndex = 1 << 19;
121+
static const int _kSetText = 1 << 21;
174122

175123
static const Map<int, AndroidSemanticsAction> _kActionById = <int, AndroidSemanticsAction>{
176124
_kFocusIndex: focus,
@@ -196,18 +144,6 @@ class AndroidSemanticsAction {
196144
_kSetText: setText,
197145
};
198146

199-
@override
200-
int get hashCode => id.hashCode;
201-
202-
@override
203-
bool operator ==(Object other) {
204-
if (other.runtimeType != runtimeType) {
205-
return false;
206-
}
207-
return other is AndroidSemanticsAction
208-
&& other.id == id;
209-
}
210-
211147
/// Creates a new [AndroidSemanticsAction] from an integer `value`.
212148
///
213149
/// Returns `null` if the id is not a known Android accessibility action.

packages/flutter/lib/src/rendering/box.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1390,7 +1390,7 @@ abstract class RenderBox extends RenderObject {
13901390
} else {
13911391
debugTimelineArguments = <String, String>{};
13921392
}
1393-
debugTimelineArguments!['intrinsics dimension'] = describeEnum(dimension);
1393+
debugTimelineArguments!['intrinsics dimension'] = dimension.name;
13941394
debugTimelineArguments!['intrinsics argument'] = '$argument';
13951395
return true;
13961396
}());

packages/flutter/lib/src/widgets/overscroll_indicator.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,7 @@ class _GlowController extends ChangeNotifier {
524524

525525
@override
526526
String toString() {
527-
return '_GlowController(color: $color, axis: ${describeEnum(axis)})';
527+
return '_GlowController(color: $color, axis: ${axis.name})';
528528
}
529529
}
530530

packages/flutter/lib/src/widgets/widget_inspector.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2118,7 +2118,7 @@ mixin WidgetInspectorService {
21182118
if (parentData is FlexParentData) {
21192119
additionalJson['flexFactor'] = parentData.flex!;
21202120
additionalJson['flexFit'] =
2121-
describeEnum(parentData.fit ?? FlexFit.tight);
2121+
(parentData.fit ?? FlexFit.tight).name;
21222122
} else if (parentData is BoxParentData) {
21232123
final Offset offset = parentData.offset;
21242124
additionalJson['parentData'] = <String, Object>{

0 commit comments

Comments
 (0)