Loading quickstep/src/com/android/launcher3/QuickstepTransitionManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -86,6 +86,7 @@ import com.android.quickstep.util.RemoteAnimationProvider; import com.android.quickstep.util.StaggeredWorkspaceAnim; import com.android.quickstep.util.SurfaceTransactionApplier; import com.android.quickstep.views.RecentsView; import com.android.systemui.shared.recents.IStartingWindowListener; import com.android.systemui.shared.system.ActivityCompat; import com.android.systemui.shared.system.ActivityOptionsCompat; import com.android.systemui.shared.system.InteractionJankMonitorWrapper; Loading @@ -97,7 +98,6 @@ import com.android.systemui.shared.system.RemoteAnimationTargetCompat; import com.android.systemui.shared.system.RemoteTransitionCompat; import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams; import com.android.systemui.shared.system.WindowManagerWrapper; import com.android.wm.shell.startingsurface.IStartingWindowListener; import java.util.LinkedHashMap; Loading quickstep/src/com/android/quickstep/SystemUiProxy.java +107 −133 Original line number Diff line number Diff line Loading @@ -35,17 +35,12 @@ import android.util.Log; import android.view.MotionEvent; import com.android.launcher3.util.MainThreadInitializedObject; import com.android.systemui.shared.recents.IPinnedStackAnimationListener; import com.android.systemui.shared.recents.ISplitScreenListener; import com.android.systemui.shared.recents.IStartingWindowListener; import com.android.systemui.shared.recents.ISystemUiProxy; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.system.RemoteTransitionCompat; import com.android.wm.shell.onehanded.IOneHanded; import com.android.wm.shell.pip.IPip; import com.android.wm.shell.pip.IPipAnimationListener; import com.android.wm.shell.splitscreen.ISplitScreen; import com.android.wm.shell.splitscreen.ISplitScreenListener; import com.android.wm.shell.startingsurface.IStartingWindow; import com.android.wm.shell.startingsurface.IStartingWindowListener; import com.android.wm.shell.transition.IShellTransitions; /** * Holds the reference to SystemUI. Loading @@ -58,13 +53,8 @@ public class SystemUiProxy implements ISystemUiProxy, new MainThreadInitializedObject<>(SystemUiProxy::new); private ISystemUiProxy mSystemUiProxy; private IPip mPip; private ISplitScreen mSplitScreen; private IOneHanded mOneHanded; private IShellTransitions mShellTransitions; private IStartingWindow mStartingWindow; private final DeathRecipient mSystemUiProxyDeathRecipient = () -> { MAIN_EXECUTOR.execute(() -> clearProxy()); MAIN_EXECUTOR.execute(() -> setProxy(null)); }; // Used to dedupe calls to SystemUI Loading Loading @@ -92,23 +82,12 @@ public class SystemUiProxy implements ISystemUiProxy, return null; } public void setProxy(ISystemUiProxy proxy, IPip pip, ISplitScreen splitScreen, IOneHanded oneHanded, IShellTransitions shellTransitions, IStartingWindow startingWindow) { public void setProxy(ISystemUiProxy proxy) { unlinkToDeath(); mSystemUiProxy = proxy; mPip = pip; mSplitScreen = splitScreen; mOneHanded = oneHanded; mShellTransitions = shellTransitions; mStartingWindow = startingWindow; linkToDeath(); } public void clearProxy() { setProxy(null, null, null, null, null, null); } // TODO(141886704): Find a way to remove this public void setLastSystemUiStateFlags(int stateFlags) { mLastSystemUiStateFlags = stateFlags; Loading Loading @@ -285,6 +264,21 @@ public class SystemUiProxy implements ISystemUiProxy, } } @Override public void setShelfHeight(boolean visible, int shelfHeight) { boolean changed = visible != mLastShelfVisible || shelfHeight != mLastShelfHeight; if (mSystemUiProxy != null && changed) { mLastShelfVisible = visible; mLastShelfHeight = shelfHeight; try { mSystemUiProxy.setShelfHeight(visible, shelfHeight); } catch (RemoteException e) { Log.w(TAG, "Failed call setShelfHeight visible: " + visible + " height: " + shelfHeight, e); } } } @Override public void handleImageAsScreenshot(Bitmap bitmap, Rect rect, Insets insets, int i) { if (mSystemUiProxy != null) { Loading Loading @@ -321,6 +315,20 @@ public class SystemUiProxy implements ISystemUiProxy, } } /** * Sets listener to get pinned stack animation callbacks. */ @Override public void setPinnedStackAnimationListener(IPinnedStackAnimationListener listener) { if (mSystemUiProxy != null) { try { mSystemUiProxy.setPinnedStackAnimationListener(listener); } catch (RemoteException e) { Log.w(TAG, "Failed call setPinnedStackAnimationListener", e); } } } @Override public void onQuickSwitchToNewTask(int rotation) { if (mSystemUiProxy != null) { Loading @@ -346,55 +354,44 @@ public class SystemUiProxy implements ISystemUiProxy, } @Override public void expandNotificationPanel() { public void startOneHandedMode() { if (mSystemUiProxy != null) { try { mSystemUiProxy.expandNotificationPanel(); mSystemUiProxy.startOneHandedMode(); } catch (RemoteException e) { Log.w(TAG, "Failed call expandNotificationPanel", e); Log.w(TAG, "Failed call startOneHandedMode", e); } } } // // Pip // /** * Sets the shelf height. */ public void setShelfHeight(boolean visible, int shelfHeight) { boolean changed = visible != mLastShelfVisible || shelfHeight != mLastShelfHeight; if (mPip != null && changed) { mLastShelfVisible = visible; mLastShelfHeight = shelfHeight; @Override public void stopOneHandedMode() { if (mSystemUiProxy != null) { try { mPip.setShelfHeight(visible, shelfHeight); mSystemUiProxy.stopOneHandedMode(); } catch (RemoteException e) { Log.w(TAG, "Failed call setShelfHeight visible: " + visible + " height: " + shelfHeight, e); Log.w(TAG, "Failed call stopOneHandedMode", e); } } } /** * Sets listener to get pinned stack animation callbacks. */ public void setPinnedStackAnimationListener(IPipAnimationListener listener) { if (mPip != null) { @Override public void expandNotificationPanel() { if (mSystemUiProxy != null) { try { mPip.setPinnedStackAnimationListener(listener); mSystemUiProxy.expandNotificationPanel(); } catch (RemoteException e) { Log.w(TAG, "Failed call setPinnedStackAnimationListener", e); Log.w(TAG, "Failed call expandNotificationPanel", e); } } } @Override public Rect startSwipePipToHome(ComponentName componentName, ActivityInfo activityInfo, PictureInPictureParams pictureInPictureParams, int launcherRotation, int shelfHeight) { if (mPip != null) { if (mSystemUiProxy != null) { try { return mPip.startSwipePipToHome(componentName, activityInfo, return mSystemUiProxy.startSwipePipToHome(componentName, activityInfo, pictureInPictureParams, launcherRotation, shelfHeight); } catch (RemoteException e) { Log.w(TAG, "Failed call startSwipePipToHome", e); Loading @@ -403,85 +400,111 @@ public class SystemUiProxy implements ISystemUiProxy, return null; } @Override public void stopSwipePipToHome(ComponentName componentName, Rect destinationBounds) { if (mPip != null) { if (mSystemUiProxy != null) { try { mPip.stopSwipePipToHome(componentName, destinationBounds); mSystemUiProxy.stopSwipePipToHome(componentName, destinationBounds); } catch (RemoteException e) { Log.w(TAG, "Failed call stopSwipePipToHome"); } } } // // Splitscreen // @Override public void registerRemoteTransition(RemoteTransitionCompat remoteTransition) { if (mSystemUiProxy != null) { try { mSystemUiProxy.registerRemoteTransition(remoteTransition); } catch (RemoteException e) { Log.w(TAG, "Failed call registerRemoteTransition"); } } } @Override public void unregisterRemoteTransition(RemoteTransitionCompat remoteTransition) { if (mSystemUiProxy != null) { try { mSystemUiProxy.unregisterRemoteTransition(remoteTransition); } catch (RemoteException e) { Log.w(TAG, "Failed call registerRemoteTransition"); } } } @Override public void registerSplitScreenListener(ISplitScreenListener listener) { if (mSplitScreen != null) { if (mSystemUiProxy != null) { try { mSplitScreen.registerSplitScreenListener(listener); mSystemUiProxy.registerSplitScreenListener(listener); } catch (RemoteException e) { Log.w(TAG, "Failed call registerSplitScreenListener"); } } } @Override public void unregisterSplitScreenListener(ISplitScreenListener listener) { if (mSplitScreen != null) { if (mSystemUiProxy != null) { try { mSplitScreen.unregisterSplitScreenListener(listener); mSystemUiProxy.unregisterSplitScreenListener(listener); } catch (RemoteException e) { Log.w(TAG, "Failed call unregisterSplitScreenListener"); } } } @Override public void setSideStageVisibility(boolean visible) { if (mSplitScreen != null) { if (mSystemUiProxy != null) { try { mSplitScreen.setSideStageVisibility(visible); mSystemUiProxy.setSideStageVisibility(visible); } catch (RemoteException e) { Log.w(TAG, "Failed call setSideStageVisibility"); } } } @Override public void exitSplitScreen() { if (mSplitScreen != null) { if (mSystemUiProxy != null) { try { mSplitScreen.exitSplitScreen(); mSystemUiProxy.exitSplitScreen(); } catch (RemoteException e) { Log.w(TAG, "Failed call exitSplitScreen"); } } } @Override public void exitSplitScreenOnHide(boolean exitSplitScreenOnHide) { if (mSplitScreen != null) { if (mSystemUiProxy != null) { try { mSplitScreen.exitSplitScreenOnHide(exitSplitScreenOnHide); mSystemUiProxy.exitSplitScreenOnHide(exitSplitScreenOnHide); } catch (RemoteException e) { Log.w(TAG, "Failed call exitSplitScreen"); } } } @Override public void startTask(int taskId, int stage, int position, Bundle options) { if (mSplitScreen != null) { if (mSystemUiProxy != null) { try { mSplitScreen.startTask(taskId, stage, position, options); mSystemUiProxy.startTask(taskId, stage, position, options); } catch (RemoteException e) { Log.w(TAG, "Failed call startTask"); } } } @Override public void startShortcut(String packageName, String shortcutId, int stage, int position, Bundle options, UserHandle user) { if (mSplitScreen != null) { if (mSystemUiProxy != null) { try { mSplitScreen.startShortcut(packageName, shortcutId, stage, position, options, mSystemUiProxy.startShortcut(packageName, shortcutId, stage, position, options, user); } catch (RemoteException e) { Log.w(TAG, "Failed call startShortcut"); Loading @@ -489,87 +512,38 @@ public class SystemUiProxy implements ISystemUiProxy, } } public void startIntent(PendingIntent intent, Intent fillInIntent, int stage, int position, Bundle options) { if (mSplitScreen != null) { @Override public void startIntent(PendingIntent intent, Intent fillInIntent, int stage, int position, Bundle options) { if (mSystemUiProxy != null) { try { mSplitScreen.startIntent(intent, fillInIntent, stage, position, options); mSystemUiProxy.startIntent(intent, fillInIntent, stage, position, options); } catch (RemoteException e) { Log.w(TAG, "Failed call startIntent"); } } } @Override public void removeFromSideStage(int taskId) { if (mSplitScreen != null) { if (mSystemUiProxy != null) { try { mSplitScreen.removeFromSideStage(taskId); mSystemUiProxy.removeFromSideStage(taskId); } catch (RemoteException e) { Log.w(TAG, "Failed call removeFromSideStage"); } } } // // One handed // public void startOneHandedMode() { if (mOneHanded != null) { try { mOneHanded.startOneHanded(); } catch (RemoteException e) { Log.w(TAG, "Failed call startOneHandedMode", e); } } } public void stopOneHandedMode() { if (mOneHanded != null) { try { mOneHanded.stopOneHanded(); } catch (RemoteException e) { Log.w(TAG, "Failed call stopOneHandedMode", e); } } } // // Remote transitions // public void registerRemoteTransition(RemoteTransitionCompat remoteTransition) { if (mShellTransitions != null) { try { mShellTransitions.registerRemote(remoteTransition.getFilter(), remoteTransition.getTransition()); } catch (RemoteException e) { Log.w(TAG, "Failed call registerRemoteTransition"); } } } public void unregisterRemoteTransition(RemoteTransitionCompat remoteTransition) { if (mShellTransitions != null) { try { mShellTransitions.unregisterRemote(remoteTransition.getTransition()); } catch (RemoteException e) { Log.w(TAG, "Failed call registerRemoteTransition"); } } } // // Starting window // /** * Sets listener to get callbacks when launching a task. */ @Override public void setStartingWindowListener(IStartingWindowListener listener) { if (mStartingWindow != null) { if (mSystemUiProxy != null) { try { mStartingWindow.setStartingWindowListener(listener); mSystemUiProxy.setStartingWindowListener(listener); } catch (RemoteException e) { Log.w(TAG, "Failed call setStartingWindowListener", e); } Loading quickstep/src/com/android/quickstep/TouchInteractionService.java +2 −22 Original line number Diff line number Diff line Loading @@ -24,11 +24,6 @@ import static com.android.launcher3.config.FeatureFlags.ASSISTANT_GIVES_LAUNCHER import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; import static com.android.quickstep.GestureState.DEFAULT_STATE; import static com.android.quickstep.util.NavigationModeFeatureFlag.LIVE_TILE; import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_ONE_HANDED; import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_PIP; import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_SHELL_TRANSITIONS; import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_SPLIT_SCREEN; import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_STARTING_WINDOW; import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SYSUI_PROXY; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_TRACING_ENABLED; Loading Loading @@ -106,11 +101,6 @@ import com.android.systemui.shared.system.InputChannelCompat.InputEventReceiver; import com.android.systemui.shared.system.InputConsumerController; import com.android.systemui.shared.system.InputMonitorCompat; import com.android.systemui.shared.tracing.ProtoTraceable; import com.android.wm.shell.onehanded.IOneHanded; import com.android.wm.shell.pip.IPip; import com.android.wm.shell.splitscreen.ISplitScreen; import com.android.wm.shell.startingsurface.IStartingWindow; import com.android.wm.shell.transition.IShellTransitions; import java.io.FileDescriptor; import java.io.PrintWriter; Loading Loading @@ -150,18 +140,8 @@ public class TouchInteractionService extends Service implements PluginListener<O public void onInitialize(Bundle bundle) { ISystemUiProxy proxy = ISystemUiProxy.Stub.asInterface( bundle.getBinder(KEY_EXTRA_SYSUI_PROXY)); IPip pip = IPip.Stub.asInterface(bundle.getBinder(KEY_EXTRA_SHELL_PIP)); ISplitScreen splitscreen = ISplitScreen.Stub.asInterface(bundle.getBinder( KEY_EXTRA_SHELL_SPLIT_SCREEN)); IOneHanded onehanded = IOneHanded.Stub.asInterface( bundle.getBinder(KEY_EXTRA_SHELL_ONE_HANDED)); IShellTransitions shellTransitions = IShellTransitions.Stub.asInterface( bundle.getBinder(KEY_EXTRA_SHELL_SHELL_TRANSITIONS)); IStartingWindow startingWindow = IStartingWindow.Stub.asInterface( bundle.getBinder(KEY_EXTRA_SHELL_STARTING_WINDOW)); MAIN_EXECUTOR.execute(() -> { SystemUiProxy.INSTANCE.get(TouchInteractionService.this).setProxy(proxy, pip, splitscreen, onehanded, shellTransitions, startingWindow); SystemUiProxy.INSTANCE.get(TouchInteractionService.this).setProxy(proxy); TouchInteractionService.this.initInputMonitor(); preloadOverview(true /* fromInit */); mDeviceState.runOnUserUnlocked(() -> { Loading Loading @@ -441,7 +421,7 @@ public class TouchInteractionService extends Service implements PluginListener<O } disposeEventHandlers(); mDeviceState.destroy(); SystemUiProxy.INSTANCE.get(this).clearProxy(); SystemUiProxy.INSTANCE.get(this).setProxy(null); ProtoTracer.INSTANCE.get(this).stop(); ProtoTracer.INSTANCE.get(this).remove(this); Loading quickstep/src/com/android/quickstep/views/RecentsView.java +10 −13 Original line number Diff line number Diff line Loading @@ -39,7 +39,6 @@ import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCH import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASK_DISMISS_SWIPE_UP; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASK_LAUNCH_SWIPE_DOWN; import static com.android.launcher3.statehandlers.DepthController.DEPTH; import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR; import static com.android.launcher3.util.SystemUiController.UI_STATE_OVERVIEW; import static com.android.quickstep.TaskUtils.checkCurrentOrManagedUserId; Loading Loading @@ -134,13 +133,13 @@ import com.android.quickstep.util.SurfaceTransactionApplier; import com.android.quickstep.util.TaskViewSimulator; import com.android.quickstep.util.TransformParams; import com.android.systemui.plugins.ResourceProvider; import com.android.systemui.shared.recents.IPinnedStackAnimationListener; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.Task.TaskKey; import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.PackageManagerWrapper; import com.android.systemui.shared.system.TaskStackChangeListener; import com.android.wm.shell.pip.IPipAnimationListener; import java.util.ArrayList; import java.util.function.Consumer; Loading Loading @@ -378,7 +377,7 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView } }; private final PinnedStackAnimationListener mIPipAnimationListener = private final PinnedStackAnimationListener mIPinnedStackAnimationListener = new PinnedStackAnimationListener(); // Used to keep track of the last requested task list id, so that we do not request to load the Loading Loading @@ -598,9 +597,9 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView mLiveTileParams.setSyncTransactionApplier(mSyncTransactionApplier); RecentsModel.INSTANCE.get(getContext()).addThumbnailChangeListener(this); mIdp.addOnChangeListener(this); mIPipAnimationListener.setActivity(mActivity); mIPinnedStackAnimationListener.setActivity(mActivity); SystemUiProxy.INSTANCE.get(getContext()).setPinnedStackAnimationListener( mIPipAnimationListener); mIPinnedStackAnimationListener); mOrientationState.initListeners(); SplitScreenBounds.INSTANCE.addOnChangeListener(this); mTaskOverlayFactory.initListeners(); Loading @@ -619,7 +618,7 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView mIdp.removeOnChangeListener(this); SystemUiProxy.INSTANCE.get(getContext()).setPinnedStackAnimationListener(null); SplitScreenBounds.INSTANCE.removeOnChangeListener(this); mIPipAnimationListener.setActivity(null); mIPinnedStackAnimationListener.setActivity(null); mOrientationState.destroyListeners(); mTaskOverlayFactory.removeListeners(); } Loading Loading @@ -2923,7 +2922,7 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView } private static class PinnedStackAnimationListener<T extends BaseActivity> extends IPipAnimationListener.Stub { IPinnedStackAnimationListener.Stub { private T mActivity; public void setActivity(T activity) { Loading @@ -2931,12 +2930,10 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView } @Override public void onPipAnimationStarted() { MAIN_EXECUTOR.execute(() -> { public void onPinnedStackAnimationStarted() { // Needed for activities that auto-enter PiP, which will not trigger a remote // animation to be created mActivity.clearForceInvisibleFlag(STATE_HANDLER_INVISIBILITY_FLAGS); }); } } } Loading
quickstep/src/com/android/launcher3/QuickstepTransitionManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -86,6 +86,7 @@ import com.android.quickstep.util.RemoteAnimationProvider; import com.android.quickstep.util.StaggeredWorkspaceAnim; import com.android.quickstep.util.SurfaceTransactionApplier; import com.android.quickstep.views.RecentsView; import com.android.systemui.shared.recents.IStartingWindowListener; import com.android.systemui.shared.system.ActivityCompat; import com.android.systemui.shared.system.ActivityOptionsCompat; import com.android.systemui.shared.system.InteractionJankMonitorWrapper; Loading @@ -97,7 +98,6 @@ import com.android.systemui.shared.system.RemoteAnimationTargetCompat; import com.android.systemui.shared.system.RemoteTransitionCompat; import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams; import com.android.systemui.shared.system.WindowManagerWrapper; import com.android.wm.shell.startingsurface.IStartingWindowListener; import java.util.LinkedHashMap; Loading
quickstep/src/com/android/quickstep/SystemUiProxy.java +107 −133 Original line number Diff line number Diff line Loading @@ -35,17 +35,12 @@ import android.util.Log; import android.view.MotionEvent; import com.android.launcher3.util.MainThreadInitializedObject; import com.android.systemui.shared.recents.IPinnedStackAnimationListener; import com.android.systemui.shared.recents.ISplitScreenListener; import com.android.systemui.shared.recents.IStartingWindowListener; import com.android.systemui.shared.recents.ISystemUiProxy; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.system.RemoteTransitionCompat; import com.android.wm.shell.onehanded.IOneHanded; import com.android.wm.shell.pip.IPip; import com.android.wm.shell.pip.IPipAnimationListener; import com.android.wm.shell.splitscreen.ISplitScreen; import com.android.wm.shell.splitscreen.ISplitScreenListener; import com.android.wm.shell.startingsurface.IStartingWindow; import com.android.wm.shell.startingsurface.IStartingWindowListener; import com.android.wm.shell.transition.IShellTransitions; /** * Holds the reference to SystemUI. Loading @@ -58,13 +53,8 @@ public class SystemUiProxy implements ISystemUiProxy, new MainThreadInitializedObject<>(SystemUiProxy::new); private ISystemUiProxy mSystemUiProxy; private IPip mPip; private ISplitScreen mSplitScreen; private IOneHanded mOneHanded; private IShellTransitions mShellTransitions; private IStartingWindow mStartingWindow; private final DeathRecipient mSystemUiProxyDeathRecipient = () -> { MAIN_EXECUTOR.execute(() -> clearProxy()); MAIN_EXECUTOR.execute(() -> setProxy(null)); }; // Used to dedupe calls to SystemUI Loading Loading @@ -92,23 +82,12 @@ public class SystemUiProxy implements ISystemUiProxy, return null; } public void setProxy(ISystemUiProxy proxy, IPip pip, ISplitScreen splitScreen, IOneHanded oneHanded, IShellTransitions shellTransitions, IStartingWindow startingWindow) { public void setProxy(ISystemUiProxy proxy) { unlinkToDeath(); mSystemUiProxy = proxy; mPip = pip; mSplitScreen = splitScreen; mOneHanded = oneHanded; mShellTransitions = shellTransitions; mStartingWindow = startingWindow; linkToDeath(); } public void clearProxy() { setProxy(null, null, null, null, null, null); } // TODO(141886704): Find a way to remove this public void setLastSystemUiStateFlags(int stateFlags) { mLastSystemUiStateFlags = stateFlags; Loading Loading @@ -285,6 +264,21 @@ public class SystemUiProxy implements ISystemUiProxy, } } @Override public void setShelfHeight(boolean visible, int shelfHeight) { boolean changed = visible != mLastShelfVisible || shelfHeight != mLastShelfHeight; if (mSystemUiProxy != null && changed) { mLastShelfVisible = visible; mLastShelfHeight = shelfHeight; try { mSystemUiProxy.setShelfHeight(visible, shelfHeight); } catch (RemoteException e) { Log.w(TAG, "Failed call setShelfHeight visible: " + visible + " height: " + shelfHeight, e); } } } @Override public void handleImageAsScreenshot(Bitmap bitmap, Rect rect, Insets insets, int i) { if (mSystemUiProxy != null) { Loading Loading @@ -321,6 +315,20 @@ public class SystemUiProxy implements ISystemUiProxy, } } /** * Sets listener to get pinned stack animation callbacks. */ @Override public void setPinnedStackAnimationListener(IPinnedStackAnimationListener listener) { if (mSystemUiProxy != null) { try { mSystemUiProxy.setPinnedStackAnimationListener(listener); } catch (RemoteException e) { Log.w(TAG, "Failed call setPinnedStackAnimationListener", e); } } } @Override public void onQuickSwitchToNewTask(int rotation) { if (mSystemUiProxy != null) { Loading @@ -346,55 +354,44 @@ public class SystemUiProxy implements ISystemUiProxy, } @Override public void expandNotificationPanel() { public void startOneHandedMode() { if (mSystemUiProxy != null) { try { mSystemUiProxy.expandNotificationPanel(); mSystemUiProxy.startOneHandedMode(); } catch (RemoteException e) { Log.w(TAG, "Failed call expandNotificationPanel", e); Log.w(TAG, "Failed call startOneHandedMode", e); } } } // // Pip // /** * Sets the shelf height. */ public void setShelfHeight(boolean visible, int shelfHeight) { boolean changed = visible != mLastShelfVisible || shelfHeight != mLastShelfHeight; if (mPip != null && changed) { mLastShelfVisible = visible; mLastShelfHeight = shelfHeight; @Override public void stopOneHandedMode() { if (mSystemUiProxy != null) { try { mPip.setShelfHeight(visible, shelfHeight); mSystemUiProxy.stopOneHandedMode(); } catch (RemoteException e) { Log.w(TAG, "Failed call setShelfHeight visible: " + visible + " height: " + shelfHeight, e); Log.w(TAG, "Failed call stopOneHandedMode", e); } } } /** * Sets listener to get pinned stack animation callbacks. */ public void setPinnedStackAnimationListener(IPipAnimationListener listener) { if (mPip != null) { @Override public void expandNotificationPanel() { if (mSystemUiProxy != null) { try { mPip.setPinnedStackAnimationListener(listener); mSystemUiProxy.expandNotificationPanel(); } catch (RemoteException e) { Log.w(TAG, "Failed call setPinnedStackAnimationListener", e); Log.w(TAG, "Failed call expandNotificationPanel", e); } } } @Override public Rect startSwipePipToHome(ComponentName componentName, ActivityInfo activityInfo, PictureInPictureParams pictureInPictureParams, int launcherRotation, int shelfHeight) { if (mPip != null) { if (mSystemUiProxy != null) { try { return mPip.startSwipePipToHome(componentName, activityInfo, return mSystemUiProxy.startSwipePipToHome(componentName, activityInfo, pictureInPictureParams, launcherRotation, shelfHeight); } catch (RemoteException e) { Log.w(TAG, "Failed call startSwipePipToHome", e); Loading @@ -403,85 +400,111 @@ public class SystemUiProxy implements ISystemUiProxy, return null; } @Override public void stopSwipePipToHome(ComponentName componentName, Rect destinationBounds) { if (mPip != null) { if (mSystemUiProxy != null) { try { mPip.stopSwipePipToHome(componentName, destinationBounds); mSystemUiProxy.stopSwipePipToHome(componentName, destinationBounds); } catch (RemoteException e) { Log.w(TAG, "Failed call stopSwipePipToHome"); } } } // // Splitscreen // @Override public void registerRemoteTransition(RemoteTransitionCompat remoteTransition) { if (mSystemUiProxy != null) { try { mSystemUiProxy.registerRemoteTransition(remoteTransition); } catch (RemoteException e) { Log.w(TAG, "Failed call registerRemoteTransition"); } } } @Override public void unregisterRemoteTransition(RemoteTransitionCompat remoteTransition) { if (mSystemUiProxy != null) { try { mSystemUiProxy.unregisterRemoteTransition(remoteTransition); } catch (RemoteException e) { Log.w(TAG, "Failed call registerRemoteTransition"); } } } @Override public void registerSplitScreenListener(ISplitScreenListener listener) { if (mSplitScreen != null) { if (mSystemUiProxy != null) { try { mSplitScreen.registerSplitScreenListener(listener); mSystemUiProxy.registerSplitScreenListener(listener); } catch (RemoteException e) { Log.w(TAG, "Failed call registerSplitScreenListener"); } } } @Override public void unregisterSplitScreenListener(ISplitScreenListener listener) { if (mSplitScreen != null) { if (mSystemUiProxy != null) { try { mSplitScreen.unregisterSplitScreenListener(listener); mSystemUiProxy.unregisterSplitScreenListener(listener); } catch (RemoteException e) { Log.w(TAG, "Failed call unregisterSplitScreenListener"); } } } @Override public void setSideStageVisibility(boolean visible) { if (mSplitScreen != null) { if (mSystemUiProxy != null) { try { mSplitScreen.setSideStageVisibility(visible); mSystemUiProxy.setSideStageVisibility(visible); } catch (RemoteException e) { Log.w(TAG, "Failed call setSideStageVisibility"); } } } @Override public void exitSplitScreen() { if (mSplitScreen != null) { if (mSystemUiProxy != null) { try { mSplitScreen.exitSplitScreen(); mSystemUiProxy.exitSplitScreen(); } catch (RemoteException e) { Log.w(TAG, "Failed call exitSplitScreen"); } } } @Override public void exitSplitScreenOnHide(boolean exitSplitScreenOnHide) { if (mSplitScreen != null) { if (mSystemUiProxy != null) { try { mSplitScreen.exitSplitScreenOnHide(exitSplitScreenOnHide); mSystemUiProxy.exitSplitScreenOnHide(exitSplitScreenOnHide); } catch (RemoteException e) { Log.w(TAG, "Failed call exitSplitScreen"); } } } @Override public void startTask(int taskId, int stage, int position, Bundle options) { if (mSplitScreen != null) { if (mSystemUiProxy != null) { try { mSplitScreen.startTask(taskId, stage, position, options); mSystemUiProxy.startTask(taskId, stage, position, options); } catch (RemoteException e) { Log.w(TAG, "Failed call startTask"); } } } @Override public void startShortcut(String packageName, String shortcutId, int stage, int position, Bundle options, UserHandle user) { if (mSplitScreen != null) { if (mSystemUiProxy != null) { try { mSplitScreen.startShortcut(packageName, shortcutId, stage, position, options, mSystemUiProxy.startShortcut(packageName, shortcutId, stage, position, options, user); } catch (RemoteException e) { Log.w(TAG, "Failed call startShortcut"); Loading @@ -489,87 +512,38 @@ public class SystemUiProxy implements ISystemUiProxy, } } public void startIntent(PendingIntent intent, Intent fillInIntent, int stage, int position, Bundle options) { if (mSplitScreen != null) { @Override public void startIntent(PendingIntent intent, Intent fillInIntent, int stage, int position, Bundle options) { if (mSystemUiProxy != null) { try { mSplitScreen.startIntent(intent, fillInIntent, stage, position, options); mSystemUiProxy.startIntent(intent, fillInIntent, stage, position, options); } catch (RemoteException e) { Log.w(TAG, "Failed call startIntent"); } } } @Override public void removeFromSideStage(int taskId) { if (mSplitScreen != null) { if (mSystemUiProxy != null) { try { mSplitScreen.removeFromSideStage(taskId); mSystemUiProxy.removeFromSideStage(taskId); } catch (RemoteException e) { Log.w(TAG, "Failed call removeFromSideStage"); } } } // // One handed // public void startOneHandedMode() { if (mOneHanded != null) { try { mOneHanded.startOneHanded(); } catch (RemoteException e) { Log.w(TAG, "Failed call startOneHandedMode", e); } } } public void stopOneHandedMode() { if (mOneHanded != null) { try { mOneHanded.stopOneHanded(); } catch (RemoteException e) { Log.w(TAG, "Failed call stopOneHandedMode", e); } } } // // Remote transitions // public void registerRemoteTransition(RemoteTransitionCompat remoteTransition) { if (mShellTransitions != null) { try { mShellTransitions.registerRemote(remoteTransition.getFilter(), remoteTransition.getTransition()); } catch (RemoteException e) { Log.w(TAG, "Failed call registerRemoteTransition"); } } } public void unregisterRemoteTransition(RemoteTransitionCompat remoteTransition) { if (mShellTransitions != null) { try { mShellTransitions.unregisterRemote(remoteTransition.getTransition()); } catch (RemoteException e) { Log.w(TAG, "Failed call registerRemoteTransition"); } } } // // Starting window // /** * Sets listener to get callbacks when launching a task. */ @Override public void setStartingWindowListener(IStartingWindowListener listener) { if (mStartingWindow != null) { if (mSystemUiProxy != null) { try { mStartingWindow.setStartingWindowListener(listener); mSystemUiProxy.setStartingWindowListener(listener); } catch (RemoteException e) { Log.w(TAG, "Failed call setStartingWindowListener", e); } Loading
quickstep/src/com/android/quickstep/TouchInteractionService.java +2 −22 Original line number Diff line number Diff line Loading @@ -24,11 +24,6 @@ import static com.android.launcher3.config.FeatureFlags.ASSISTANT_GIVES_LAUNCHER import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; import static com.android.quickstep.GestureState.DEFAULT_STATE; import static com.android.quickstep.util.NavigationModeFeatureFlag.LIVE_TILE; import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_ONE_HANDED; import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_PIP; import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_SHELL_TRANSITIONS; import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_SPLIT_SCREEN; import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_STARTING_WINDOW; import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SYSUI_PROXY; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_TRACING_ENABLED; Loading Loading @@ -106,11 +101,6 @@ import com.android.systemui.shared.system.InputChannelCompat.InputEventReceiver; import com.android.systemui.shared.system.InputConsumerController; import com.android.systemui.shared.system.InputMonitorCompat; import com.android.systemui.shared.tracing.ProtoTraceable; import com.android.wm.shell.onehanded.IOneHanded; import com.android.wm.shell.pip.IPip; import com.android.wm.shell.splitscreen.ISplitScreen; import com.android.wm.shell.startingsurface.IStartingWindow; import com.android.wm.shell.transition.IShellTransitions; import java.io.FileDescriptor; import java.io.PrintWriter; Loading Loading @@ -150,18 +140,8 @@ public class TouchInteractionService extends Service implements PluginListener<O public void onInitialize(Bundle bundle) { ISystemUiProxy proxy = ISystemUiProxy.Stub.asInterface( bundle.getBinder(KEY_EXTRA_SYSUI_PROXY)); IPip pip = IPip.Stub.asInterface(bundle.getBinder(KEY_EXTRA_SHELL_PIP)); ISplitScreen splitscreen = ISplitScreen.Stub.asInterface(bundle.getBinder( KEY_EXTRA_SHELL_SPLIT_SCREEN)); IOneHanded onehanded = IOneHanded.Stub.asInterface( bundle.getBinder(KEY_EXTRA_SHELL_ONE_HANDED)); IShellTransitions shellTransitions = IShellTransitions.Stub.asInterface( bundle.getBinder(KEY_EXTRA_SHELL_SHELL_TRANSITIONS)); IStartingWindow startingWindow = IStartingWindow.Stub.asInterface( bundle.getBinder(KEY_EXTRA_SHELL_STARTING_WINDOW)); MAIN_EXECUTOR.execute(() -> { SystemUiProxy.INSTANCE.get(TouchInteractionService.this).setProxy(proxy, pip, splitscreen, onehanded, shellTransitions, startingWindow); SystemUiProxy.INSTANCE.get(TouchInteractionService.this).setProxy(proxy); TouchInteractionService.this.initInputMonitor(); preloadOverview(true /* fromInit */); mDeviceState.runOnUserUnlocked(() -> { Loading Loading @@ -441,7 +421,7 @@ public class TouchInteractionService extends Service implements PluginListener<O } disposeEventHandlers(); mDeviceState.destroy(); SystemUiProxy.INSTANCE.get(this).clearProxy(); SystemUiProxy.INSTANCE.get(this).setProxy(null); ProtoTracer.INSTANCE.get(this).stop(); ProtoTracer.INSTANCE.get(this).remove(this); Loading
quickstep/src/com/android/quickstep/views/RecentsView.java +10 −13 Original line number Diff line number Diff line Loading @@ -39,7 +39,6 @@ import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCH import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASK_DISMISS_SWIPE_UP; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASK_LAUNCH_SWIPE_DOWN; import static com.android.launcher3.statehandlers.DepthController.DEPTH; import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR; import static com.android.launcher3.util.SystemUiController.UI_STATE_OVERVIEW; import static com.android.quickstep.TaskUtils.checkCurrentOrManagedUserId; Loading Loading @@ -134,13 +133,13 @@ import com.android.quickstep.util.SurfaceTransactionApplier; import com.android.quickstep.util.TaskViewSimulator; import com.android.quickstep.util.TransformParams; import com.android.systemui.plugins.ResourceProvider; import com.android.systemui.shared.recents.IPinnedStackAnimationListener; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.Task.TaskKey; import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.PackageManagerWrapper; import com.android.systemui.shared.system.TaskStackChangeListener; import com.android.wm.shell.pip.IPipAnimationListener; import java.util.ArrayList; import java.util.function.Consumer; Loading Loading @@ -378,7 +377,7 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView } }; private final PinnedStackAnimationListener mIPipAnimationListener = private final PinnedStackAnimationListener mIPinnedStackAnimationListener = new PinnedStackAnimationListener(); // Used to keep track of the last requested task list id, so that we do not request to load the Loading Loading @@ -598,9 +597,9 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView mLiveTileParams.setSyncTransactionApplier(mSyncTransactionApplier); RecentsModel.INSTANCE.get(getContext()).addThumbnailChangeListener(this); mIdp.addOnChangeListener(this); mIPipAnimationListener.setActivity(mActivity); mIPinnedStackAnimationListener.setActivity(mActivity); SystemUiProxy.INSTANCE.get(getContext()).setPinnedStackAnimationListener( mIPipAnimationListener); mIPinnedStackAnimationListener); mOrientationState.initListeners(); SplitScreenBounds.INSTANCE.addOnChangeListener(this); mTaskOverlayFactory.initListeners(); Loading @@ -619,7 +618,7 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView mIdp.removeOnChangeListener(this); SystemUiProxy.INSTANCE.get(getContext()).setPinnedStackAnimationListener(null); SplitScreenBounds.INSTANCE.removeOnChangeListener(this); mIPipAnimationListener.setActivity(null); mIPinnedStackAnimationListener.setActivity(null); mOrientationState.destroyListeners(); mTaskOverlayFactory.removeListeners(); } Loading Loading @@ -2923,7 +2922,7 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView } private static class PinnedStackAnimationListener<T extends BaseActivity> extends IPipAnimationListener.Stub { IPinnedStackAnimationListener.Stub { private T mActivity; public void setActivity(T activity) { Loading @@ -2931,12 +2930,10 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView } @Override public void onPipAnimationStarted() { MAIN_EXECUTOR.execute(() -> { public void onPinnedStackAnimationStarted() { // Needed for activities that auto-enter PiP, which will not trigger a remote // animation to be created mActivity.clearForceInvisibleFlag(STATE_HANDLER_INVISIBILITY_FLAGS); }); } } }