Revert "Move declaration of semantic handlers from detectors to recognizers (#33475)" (#33851)

This reverts commit 572f349f5c7db7a783870ea8d4ecc641a365563f.
diff --git a/packages/flutter/lib/gestures.dart b/packages/flutter/lib/gestures.dart
index 356d0d7..7e30894 100644
--- a/packages/flutter/lib/gestures.dart
+++ b/packages/flutter/lib/gestures.dart
@@ -28,7 +28,6 @@
 export 'src/gestures/pointer_signal_resolver.dart';
 export 'src/gestures/recognizer.dart';
 export 'src/gestures/scale.dart';
-export 'src/gestures/semantics.dart';
 export 'src/gestures/tap.dart';
 export 'src/gestures/team.dart';
 export 'src/gestures/velocity_tracker.dart';
diff --git a/packages/flutter/lib/src/gestures/long_press.dart b/packages/flutter/lib/src/gestures/long_press.dart
index 1bacb2c..0c4b66c 100644
--- a/packages/flutter/lib/src/gestures/long_press.dart
+++ b/packages/flutter/lib/src/gestures/long_press.dart
@@ -6,7 +6,6 @@
 import 'constants.dart';
 import 'events.dart';
 import 'recognizer.dart';
-import 'semantics.dart';
 
 /// Callback signature for [LongPressGestureRecognizer.onLongPress].
 ///
@@ -216,23 +215,6 @@
   GestureLongPressEndCallback onLongPressEnd;
 
   @override
-  SemanticsGestureConfiguration get semanticsConfiguration {
-    return _semanticsConfiguration ??= SemanticsGestureConfiguration(
-      onLongPress: () {
-        if (onLongPressStart != null)
-          onLongPressStart(const LongPressStartDetails());
-        if (onLongPress != null)
-          onLongPress();
-        if (onLongPressEnd != null)
-          onLongPressEnd(const LongPressEndDetails());
-        if (onLongPressUp != null)
-          onLongPressUp();
-      },
-    );
-  }
-  SemanticsGestureConfiguration _semanticsConfiguration;
-
-  @override
   bool isPointerAllowed(PointerDownEvent event) {
     switch (event.buttons) {
       case kPrimaryButton:
diff --git a/packages/flutter/lib/src/gestures/monodrag.dart b/packages/flutter/lib/src/gestures/monodrag.dart
index 38329ae..af235ea 100644
--- a/packages/flutter/lib/src/gestures/monodrag.dart
+++ b/packages/flutter/lib/src/gestures/monodrag.dart
@@ -10,7 +10,6 @@
 import 'drag_details.dart';
 import 'events.dart';
 import 'recognizer.dart';
-import 'semantics.dart';
 import 'velocity_tracker.dart';
 
 enum _DragState {
@@ -458,23 +457,6 @@
   }) : super(debugOwner: debugOwner, kind: kind);
 
   @override
-  SemanticsGestureConfiguration get semanticsConfiguration {
-    return _semanticsConfiguration ??= SemanticsGestureConfiguration(
-      onVerticalDragUpdate: (DragUpdateDetails updateDetails) {
-        if (onDown != null)
-          onDown(DragDownDetails());
-        if (onStart != null)
-          onStart(DragStartDetails());
-        if (onUpdate != null)
-          onUpdate(updateDetails);
-        if (onEnd != null)
-          onEnd(DragEndDetails(primaryVelocity: 0.0));
-      },
-    );
-  }
-  SemanticsGestureConfiguration _semanticsConfiguration;
-
-  @override
   bool _isFlingGesture(VelocityEstimate estimate) {
     final double minVelocity = minFlingVelocity ?? kMinFlingVelocity;
     final double minDistance = minFlingDistance ?? kTouchSlop;
@@ -514,23 +496,6 @@
   }) : super(debugOwner: debugOwner, kind: kind);
 
   @override
-  SemanticsGestureConfiguration get semanticsConfiguration {
-    return _semanticsConfiguration ??= SemanticsGestureConfiguration(
-      onHorizontalDragUpdate: (DragUpdateDetails updateDetails) {
-        if (onDown != null)
-          onDown(DragDownDetails());
-        if (onStart != null)
-          onStart(DragStartDetails());
-        if (onUpdate != null)
-          onUpdate(updateDetails);
-        if (onEnd != null)
-          onEnd(DragEndDetails(primaryVelocity: 0.0));
-      },
-    );
-  }
-  SemanticsGestureConfiguration _semanticsConfiguration;
-
-  @override
   bool _isFlingGesture(VelocityEstimate estimate) {
     final double minVelocity = minFlingVelocity ?? kMinFlingVelocity;
     final double minDistance = minFlingDistance ?? kTouchSlop;
@@ -564,33 +529,6 @@
   PanGestureRecognizer({ Object debugOwner }) : super(debugOwner: debugOwner);
 
   @override
-  SemanticsGestureConfiguration get semanticsConfiguration {
-    return _semanticsConfiguration ??= SemanticsGestureConfiguration(
-      onHorizontalDragUpdate: (DragUpdateDetails updateDetails) {
-        if (onDown != null)
-          onDown(DragDownDetails());
-        if (onStart != null)
-          onStart(DragStartDetails());
-        if (onUpdate != null)
-          onUpdate(updateDetails);
-        if (onEnd != null)
-          onEnd(DragEndDetails());
-      },
-      onVerticalDragUpdate: (DragUpdateDetails updateDetails) {
-        if (onDown != null)
-          onDown(DragDownDetails());
-        if (onStart != null)
-          onStart(DragStartDetails());
-        if (onUpdate != null)
-          onUpdate(updateDetails);
-        if (onEnd != null)
-          onEnd(DragEndDetails());
-      },
-    );
-  }
-  SemanticsGestureConfiguration _semanticsConfiguration;
-
-  @override
   bool _isFlingGesture(VelocityEstimate estimate) {
     final double minVelocity = minFlingVelocity ?? kMinFlingVelocity;
     final double minDistance = minFlingDistance ?? kTouchSlop;
diff --git a/packages/flutter/lib/src/gestures/recognizer.dart b/packages/flutter/lib/src/gestures/recognizer.dart
index 6492ff7..53f9bd6 100644
--- a/packages/flutter/lib/src/gestures/recognizer.dart
+++ b/packages/flutter/lib/src/gestures/recognizer.dart
@@ -15,7 +15,6 @@
 import 'debug.dart';
 import 'events.dart';
 import 'pointer_router.dart';
-import 'semantics.dart';
 import 'team.dart';
 
 export 'pointer_router.dart' show PointerRouter;
@@ -143,21 +142,6 @@
     return _pointerToKind[pointer];
   }
 
-  /// Returns the semantics configuration of this gesture recognizer, for example
-  /// for accessibility purposes. It is queried by the recognizer's
-  /// [RawGestureDetector] to build a collective semantics annotation.
-  ///
-  /// This method should be overridden by subclasses that are interested in
-  /// semantic gestures.
-  ///
-  /// The returned [SemanticsGestureConfiguration] object should be annotated in
-  /// a manner that describes the current state, and should remain consistant
-  /// behaviors across different calls. It is recommended to cache the returned
-  /// object.
-  SemanticsGestureConfiguration get semanticsConfiguration {
-    return null;
-  }
-
   /// Releases any resources used by the object.
   ///
   /// This method is called by the owner of this gesture recognizer
diff --git a/packages/flutter/lib/src/gestures/semantics.dart b/packages/flutter/lib/src/gestures/semantics.dart
deleted file mode 100644
index ff63f62..0000000
--- a/packages/flutter/lib/src/gestures/semantics.dart
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2019 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'drag_details.dart';
-
-/// Called when the user taps with a semantics device.
-typedef SemanticsTapCallback = void Function();
-/// Called when the user presses for a long period of time with a semantics
-/// device.
-typedef SemanticsLongPressCallback = void Function();
-/// Called when the user drags with a semantics device.
-typedef SemanticsDragUpdateCallback = void Function(DragUpdateDetails details);
-
-/// Describes the semantics configuration of a gesture recognizer, for example
-/// for accessibility purposes. It is queried by the recognizer's
-/// [RawGestureDetector] to build a collective semantics annotation.
-///
-/// When a [RawGestureDetector] receives a semantics gesture, it will invoke
-/// the corresponding method that each recognizer reports in the configuration.
-///
-/// See also:
-///
-///  * [GestureRecognizer.semanticsConfiguration], a method that returns this
-///    class.
-class SemanticsGestureConfiguration {
-  /// Initialize the semantics handler configuration by declaring the handlers
-  /// for each kind of semantics events.
-  SemanticsGestureConfiguration({
-    this.onTap,
-    this.onLongPress,
-    this.onHorizontalDragUpdate,
-    this.onVerticalDragUpdate,
-  });
-
-  /// Called when the user taps with a semantics device.
-  ///
-  /// See also:
-  ///
-  ///  * [RenderSemanticsGestureHandler.onTap], which calls this handler with
-  ///    the help of [RawGestureRecognizer].
-  final SemanticsTapCallback onTap;
-
-  /// Called when the user presses for a long period of time with a semantics
-  /// device.
-  ///
-  /// See also:
-  ///
-  ///  * [RenderSemanticsGestureHandler.onLongPress], which calls this handler
-  ///    with the help of [RawGestureRecognizer].
-  final SemanticsLongPressCallback onLongPress;
-
-  /// Called when the user scrolls to the left or to the right with a semantics
-  /// device.
-  ///
-  /// See also:
-  ///
-  ///  * [RenderSemanticsGestureHandler.onHorizontalDragUpdate], which calls
-  ///    this handler with the help of [RawGestureRecognizer].
-  final SemanticsDragUpdateCallback onHorizontalDragUpdate;
-
-  /// Called when the user scrolls up or down with a semantics device.
-  ///
-  /// See also:
-  ///
-  ///  * [RenderSemanticsGestureHandler.onVerticalDragUpdate], which calls
-  ///    this handler with the help of [RawGestureRecognizer].
-  final SemanticsDragUpdateCallback onVerticalDragUpdate;
-}
diff --git a/packages/flutter/lib/src/gestures/tap.dart b/packages/flutter/lib/src/gestures/tap.dart
index b4ab408..f23a644 100644
--- a/packages/flutter/lib/src/gestures/tap.dart
+++ b/packages/flutter/lib/src/gestures/tap.dart
@@ -8,7 +8,6 @@
 import 'constants.dart';
 import 'events.dart';
 import 'recognizer.dart';
-import 'semantics.dart';
 
 /// Details for [GestureTapDownCallback], such as position
 ///
@@ -239,25 +238,6 @@
   int _initialButtons;
 
   @override
-  SemanticsGestureConfiguration get semanticsConfiguration {
-    // This method must always return a non-null configuration with a non-null
-    // onTap, even when there are no handlers related to semantics, because the
-    // handler properties are mutable, and assigning properties will not notify
-    // RawGestureDetector to update its combined configuration.
-    return _semanticsConfiguration ??= SemanticsGestureConfiguration(
-      onTap: () {
-        if (onTapDown != null)
-          onTapDown(TapDownDetails());
-        if (onTapUp != null)
-          onTapUp(TapUpDetails());
-        if (onTap != null)
-          onTap();
-      },
-    );
-  }
-  SemanticsGestureConfiguration _semanticsConfiguration;
-
-  @override
   bool isPointerAllowed(PointerDownEvent event) {
     switch (event.buttons) {
       case kPrimaryButton:
diff --git a/packages/flutter/lib/src/rendering/proxy_box.dart b/packages/flutter/lib/src/rendering/proxy_box.dart
index a984f4a..7a6bf1e 100644
--- a/packages/flutter/lib/src/rendering/proxy_box.dart
+++ b/packages/flutter/lib/src/rendering/proxy_box.dart
@@ -3234,10 +3234,10 @@
   /// The [scrollFactor] argument must not be null.
   RenderSemanticsGestureHandler({
     RenderBox child,
-    SemanticsTapCallback onTap,
-    SemanticsLongPressCallback onLongPress,
-    SemanticsDragUpdateCallback onHorizontalDragUpdate,
-    SemanticsDragUpdateCallback onVerticalDragUpdate,
+    GestureTapCallback onTap,
+    GestureLongPressCallback onLongPress,
+    GestureDragUpdateCallback onHorizontalDragUpdate,
+    GestureDragUpdateCallback onVerticalDragUpdate,
     this.scrollFactor = 0.8,
   }) : assert(scrollFactor != null),
        _onTap = onTap,
@@ -3269,9 +3269,9 @@
   }
 
   /// Called when the user taps on the render object.
-  SemanticsTapCallback get onTap => _onTap;
-  SemanticsTapCallback _onTap;
-  set onTap(SemanticsTapCallback value) {
+  GestureTapCallback get onTap => _onTap;
+  GestureTapCallback _onTap;
+  set onTap(GestureTapCallback value) {
     if (_onTap == value)
       return;
     final bool hadHandler = _onTap != null;
@@ -3281,9 +3281,9 @@
   }
 
   /// Called when the user presses on the render object for a long period of time.
-  SemanticsLongPressCallback get onLongPress => _onLongPress;
-  SemanticsLongPressCallback _onLongPress;
-  set onLongPress(SemanticsLongPressCallback value) {
+  GestureLongPressCallback get onLongPress => _onLongPress;
+  GestureLongPressCallback _onLongPress;
+  set onLongPress(GestureLongPressCallback value) {
     if (_onLongPress == value)
       return;
     final bool hadHandler = _onLongPress != null;
@@ -3293,9 +3293,9 @@
   }
 
   /// Called when the user scrolls to the left or to the right.
-  SemanticsDragUpdateCallback get onHorizontalDragUpdate => _onHorizontalDragUpdate;
-  SemanticsDragUpdateCallback _onHorizontalDragUpdate;
-  set onHorizontalDragUpdate(SemanticsDragUpdateCallback value) {
+  GestureDragUpdateCallback get onHorizontalDragUpdate => _onHorizontalDragUpdate;
+  GestureDragUpdateCallback _onHorizontalDragUpdate;
+  set onHorizontalDragUpdate(GestureDragUpdateCallback value) {
     if (_onHorizontalDragUpdate == value)
       return;
     final bool hadHandler = _onHorizontalDragUpdate != null;
@@ -3305,9 +3305,9 @@
   }
 
   /// Called when the user scrolls up or down.
-  SemanticsDragUpdateCallback get onVerticalDragUpdate => _onVerticalDragUpdate;
-  SemanticsDragUpdateCallback _onVerticalDragUpdate;
-  set onVerticalDragUpdate(SemanticsDragUpdateCallback value) {
+  GestureDragUpdateCallback get onVerticalDragUpdate => _onVerticalDragUpdate;
+  GestureDragUpdateCallback _onVerticalDragUpdate;
+  set onVerticalDragUpdate(GestureDragUpdateCallback value) {
     if (_onVerticalDragUpdate == value)
       return;
     final bool hadHandler = _onVerticalDragUpdate != null;
diff --git a/packages/flutter/lib/src/widgets/gesture_detector.dart b/packages/flutter/lib/src/widgets/gesture_detector.dart
index 4afb680..e916ec3 100644
--- a/packages/flutter/lib/src/widgets/gesture_detector.dart
+++ b/packages/flutter/lib/src/widgets/gesture_detector.dart
@@ -105,87 +105,6 @@
   void initializer(T instance) => _initializer(instance);
 }
 
-// Retrieve semantics handlers from the given recognizers and combine them into
-// collective callbacks, one for each kind of semantics gesture.
-//
-// This class stores the handlers instead of the recognizers, therefore any
-// change to the recognzier list needs to be followed by [buildHandlers].
-class _CombinedSemanticsHandlers {
-  _CombinedSemanticsHandlers({
-    Iterable<GestureRecognizer> recognizers,
-  }) {
-    buildHandlers(recognizers);
-  }
-
-  final List<SemanticsTapCallback> _tapHandlers = <SemanticsTapCallback>[];
-  final List<SemanticsLongPressCallback> _longPressHandlers =
-    <SemanticsLongPressCallback>[];
-  final List<SemanticsDragUpdateCallback> _horizontalHandlers =
-    <SemanticsDragUpdateCallback>[];
-  final List<SemanticsDragUpdateCallback> _verticalHandlers =
-    <SemanticsDragUpdateCallback>[];
-
-  // The following getters of handlers return null unless any recognizers
-  // show interest in the corresponding kind of semantics gestures.
-  SemanticsTapCallback get onTap {
-    return _tapHandlers.isEmpty ? null : _handleTap;
-  }
-  SemanticsLongPressCallback get onLongPress {
-    return _longPressHandlers.isEmpty ? null : _handleLongPress;
-  }
-  SemanticsDragUpdateCallback get onHorizontalDragUpdate {
-    return _horizontalHandlers.isEmpty ? null : _handleHorizontalDragUpdate;
-  }
-  SemanticsDragUpdateCallback get onVerticalDragUpdate {
-    return _verticalHandlers.isEmpty ? null : _handleVerticalDragUpdate;
-  }
-
-  // Clear internal cache of lists of callbacks, and build anew from the given
-  // recognziers.
-  void buildHandlers(Iterable<GestureRecognizer> recognizers) {
-    _tapHandlers.clear();
-    _longPressHandlers.clear();
-    _horizontalHandlers.clear();
-    _verticalHandlers.clear();
-    if (recognizers == null)
-      return;
-    for (GestureRecognizer recognizer in recognizers) {
-      final SemanticsGestureConfiguration configuration =
-        recognizer.semanticsConfiguration;
-      if (configuration == null)
-        continue;
-      if (configuration.onTap != null)
-        _tapHandlers.add(configuration.onTap);
-      if (configuration.onLongPress != null)
-        _longPressHandlers.add(configuration.onLongPress);
-      if (configuration.onHorizontalDragUpdate != null)
-        _horizontalHandlers.add(configuration.onHorizontalDragUpdate);
-      if (configuration.onVerticalDragUpdate != null)
-        _verticalHandlers.add(configuration.onVerticalDragUpdate);
-    }
-  }
-
-  void _handleTap() {
-    for (SemanticsTapCallback callback in _tapHandlers)
-      callback();
-  }
-
-  void _handleLongPress() {
-    for (SemanticsTapCallback callback in _longPressHandlers)
-      callback();
-  }
-
-  void _handleHorizontalDragUpdate(DragUpdateDetails details) {
-    for (SemanticsDragUpdateCallback callback in _horizontalHandlers)
-      callback(details);
-  }
-
-  void _handleVerticalDragUpdate(DragUpdateDetails details) {
-    for (SemanticsDragUpdateCallback callback in _verticalHandlers)
-      callback(details);
-  }
-}
-
 /// A widget that detects gestures.
 ///
 /// Attempts to recognize gestures that correspond to its non-null callbacks.
@@ -892,8 +811,6 @@
 /// State for a [RawGestureDetector].
 class RawGestureDetectorState extends State<RawGestureDetector> {
   Map<Type, GestureRecognizer> _recognizers = const <Type, GestureRecognizer>{};
-  final _CombinedSemanticsHandlers _semanticsHandlers =
-    _CombinedSemanticsHandlers();
 
   @override
   void initState() {
@@ -995,7 +912,6 @@
       if (!_recognizers.containsKey(type))
         oldRecognizers[type].dispose();
     }
-    _semanticsHandlers.buildHandlers(_recognizers.values);
   }
 
   void _handlePointerDown(PointerDownEvent event) {
@@ -1008,6 +924,92 @@
     return widget.child == null ? HitTestBehavior.translucent : HitTestBehavior.deferToChild;
   }
 
+  void _handleSemanticsTap() {
+    final TapGestureRecognizer recognizer = _recognizers[TapGestureRecognizer];
+    assert(recognizer != null);
+    if (recognizer.onTapDown != null)
+      recognizer.onTapDown(TapDownDetails());
+    if (recognizer.onTapUp != null)
+      recognizer.onTapUp(TapUpDetails());
+    if (recognizer.onTap != null)
+      recognizer.onTap();
+  }
+
+  void _handleSemanticsLongPress() {
+    final LongPressGestureRecognizer recognizer = _recognizers[LongPressGestureRecognizer];
+    assert(recognizer != null);
+    if (recognizer.onLongPressStart != null)
+      recognizer.onLongPressStart(const LongPressStartDetails());
+    if (recognizer.onLongPress != null)
+      recognizer.onLongPress();
+    if (recognizer.onLongPressEnd != null)
+      recognizer.onLongPressEnd(const LongPressEndDetails());
+    if (recognizer.onLongPressUp != null)
+      recognizer.onLongPressUp();
+  }
+
+  void _handleSemanticsHorizontalDragUpdate(DragUpdateDetails updateDetails) {
+    {
+      final HorizontalDragGestureRecognizer recognizer = _recognizers[HorizontalDragGestureRecognizer];
+      if (recognizer != null) {
+        if (recognizer.onDown != null)
+          recognizer.onDown(DragDownDetails());
+        if (recognizer.onStart != null)
+          recognizer.onStart(DragStartDetails());
+        if (recognizer.onUpdate != null)
+          recognizer.onUpdate(updateDetails);
+        if (recognizer.onEnd != null)
+          recognizer.onEnd(DragEndDetails(primaryVelocity: 0.0));
+        return;
+      }
+    }
+    {
+      final PanGestureRecognizer recognizer = _recognizers[PanGestureRecognizer];
+      if (recognizer != null) {
+        if (recognizer.onDown != null)
+          recognizer.onDown(DragDownDetails());
+        if (recognizer.onStart != null)
+          recognizer.onStart(DragStartDetails());
+        if (recognizer.onUpdate != null)
+          recognizer.onUpdate(updateDetails);
+        if (recognizer.onEnd != null)
+          recognizer.onEnd(DragEndDetails());
+        return;
+      }
+    }
+  }
+
+  void _handleSemanticsVerticalDragUpdate(DragUpdateDetails updateDetails) {
+    {
+      final VerticalDragGestureRecognizer recognizer = _recognizers[VerticalDragGestureRecognizer];
+      if (recognizer != null) {
+        if (recognizer.onDown != null)
+          recognizer.onDown(DragDownDetails());
+        if (recognizer.onStart != null)
+          recognizer.onStart(DragStartDetails());
+        if (recognizer.onUpdate != null)
+          recognizer.onUpdate(updateDetails);
+        if (recognizer.onEnd != null)
+          recognizer.onEnd(DragEndDetails(primaryVelocity: 0.0));
+        return;
+      }
+    }
+    {
+      final PanGestureRecognizer recognizer = _recognizers[PanGestureRecognizer];
+      if (recognizer != null) {
+        if (recognizer.onDown != null)
+          recognizer.onDown(DragDownDetails());
+        if (recognizer.onStart != null)
+          recognizer.onStart(DragStartDetails());
+        if (recognizer.onUpdate != null)
+          recognizer.onUpdate(updateDetails);
+        if (recognizer.onEnd != null)
+          recognizer.onEnd(DragEndDetails());
+        return;
+      }
+    }
+  }
+
   @override
   Widget build(BuildContext context) {
     Widget result = Listener(
@@ -1066,16 +1068,21 @@
     _updateHandlers(renderObject);
   }
 
-  SemanticsTapCallback get _onTapHandler {
-    return owner._semanticsHandlers.onTap;
+  GestureTapCallback get _onTapHandler {
+    return owner._recognizers.containsKey(TapGestureRecognizer) ? owner._handleSemanticsTap : null;
   }
-  SemanticsTapCallback get _onLongPressHandler {
-    return owner._semanticsHandlers.onLongPress;
+
+  GestureTapCallback get _onLongPressHandler {
+    return owner._recognizers.containsKey(LongPressGestureRecognizer) ? owner._handleSemanticsLongPress : null;
   }
-  SemanticsDragUpdateCallback get _onHorizontalDragUpdateHandler {
-    return owner._semanticsHandlers.onHorizontalDragUpdate;
+
+  GestureDragUpdateCallback get _onHorizontalDragUpdateHandler {
+    return owner._recognizers.containsKey(HorizontalDragGestureRecognizer) ||
+        owner._recognizers.containsKey(PanGestureRecognizer) ? owner._handleSemanticsHorizontalDragUpdate : null;
   }
-  SemanticsDragUpdateCallback get _onVerticalDragUpdateHandler {
-    return owner._semanticsHandlers.onVerticalDragUpdate;
+
+  GestureDragUpdateCallback get _onVerticalDragUpdateHandler {
+    return owner._recognizers.containsKey(VerticalDragGestureRecognizer) ||
+        owner._recognizers.containsKey(PanGestureRecognizer) ? owner._handleSemanticsVerticalDragUpdate : null;
   }
 }
diff --git a/packages/flutter/test/gestures/drag_test.dart b/packages/flutter/test/gestures/drag_test.dart
index 5efc404..35a8197 100644
--- a/packages/flutter/test/gestures/drag_test.dart
+++ b/packages/flutter/test/gestures/drag_test.dart
@@ -845,120 +845,4 @@
     tap.dispose();
     recognized.clear();
   });
-
-  group('Semantic gesture configuration:', () {
-    test('HorizontalDragGestureRecognizer\'s semantic handlers are correctly called', () {
-      final List<String> logs = <String>[];
-      final HorizontalDragGestureRecognizer drag = HorizontalDragGestureRecognizer()
-        ..onDown = (_) { logs.add('onDown'); }
-        ..onStart = (_) { logs.add('onStart'); }
-        ..onUpdate = (_) { logs.add('onUpdate'); }
-        ..onEnd = (_) { logs.add('onEnd'); };
-      final SemanticsGestureConfiguration configuration = drag.semanticsConfiguration;
-
-      expect(configuration, isNotNull);
-      expect(configuration.onTap, isNull);
-      expect(configuration.onLongPress, isNull);
-      expect(configuration.onHorizontalDragUpdate, isNotNull);
-      expect(configuration.onVerticalDragUpdate, isNull);
-
-      configuration.onHorizontalDragUpdate(DragUpdateDetails(
-        globalPosition: const Offset(11, 13),
-      ));
-      expect(logs, <String>['onDown', 'onStart', 'onUpdate', 'onEnd']);
-      logs.clear();
-
-      // Assigning handler should update the configuration handler's behavior but
-      // keep the configuration object
-      drag..onDown = null
-          ..onStart = null
-          ..onUpdate = null
-          ..onEnd = null;
-      final SemanticsGestureConfiguration configuration2 = drag.semanticsConfiguration;
-      expect(configuration, same(configuration2));
-      configuration.onHorizontalDragUpdate(DragUpdateDetails(
-        globalPosition: const Offset(12, 14),
-      ));
-      expect(logs, <String>[]);
-    });
-
-    test('VerticalDragGestureRecognizer\'s semantic handlers are correctly called', () {
-      final List<String> logs = <String>[];
-      final VerticalDragGestureRecognizer drag = VerticalDragGestureRecognizer()
-        ..onDown = (_) { logs.add('onDown'); }
-        ..onStart = (_) { logs.add('onStart'); }
-        ..onUpdate = (_) { logs.add('onUpdate'); }
-        ..onEnd = (_) { logs.add('onEnd'); };
-      final SemanticsGestureConfiguration configuration = drag.semanticsConfiguration;
-
-      expect(configuration, isNotNull);
-      expect(configuration.onTap, isNull);
-      expect(configuration.onLongPress, isNull);
-      expect(configuration.onHorizontalDragUpdate, isNull);
-      expect(configuration.onVerticalDragUpdate, isNotNull);
-
-      configuration.onVerticalDragUpdate(DragUpdateDetails(
-        globalPosition: const Offset(11, 13),
-      ));
-      expect(logs, <String>['onDown', 'onStart', 'onUpdate', 'onEnd']);
-      logs.clear();
-
-      // Assigning handler should update the configuration handler's behavior but
-      // keep the configuration object
-      drag..onDown = null
-          ..onStart = null
-          ..onUpdate = null
-          ..onEnd = null;
-      final SemanticsGestureConfiguration configuration2 = drag.semanticsConfiguration;
-      expect(configuration, same(configuration2));
-      configuration.onVerticalDragUpdate(DragUpdateDetails(
-        globalPosition: const Offset(12, 14),
-      ));
-      expect(logs, <String>[]);
-    });
-
-    test('PanGestureRecognizer\'s semantic handlers are correctly called', () {
-      final List<String> logs = <String>[];
-      final PanGestureRecognizer drag = PanGestureRecognizer()
-        ..onDown = (_) { logs.add('onDown'); }
-        ..onStart = (_) { logs.add('onStart'); }
-        ..onUpdate = (_) { logs.add('onUpdate'); }
-        ..onEnd = (_) { logs.add('onEnd'); };
-      final SemanticsGestureConfiguration configuration = drag.semanticsConfiguration;
-
-      expect(configuration, isNotNull);
-      expect(configuration.onTap, isNull);
-      expect(configuration.onLongPress, isNull);
-      expect(configuration.onHorizontalDragUpdate, isNotNull);
-      expect(configuration.onVerticalDragUpdate, isNotNull);
-
-      configuration.onVerticalDragUpdate(DragUpdateDetails(
-        globalPosition: const Offset(11, 13),
-      ));
-      expect(logs, <String>['onDown', 'onStart', 'onUpdate', 'onEnd']);
-      logs.clear();
-
-      configuration.onHorizontalDragUpdate(DragUpdateDetails(
-        globalPosition: const Offset(11, 13),
-      ));
-      expect(logs, <String>['onDown', 'onStart', 'onUpdate', 'onEnd']);
-      logs.clear();
-
-      // Assigning handler should update the configuration handler's behavior but
-      // keep the configuration object
-      drag..onDown = null
-          ..onStart = null
-          ..onUpdate = null
-          ..onEnd = null;
-      final SemanticsGestureConfiguration configuration2 = drag.semanticsConfiguration;
-      expect(configuration, same(configuration2));
-      configuration.onVerticalDragUpdate(DragUpdateDetails(
-        globalPosition: const Offset(12, 14),
-      ));
-      configuration.onHorizontalDragUpdate(DragUpdateDetails(
-        globalPosition: const Offset(12, 14),
-      ));
-      expect(logs, <String>[]);
-    });
-  });
 }
diff --git a/packages/flutter/test/gestures/long_press_test.dart b/packages/flutter/test/gestures/long_press_test.dart
index 7a6630d..746ba6b 100644
--- a/packages/flutter/test/gestures/long_press_test.dart
+++ b/packages/flutter/test/gestures/long_press_test.dart
@@ -588,35 +588,4 @@
     longPress.dispose();
     recognized.clear();
   });
-
-  test('Semantic onLongPress correctly calls handlers', () {
-    final List<String> logs = <String>[];
-    final LongPressGestureRecognizer longPress = LongPressGestureRecognizer()
-      ..onLongPressStart = (_) { logs.add('onLongPressStart'); }
-      ..onLongPress = () { logs.add('onLongPress'); }
-      ..onLongPressEnd = (_) { logs.add('onLongPressEnd'); }
-      ..onLongPressUp = () { logs.add('onLongPressUp'); };
-    final SemanticsGestureConfiguration configuration = longPress.semanticsConfiguration;
-
-    expect(configuration, isNotNull);
-    expect(configuration.onTap, isNull);
-    expect(configuration.onLongPress, isNotNull);
-    expect(configuration.onHorizontalDragUpdate, isNull);
-    expect(configuration.onVerticalDragUpdate, isNull);
-
-    configuration.onLongPress();
-    expect(logs, <String>['onLongPressStart', 'onLongPress', 'onLongPressEnd', 'onLongPressUp']);
-    logs.clear();
-
-    // Assigning handler should update the configuration handler's behavior but
-    // keep the configuration object
-    longPress..onLongPressStart = null
-             ..onLongPress = null
-             ..onLongPressEnd = null
-             ..onLongPressUp = null;
-    final SemanticsGestureConfiguration configuration2 = longPress.semanticsConfiguration;
-    expect(configuration, same(configuration2));
-    configuration.onLongPress();
-    expect(logs, <String>[]);
-  });
 }
diff --git a/packages/flutter/test/gestures/tap_test.dart b/packages/flutter/test/gestures/tap_test.dart
index 50b4f00..2d377d6 100644
--- a/packages/flutter/test/gestures/tap_test.dart
+++ b/packages/flutter/test/gestures/tap_test.dart
@@ -799,33 +799,4 @@
       expect(recognized, <String>['secondaryCancel']);
     });
   });
-
-  test('Semantic onTap correctly calls handlers', () {
-    final List<String> logs = <String>[];
-    final TapGestureRecognizer tap = TapGestureRecognizer()
-      ..onTapDown = (_) { logs.add('onTapDown'); }
-      ..onTapUp = (_) { logs.add('onTapUp'); }
-      ..onTap = () { logs.add('onTap'); };
-    final SemanticsGestureConfiguration configuration = tap.semanticsConfiguration;
-
-    expect(configuration, isNotNull);
-    expect(configuration.onTap, isNotNull);
-    expect(configuration.onLongPress, isNull);
-    expect(configuration.onHorizontalDragUpdate, isNull);
-    expect(configuration.onVerticalDragUpdate, isNull);
-
-    configuration.onTap();
-    expect(logs, <String>['onTapDown', 'onTapUp', 'onTap']);
-    logs.clear();
-
-    // Assigning handler should update the configuration handler's behavior but
-    // keep the configuration object
-    tap..onTapDown = null
-       ..onTapUp = null
-       ..onTap = null;
-    final SemanticsGestureConfiguration configuration2 = tap.semanticsConfiguration;
-    expect(configuration, same(configuration2));
-    configuration.onTap();
-    expect(logs, <String>[]);
-  });
 }
diff --git a/packages/flutter/test/widgets/gesture_detector_semantics_test.dart b/packages/flutter/test/widgets/gesture_detector_semantics_test.dart
index 7a7550c..e616be3 100644
--- a/packages/flutter/test/widgets/gesture_detector_semantics_test.dart
+++ b/packages/flutter/test/widgets/gesture_detector_semantics_test.dart
@@ -2,7 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'package:flutter/gestures.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:flutter/rendering.dart';
 import 'package:flutter/widgets.dart';
@@ -77,124 +76,4 @@
 
     semantics.dispose();
   });
-
-  testWidgets('All registered handlers for the gesture kind are called', (WidgetTester tester) async {
-    final SemanticsTester semantics = SemanticsTester(tester);
-
-    final Set<String> logs = <String>{};
-    final GlobalKey detectorKey = GlobalKey();
-
-    await tester.pumpWidget(
-      Center(
-        child: GestureDetector(
-          key: detectorKey,
-          onHorizontalDragStart: (_) { logs.add('horizontal'); },
-          onPanStart: (_) { logs.add('pan'); },
-          child: Container(),
-        ),
-      ),
-    );
-
-    final int detectorId = detectorKey.currentContext.findRenderObject().debugSemantics.id;
-    tester.binding.pipelineOwner.semanticsOwner.performAction(detectorId, SemanticsAction.scrollLeft);
-    expect(logs, <String>{'horizontal', 'pan'});
-
-    semantics.dispose();
-  });
-
-  testWidgets('Replacing recognizers should update semantic handlers', (WidgetTester tester) async {
-    final SemanticsTester semantics = SemanticsTester(tester);
-
-    // How the test is set up:
-    //  - Base state: RawGestureDetector with a HorizontalGR
-    //  - Calling `introduceLayoutPerformer()` adds a `TestLayoutPerformer` as
-    //    child of RawGestureDetector.
-    //  - TestLayoutPerformer calls RawGestureDetector.replaceGestureRecognizers
-    //    during layout phase, which replaces the recognizers with a TapGR.
-
-    final Set<String> logs = <String>{};
-    final GlobalKey<RawGestureDetectorState> detectorKey = GlobalKey();
-    final VoidCallback performLayout = () {
-      detectorKey.currentState.replaceGestureRecognizers(<Type, GestureRecognizerFactory>{
-        TapGestureRecognizer: GestureRecognizerFactoryWithHandlers<TapGestureRecognizer>(
-          () => TapGestureRecognizer(),
-          (TapGestureRecognizer instance) {
-            instance
-              ..onTap = () { logs.add('tap'); };
-          },
-        )
-      });
-    };
-
-    bool hasLayoutPerformer = false;
-    VoidCallback introduceLayoutPerformer;
-    await tester.pumpWidget(
-      StatefulBuilder(
-        builder: (BuildContext context, StateSetter setter) {
-          introduceLayoutPerformer = () {
-            setter(() {
-              hasLayoutPerformer = true;
-            });
-          };
-          return Center(
-            child: RawGestureDetector(
-              key: detectorKey,
-              gestures: <Type, GestureRecognizerFactory>{
-                HorizontalDragGestureRecognizer: GestureRecognizerFactoryWithHandlers<HorizontalDragGestureRecognizer>(
-                  () => HorizontalDragGestureRecognizer(),
-                  (HorizontalDragGestureRecognizer instance) {
-                    instance
-                      ..onStart = (_) { logs.add('horizontal'); };
-                  },
-                )
-              },
-              child: hasLayoutPerformer ? TestLayoutPerformer(performLayout: performLayout) : null,
-            ),
-          );
-        },
-      ),
-    );
-
-    final int detectorId = detectorKey.currentContext.findRenderObject().debugSemantics.id;
-    tester.binding.pipelineOwner.semanticsOwner.performAction(detectorId, SemanticsAction.scrollLeft);
-    expect(logs, <String>{'horizontal'});
-    logs.clear();
-
-    introduceLayoutPerformer();
-    await tester.pumpAndSettle();
-
-    tester.binding.pipelineOwner.semanticsOwner.performAction(detectorId, SemanticsAction.scrollLeft);
-    tester.binding.pipelineOwner.semanticsOwner.performAction(detectorId, SemanticsAction.tap);
-    expect(logs, <String>{'tap'});
-    logs.clear();
-
-    semantics.dispose();
-  });
-}
-
-class TestLayoutPerformer extends SingleChildRenderObjectWidget {
-  const TestLayoutPerformer({
-    Key key,
-    this.performLayout,
-  }) : super(key: key);
-
-  final VoidCallback performLayout;
-
-  @override
-  RenderTestLayoutPerformer createRenderObject(BuildContext context) {
-    return RenderTestLayoutPerformer(performLayout: performLayout);
-  }
-}
-
-class RenderTestLayoutPerformer extends RenderBox {
-  RenderTestLayoutPerformer({VoidCallback performLayout}) : _performLayout = performLayout;
-
-  VoidCallback _performLayout;
-
-  @override
-  void performLayout() {
-    size = const Size(1, 1);
-    if (_performLayout != null)
-      _performLayout();
-  }
 }