Update calls to go through the feature interface instead of sysui proxy
Bug: 180074017 Test: atest PinnedStackTests Test: Verify Pip works w/ launcher (shelf offsets, autoenter, etc) Change-Id: Ie41b0b77a7d5a79288af91f862e2a2cdda85fb66
This commit is contained in:
@@ -86,7 +86,6 @@ 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;
|
||||
@@ -98,6 +97,7 @@ 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;
|
||||
|
||||
|
||||
@@ -35,12 +35,17 @@ 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.
|
||||
@@ -52,8 +57,13 @@ 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(() -> setProxy(null));
|
||||
MAIN_EXECUTOR.execute(() -> clearProxy());
|
||||
};
|
||||
|
||||
// Used to dedupe calls to SystemUI
|
||||
@@ -75,12 +85,23 @@ public class SystemUiProxy implements ISystemUiProxy {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void setProxy(ISystemUiProxy proxy) {
|
||||
public void setProxy(ISystemUiProxy proxy, IPip pip, ISplitScreen splitScreen,
|
||||
IOneHanded oneHanded, IShellTransitions shellTransitions,
|
||||
IStartingWindow startingWindow) {
|
||||
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;
|
||||
@@ -268,21 +289,6 @@ 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) {
|
||||
@@ -319,20 +325,6 @@ 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) {
|
||||
@@ -357,28 +349,6 @@ 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) {
|
||||
@@ -390,12 +360,45 @@ public class SystemUiProxy implements ISystemUiProxy {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
//
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Rect startSwipePipToHome(ComponentName componentName, ActivityInfo activityInfo,
|
||||
PictureInPictureParams pictureInPictureParams, int launcherRotation, int shelfHeight) {
|
||||
if (mSystemUiProxy != null) {
|
||||
if (mPip != null) {
|
||||
try {
|
||||
return mSystemUiProxy.startSwipePipToHome(componentName, activityInfo,
|
||||
return mPip.startSwipePipToHome(componentName, activityInfo,
|
||||
pictureInPictureParams, launcherRotation, shelfHeight);
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Failed call startSwipePipToHome", e);
|
||||
@@ -404,111 +407,85 @@ public class SystemUiProxy implements ISystemUiProxy {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stopSwipePipToHome(ComponentName componentName, Rect destinationBounds) {
|
||||
if (mSystemUiProxy != null) {
|
||||
if (mPip != null) {
|
||||
try {
|
||||
mSystemUiProxy.stopSwipePipToHome(componentName, destinationBounds);
|
||||
mPip.stopSwipePipToHome(componentName, destinationBounds);
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Failed call stopSwipePipToHome");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerRemoteTransition(RemoteTransitionCompat remoteTransition) {
|
||||
if (mSystemUiProxy != null) {
|
||||
try {
|
||||
mSystemUiProxy.registerRemoteTransition(remoteTransition);
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Failed call registerRemoteTransition");
|
||||
}
|
||||
}
|
||||
}
|
||||
//
|
||||
// Splitscreen
|
||||
//
|
||||
|
||||
@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) {
|
||||
if (mSplitScreen != null) {
|
||||
try {
|
||||
mSystemUiProxy.registerSplitScreenListener(listener);
|
||||
mSplitScreen.registerSplitScreenListener(listener);
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Failed call registerSplitScreenListener");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unregisterSplitScreenListener(ISplitScreenListener listener) {
|
||||
if (mSystemUiProxy != null) {
|
||||
if (mSplitScreen != null) {
|
||||
try {
|
||||
mSystemUiProxy.unregisterSplitScreenListener(listener);
|
||||
mSplitScreen.unregisterSplitScreenListener(listener);
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Failed call unregisterSplitScreenListener");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSideStageVisibility(boolean visible) {
|
||||
if (mSystemUiProxy != null) {
|
||||
if (mSplitScreen != null) {
|
||||
try {
|
||||
mSystemUiProxy.setSideStageVisibility(visible);
|
||||
mSplitScreen.setSideStageVisibility(visible);
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Failed call setSideStageVisibility");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exitSplitScreen() {
|
||||
if (mSystemUiProxy != null) {
|
||||
if (mSplitScreen != null) {
|
||||
try {
|
||||
mSystemUiProxy.exitSplitScreen();
|
||||
mSplitScreen.exitSplitScreen();
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Failed call exitSplitScreen");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exitSplitScreenOnHide(boolean exitSplitScreenOnHide) {
|
||||
if (mSystemUiProxy != null) {
|
||||
if (mSplitScreen != null) {
|
||||
try {
|
||||
mSystemUiProxy.exitSplitScreenOnHide(exitSplitScreenOnHide);
|
||||
mSplitScreen.exitSplitScreenOnHide(exitSplitScreenOnHide);
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Failed call exitSplitScreen");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startTask(int taskId, int stage, int position, Bundle options) {
|
||||
if (mSystemUiProxy != null) {
|
||||
if (mSplitScreen != null) {
|
||||
try {
|
||||
mSystemUiProxy.startTask(taskId, stage, position, options);
|
||||
mSplitScreen.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 (mSystemUiProxy != null) {
|
||||
if (mSplitScreen != null) {
|
||||
try {
|
||||
mSystemUiProxy.startShortcut(packageName, shortcutId, stage, position, options,
|
||||
mSplitScreen.startShortcut(packageName, shortcutId, stage, position, options,
|
||||
user);
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Failed call startShortcut");
|
||||
@@ -516,38 +493,87 @@ public class SystemUiProxy implements ISystemUiProxy {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startIntent(PendingIntent intent, Intent fillInIntent, int stage,
|
||||
int position, Bundle options) {
|
||||
if (mSystemUiProxy != null) {
|
||||
public void startIntent(PendingIntent intent, Intent fillInIntent, int stage, int position,
|
||||
Bundle options) {
|
||||
if (mSplitScreen != null) {
|
||||
try {
|
||||
mSystemUiProxy.startIntent(intent, fillInIntent, stage, position,
|
||||
options);
|
||||
mSplitScreen.startIntent(intent, fillInIntent, stage, position, options);
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Failed call startIntent");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeFromSideStage(int taskId) {
|
||||
if (mSystemUiProxy != null) {
|
||||
if (mSplitScreen != null) {
|
||||
try {
|
||||
mSystemUiProxy.removeFromSideStage(taskId);
|
||||
mSplitScreen.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 (mSystemUiProxy != null) {
|
||||
if (mStartingWindow != null) {
|
||||
try {
|
||||
mSystemUiProxy.setStartingWindowListener(listener);
|
||||
mStartingWindow.setStartingWindowListener(listener);
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Failed call setStartingWindowListener", e);
|
||||
}
|
||||
|
||||
@@ -24,6 +24,11 @@ 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;
|
||||
|
||||
@@ -101,6 +106,11 @@ 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;
|
||||
@@ -140,8 +150,18 @@ 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);
|
||||
SystemUiProxy.INSTANCE.get(TouchInteractionService.this).setProxy(proxy, pip,
|
||||
splitscreen, onehanded, shellTransitions, startingWindow);
|
||||
TouchInteractionService.this.initInputMonitor();
|
||||
preloadOverview(true /* fromInit */);
|
||||
mDeviceState.runOnUserUnlocked(() -> {
|
||||
@@ -421,7 +441,7 @@ public class TouchInteractionService extends Service implements PluginListener<O
|
||||
}
|
||||
disposeEventHandlers();
|
||||
mDeviceState.destroy();
|
||||
SystemUiProxy.INSTANCE.get(this).setProxy(null);
|
||||
SystemUiProxy.INSTANCE.get(this).clearProxy();
|
||||
ProtoTracer.INSTANCE.get(this).stop();
|
||||
ProtoTracer.INSTANCE.get(this).remove(this);
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@ 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;
|
||||
@@ -133,13 +134,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;
|
||||
@@ -377,7 +378,7 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView
|
||||
}
|
||||
};
|
||||
|
||||
private final PinnedStackAnimationListener mIPinnedStackAnimationListener =
|
||||
private final PinnedStackAnimationListener mIPipAnimationListener =
|
||||
new PinnedStackAnimationListener();
|
||||
|
||||
// Used to keep track of the last requested task list id, so that we do not request to load the
|
||||
@@ -597,9 +598,9 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView
|
||||
mLiveTileParams.setSyncTransactionApplier(mSyncTransactionApplier);
|
||||
RecentsModel.INSTANCE.get(getContext()).addThumbnailChangeListener(this);
|
||||
mIdp.addOnChangeListener(this);
|
||||
mIPinnedStackAnimationListener.setActivity(mActivity);
|
||||
mIPipAnimationListener.setActivity(mActivity);
|
||||
SystemUiProxy.INSTANCE.get(getContext()).setPinnedStackAnimationListener(
|
||||
mIPinnedStackAnimationListener);
|
||||
mIPipAnimationListener);
|
||||
mOrientationState.initListeners();
|
||||
SplitScreenBounds.INSTANCE.addOnChangeListener(this);
|
||||
mTaskOverlayFactory.initListeners();
|
||||
@@ -618,7 +619,7 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView
|
||||
mIdp.removeOnChangeListener(this);
|
||||
SystemUiProxy.INSTANCE.get(getContext()).setPinnedStackAnimationListener(null);
|
||||
SplitScreenBounds.INSTANCE.removeOnChangeListener(this);
|
||||
mIPinnedStackAnimationListener.setActivity(null);
|
||||
mIPipAnimationListener.setActivity(null);
|
||||
mOrientationState.destroyListeners();
|
||||
mTaskOverlayFactory.removeListeners();
|
||||
}
|
||||
@@ -2922,7 +2923,7 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView
|
||||
}
|
||||
|
||||
private static class PinnedStackAnimationListener<T extends BaseActivity> extends
|
||||
IPinnedStackAnimationListener.Stub {
|
||||
IPipAnimationListener.Stub {
|
||||
private T mActivity;
|
||||
|
||||
public void setActivity(T activity) {
|
||||
@@ -2930,10 +2931,12 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView
|
||||
}
|
||||
|
||||
@Override
|
||||
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);
|
||||
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);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user