From ee904f65c141497326cef9b769e27425e36cf81d Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Mon, 15 Mar 2021 17:52:25 +0000 Subject: [PATCH] Revert "Update calls to go through the feature interface instead..." Revert "1/ Add mechanism to expose shell feature directly (for Pip)" Revert "Add shell aidl files" Revert "Update starting window init call for CarLauncher" Revert submission 13608835-shell_feature_interfaces Reason for revert: SysUI Studio aidl import issue Reverted Changes: I49a5a0419:2/ Add mechanism to expose other features directly... I19425896d:Update starting window init call for CarLauncher If048d2cd9:1/ Add mechanism to expose shell feature directly ... Ibb8365d3c:Add shell aidl files Ie41b0b77a:Update calls to go through the feature interface i... Change-Id: I99c039c88d1d5f9b249f74a361f5f30ee34addd2 --- .../launcher3/QuickstepTransitionManager.java | 2 +- .../com/android/quickstep/SystemUiProxy.java | 262 ++++++++---------- .../quickstep/TouchInteractionService.java | 24 +- .../android/quickstep/views/RecentsView.java | 23 +- 4 files changed, 131 insertions(+), 180 deletions(-) diff --git a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java index f04c58d586..343b87e735 100644 --- a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java +++ b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java @@ -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; @@ -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; diff --git a/quickstep/src/com/android/quickstep/SystemUiProxy.java b/quickstep/src/com/android/quickstep/SystemUiProxy.java index f25c358fea..5668817da8 100644 --- a/quickstep/src/com/android/quickstep/SystemUiProxy.java +++ b/quickstep/src/com/android/quickstep/SystemUiProxy.java @@ -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. @@ -57,13 +52,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 @@ -85,23 +75,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; @@ -289,6 +268,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) { @@ -325,6 +319,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) { @@ -349,6 +357,28 @@ public class SystemUiProxy implements ISystemUiProxy { } } + @Override + public void startOneHandedMode() { + if (mSystemUiProxy != null) { + try { + mSystemUiProxy.startOneHandedMode(); + } catch (RemoteException e) { + Log.w(TAG, "Failed call startOneHandedMode", e); + } + } + } + + @Override + public void stopOneHandedMode() { + if (mSystemUiProxy != null) { + try { + mSystemUiProxy.stopOneHandedMode(); + } catch (RemoteException e) { + Log.w(TAG, "Failed call stopOneHandedMode", e); + } + } + } + @Override public void expandNotificationPanel() { if (mSystemUiProxy != null) { @@ -360,45 +390,12 @@ public class SystemUiProxy implements ISystemUiProxy { } } - // - // 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; - try { - mPip.setShelfHeight(visible, shelfHeight); - } catch (RemoteException e) { - Log.w(TAG, "Failed call setShelfHeight visible: " + visible - + " height: " + shelfHeight, e); - } - } - } - - /** - * Sets listener to get pinned stack animation callbacks. - */ - public void setPinnedStackAnimationListener(IPipAnimationListener listener) { - if (mPip != null) { - try { - mPip.setPinnedStackAnimationListener(listener); - } catch (RemoteException e) { - Log.w(TAG, "Failed call setPinnedStackAnimationListener", 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); @@ -407,85 +404,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 - // - - public void registerSplitScreenListener(ISplitScreenListener listener) { - if (mSplitScreen != null) { + @Override + public void registerRemoteTransition(RemoteTransitionCompat remoteTransition) { + if (mSystemUiProxy != null) { try { - mSplitScreen.registerSplitScreenListener(listener); + 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 (mSystemUiProxy != null) { + try { + 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"); @@ -493,87 +516,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); } diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java index 1cb5f5d04e..fc805d0794 100644 --- a/quickstep/src/com/android/quickstep/TouchInteractionService.java +++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java @@ -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; @@ -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; @@ -150,18 +140,8 @@ public class TouchInteractionService extends Service implements PluginListener { - 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(() -> { @@ -441,7 +421,7 @@ public class TouchInteractionService extends Service implements PluginListener 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 @@ -598,9 +597,9 @@ public abstract class RecentsView 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(); @@ -619,7 +618,7 @@ public abstract class RecentsView 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(); } @@ -2923,7 +2922,7 @@ public abstract class RecentsView extends PagedView } private static class PinnedStackAnimationListener extends - IPipAnimationListener.Stub { + IPinnedStackAnimationListener.Stub { private T mActivity; public void setActivity(T activity) { @@ -2931,12 +2930,10 @@ public abstract class RecentsView extends PagedView } @Override - public void onPipAnimationStarted() { - MAIN_EXECUTOR.execute(() -> { - // Needed for activities that auto-enter PiP, which will not trigger a remote - // animation to be created - mActivity.clearForceInvisibleFlag(STATE_HANDLER_INVISIBILITY_FLAGS); - }); + 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); } } }