Loading core/java/com/android/internal/statusbar/IStatusBar.aidl +7 −0 Original line number Diff line number Diff line Loading @@ -330,4 +330,11 @@ oneway interface IStatusBar /** Called when requested to go to fullscreen from the active split app. */ void goToFullscreenFromSplit(); /** * Enters stage split from a current running app. * * @param leftOrTop indicates where the stage split is. */ void enterStageSplitFromRunningApp(boolean leftOrTop); } packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java +13 −1 Original line number Diff line number Diff line Loading @@ -565,13 +565,25 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis statusBarWinController.registerCallback(mStatusBarWindowCallback); mScreenshotHelper = new ScreenshotHelper(context); // Listen for tracing state changes commandQueue.addCallback(new CommandQueue.Callbacks() { // Listen for tracing state changes @Override public void onTracingStateChanged(boolean enabled) { mSysUiState.setFlag(SYSUI_STATE_TRACING_ENABLED, enabled) .commitUpdate(mContext.getDisplayId()); } @Override public void enterStageSplitFromRunningApp(boolean leftOrTop) { if (mOverviewProxy != null) { try { mOverviewProxy.enterStageSplitFromRunningApp(leftOrTop); } catch (RemoteException e) { Log.w(TAG_OPS, "Unable to enter stage split from the current running app"); } } } }); mCommandQueue = commandQueue; Loading packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +19 −0 Original line number Diff line number Diff line Loading @@ -165,6 +165,7 @@ public class CommandQueue extends IStatusBar.Stub implements private static final int MSG_TILE_SERVICE_REQUEST_LISTENING_STATE = 68 << MSG_SHIFT; private static final int MSG_SHOW_REAR_DISPLAY_DIALOG = 69 << MSG_SHIFT; private static final int MSG_GO_TO_FULLSCREEN_FROM_SPLIT = 70 << MSG_SHIFT; private static final int MSG_ENTER_STAGE_SPLIT_FROM_RUNNING_APP = 71 << MSG_SHIFT; public static final int FLAG_EXCLUDE_NONE = 0; public static final int FLAG_EXCLUDE_SEARCH_PANEL = 1 << 0; Loading Loading @@ -484,6 +485,11 @@ public class CommandQueue extends IStatusBar.Stub implements * @see IStatusBar#goToFullscreenFromSplit */ default void goToFullscreenFromSplit() {} /** * @see IStatusBar#enterStageSplitFromRunningApp */ default void enterStageSplitFromRunningApp(boolean leftOrTop) {} } public CommandQueue(Context context) { Loading Loading @@ -1244,6 +1250,14 @@ public class CommandQueue extends IStatusBar.Stub implements } } @Override public void enterStageSplitFromRunningApp(boolean leftOrTop) { synchronized (mLock) { mHandler.obtainMessage(MSG_ENTER_STAGE_SPLIT_FROM_RUNNING_APP, leftOrTop).sendToTarget(); } } @Override public void requestAddTile( @NonNull ComponentName componentName, Loading Loading @@ -1755,6 +1769,11 @@ public class CommandQueue extends IStatusBar.Stub implements mCallbacks.get(i).goToFullscreenFromSplit(); } break; case MSG_ENTER_STAGE_SPLIT_FROM_RUNNING_APP: for (int i = 0; i < mCallbacks.size(); i++) { mCallbacks.get(i).enterStageSplitFromRunningApp((Boolean) msg.obj); } break; } } } Loading services/core/java/com/android/server/policy/PhoneWindowManager.java +19 −0 Original line number Diff line number Diff line Loading @@ -2929,6 +2929,18 @@ public class PhoneWindowManager implements WindowManagerPolicy { return key_consumed; } break; case KeyEvent.KEYCODE_DPAD_LEFT: if (down && event.isMetaPressed() && event.isCtrlPressed() && repeatCount == 0) { enterStageSplitFromRunningApp(true /* leftOrTop */); return key_consumed; } break; case KeyEvent.KEYCODE_DPAD_RIGHT: if (down && event.isMetaPressed() && event.isCtrlPressed() && repeatCount == 0) { enterStageSplitFromRunningApp(false /* leftOrTop */); return key_consumed; } break; case KeyEvent.KEYCODE_SLASH: if (down && repeatCount == 0 && event.isMetaPressed() && !keyguardOn) { toggleKeyboardShortcutsMenu(event.getDeviceId()); Loading Loading @@ -3583,6 +3595,13 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } private void enterStageSplitFromRunningApp(boolean leftOrTop) { StatusBarManagerInternal statusbar = getStatusBarManagerInternal(); if (statusbar != null) { statusbar.enterStageSplitFromRunningApp(leftOrTop); } } void launchHomeFromHotKey(int displayId) { launchHomeFromHotKey(displayId, true /* awakenFromDreams */, true /*respectKeyguard*/); } Loading services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java +7 −0 Original line number Diff line number Diff line Loading @@ -210,4 +210,11 @@ public interface StatusBarManagerInternal { * Called when requested to go to fullscreen from the active split app. */ void goToFullscreenFromSplit(); /** * Enters stage split from a current running app. * * @see com.android.internal.statusbar.IStatusBar#enterStageSplitFromRunningApp */ void enterStageSplitFromRunningApp(boolean leftOrTop); } Loading
core/java/com/android/internal/statusbar/IStatusBar.aidl +7 −0 Original line number Diff line number Diff line Loading @@ -330,4 +330,11 @@ oneway interface IStatusBar /** Called when requested to go to fullscreen from the active split app. */ void goToFullscreenFromSplit(); /** * Enters stage split from a current running app. * * @param leftOrTop indicates where the stage split is. */ void enterStageSplitFromRunningApp(boolean leftOrTop); }
packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java +13 −1 Original line number Diff line number Diff line Loading @@ -565,13 +565,25 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis statusBarWinController.registerCallback(mStatusBarWindowCallback); mScreenshotHelper = new ScreenshotHelper(context); // Listen for tracing state changes commandQueue.addCallback(new CommandQueue.Callbacks() { // Listen for tracing state changes @Override public void onTracingStateChanged(boolean enabled) { mSysUiState.setFlag(SYSUI_STATE_TRACING_ENABLED, enabled) .commitUpdate(mContext.getDisplayId()); } @Override public void enterStageSplitFromRunningApp(boolean leftOrTop) { if (mOverviewProxy != null) { try { mOverviewProxy.enterStageSplitFromRunningApp(leftOrTop); } catch (RemoteException e) { Log.w(TAG_OPS, "Unable to enter stage split from the current running app"); } } } }); mCommandQueue = commandQueue; Loading
packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +19 −0 Original line number Diff line number Diff line Loading @@ -165,6 +165,7 @@ public class CommandQueue extends IStatusBar.Stub implements private static final int MSG_TILE_SERVICE_REQUEST_LISTENING_STATE = 68 << MSG_SHIFT; private static final int MSG_SHOW_REAR_DISPLAY_DIALOG = 69 << MSG_SHIFT; private static final int MSG_GO_TO_FULLSCREEN_FROM_SPLIT = 70 << MSG_SHIFT; private static final int MSG_ENTER_STAGE_SPLIT_FROM_RUNNING_APP = 71 << MSG_SHIFT; public static final int FLAG_EXCLUDE_NONE = 0; public static final int FLAG_EXCLUDE_SEARCH_PANEL = 1 << 0; Loading Loading @@ -484,6 +485,11 @@ public class CommandQueue extends IStatusBar.Stub implements * @see IStatusBar#goToFullscreenFromSplit */ default void goToFullscreenFromSplit() {} /** * @see IStatusBar#enterStageSplitFromRunningApp */ default void enterStageSplitFromRunningApp(boolean leftOrTop) {} } public CommandQueue(Context context) { Loading Loading @@ -1244,6 +1250,14 @@ public class CommandQueue extends IStatusBar.Stub implements } } @Override public void enterStageSplitFromRunningApp(boolean leftOrTop) { synchronized (mLock) { mHandler.obtainMessage(MSG_ENTER_STAGE_SPLIT_FROM_RUNNING_APP, leftOrTop).sendToTarget(); } } @Override public void requestAddTile( @NonNull ComponentName componentName, Loading Loading @@ -1755,6 +1769,11 @@ public class CommandQueue extends IStatusBar.Stub implements mCallbacks.get(i).goToFullscreenFromSplit(); } break; case MSG_ENTER_STAGE_SPLIT_FROM_RUNNING_APP: for (int i = 0; i < mCallbacks.size(); i++) { mCallbacks.get(i).enterStageSplitFromRunningApp((Boolean) msg.obj); } break; } } } Loading
services/core/java/com/android/server/policy/PhoneWindowManager.java +19 −0 Original line number Diff line number Diff line Loading @@ -2929,6 +2929,18 @@ public class PhoneWindowManager implements WindowManagerPolicy { return key_consumed; } break; case KeyEvent.KEYCODE_DPAD_LEFT: if (down && event.isMetaPressed() && event.isCtrlPressed() && repeatCount == 0) { enterStageSplitFromRunningApp(true /* leftOrTop */); return key_consumed; } break; case KeyEvent.KEYCODE_DPAD_RIGHT: if (down && event.isMetaPressed() && event.isCtrlPressed() && repeatCount == 0) { enterStageSplitFromRunningApp(false /* leftOrTop */); return key_consumed; } break; case KeyEvent.KEYCODE_SLASH: if (down && repeatCount == 0 && event.isMetaPressed() && !keyguardOn) { toggleKeyboardShortcutsMenu(event.getDeviceId()); Loading Loading @@ -3583,6 +3595,13 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } private void enterStageSplitFromRunningApp(boolean leftOrTop) { StatusBarManagerInternal statusbar = getStatusBarManagerInternal(); if (statusbar != null) { statusbar.enterStageSplitFromRunningApp(leftOrTop); } } void launchHomeFromHotKey(int displayId) { launchHomeFromHotKey(displayId, true /* awakenFromDreams */, true /*respectKeyguard*/); } Loading
services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java +7 −0 Original line number Diff line number Diff line Loading @@ -210,4 +210,11 @@ public interface StatusBarManagerInternal { * Called when requested to go to fullscreen from the active split app. */ void goToFullscreenFromSplit(); /** * Enters stage split from a current running app. * * @see com.android.internal.statusbar.IStatusBar#enterStageSplitFromRunningApp */ void enterStageSplitFromRunningApp(boolean leftOrTop); }