Merge "Fix issue with" into rvc-dev am: a1596ea543

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11933639

Change-Id: Ia3873c6da6e9479e1ace13f8e58c073b0607fd8b
This commit is contained in:
Winson Chung
2020-06-19 22:55:00 +00:00
committed by Automerger Merge Worker
4 changed files with 38 additions and 8 deletions

View File

@@ -41,6 +41,7 @@ import android.window.WindowContainerTransaction;
import com.android.systemui.Dependency; import com.android.systemui.Dependency;
import com.android.systemui.UiOffloadThread; import com.android.systemui.UiOffloadThread;
import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.model.SysUiState;
import com.android.systemui.pip.BasePipManager; import com.android.systemui.pip.BasePipManager;
import com.android.systemui.pip.PipBoundsHandler; import com.android.systemui.pip.PipBoundsHandler;
import com.android.systemui.pip.PipSnapAlgorithm; import com.android.systemui.pip.PipSnapAlgorithm;
@@ -229,7 +230,8 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio
DeviceConfigProxy deviceConfig, DeviceConfigProxy deviceConfig,
PipBoundsHandler pipBoundsHandler, PipBoundsHandler pipBoundsHandler,
PipSnapAlgorithm pipSnapAlgorithm, PipSnapAlgorithm pipSnapAlgorithm,
PipTaskOrganizer pipTaskOrganizer) { PipTaskOrganizer pipTaskOrganizer,
SysUiState sysUiState) {
mContext = context; mContext = context;
mActivityManager = ActivityManager.getService(); mActivityManager = ActivityManager.getService();
@@ -250,7 +252,7 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio
mInputConsumerController); mInputConsumerController);
mTouchHandler = new PipTouchHandler(context, mActivityManager, mTouchHandler = new PipTouchHandler(context, mActivityManager,
mMenuController, mInputConsumerController, mPipBoundsHandler, mPipTaskOrganizer, mMenuController, mInputConsumerController, mPipBoundsHandler, mPipTaskOrganizer,
floatingContentCoordinator, deviceConfig, pipSnapAlgorithm); floatingContentCoordinator, deviceConfig, pipSnapAlgorithm, sysUiState);
mAppOpsListener = new PipAppOpsListener(context, mActivityManager, mAppOpsListener = new PipAppOpsListener(context, mActivityManager,
mTouchHandler.getMotionHelper()); mTouchHandler.getMotionHelper());
displayController.addDisplayChangingController(mRotationController); displayController.addDisplayChangingController(mRotationController);

View File

@@ -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_NONE;
import static com.android.internal.policy.TaskResizingAlgorithm.CTRL_RIGHT; import static com.android.internal.policy.TaskResizingAlgorithm.CTRL_RIGHT;
import static com.android.internal.policy.TaskResizingAlgorithm.CTRL_TOP; 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.Context;
import android.content.res.Resources; import android.content.res.Resources;
@@ -43,6 +50,7 @@ import android.view.ViewConfiguration;
import com.android.internal.policy.TaskResizingAlgorithm; import com.android.internal.policy.TaskResizingAlgorithm;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.model.SysUiState;
import com.android.systemui.pip.PipBoundsHandler; import com.android.systemui.pip.PipBoundsHandler;
import com.android.systemui.pip.PipTaskOrganizer; import com.android.systemui.pip.PipTaskOrganizer;
import com.android.systemui.util.DeviceConfigProxy; import com.android.systemui.util.DeviceConfigProxy;
@@ -58,11 +66,21 @@ public class PipResizeGestureHandler {
private static final String TAG = "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 Context mContext;
private final PipBoundsHandler mPipBoundsHandler; private final PipBoundsHandler mPipBoundsHandler;
private final PipMotionHelper mMotionHelper; private final PipMotionHelper mMotionHelper;
private final int mDisplayId; private final int mDisplayId;
private final Executor mMainExecutor; private final Executor mMainExecutor;
private final SysUiState mSysUiState;
private final Region mTmpRegion = new Region(); private final Region mTmpRegion = new Region();
private final PointF mDownPoint = new PointF(); private final PointF mDownPoint = new PointF();
@@ -96,7 +114,7 @@ public class PipResizeGestureHandler {
public PipResizeGestureHandler(Context context, PipBoundsHandler pipBoundsHandler, public PipResizeGestureHandler(Context context, PipBoundsHandler pipBoundsHandler,
PipMotionHelper motionHelper, DeviceConfigProxy deviceConfig, PipMotionHelper motionHelper, DeviceConfigProxy deviceConfig,
PipTaskOrganizer pipTaskOrganizer, Supplier<Rect> movementBoundsSupplier, PipTaskOrganizer pipTaskOrganizer, Supplier<Rect> movementBoundsSupplier,
Runnable updateMovementBoundsRunnable) { Runnable updateMovementBoundsRunnable, SysUiState sysUiState) {
mContext = context; mContext = context;
mDisplayId = context.getDisplayId(); mDisplayId = context.getDisplayId();
mMainExecutor = context.getMainExecutor(); mMainExecutor = context.getMainExecutor();
@@ -105,6 +123,7 @@ public class PipResizeGestureHandler {
mPipTaskOrganizer = pipTaskOrganizer; mPipTaskOrganizer = pipTaskOrganizer;
mMovementBoundsSupplier = movementBoundsSupplier; mMovementBoundsSupplier = movementBoundsSupplier;
mUpdateMovementBoundsRunnable = updateMovementBoundsRunnable; mUpdateMovementBoundsRunnable = updateMovementBoundsRunnable;
mSysUiState = sysUiState;
context.getDisplay().getRealSize(mMaxSize); context.getDisplay().getRealSize(mMaxSize);
reloadResources(); reloadResources();
@@ -258,13 +277,17 @@ public class PipResizeGestureHandler {
} }
} }
private boolean isInValidSysUiState() {
return (mSysUiState.getFlags() & INVALID_SYSUI_STATE_MASK) == 0;
}
private void onMotionEvent(MotionEvent ev) { private void onMotionEvent(MotionEvent ev) {
int action = ev.getActionMasked(); int action = ev.getActionMasked();
float x = ev.getX(); float x = ev.getX();
float y = ev.getY(); float y = ev.getY();
if (action == MotionEvent.ACTION_DOWN) { if (action == MotionEvent.ACTION_DOWN) {
mLastResizeBounds.setEmpty(); mLastResizeBounds.setEmpty();
mAllowGesture = isWithinTouchRegion((int) x, (int) y); mAllowGesture = isInValidSysUiState() && isWithinTouchRegion((int) x, (int) y);
if (mAllowGesture) { if (mAllowGesture) {
setCtrlType((int) x, (int) y); setCtrlType((int) x, (int) y);
mDownPoint.set(x, y); mDownPoint.set(x, y);

View File

@@ -57,6 +57,7 @@ import androidx.dynamicanimation.animation.SpringForce;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.os.logging.MetricsLoggerWrapper; import com.android.internal.os.logging.MetricsLoggerWrapper;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.model.SysUiState;
import com.android.systemui.pip.PipAnimationController; import com.android.systemui.pip.PipAnimationController;
import com.android.systemui.pip.PipBoundsHandler; import com.android.systemui.pip.PipBoundsHandler;
import com.android.systemui.pip.PipSnapAlgorithm; import com.android.systemui.pip.PipSnapAlgorithm;
@@ -222,7 +223,8 @@ public class PipTouchHandler {
PipTaskOrganizer pipTaskOrganizer, PipTaskOrganizer pipTaskOrganizer,
FloatingContentCoordinator floatingContentCoordinator, FloatingContentCoordinator floatingContentCoordinator,
DeviceConfigProxy deviceConfig, DeviceConfigProxy deviceConfig,
PipSnapAlgorithm pipSnapAlgorithm) { PipSnapAlgorithm pipSnapAlgorithm,
SysUiState sysUiState) {
// Initialize the Pip input consumer // Initialize the Pip input consumer
mContext = context; mContext = context;
mActivityManager = activityManager; mActivityManager = activityManager;
@@ -237,7 +239,7 @@ public class PipTouchHandler {
mPipResizeGestureHandler = mPipResizeGestureHandler =
new PipResizeGestureHandler(context, pipBoundsHandler, mMotionHelper, new PipResizeGestureHandler(context, pipBoundsHandler, mMotionHelper,
deviceConfig, pipTaskOrganizer, this::getMovementBounds, deviceConfig, pipTaskOrganizer, this::getMovementBounds,
this::updateMovementBounds); this::updateMovementBounds, sysUiState);
mTouchState = new PipTouchState(ViewConfiguration.get(context), mHandler, mTouchState = new PipTouchState(ViewConfiguration.get(context), mHandler,
() -> mMenuController.showMenuWithDelay(MENU_STATE_FULL, mMotionHelper.getBounds(), () -> mMenuController.showMenuWithDelay(MENU_STATE_FULL, mMotionHelper.getBounds(),
true /* allowMenuTimeout */, willResizeMenu(), shouldShowResizeHandle())); true /* allowMenuTimeout */, willResizeMenu(), shouldShowResizeHandle()));

View File

@@ -23,7 +23,6 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import android.app.IActivityManager; import android.app.IActivityManager;
import android.app.IActivityTaskManager;
import android.graphics.Point; import android.graphics.Point;
import android.graphics.Rect; import android.graphics.Rect;
import android.testing.AndroidTestingRunner; import android.testing.AndroidTestingRunner;
@@ -34,6 +33,7 @@ import androidx.test.filters.SmallTest;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.SysuiTestCase; import com.android.systemui.SysuiTestCase;
import com.android.systemui.model.SysUiState;
import com.android.systemui.pip.PipBoundsHandler; import com.android.systemui.pip.PipBoundsHandler;
import com.android.systemui.pip.PipSnapAlgorithm; import com.android.systemui.pip.PipSnapAlgorithm;
import com.android.systemui.pip.PipTaskOrganizer; import com.android.systemui.pip.PipTaskOrganizer;
@@ -82,6 +82,9 @@ public class PipTouchHandlerTest extends SysuiTestCase {
@Mock @Mock
private DeviceConfigProxy mDeviceConfigProxy; private DeviceConfigProxy mDeviceConfigProxy;
@Mock
private SysUiState mSysUiState;
private PipSnapAlgorithm mPipSnapAlgorithm; private PipSnapAlgorithm mPipSnapAlgorithm;
private PipMotionHelper mMotionHelper; private PipMotionHelper mMotionHelper;
private PipResizeGestureHandler mPipResizeGestureHandler; private PipResizeGestureHandler mPipResizeGestureHandler;
@@ -101,7 +104,7 @@ public class PipTouchHandlerTest extends SysuiTestCase {
mPipTouchHandler = new PipTouchHandler(mContext, mActivityManager, mPipTouchHandler = new PipTouchHandler(mContext, mActivityManager,
mPipMenuActivityController, mInputConsumerController, mPipBoundsHandler, mPipMenuActivityController, mInputConsumerController, mPipBoundsHandler,
mPipTaskOrganizer, mFloatingContentCoordinator, mDeviceConfigProxy, mPipTaskOrganizer, mFloatingContentCoordinator, mDeviceConfigProxy,
mPipSnapAlgorithm); mPipSnapAlgorithm, mSysUiState);
mMotionHelper = Mockito.spy(mPipTouchHandler.getMotionHelper()); mMotionHelper = Mockito.spy(mPipTouchHandler.getMotionHelper());
mPipResizeGestureHandler = Mockito.spy(mPipTouchHandler.getPipResizeGestureHandler()); mPipResizeGestureHandler = Mockito.spy(mPipTouchHandler.getPipResizeGestureHandler());
mPipTouchHandler.setPipMotionHelper(mMotionHelper); mPipTouchHandler.setPipMotionHelper(mMotionHelper);