Loading packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivity.java +11 −6 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.systemui.pip.phone; import static com.android.systemui.pip.phone.PipMenuActivityController.EXTRA_ACTIONS; import static com.android.systemui.pip.phone.PipMenuActivityController.EXTRA_ALLOW_TIMEOUT; import static com.android.systemui.pip.phone.PipMenuActivityController.EXTRA_CONTROLLER_MESSENGER; import static com.android.systemui.pip.phone.PipMenuActivityController.EXTRA_WILL_RESIZE_MENU; import static com.android.systemui.pip.phone.PipMenuActivityController.EXTRA_DISMISS_FRACTION; import static com.android.systemui.pip.phone.PipMenuActivityController.EXTRA_MOVEMENT_BOUNDS; import static com.android.systemui.pip.phone.PipMenuActivityController.EXTRA_MENU_STATE; Loading Loading @@ -132,7 +133,8 @@ public class PipMenuActivity extends Activity { showMenu(data.getInt(EXTRA_MENU_STATE), data.getParcelable(EXTRA_STACK_BOUNDS), data.getParcelable(EXTRA_MOVEMENT_BOUNDS), data.getBoolean(EXTRA_ALLOW_TIMEOUT)); data.getBoolean(EXTRA_ALLOW_TIMEOUT), data.getBoolean(EXTRA_WILL_RESIZE_MENU)); break; } case MESSAGE_POKE_MENU: Loading Loading @@ -307,12 +309,14 @@ public class PipMenuActivity extends Activity { } private void showMenu(int menuState, Rect stackBounds, Rect movementBounds, boolean allowMenuTimeout) { boolean allowMenuTimeout, boolean resizeMenuOnShow) { mAllowMenuTimeout = allowMenuTimeout; if (mMenuState != menuState) { boolean deferTouchesUntilAnimationEnds = (mMenuState == MENU_STATE_FULL) || (menuState == MENU_STATE_FULL); mAllowTouches = !deferTouchesUntilAnimationEnds; // Disallow touches if the menu needs to resize while showing, and we are transitioning // to/from a full menu state. boolean disallowTouchesUntilAnimationEnd = resizeMenuOnShow && (mMenuState == MENU_STATE_FULL || menuState == MENU_STATE_FULL); mAllowTouches = !disallowTouchesUntilAnimationEnd; cancelDelayedFinish(); updateActionViews(stackBounds); if (mMenuContainerAnimator != null) { Loading Loading @@ -409,7 +413,8 @@ public class PipMenuActivity extends Activity { Rect stackBounds = intent.getParcelableExtra(EXTRA_STACK_BOUNDS); Rect movementBounds = intent.getParcelableExtra(EXTRA_MOVEMENT_BOUNDS); boolean allowMenuTimeout = intent.getBooleanExtra(EXTRA_ALLOW_TIMEOUT, true); showMenu(menuState, stackBounds, movementBounds, allowMenuTimeout); boolean willResizeMenu = intent.getBooleanExtra(EXTRA_WILL_RESIZE_MENU, false); showMenu(menuState, stackBounds, movementBounds, allowMenuTimeout, willResizeMenu); } } Loading packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivityController.java +10 −4 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ public class PipMenuActivityController { public static final String EXTRA_STACK_BOUNDS = "stack_bounds"; public static final String EXTRA_MOVEMENT_BOUNDS = "movement_bounds"; public static final String EXTRA_ALLOW_TIMEOUT = "allow_timeout"; public static final String EXTRA_WILL_RESIZE_MENU = "resize_menu_on_show"; public static final String EXTRA_DISMISS_FRACTION = "dismiss_fraction"; public static final String EXTRA_MENU_STATE = "menu_state"; Loading Loading @@ -268,7 +269,8 @@ public class PipMenuActivityController { // If we haven't requested the start activity, or if it previously took too long to // start, then start it startMenuActivity(MENU_STATE_NONE, null /* stackBounds */, null /* movementBounds */, false /* allowMenuTimeout */); null /* movementBounds */, false /* allowMenuTimeout */, false /* resizeMenuOnShow */); } } Loading @@ -276,18 +278,20 @@ public class PipMenuActivityController { * Shows the menu activity. */ public void showMenu(int menuState, Rect stackBounds, Rect movementBounds, boolean allowMenuTimeout) { boolean allowMenuTimeout, boolean willResizeMenu) { if (DEBUG) { Log.d(TAG, "showMenu() state=" + menuState + " hasActivity=" + (mToActivityMessenger != null) + " callers=\n" + Debug.getCallers(5, " ")); } if (mToActivityMessenger != null) { Bundle data = new Bundle(); data.putInt(EXTRA_MENU_STATE, menuState); data.putParcelable(EXTRA_STACK_BOUNDS, stackBounds); data.putParcelable(EXTRA_MOVEMENT_BOUNDS, movementBounds); data.putBoolean(EXTRA_ALLOW_TIMEOUT, allowMenuTimeout); data.putBoolean(EXTRA_WILL_RESIZE_MENU, willResizeMenu); Message m = Message.obtain(); m.what = PipMenuActivity.MESSAGE_SHOW_MENU; m.obj = data; Loading @@ -299,7 +303,8 @@ public class PipMenuActivityController { } else if (!mStartActivityRequested || isStartActivityRequestedElapsed()) { // If we haven't requested the start activity, or if it previously took too long to // start, then start it startMenuActivity(menuState, stackBounds, movementBounds, allowMenuTimeout); startMenuActivity(menuState, stackBounds, movementBounds, allowMenuTimeout, willResizeMenu); } } Loading Loading @@ -372,7 +377,7 @@ public class PipMenuActivityController { * Starts the menu activity on the top task of the pinned stack. */ private void startMenuActivity(int menuState, Rect stackBounds, Rect movementBounds, boolean allowMenuTimeout) { boolean allowMenuTimeout, boolean willResizeMenu) { try { StackInfo pinnedStackInfo = mActivityManager.getStackInfo(PINNED_STACK_ID); if (pinnedStackInfo != null && pinnedStackInfo.taskIds != null && Loading @@ -388,6 +393,7 @@ public class PipMenuActivityController { } intent.putExtra(EXTRA_MENU_STATE, menuState); intent.putExtra(EXTRA_ALLOW_TIMEOUT, allowMenuTimeout); intent.putExtra(EXTRA_WILL_RESIZE_MENU, willResizeMenu); ActivityOptions options = ActivityOptions.makeCustomAnimation(mContext, 0, 0); options.setLaunchTaskId( pinnedStackInfo.taskIds[pinnedStackInfo.taskIds.length - 1]); Loading packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java +14 −6 Original line number Diff line number Diff line Loading @@ -170,7 +170,7 @@ public class PipTouchHandler { @Override public void onPipShowMenu() { mMenuController.showMenu(MENU_STATE_FULL, mMotionHelper.getBounds(), mMovementBounds, true /* allowMenuTimeout */); mMovementBounds, true /* allowMenuTimeout */, willResizeMenu()); } } Loading Loading @@ -214,7 +214,7 @@ public class PipTouchHandler { // Only show the menu if the user isn't currently interacting with the PiP if (!mTouchState.isUserInteracting()) { mMenuController.showMenu(MENU_STATE_FULL, mMotionHelper.getBounds(), mMovementBounds, false /* allowMenuTimeout */); mMovementBounds, false /* allowMenuTimeout */, willResizeMenu()); } } Loading @@ -236,7 +236,7 @@ public class PipTouchHandler { if (mShowPipMenuOnAnimationEnd) { mMenuController.showMenu(MENU_STATE_CLOSE, mMotionHelper.getBounds(), mMovementBounds, true /* allowMenuTimeout */); mMovementBounds, true /* allowMenuTimeout */, false /* willResizeMenu */); mShowPipMenuOnAnimationEnd = false; } } Loading Loading @@ -337,7 +337,7 @@ public class PipTouchHandler { private void onAccessibilityShowMenu() { mMenuController.showMenu(MENU_STATE_FULL, mMotionHelper.getBounds(), mMovementBounds, false /* allowMenuTimeout */); mMovementBounds, false /* allowMenuTimeout */, willResizeMenu()); } private boolean handleTouchEvent(MotionEvent ev) { Loading Loading @@ -704,7 +704,7 @@ public class PipTouchHandler { // If the menu is still visible, and we aren't minimized, then just poke the // menu so that it will timeout after the user stops touching it mMenuController.showMenu(mMenuState, mMotionHelper.getBounds(), mMovementBounds, true /* allowMenuTimeout */); mMovementBounds, true /* allowMenuTimeout */, willResizeMenu()); } else { // If the menu is not visible, then we can still be showing the activity for the // dismiss overlay, so just finish it after the animation completes Loading @@ -731,7 +731,7 @@ public class PipTouchHandler { setMinimizedStateInternal(false); } else if (mMenuState != MENU_STATE_FULL) { mMenuController.showMenu(MENU_STATE_FULL, mMotionHelper.getBounds(), mMovementBounds, true /* allowMenuTimeout */); mMovementBounds, true /* allowMenuTimeout */, willResizeMenu()); } else { mMenuController.hideMenu(); mMotionHelper.expandPip(); Loading Loading @@ -773,6 +773,14 @@ public class PipTouchHandler { cleanUpDismissTarget(); } /** * @return whether the menu will resize as a part of showing the full menu. */ private boolean willResizeMenu() { return mExpandedBounds.width() != mNormalBounds.width() || mExpandedBounds.height() != mNormalBounds.height(); } public void dump(PrintWriter pw, String prefix) { final String innerPrefix = prefix + " "; pw.println(prefix + TAG); Loading Loading
packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivity.java +11 −6 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.systemui.pip.phone; import static com.android.systemui.pip.phone.PipMenuActivityController.EXTRA_ACTIONS; import static com.android.systemui.pip.phone.PipMenuActivityController.EXTRA_ALLOW_TIMEOUT; import static com.android.systemui.pip.phone.PipMenuActivityController.EXTRA_CONTROLLER_MESSENGER; import static com.android.systemui.pip.phone.PipMenuActivityController.EXTRA_WILL_RESIZE_MENU; import static com.android.systemui.pip.phone.PipMenuActivityController.EXTRA_DISMISS_FRACTION; import static com.android.systemui.pip.phone.PipMenuActivityController.EXTRA_MOVEMENT_BOUNDS; import static com.android.systemui.pip.phone.PipMenuActivityController.EXTRA_MENU_STATE; Loading Loading @@ -132,7 +133,8 @@ public class PipMenuActivity extends Activity { showMenu(data.getInt(EXTRA_MENU_STATE), data.getParcelable(EXTRA_STACK_BOUNDS), data.getParcelable(EXTRA_MOVEMENT_BOUNDS), data.getBoolean(EXTRA_ALLOW_TIMEOUT)); data.getBoolean(EXTRA_ALLOW_TIMEOUT), data.getBoolean(EXTRA_WILL_RESIZE_MENU)); break; } case MESSAGE_POKE_MENU: Loading Loading @@ -307,12 +309,14 @@ public class PipMenuActivity extends Activity { } private void showMenu(int menuState, Rect stackBounds, Rect movementBounds, boolean allowMenuTimeout) { boolean allowMenuTimeout, boolean resizeMenuOnShow) { mAllowMenuTimeout = allowMenuTimeout; if (mMenuState != menuState) { boolean deferTouchesUntilAnimationEnds = (mMenuState == MENU_STATE_FULL) || (menuState == MENU_STATE_FULL); mAllowTouches = !deferTouchesUntilAnimationEnds; // Disallow touches if the menu needs to resize while showing, and we are transitioning // to/from a full menu state. boolean disallowTouchesUntilAnimationEnd = resizeMenuOnShow && (mMenuState == MENU_STATE_FULL || menuState == MENU_STATE_FULL); mAllowTouches = !disallowTouchesUntilAnimationEnd; cancelDelayedFinish(); updateActionViews(stackBounds); if (mMenuContainerAnimator != null) { Loading Loading @@ -409,7 +413,8 @@ public class PipMenuActivity extends Activity { Rect stackBounds = intent.getParcelableExtra(EXTRA_STACK_BOUNDS); Rect movementBounds = intent.getParcelableExtra(EXTRA_MOVEMENT_BOUNDS); boolean allowMenuTimeout = intent.getBooleanExtra(EXTRA_ALLOW_TIMEOUT, true); showMenu(menuState, stackBounds, movementBounds, allowMenuTimeout); boolean willResizeMenu = intent.getBooleanExtra(EXTRA_WILL_RESIZE_MENU, false); showMenu(menuState, stackBounds, movementBounds, allowMenuTimeout, willResizeMenu); } } Loading
packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivityController.java +10 −4 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ public class PipMenuActivityController { public static final String EXTRA_STACK_BOUNDS = "stack_bounds"; public static final String EXTRA_MOVEMENT_BOUNDS = "movement_bounds"; public static final String EXTRA_ALLOW_TIMEOUT = "allow_timeout"; public static final String EXTRA_WILL_RESIZE_MENU = "resize_menu_on_show"; public static final String EXTRA_DISMISS_FRACTION = "dismiss_fraction"; public static final String EXTRA_MENU_STATE = "menu_state"; Loading Loading @@ -268,7 +269,8 @@ public class PipMenuActivityController { // If we haven't requested the start activity, or if it previously took too long to // start, then start it startMenuActivity(MENU_STATE_NONE, null /* stackBounds */, null /* movementBounds */, false /* allowMenuTimeout */); null /* movementBounds */, false /* allowMenuTimeout */, false /* resizeMenuOnShow */); } } Loading @@ -276,18 +278,20 @@ public class PipMenuActivityController { * Shows the menu activity. */ public void showMenu(int menuState, Rect stackBounds, Rect movementBounds, boolean allowMenuTimeout) { boolean allowMenuTimeout, boolean willResizeMenu) { if (DEBUG) { Log.d(TAG, "showMenu() state=" + menuState + " hasActivity=" + (mToActivityMessenger != null) + " callers=\n" + Debug.getCallers(5, " ")); } if (mToActivityMessenger != null) { Bundle data = new Bundle(); data.putInt(EXTRA_MENU_STATE, menuState); data.putParcelable(EXTRA_STACK_BOUNDS, stackBounds); data.putParcelable(EXTRA_MOVEMENT_BOUNDS, movementBounds); data.putBoolean(EXTRA_ALLOW_TIMEOUT, allowMenuTimeout); data.putBoolean(EXTRA_WILL_RESIZE_MENU, willResizeMenu); Message m = Message.obtain(); m.what = PipMenuActivity.MESSAGE_SHOW_MENU; m.obj = data; Loading @@ -299,7 +303,8 @@ public class PipMenuActivityController { } else if (!mStartActivityRequested || isStartActivityRequestedElapsed()) { // If we haven't requested the start activity, or if it previously took too long to // start, then start it startMenuActivity(menuState, stackBounds, movementBounds, allowMenuTimeout); startMenuActivity(menuState, stackBounds, movementBounds, allowMenuTimeout, willResizeMenu); } } Loading Loading @@ -372,7 +377,7 @@ public class PipMenuActivityController { * Starts the menu activity on the top task of the pinned stack. */ private void startMenuActivity(int menuState, Rect stackBounds, Rect movementBounds, boolean allowMenuTimeout) { boolean allowMenuTimeout, boolean willResizeMenu) { try { StackInfo pinnedStackInfo = mActivityManager.getStackInfo(PINNED_STACK_ID); if (pinnedStackInfo != null && pinnedStackInfo.taskIds != null && Loading @@ -388,6 +393,7 @@ public class PipMenuActivityController { } intent.putExtra(EXTRA_MENU_STATE, menuState); intent.putExtra(EXTRA_ALLOW_TIMEOUT, allowMenuTimeout); intent.putExtra(EXTRA_WILL_RESIZE_MENU, willResizeMenu); ActivityOptions options = ActivityOptions.makeCustomAnimation(mContext, 0, 0); options.setLaunchTaskId( pinnedStackInfo.taskIds[pinnedStackInfo.taskIds.length - 1]); Loading
packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java +14 −6 Original line number Diff line number Diff line Loading @@ -170,7 +170,7 @@ public class PipTouchHandler { @Override public void onPipShowMenu() { mMenuController.showMenu(MENU_STATE_FULL, mMotionHelper.getBounds(), mMovementBounds, true /* allowMenuTimeout */); mMovementBounds, true /* allowMenuTimeout */, willResizeMenu()); } } Loading Loading @@ -214,7 +214,7 @@ public class PipTouchHandler { // Only show the menu if the user isn't currently interacting with the PiP if (!mTouchState.isUserInteracting()) { mMenuController.showMenu(MENU_STATE_FULL, mMotionHelper.getBounds(), mMovementBounds, false /* allowMenuTimeout */); mMovementBounds, false /* allowMenuTimeout */, willResizeMenu()); } } Loading @@ -236,7 +236,7 @@ public class PipTouchHandler { if (mShowPipMenuOnAnimationEnd) { mMenuController.showMenu(MENU_STATE_CLOSE, mMotionHelper.getBounds(), mMovementBounds, true /* allowMenuTimeout */); mMovementBounds, true /* allowMenuTimeout */, false /* willResizeMenu */); mShowPipMenuOnAnimationEnd = false; } } Loading Loading @@ -337,7 +337,7 @@ public class PipTouchHandler { private void onAccessibilityShowMenu() { mMenuController.showMenu(MENU_STATE_FULL, mMotionHelper.getBounds(), mMovementBounds, false /* allowMenuTimeout */); mMovementBounds, false /* allowMenuTimeout */, willResizeMenu()); } private boolean handleTouchEvent(MotionEvent ev) { Loading Loading @@ -704,7 +704,7 @@ public class PipTouchHandler { // If the menu is still visible, and we aren't minimized, then just poke the // menu so that it will timeout after the user stops touching it mMenuController.showMenu(mMenuState, mMotionHelper.getBounds(), mMovementBounds, true /* allowMenuTimeout */); mMovementBounds, true /* allowMenuTimeout */, willResizeMenu()); } else { // If the menu is not visible, then we can still be showing the activity for the // dismiss overlay, so just finish it after the animation completes Loading @@ -731,7 +731,7 @@ public class PipTouchHandler { setMinimizedStateInternal(false); } else if (mMenuState != MENU_STATE_FULL) { mMenuController.showMenu(MENU_STATE_FULL, mMotionHelper.getBounds(), mMovementBounds, true /* allowMenuTimeout */); mMovementBounds, true /* allowMenuTimeout */, willResizeMenu()); } else { mMenuController.hideMenu(); mMotionHelper.expandPip(); Loading Loading @@ -773,6 +773,14 @@ public class PipTouchHandler { cleanUpDismissTarget(); } /** * @return whether the menu will resize as a part of showing the full menu. */ private boolean willResizeMenu() { return mExpandedBounds.width() != mNormalBounds.width() || mExpandedBounds.height() != mNormalBounds.height(); } public void dump(PrintWriter pw, String prefix) { final String innerPrefix = prefix + " "; pw.println(prefix + TAG); Loading