Loading packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java +6 −4 Original line number Diff line number Diff line Loading @@ -712,6 +712,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener, mHandler.removeCallbacks(mAutoDim); mHandler.removeCallbacks(mOnVariableDurationHomeLongClick); mHandler.removeCallbacks(mEnableLayoutTransitions); mNavigationBarA11yHelper.removeA11yEventListener(mAccessibilityListener); mFrame = null; mNavigationBarView = null; mOrientationHandle = null; Loading Loading @@ -1391,10 +1392,11 @@ public class NavigationBar implements View.OnAttachStateChangeListener, void updateAccessibilityServicesState() { int a11yFlags = mNavigationBarA11yHelper.getA11yButtonState(); if (mNavigationBarView != null) { boolean clickable = (a11yFlags & SYSUI_STATE_A11Y_BUTTON_CLICKABLE) != 0; boolean longClickable = (a11yFlags & SYSUI_STATE_A11Y_BUTTON_LONG_CLICKABLE) != 0; mNavigationBarView.setAccessibilityButtonState(clickable, longClickable); } updateSystemUiStateFlags(a11yFlags); } Loading packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTest.java +18 −1 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ import android.testing.TestableLooper.RunWithLooper; import android.view.Display; import android.view.DisplayInfo; import android.view.MotionEvent; import android.view.View; import android.view.WindowManager; import android.view.WindowMetrics; import android.view.accessibility.AccessibilityManager; Loading Loading @@ -122,6 +123,8 @@ public class NavigationBarTest extends SysuiTestCase { EdgeBackGestureHandler.Factory mEdgeBackGestureHandlerFactory; @Mock EdgeBackGestureHandler mEdgeBackGestureHandler; @Mock NavigationBarA11yHelper mNavigationBarA11yHelper; @Rule public final LeakCheckedTest.SysuiLeakCheck mLeakCheck = new LeakCheckedTest.SysuiLeakCheck(); Loading Loading @@ -256,6 +259,20 @@ public class NavigationBarTest extends SysuiTestCase { assertFalse((defaultNavBar.getNavigationIconHints() & NAVIGATION_HINT_IME_SHOWN) != 0); } @Test public void testA11yEventAfterDetach() { View v = mNavigationBar.createView(null); mNavigationBar.onViewAttachedToWindow(v); verify(mNavigationBarA11yHelper).registerA11yEventListener(any( NavigationBarA11yHelper.NavA11yEventListener.class)); mNavigationBar.onViewDetachedFromWindow(v); verify(mNavigationBarA11yHelper).removeA11yEventListener(any( NavigationBarA11yHelper.NavA11yEventListener.class)); // Should be safe even though the internal view is now null. mNavigationBar.updateAccessibilityServicesState(); } private NavigationBar createNavBar(Context context) { DeviceProvisionedController deviceProvisionedController = mock(DeviceProvisionedController.class); Loading Loading @@ -287,7 +304,7 @@ public class NavigationBarTest extends SysuiTestCase { mHandler, mock(NavigationBarOverlayController.class), mUiEventLogger, mock(NavigationBarA11yHelper.class), mNavigationBarA11yHelper, mock(UserTracker.class))); } Loading Loading
packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java +6 −4 Original line number Diff line number Diff line Loading @@ -712,6 +712,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener, mHandler.removeCallbacks(mAutoDim); mHandler.removeCallbacks(mOnVariableDurationHomeLongClick); mHandler.removeCallbacks(mEnableLayoutTransitions); mNavigationBarA11yHelper.removeA11yEventListener(mAccessibilityListener); mFrame = null; mNavigationBarView = null; mOrientationHandle = null; Loading Loading @@ -1391,10 +1392,11 @@ public class NavigationBar implements View.OnAttachStateChangeListener, void updateAccessibilityServicesState() { int a11yFlags = mNavigationBarA11yHelper.getA11yButtonState(); if (mNavigationBarView != null) { boolean clickable = (a11yFlags & SYSUI_STATE_A11Y_BUTTON_CLICKABLE) != 0; boolean longClickable = (a11yFlags & SYSUI_STATE_A11Y_BUTTON_LONG_CLICKABLE) != 0; mNavigationBarView.setAccessibilityButtonState(clickable, longClickable); } updateSystemUiStateFlags(a11yFlags); } Loading
packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTest.java +18 −1 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ import android.testing.TestableLooper.RunWithLooper; import android.view.Display; import android.view.DisplayInfo; import android.view.MotionEvent; import android.view.View; import android.view.WindowManager; import android.view.WindowMetrics; import android.view.accessibility.AccessibilityManager; Loading Loading @@ -122,6 +123,8 @@ public class NavigationBarTest extends SysuiTestCase { EdgeBackGestureHandler.Factory mEdgeBackGestureHandlerFactory; @Mock EdgeBackGestureHandler mEdgeBackGestureHandler; @Mock NavigationBarA11yHelper mNavigationBarA11yHelper; @Rule public final LeakCheckedTest.SysuiLeakCheck mLeakCheck = new LeakCheckedTest.SysuiLeakCheck(); Loading Loading @@ -256,6 +259,20 @@ public class NavigationBarTest extends SysuiTestCase { assertFalse((defaultNavBar.getNavigationIconHints() & NAVIGATION_HINT_IME_SHOWN) != 0); } @Test public void testA11yEventAfterDetach() { View v = mNavigationBar.createView(null); mNavigationBar.onViewAttachedToWindow(v); verify(mNavigationBarA11yHelper).registerA11yEventListener(any( NavigationBarA11yHelper.NavA11yEventListener.class)); mNavigationBar.onViewDetachedFromWindow(v); verify(mNavigationBarA11yHelper).removeA11yEventListener(any( NavigationBarA11yHelper.NavA11yEventListener.class)); // Should be safe even though the internal view is now null. mNavigationBar.updateAccessibilityServicesState(); } private NavigationBar createNavBar(Context context) { DeviceProvisionedController deviceProvisionedController = mock(DeviceProvisionedController.class); Loading Loading @@ -287,7 +304,7 @@ public class NavigationBarTest extends SysuiTestCase { mHandler, mock(NavigationBarOverlayController.class), mUiEventLogger, mock(NavigationBarA11yHelper.class), mNavigationBarA11yHelper, mock(UserTracker.class))); } Loading