Loading packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java +4 −2 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import android.window.WindowContainerTransaction; import com.android.systemui.Dependency; import com.android.systemui.UiOffloadThread; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.model.SysUiState; import com.android.systemui.pip.BasePipManager; import com.android.systemui.pip.PipBoundsHandler; import com.android.systemui.pip.PipSnapAlgorithm; Loading Loading @@ -229,7 +230,8 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio DeviceConfigProxy deviceConfig, PipBoundsHandler pipBoundsHandler, PipSnapAlgorithm pipSnapAlgorithm, PipTaskOrganizer pipTaskOrganizer) { PipTaskOrganizer pipTaskOrganizer, SysUiState sysUiState) { mContext = context; mActivityManager = ActivityManager.getService(); Loading @@ -250,7 +252,7 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio mInputConsumerController); mTouchHandler = new PipTouchHandler(context, mActivityManager, mMenuController, mInputConsumerController, mPipBoundsHandler, mPipTaskOrganizer, floatingContentCoordinator, deviceConfig, pipSnapAlgorithm); floatingContentCoordinator, deviceConfig, pipSnapAlgorithm, sysUiState); mAppOpsListener = new PipAppOpsListener(context, mActivityManager, mTouchHandler.getMotionHelper()); displayController.addDisplayChangingController(mRotationController); Loading packages/SystemUI/src/com/android/systemui/pip/phone/PipResizeGestureHandler.java +25 −2 Original line number Diff line number Diff line Loading @@ -21,6 +21,13 @@ import static com.android.internal.policy.TaskResizingAlgorithm.CTRL_LEFT; import static com.android.internal.policy.TaskResizingAlgorithm.CTRL_NONE; import static com.android.internal.policy.TaskResizingAlgorithm.CTRL_RIGHT; import static com.android.internal.policy.TaskResizingAlgorithm.CTRL_TOP; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BOUNCER_SHOWING; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BUBBLES_EXPANDED; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_GLOBAL_ACTIONS_SHOWING; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_QUICK_SETTINGS_EXPANDED; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED; import android.content.Context; import android.content.res.Resources; Loading @@ -43,6 +50,7 @@ import android.view.ViewConfiguration; import com.android.internal.policy.TaskResizingAlgorithm; import com.android.systemui.R; import com.android.systemui.model.SysUiState; import com.android.systemui.pip.PipBoundsHandler; import com.android.systemui.pip.PipTaskOrganizer; import com.android.systemui.util.DeviceConfigProxy; Loading @@ -58,11 +66,21 @@ public class PipResizeGestureHandler { private static final String TAG = "PipResizeGestureHandler"; private static final int INVALID_SYSUI_STATE_MASK = SYSUI_STATE_GLOBAL_ACTIONS_SHOWING | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED | SYSUI_STATE_BOUNCER_SHOWING | SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED | SYSUI_STATE_BUBBLES_EXPANDED | SYSUI_STATE_QUICK_SETTINGS_EXPANDED; private final Context mContext; private final PipBoundsHandler mPipBoundsHandler; private final PipMotionHelper mMotionHelper; private final int mDisplayId; private final Executor mMainExecutor; private final SysUiState mSysUiState; private final Region mTmpRegion = new Region(); private final PointF mDownPoint = new PointF(); Loading Loading @@ -96,7 +114,7 @@ public class PipResizeGestureHandler { public PipResizeGestureHandler(Context context, PipBoundsHandler pipBoundsHandler, PipMotionHelper motionHelper, DeviceConfigProxy deviceConfig, PipTaskOrganizer pipTaskOrganizer, Supplier<Rect> movementBoundsSupplier, Runnable updateMovementBoundsRunnable) { Runnable updateMovementBoundsRunnable, SysUiState sysUiState) { mContext = context; mDisplayId = context.getDisplayId(); mMainExecutor = context.getMainExecutor(); Loading @@ -105,6 +123,7 @@ public class PipResizeGestureHandler { mPipTaskOrganizer = pipTaskOrganizer; mMovementBoundsSupplier = movementBoundsSupplier; mUpdateMovementBoundsRunnable = updateMovementBoundsRunnable; mSysUiState = sysUiState; context.getDisplay().getRealSize(mMaxSize); reloadResources(); Loading Loading @@ -258,13 +277,17 @@ public class PipResizeGestureHandler { } } private boolean isInValidSysUiState() { return (mSysUiState.getFlags() & INVALID_SYSUI_STATE_MASK) == 0; } private void onMotionEvent(MotionEvent ev) { int action = ev.getActionMasked(); float x = ev.getX(); float y = ev.getY(); if (action == MotionEvent.ACTION_DOWN) { mLastResizeBounds.setEmpty(); mAllowGesture = isWithinTouchRegion((int) x, (int) y); mAllowGesture = isInValidSysUiState() && isWithinTouchRegion((int) x, (int) y); if (mAllowGesture) { setCtrlType((int) x, (int) y); mDownPoint.set(x, y); Loading packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java +4 −2 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ import androidx.dynamicanimation.animation.SpringForce; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.os.logging.MetricsLoggerWrapper; import com.android.systemui.R; import com.android.systemui.model.SysUiState; import com.android.systemui.pip.PipAnimationController; import com.android.systemui.pip.PipBoundsHandler; import com.android.systemui.pip.PipSnapAlgorithm; Loading Loading @@ -222,7 +223,8 @@ public class PipTouchHandler { PipTaskOrganizer pipTaskOrganizer, FloatingContentCoordinator floatingContentCoordinator, DeviceConfigProxy deviceConfig, PipSnapAlgorithm pipSnapAlgorithm) { PipSnapAlgorithm pipSnapAlgorithm, SysUiState sysUiState) { // Initialize the Pip input consumer mContext = context; mActivityManager = activityManager; Loading @@ -237,7 +239,7 @@ public class PipTouchHandler { mPipResizeGestureHandler = new PipResizeGestureHandler(context, pipBoundsHandler, mMotionHelper, deviceConfig, pipTaskOrganizer, this::getMovementBounds, this::updateMovementBounds); this::updateMovementBounds, sysUiState); mTouchState = new PipTouchState(ViewConfiguration.get(context), mHandler, () -> mMenuController.showMenuWithDelay(MENU_STATE_FULL, mMotionHelper.getBounds(), true /* allowMenuTimeout */, willResizeMenu(), shouldShowResizeHandle())); Loading packages/SystemUI/tests/src/com/android/systemui/pip/phone/PipTouchHandlerTest.java +5 −2 Original line number Diff line number Diff line Loading @@ -23,7 +23,6 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import android.app.IActivityManager; import android.app.IActivityTaskManager; import android.graphics.Point; import android.graphics.Rect; import android.testing.AndroidTestingRunner; Loading @@ -34,6 +33,7 @@ import androidx.test.filters.SmallTest; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.model.SysUiState; import com.android.systemui.pip.PipBoundsHandler; import com.android.systemui.pip.PipSnapAlgorithm; import com.android.systemui.pip.PipTaskOrganizer; Loading Loading @@ -82,6 +82,9 @@ public class PipTouchHandlerTest extends SysuiTestCase { @Mock private DeviceConfigProxy mDeviceConfigProxy; @Mock private SysUiState mSysUiState; private PipSnapAlgorithm mPipSnapAlgorithm; private PipMotionHelper mMotionHelper; private PipResizeGestureHandler mPipResizeGestureHandler; Loading @@ -101,7 +104,7 @@ public class PipTouchHandlerTest extends SysuiTestCase { mPipTouchHandler = new PipTouchHandler(mContext, mActivityManager, mPipMenuActivityController, mInputConsumerController, mPipBoundsHandler, mPipTaskOrganizer, mFloatingContentCoordinator, mDeviceConfigProxy, mPipSnapAlgorithm); mPipSnapAlgorithm, mSysUiState); mMotionHelper = Mockito.spy(mPipTouchHandler.getMotionHelper()); mPipResizeGestureHandler = Mockito.spy(mPipTouchHandler.getPipResizeGestureHandler()); mPipTouchHandler.setPipMotionHelper(mMotionHelper); Loading Loading
packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java +4 −2 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import android.window.WindowContainerTransaction; import com.android.systemui.Dependency; import com.android.systemui.UiOffloadThread; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.model.SysUiState; import com.android.systemui.pip.BasePipManager; import com.android.systemui.pip.PipBoundsHandler; import com.android.systemui.pip.PipSnapAlgorithm; Loading Loading @@ -229,7 +230,8 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio DeviceConfigProxy deviceConfig, PipBoundsHandler pipBoundsHandler, PipSnapAlgorithm pipSnapAlgorithm, PipTaskOrganizer pipTaskOrganizer) { PipTaskOrganizer pipTaskOrganizer, SysUiState sysUiState) { mContext = context; mActivityManager = ActivityManager.getService(); Loading @@ -250,7 +252,7 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio mInputConsumerController); mTouchHandler = new PipTouchHandler(context, mActivityManager, mMenuController, mInputConsumerController, mPipBoundsHandler, mPipTaskOrganizer, floatingContentCoordinator, deviceConfig, pipSnapAlgorithm); floatingContentCoordinator, deviceConfig, pipSnapAlgorithm, sysUiState); mAppOpsListener = new PipAppOpsListener(context, mActivityManager, mTouchHandler.getMotionHelper()); displayController.addDisplayChangingController(mRotationController); Loading
packages/SystemUI/src/com/android/systemui/pip/phone/PipResizeGestureHandler.java +25 −2 Original line number Diff line number Diff line Loading @@ -21,6 +21,13 @@ import static com.android.internal.policy.TaskResizingAlgorithm.CTRL_LEFT; import static com.android.internal.policy.TaskResizingAlgorithm.CTRL_NONE; import static com.android.internal.policy.TaskResizingAlgorithm.CTRL_RIGHT; import static com.android.internal.policy.TaskResizingAlgorithm.CTRL_TOP; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BOUNCER_SHOWING; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BUBBLES_EXPANDED; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_GLOBAL_ACTIONS_SHOWING; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_QUICK_SETTINGS_EXPANDED; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED; import android.content.Context; import android.content.res.Resources; Loading @@ -43,6 +50,7 @@ import android.view.ViewConfiguration; import com.android.internal.policy.TaskResizingAlgorithm; import com.android.systemui.R; import com.android.systemui.model.SysUiState; import com.android.systemui.pip.PipBoundsHandler; import com.android.systemui.pip.PipTaskOrganizer; import com.android.systemui.util.DeviceConfigProxy; Loading @@ -58,11 +66,21 @@ public class PipResizeGestureHandler { private static final String TAG = "PipResizeGestureHandler"; private static final int INVALID_SYSUI_STATE_MASK = SYSUI_STATE_GLOBAL_ACTIONS_SHOWING | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED | SYSUI_STATE_BOUNCER_SHOWING | SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED | SYSUI_STATE_BUBBLES_EXPANDED | SYSUI_STATE_QUICK_SETTINGS_EXPANDED; private final Context mContext; private final PipBoundsHandler mPipBoundsHandler; private final PipMotionHelper mMotionHelper; private final int mDisplayId; private final Executor mMainExecutor; private final SysUiState mSysUiState; private final Region mTmpRegion = new Region(); private final PointF mDownPoint = new PointF(); Loading Loading @@ -96,7 +114,7 @@ public class PipResizeGestureHandler { public PipResizeGestureHandler(Context context, PipBoundsHandler pipBoundsHandler, PipMotionHelper motionHelper, DeviceConfigProxy deviceConfig, PipTaskOrganizer pipTaskOrganizer, Supplier<Rect> movementBoundsSupplier, Runnable updateMovementBoundsRunnable) { Runnable updateMovementBoundsRunnable, SysUiState sysUiState) { mContext = context; mDisplayId = context.getDisplayId(); mMainExecutor = context.getMainExecutor(); Loading @@ -105,6 +123,7 @@ public class PipResizeGestureHandler { mPipTaskOrganizer = pipTaskOrganizer; mMovementBoundsSupplier = movementBoundsSupplier; mUpdateMovementBoundsRunnable = updateMovementBoundsRunnable; mSysUiState = sysUiState; context.getDisplay().getRealSize(mMaxSize); reloadResources(); Loading Loading @@ -258,13 +277,17 @@ public class PipResizeGestureHandler { } } private boolean isInValidSysUiState() { return (mSysUiState.getFlags() & INVALID_SYSUI_STATE_MASK) == 0; } private void onMotionEvent(MotionEvent ev) { int action = ev.getActionMasked(); float x = ev.getX(); float y = ev.getY(); if (action == MotionEvent.ACTION_DOWN) { mLastResizeBounds.setEmpty(); mAllowGesture = isWithinTouchRegion((int) x, (int) y); mAllowGesture = isInValidSysUiState() && isWithinTouchRegion((int) x, (int) y); if (mAllowGesture) { setCtrlType((int) x, (int) y); mDownPoint.set(x, y); Loading
packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java +4 −2 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ import androidx.dynamicanimation.animation.SpringForce; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.os.logging.MetricsLoggerWrapper; import com.android.systemui.R; import com.android.systemui.model.SysUiState; import com.android.systemui.pip.PipAnimationController; import com.android.systemui.pip.PipBoundsHandler; import com.android.systemui.pip.PipSnapAlgorithm; Loading Loading @@ -222,7 +223,8 @@ public class PipTouchHandler { PipTaskOrganizer pipTaskOrganizer, FloatingContentCoordinator floatingContentCoordinator, DeviceConfigProxy deviceConfig, PipSnapAlgorithm pipSnapAlgorithm) { PipSnapAlgorithm pipSnapAlgorithm, SysUiState sysUiState) { // Initialize the Pip input consumer mContext = context; mActivityManager = activityManager; Loading @@ -237,7 +239,7 @@ public class PipTouchHandler { mPipResizeGestureHandler = new PipResizeGestureHandler(context, pipBoundsHandler, mMotionHelper, deviceConfig, pipTaskOrganizer, this::getMovementBounds, this::updateMovementBounds); this::updateMovementBounds, sysUiState); mTouchState = new PipTouchState(ViewConfiguration.get(context), mHandler, () -> mMenuController.showMenuWithDelay(MENU_STATE_FULL, mMotionHelper.getBounds(), true /* allowMenuTimeout */, willResizeMenu(), shouldShowResizeHandle())); Loading
packages/SystemUI/tests/src/com/android/systemui/pip/phone/PipTouchHandlerTest.java +5 −2 Original line number Diff line number Diff line Loading @@ -23,7 +23,6 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import android.app.IActivityManager; import android.app.IActivityTaskManager; import android.graphics.Point; import android.graphics.Rect; import android.testing.AndroidTestingRunner; Loading @@ -34,6 +33,7 @@ import androidx.test.filters.SmallTest; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.model.SysUiState; import com.android.systemui.pip.PipBoundsHandler; import com.android.systemui.pip.PipSnapAlgorithm; import com.android.systemui.pip.PipTaskOrganizer; Loading Loading @@ -82,6 +82,9 @@ public class PipTouchHandlerTest extends SysuiTestCase { @Mock private DeviceConfigProxy mDeviceConfigProxy; @Mock private SysUiState mSysUiState; private PipSnapAlgorithm mPipSnapAlgorithm; private PipMotionHelper mMotionHelper; private PipResizeGestureHandler mPipResizeGestureHandler; Loading @@ -101,7 +104,7 @@ public class PipTouchHandlerTest extends SysuiTestCase { mPipTouchHandler = new PipTouchHandler(mContext, mActivityManager, mPipMenuActivityController, mInputConsumerController, mPipBoundsHandler, mPipTaskOrganizer, mFloatingContentCoordinator, mDeviceConfigProxy, mPipSnapAlgorithm); mPipSnapAlgorithm, mSysUiState); mMotionHelper = Mockito.spy(mPipTouchHandler.getMotionHelper()); mPipResizeGestureHandler = Mockito.spy(mPipTouchHandler.getPipResizeGestureHandler()); mPipTouchHandler.setPipMotionHelper(mMotionHelper); Loading