Loading libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java +26 −14 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import android.os.ServiceManager; import android.os.SystemProperties; import android.provider.Settings; import android.util.Slog; import android.view.ViewConfiguration; import android.view.accessibility.AccessibilityManager; import androidx.annotation.NonNull; Loading Loading @@ -155,7 +156,7 @@ public class OneHandedController { OneHandedTouchHandler touchHandler = new OneHandedTouchHandler(timeoutHandler, mainExecutor); OneHandedGestureHandler gestureHandler = new OneHandedGestureHandler( context, displayController, mainExecutor); context, displayController, ViewConfiguration.get(context), mainExecutor); OneHandedBackgroundPanelOrganizer oneHandedBackgroundPanelOrganizer = new OneHandedBackgroundPanelOrganizer(context, displayController, mainExecutor); OneHandedDisplayAreaOrganizer organizer = new OneHandedDisplayAreaOrganizer( Loading Loading @@ -223,8 +224,7 @@ public class OneHandedController { setupGesturalOverlay(); updateSettings(); mAccessibilityManager = (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE); mAccessibilityManager = AccessibilityManager.getInstance(context); mAccessibilityManager.addAccessibilityStateChangeListener( mAccessibilityStateChangeListener); } Loading Loading @@ -346,7 +346,8 @@ public class OneHandedController { }; } private void onEnabledSettingChanged() { @VisibleForTesting void onEnabledSettingChanged() { final boolean enabled = OneHandedSettingsUtil.getSettingsOneHandedModeEnabled( mContext.getContentResolver()); mOneHandedUiEventLogger.writeEvent(enabled Loading @@ -361,7 +362,8 @@ public class OneHandedController { mContext.getContentResolver())); } private void onTimeoutSettingChanged() { @VisibleForTesting void onTimeoutSettingChanged() { final int newTimeout = OneHandedSettingsUtil.getSettingsOneHandedModeTimeout( mContext.getContentResolver()); int metricsId = OneHandedUiEventLogger.OneHandedSettingsTogglesEvent.INVALID.getId(); Loading Loading @@ -389,7 +391,8 @@ public class OneHandedController { } } private void onTaskChangeExitSettingChanged() { @VisibleForTesting void onTaskChangeExitSettingChanged() { final boolean enabled = OneHandedSettingsUtil.getSettingsTapsAppToExit( mContext.getContentResolver()); mOneHandedUiEventLogger.writeEvent(enabled Loading @@ -399,7 +402,8 @@ public class OneHandedController { setTaskChangeToExit(enabled); } private void onSwipeToNotificationEnabledSettingChanged() { @VisibleForTesting void onSwipeToNotificationEnabledSettingChanged() { final boolean enabled = OneHandedSettingsUtil.getSettingsSwipeToNotificationEnabled( mContext.getContentResolver()); Loading Loading @@ -433,17 +437,26 @@ public class OneHandedController { if (mDisplayAreaOrganizer.isInOneHanded()) { stopOneHanded(); } // TODO Be aware to unregisterOrganizer() after animation finished mTouchHandler.onOneHandedEnabled(mIsOneHandedEnabled); mGestureHandler.onOneHandedEnabled(mIsOneHandedEnabled || mIsSwipeToNotificationEnabled); if (!mIsOneHandedEnabled) { mDisplayAreaOrganizer.unregisterOrganizer(); mBackgroundPanelOrganizer.unregisterOrganizer(); if (mIsOneHandedEnabled) { // Do NOT register + unRegister DA in the same call return; } if (mDisplayAreaOrganizer.getDisplayAreaTokenMap().isEmpty()) { mDisplayAreaOrganizer.registerOrganizer( OneHandedDisplayAreaOrganizer.FEATURE_ONE_HANDED); } if (mBackgroundPanelOrganizer.getBackgroundSurface() == null) { mBackgroundPanelOrganizer.registerOrganizer( OneHandedBackgroundPanelOrganizer.FEATURE_ONE_HANDED_BACKGROUND_PANEL); } mTouchHandler.onOneHandedEnabled(mIsOneHandedEnabled); mGestureHandler.onOneHandedEnabled(mIsOneHandedEnabled || mIsSwipeToNotificationEnabled); } private void setupGesturalOverlay() { Loading @@ -453,7 +466,6 @@ public class OneHandedController { OverlayInfo info = null; try { // TODO(b/157958539) migrate new RRO config file after S+ mOverlayManager.setHighestPriority(ONE_HANDED_MODE_GESTURAL_OVERLAY, USER_CURRENT); info = mOverlayManager.getOverlayInfo(ONE_HANDED_MODE_GESTURAL_OVERLAY, USER_CURRENT); } catch (RemoteException e) { /* Do nothing */ } Loading libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedDisplayAreaOrganizer.java +6 −2 Original line number Diff line number Diff line Loading @@ -66,8 +66,7 @@ public class OneHandedDisplayAreaOrganizer extends DisplayAreaOrganizer { private boolean mIsInOneHanded; private int mEnterExitAnimationDurationMs; @VisibleForTesting ArrayMap<WindowContainerToken, SurfaceControl> mDisplayAreaTokenMap = new ArrayMap(); private ArrayMap<WindowContainerToken, SurfaceControl> mDisplayAreaTokenMap = new ArrayMap(); private DisplayController mDisplayController; private OneHandedAnimationController mAnimationController; private OneHandedSurfaceTransactionHelper.SurfaceControlTransactionFactory Loading Loading @@ -298,6 +297,11 @@ public class OneHandedDisplayAreaOrganizer extends DisplayAreaOrganizer { return new Rect(0, 0, realSize.x, realSize.y); } @VisibleForTesting ArrayMap<WindowContainerToken, SurfaceControl> getDisplayAreaTokenMap() { return mDisplayAreaTokenMap; } /** * Register transition callback */ Loading libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedGestureHandler.java +2 −1 Original line number Diff line number Diff line Loading @@ -87,6 +87,7 @@ public class OneHandedGestureHandler implements OneHandedTransitionCallback, * @param displayController {@link DisplayController} */ public OneHandedGestureHandler(Context context, DisplayController displayController, ViewConfiguration viewConfig, ShellExecutor mainExecutor) { mDisplayController = displayController; mMainExecutor = mainExecutor; Loading @@ -95,7 +96,7 @@ public class OneHandedGestureHandler implements OneHandedTransitionCallback, com.android.internal.R.dimen.navigation_bar_gesture_larger_height); mDragDistThreshold = context.getResources().getDimensionPixelSize( R.dimen.gestures_onehanded_drag_threshold); final float slop = ViewConfiguration.get(context).getScaledTouchSlop(); final float slop = viewConfig.getScaledTouchSlop(); mSquaredSlop = slop * slop; updateIsEnabled(); Loading libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedTutorialHandler.java +1 −2 Original line number Diff line number Diff line Loading @@ -107,8 +107,7 @@ public class OneHandedTutorialHandler implements OneHandedTransitionCallback { mPackageName = context.getPackageName(); mContentResolver = context.getContentResolver(); mWindowManager = context.getSystemService(WindowManager.class); mAccessibilityManager = (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE); mAccessibilityManager = AccessibilityManager.getInstance(context); mStartOneHandedDescription = context.getResources().getString( R.string.accessibility_action_start_one_handed); Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedAnimationControllerTest.java +0 −3 Original line number Diff line number Diff line Loading @@ -47,7 +47,6 @@ public class OneHandedAnimationControllerTest extends OneHandedTestCase { private static final int TEST_BOUNDS_HEIGHT = 1000; OneHandedAnimationController mOneHandedAnimationController; OneHandedTutorialHandler mTutorialHandler; @Mock private SurfaceControl mMockLeash; Loading @@ -60,8 +59,6 @@ public class OneHandedAnimationControllerTest extends OneHandedTestCase { @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); mTutorialHandler = new OneHandedTutorialHandler(mContext, mMainExecutor); mOneHandedAnimationController = new OneHandedAnimationController(mContext); } Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java +26 −14 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import android.os.ServiceManager; import android.os.SystemProperties; import android.provider.Settings; import android.util.Slog; import android.view.ViewConfiguration; import android.view.accessibility.AccessibilityManager; import androidx.annotation.NonNull; Loading Loading @@ -155,7 +156,7 @@ public class OneHandedController { OneHandedTouchHandler touchHandler = new OneHandedTouchHandler(timeoutHandler, mainExecutor); OneHandedGestureHandler gestureHandler = new OneHandedGestureHandler( context, displayController, mainExecutor); context, displayController, ViewConfiguration.get(context), mainExecutor); OneHandedBackgroundPanelOrganizer oneHandedBackgroundPanelOrganizer = new OneHandedBackgroundPanelOrganizer(context, displayController, mainExecutor); OneHandedDisplayAreaOrganizer organizer = new OneHandedDisplayAreaOrganizer( Loading Loading @@ -223,8 +224,7 @@ public class OneHandedController { setupGesturalOverlay(); updateSettings(); mAccessibilityManager = (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE); mAccessibilityManager = AccessibilityManager.getInstance(context); mAccessibilityManager.addAccessibilityStateChangeListener( mAccessibilityStateChangeListener); } Loading Loading @@ -346,7 +346,8 @@ public class OneHandedController { }; } private void onEnabledSettingChanged() { @VisibleForTesting void onEnabledSettingChanged() { final boolean enabled = OneHandedSettingsUtil.getSettingsOneHandedModeEnabled( mContext.getContentResolver()); mOneHandedUiEventLogger.writeEvent(enabled Loading @@ -361,7 +362,8 @@ public class OneHandedController { mContext.getContentResolver())); } private void onTimeoutSettingChanged() { @VisibleForTesting void onTimeoutSettingChanged() { final int newTimeout = OneHandedSettingsUtil.getSettingsOneHandedModeTimeout( mContext.getContentResolver()); int metricsId = OneHandedUiEventLogger.OneHandedSettingsTogglesEvent.INVALID.getId(); Loading Loading @@ -389,7 +391,8 @@ public class OneHandedController { } } private void onTaskChangeExitSettingChanged() { @VisibleForTesting void onTaskChangeExitSettingChanged() { final boolean enabled = OneHandedSettingsUtil.getSettingsTapsAppToExit( mContext.getContentResolver()); mOneHandedUiEventLogger.writeEvent(enabled Loading @@ -399,7 +402,8 @@ public class OneHandedController { setTaskChangeToExit(enabled); } private void onSwipeToNotificationEnabledSettingChanged() { @VisibleForTesting void onSwipeToNotificationEnabledSettingChanged() { final boolean enabled = OneHandedSettingsUtil.getSettingsSwipeToNotificationEnabled( mContext.getContentResolver()); Loading Loading @@ -433,17 +437,26 @@ public class OneHandedController { if (mDisplayAreaOrganizer.isInOneHanded()) { stopOneHanded(); } // TODO Be aware to unregisterOrganizer() after animation finished mTouchHandler.onOneHandedEnabled(mIsOneHandedEnabled); mGestureHandler.onOneHandedEnabled(mIsOneHandedEnabled || mIsSwipeToNotificationEnabled); if (!mIsOneHandedEnabled) { mDisplayAreaOrganizer.unregisterOrganizer(); mBackgroundPanelOrganizer.unregisterOrganizer(); if (mIsOneHandedEnabled) { // Do NOT register + unRegister DA in the same call return; } if (mDisplayAreaOrganizer.getDisplayAreaTokenMap().isEmpty()) { mDisplayAreaOrganizer.registerOrganizer( OneHandedDisplayAreaOrganizer.FEATURE_ONE_HANDED); } if (mBackgroundPanelOrganizer.getBackgroundSurface() == null) { mBackgroundPanelOrganizer.registerOrganizer( OneHandedBackgroundPanelOrganizer.FEATURE_ONE_HANDED_BACKGROUND_PANEL); } mTouchHandler.onOneHandedEnabled(mIsOneHandedEnabled); mGestureHandler.onOneHandedEnabled(mIsOneHandedEnabled || mIsSwipeToNotificationEnabled); } private void setupGesturalOverlay() { Loading @@ -453,7 +466,6 @@ public class OneHandedController { OverlayInfo info = null; try { // TODO(b/157958539) migrate new RRO config file after S+ mOverlayManager.setHighestPriority(ONE_HANDED_MODE_GESTURAL_OVERLAY, USER_CURRENT); info = mOverlayManager.getOverlayInfo(ONE_HANDED_MODE_GESTURAL_OVERLAY, USER_CURRENT); } catch (RemoteException e) { /* Do nothing */ } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedDisplayAreaOrganizer.java +6 −2 Original line number Diff line number Diff line Loading @@ -66,8 +66,7 @@ public class OneHandedDisplayAreaOrganizer extends DisplayAreaOrganizer { private boolean mIsInOneHanded; private int mEnterExitAnimationDurationMs; @VisibleForTesting ArrayMap<WindowContainerToken, SurfaceControl> mDisplayAreaTokenMap = new ArrayMap(); private ArrayMap<WindowContainerToken, SurfaceControl> mDisplayAreaTokenMap = new ArrayMap(); private DisplayController mDisplayController; private OneHandedAnimationController mAnimationController; private OneHandedSurfaceTransactionHelper.SurfaceControlTransactionFactory Loading Loading @@ -298,6 +297,11 @@ public class OneHandedDisplayAreaOrganizer extends DisplayAreaOrganizer { return new Rect(0, 0, realSize.x, realSize.y); } @VisibleForTesting ArrayMap<WindowContainerToken, SurfaceControl> getDisplayAreaTokenMap() { return mDisplayAreaTokenMap; } /** * Register transition callback */ Loading
libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedGestureHandler.java +2 −1 Original line number Diff line number Diff line Loading @@ -87,6 +87,7 @@ public class OneHandedGestureHandler implements OneHandedTransitionCallback, * @param displayController {@link DisplayController} */ public OneHandedGestureHandler(Context context, DisplayController displayController, ViewConfiguration viewConfig, ShellExecutor mainExecutor) { mDisplayController = displayController; mMainExecutor = mainExecutor; Loading @@ -95,7 +96,7 @@ public class OneHandedGestureHandler implements OneHandedTransitionCallback, com.android.internal.R.dimen.navigation_bar_gesture_larger_height); mDragDistThreshold = context.getResources().getDimensionPixelSize( R.dimen.gestures_onehanded_drag_threshold); final float slop = ViewConfiguration.get(context).getScaledTouchSlop(); final float slop = viewConfig.getScaledTouchSlop(); mSquaredSlop = slop * slop; updateIsEnabled(); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedTutorialHandler.java +1 −2 Original line number Diff line number Diff line Loading @@ -107,8 +107,7 @@ public class OneHandedTutorialHandler implements OneHandedTransitionCallback { mPackageName = context.getPackageName(); mContentResolver = context.getContentResolver(); mWindowManager = context.getSystemService(WindowManager.class); mAccessibilityManager = (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE); mAccessibilityManager = AccessibilityManager.getInstance(context); mStartOneHandedDescription = context.getResources().getString( R.string.accessibility_action_start_one_handed); Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedAnimationControllerTest.java +0 −3 Original line number Diff line number Diff line Loading @@ -47,7 +47,6 @@ public class OneHandedAnimationControllerTest extends OneHandedTestCase { private static final int TEST_BOUNDS_HEIGHT = 1000; OneHandedAnimationController mOneHandedAnimationController; OneHandedTutorialHandler mTutorialHandler; @Mock private SurfaceControl mMockLeash; Loading @@ -60,8 +59,6 @@ public class OneHandedAnimationControllerTest extends OneHandedTestCase { @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); mTutorialHandler = new OneHandedTutorialHandler(mContext, mMainExecutor); mOneHandedAnimationController = new OneHandedAnimationController(mContext); } Loading