diff --git a/shell/platform/android/io/flutter/view/AccessibilityBridge.java b/shell/platform/android/io/flutter/view/AccessibilityBridge.java index 0f4cefd0a88..f6ed0179be8 100644 --- a/shell/platform/android/io/flutter/view/AccessibilityBridge.java +++ b/shell/platform/android/io/flutter/view/AccessibilityBridge.java @@ -435,6 +435,7 @@ public class AccessibilityBridge extends AccessibilityNodeProvider { touchExplorationStateChangeListener); } contentResolver.unregisterContentObserver(animationScaleObserver); + accessibilityChannel.setAccessibilityMessageHandler(null); } /** Returns true if the Android OS currently has accessibility enabled, false otherwise. */ diff --git a/shell/platform/android/test/io/flutter/view/AccessibilityBridgeTest.java b/shell/platform/android/test/io/flutter/view/AccessibilityBridgeTest.java index 7a3e4289be6..38a6d7e695e 100644 --- a/shell/platform/android/test/io/flutter/view/AccessibilityBridgeTest.java +++ b/shell/platform/android/test/io/flutter/view/AccessibilityBridgeTest.java @@ -6,6 +6,7 @@ package io.flutter.view; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -157,6 +158,20 @@ public class AccessibilityBridgeTest { accessibilityBridge.onAccessibilityHoverEvent(MotionEvent.obtain(1, 1, 1, -10, -10, 0)); } + @Test + public void releaseDropsChannelMessageHandler() { + AccessibilityChannel mockChannel = mock(AccessibilityChannel.class); + AccessibilityManager mockManager = mock(AccessibilityManager.class); + when(mockManager.isEnabled()).thenReturn(true); + AccessibilityBridge accessibilityBridge = + setUpBridge(null, mockChannel, mockManager, null, null, null); + verify(mockChannel) + .setAccessibilityMessageHandler( + any(AccessibilityChannel.AccessibilityMessageHandler.class)); + accessibilityBridge.release(); + verify(mockChannel).setAccessibilityMessageHandler(null); + } + AccessibilityBridge setUpBridge() { return setUpBridge(null, null, null, null, null, null); }