diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java index b526a9261dc51..b81ffb766440e 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java @@ -46,7 +46,6 @@ import android.graphics.Rect; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; -import android.os.Looper; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemClock; @@ -82,13 +81,11 @@ public class ActivityManagerWrapper { private final PackageManager mPackageManager; private final BackgroundExecutor mBackgroundExecutor; - private final TaskStackChangeListeners mTaskStackChangeListeners; private ActivityManagerWrapper() { final Context context = AppGlobals.getInitialApplication(); mPackageManager = context.getPackageManager(); mBackgroundExecutor = BackgroundExecutor.get(); - mTaskStackChangeListeners = new TaskStackChangeListeners(Looper.getMainLooper()); } public static ActivityManagerWrapper getInstance() { @@ -360,23 +357,17 @@ public class ActivityManagerWrapper { } /** - * Registers a task stack listener with the system. - * This should be called on the main thread. + * @deprecated use {@link TaskStackChangeListeners#registerTaskStackListener} */ public void registerTaskStackListener(TaskStackChangeListener listener) { - synchronized (mTaskStackChangeListeners) { - mTaskStackChangeListeners.addListener(ActivityManager.getService(), listener); - } + TaskStackChangeListeners.getInstance().registerTaskStackListener(listener); } /** - * Unregisters a task stack listener with the system. - * This should be called on the main thread. + * @deprecated use {@link TaskStackChangeListeners#unregisterTaskStackListener} */ public void unregisterTaskStackListener(TaskStackChangeListener listener) { - synchronized (mTaskStackChangeListeners) { - mTaskStackChangeListeners.removeListener(listener); - } + TaskStackChangeListeners.getInstance().unregisterTaskStackListener(listener); } /** diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListeners.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListeners.java index f214648d89f10..765cd3de42223 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListeners.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListeners.java @@ -19,14 +19,12 @@ package com.android.systemui.shared.system; import android.app.ActivityManager.RunningTaskInfo; import android.app.ActivityManager.TaskSnapshot; import android.app.ActivityTaskManager; -import android.app.IActivityManager; import android.app.TaskStackListener; import android.content.ComponentName; import android.os.Handler; import android.os.IBinder; import android.os.Looper; import android.os.Message; -import android.os.RemoteException; import android.os.Trace; import android.util.Log; @@ -42,208 +40,40 @@ import java.util.List; public class TaskStackChangeListeners extends TaskStackListener { private static final String TAG = TaskStackChangeListeners.class.getSimpleName(); + private static final TaskStackChangeListeners INSTANCE = new TaskStackChangeListeners(); + + private final Impl mImpl; + + private TaskStackChangeListeners() { + mImpl = new Impl(Looper.getMainLooper()); + } + + public static TaskStackChangeListeners getInstance() { + return INSTANCE; + } /** - * List of {@link TaskStackChangeListener} registered from {@link #addListener}. + * Registers a task stack listener with the system. + * This should be called on the main thread. */ - private final List mTaskStackListeners = new ArrayList<>(); - private final List mTmpListeners = new ArrayList<>(); - - private final Handler mHandler; - private boolean mRegistered; - - public TaskStackChangeListeners(Looper looper) { - mHandler = new H(looper); - } - - public void addListener(IActivityManager am, TaskStackChangeListener listener) { - synchronized (mTaskStackListeners) { - mTaskStackListeners.add(listener); - } - if (!mRegistered) { - // Register mTaskStackListener to IActivityManager only once if needed. - try { - ActivityTaskManager.getService().registerTaskStackListener(this); - mRegistered = true; - } catch (Exception e) { - Log.w(TAG, "Failed to call registerTaskStackListener", e); - } + public void registerTaskStackListener(TaskStackChangeListener listener) { + synchronized (mImpl) { + mImpl.addListener(listener); } } - public void removeListener(TaskStackChangeListener listener) { - boolean isEmpty; - synchronized (mTaskStackListeners) { - mTaskStackListeners.remove(listener); - isEmpty = mTaskStackListeners.isEmpty(); - } - if (isEmpty && mRegistered) { - // Unregister mTaskStackListener once we have no more listeners - try { - ActivityTaskManager.getService().unregisterTaskStackListener(this); - mRegistered = false; - } catch (Exception e) { - Log.w(TAG, "Failed to call unregisterTaskStackListener", e); - } + /** + * Unregisters a task stack listener with the system. + * This should be called on the main thread. + */ + public void unregisterTaskStackListener(TaskStackChangeListener listener) { + synchronized (mImpl) { + mImpl.removeListener(listener); } } - @Override - public void onTaskStackChanged() throws RemoteException { - // Call the task changed callback for the non-ui thread listeners first. Copy to a set of - // temp listeners so that we don't lock on mTaskStackListeners while calling all the - // callbacks. This call is always on the same binder thread, so we can just synchronize - // on the copying of the listener list. - synchronized (mTaskStackListeners) { - mTmpListeners.addAll(mTaskStackListeners); - } - for (int i = mTmpListeners.size() - 1; i >= 0; i--) { - mTmpListeners.get(i).onTaskStackChangedBackground(); - } - mTmpListeners.clear(); + private static class Impl extends TaskStackListener implements Handler.Callback { - mHandler.removeMessages(H.ON_TASK_STACK_CHANGED); - mHandler.sendEmptyMessage(H.ON_TASK_STACK_CHANGED); - } - - @Override - public void onActivityPinned(String packageName, int userId, int taskId, int stackId) - throws RemoteException { - mHandler.removeMessages(H.ON_ACTIVITY_PINNED); - mHandler.obtainMessage(H.ON_ACTIVITY_PINNED, - new PinnedActivityInfo(packageName, userId, taskId, stackId)).sendToTarget(); - } - - @Override - public void onActivityUnpinned() throws RemoteException { - mHandler.removeMessages(H.ON_ACTIVITY_UNPINNED); - mHandler.sendEmptyMessage(H.ON_ACTIVITY_UNPINNED); - } - - @Override - public void onActivityRestartAttempt(RunningTaskInfo task, boolean homeTaskVisible, - boolean clearedTask, boolean wasVisible) throws RemoteException { - final SomeArgs args = SomeArgs.obtain(); - args.arg1 = task; - args.argi1 = homeTaskVisible ? 1 : 0; - args.argi2 = clearedTask ? 1 : 0; - args.argi3 = wasVisible ? 1 : 0; - mHandler.removeMessages(H.ON_ACTIVITY_RESTART_ATTEMPT); - mHandler.obtainMessage(H.ON_ACTIVITY_RESTART_ATTEMPT, args).sendToTarget(); - } - - @Override - public void onActivityForcedResizable(String packageName, int taskId, int reason) - throws RemoteException { - mHandler.obtainMessage(H.ON_ACTIVITY_FORCED_RESIZABLE, taskId, reason, packageName) - .sendToTarget(); - } - - @Override - public void onActivityDismissingDockedStack() throws RemoteException { - mHandler.sendEmptyMessage(H.ON_ACTIVITY_DISMISSING_DOCKED_STACK); - } - - @Override - public void onActivityLaunchOnSecondaryDisplayFailed(RunningTaskInfo taskInfo, - int requestedDisplayId) throws RemoteException { - mHandler.obtainMessage(H.ON_ACTIVITY_LAUNCH_ON_SECONDARY_DISPLAY_FAILED, requestedDisplayId, - 0 /* unused */, - taskInfo).sendToTarget(); - } - - @Override - public void onActivityLaunchOnSecondaryDisplayRerouted(RunningTaskInfo taskInfo, - int requestedDisplayId) throws RemoteException { - mHandler.obtainMessage(H.ON_ACTIVITY_LAUNCH_ON_SECONDARY_DISPLAY_REROUTED, - requestedDisplayId, 0 /* unused */, taskInfo).sendToTarget(); - } - - @Override - public void onTaskProfileLocked(int taskId, int userId) throws RemoteException { - mHandler.obtainMessage(H.ON_TASK_PROFILE_LOCKED, taskId, userId).sendToTarget(); - } - - @Override - public void onTaskSnapshotChanged(int taskId, TaskSnapshot snapshot) throws RemoteException { - mHandler.obtainMessage(H.ON_TASK_SNAPSHOT_CHANGED, taskId, 0, snapshot).sendToTarget(); - } - - @Override - public void onTaskCreated(int taskId, ComponentName componentName) throws RemoteException { - mHandler.obtainMessage(H.ON_TASK_CREATED, taskId, 0, componentName).sendToTarget(); - } - - @Override - public void onTaskRemoved(int taskId) throws RemoteException { - mHandler.obtainMessage(H.ON_TASK_REMOVED, taskId, 0).sendToTarget(); - } - - @Override - public void onTaskMovedToFront(RunningTaskInfo taskInfo) - throws RemoteException { - mHandler.obtainMessage(H.ON_TASK_MOVED_TO_FRONT, taskInfo).sendToTarget(); - } - - @Override - public void onBackPressedOnTaskRoot(RunningTaskInfo taskInfo) throws RemoteException { - mHandler.obtainMessage(H.ON_BACK_PRESSED_ON_TASK_ROOT, taskInfo).sendToTarget(); - } - - @Override - public void onActivityRequestedOrientationChanged(int taskId, int requestedOrientation) - throws RemoteException { - mHandler.obtainMessage(H.ON_ACTIVITY_REQUESTED_ORIENTATION_CHANGE, taskId, - requestedOrientation).sendToTarget(); - } - - @Override - public void onSizeCompatModeActivityChanged(int displayId, IBinder activityToken) - throws RemoteException { - mHandler.obtainMessage(H.ON_SIZE_COMPAT_MODE_ACTIVITY_CHANGED, displayId, 0 /* unused */, - activityToken).sendToTarget(); - } - - @Override - public void onSingleTaskDisplayDrawn(int displayId) throws RemoteException { - mHandler.obtainMessage(H.ON_SINGLE_TASK_DISPLAY_DRAWN, displayId, - 0 /* unused */).sendToTarget(); - } - - @Override - public void onSingleTaskDisplayEmpty(int displayId) throws RemoteException { - mHandler.obtainMessage(H.ON_SINGLE_TASK_DISPLAY_EMPTY, displayId, - 0 /* unused */).sendToTarget(); - } - - @Override - public void onTaskDisplayChanged(int taskId, int newDisplayId) throws RemoteException { - mHandler.obtainMessage(H.ON_TASK_DISPLAY_CHANGED, taskId, newDisplayId).sendToTarget(); - } - - @Override - public void onRecentTaskListUpdated() throws RemoteException { - mHandler.obtainMessage(H.ON_TASK_LIST_UPDATED).sendToTarget(); - } - - @Override - public void onRecentTaskListFrozenChanged(boolean frozen) { - mHandler.obtainMessage(H.ON_TASK_LIST_FROZEN_UNFROZEN, frozen ? 1 : 0, 0 /* unused */) - .sendToTarget(); - } - - @Override - public void onTaskDescriptionChanged(RunningTaskInfo taskInfo) { - mHandler.obtainMessage(H.ON_TASK_DESCRIPTION_CHANGED, taskInfo).sendToTarget(); - } - - @Override - public void onActivityRotation(int displayId) { - mHandler.obtainMessage(H.ON_ACTIVITY_ROTATION, displayId, 0 /* unused */) - .sendToTarget(); - } - - private final class H extends Handler { private static final int ON_TASK_STACK_CHANGED = 1; private static final int ON_TASK_SNAPSHOT_CHANGED = 2; private static final int ON_ACTIVITY_PINNED = 3; @@ -268,13 +98,205 @@ public class TaskStackChangeListeners extends TaskStackListener { private static final int ON_TASK_DESCRIPTION_CHANGED = 24; private static final int ON_ACTIVITY_ROTATION = 25; + /** + * List of {@link TaskStackChangeListener} registered from {@link #addListener}. + */ + private final List mTaskStackListeners = new ArrayList<>(); + private final List mTmpListeners = new ArrayList<>(); - public H(Looper looper) { - super(looper); + private final Handler mHandler; + private boolean mRegistered; + + Impl(Looper looper) { + mHandler = new Handler(looper, this); + } + + public void addListener(TaskStackChangeListener listener) { + synchronized (mTaskStackListeners) { + mTaskStackListeners.add(listener); + } + if (!mRegistered) { + // Register mTaskStackListener to IActivityManager only once if needed. + try { + ActivityTaskManager.getService().registerTaskStackListener(this); + mRegistered = true; + } catch (Exception e) { + Log.w(TAG, "Failed to call registerTaskStackListener", e); + } + } + } + + public void removeListener(TaskStackChangeListener listener) { + boolean isEmpty; + synchronized (mTaskStackListeners) { + mTaskStackListeners.remove(listener); + isEmpty = mTaskStackListeners.isEmpty(); + } + if (isEmpty && mRegistered) { + // Unregister mTaskStackListener once we have no more listeners + try { + ActivityTaskManager.getService().unregisterTaskStackListener(this); + mRegistered = false; + } catch (Exception e) { + Log.w(TAG, "Failed to call unregisterTaskStackListener", e); + } + } } @Override - public void handleMessage(Message msg) { + public void onTaskStackChanged() { + // Call the task changed callback for the non-ui thread listeners first. Copy to a set + // of temp listeners so that we don't lock on mTaskStackListeners while calling all the + // callbacks. This call is always on the same binder thread, so we can just synchronize + // on the copying of the listener list. + synchronized (mTaskStackListeners) { + mTmpListeners.addAll(mTaskStackListeners); + } + for (int i = mTmpListeners.size() - 1; i >= 0; i--) { + mTmpListeners.get(i).onTaskStackChangedBackground(); + } + mTmpListeners.clear(); + + mHandler.removeMessages(ON_TASK_STACK_CHANGED); + mHandler.sendEmptyMessage(ON_TASK_STACK_CHANGED); + } + + @Override + public void onActivityPinned(String packageName, int userId, int taskId, int stackId) { + mHandler.removeMessages(ON_ACTIVITY_PINNED); + mHandler.obtainMessage(ON_ACTIVITY_PINNED, + new PinnedActivityInfo(packageName, userId, taskId, stackId)).sendToTarget(); + } + + @Override + public void onActivityUnpinned() { + mHandler.removeMessages(ON_ACTIVITY_UNPINNED); + mHandler.sendEmptyMessage(ON_ACTIVITY_UNPINNED); + } + + @Override + public void onActivityRestartAttempt(RunningTaskInfo task, boolean homeTaskVisible, + boolean clearedTask, boolean wasVisible) { + final SomeArgs args = SomeArgs.obtain(); + args.arg1 = task; + args.argi1 = homeTaskVisible ? 1 : 0; + args.argi2 = clearedTask ? 1 : 0; + args.argi3 = wasVisible ? 1 : 0; + mHandler.removeMessages(ON_ACTIVITY_RESTART_ATTEMPT); + mHandler.obtainMessage(ON_ACTIVITY_RESTART_ATTEMPT, args).sendToTarget(); + } + + @Override + public void onActivityForcedResizable(String packageName, int taskId, int reason) { + mHandler.obtainMessage(ON_ACTIVITY_FORCED_RESIZABLE, taskId, reason, packageName) + .sendToTarget(); + } + + @Override + public void onActivityDismissingDockedStack() { + mHandler.sendEmptyMessage(ON_ACTIVITY_DISMISSING_DOCKED_STACK); + } + + @Override + public void onActivityLaunchOnSecondaryDisplayFailed(RunningTaskInfo taskInfo, + int requestedDisplayId) { + mHandler.obtainMessage(ON_ACTIVITY_LAUNCH_ON_SECONDARY_DISPLAY_FAILED, + requestedDisplayId, + 0 /* unused */, + taskInfo).sendToTarget(); + } + + @Override + public void onActivityLaunchOnSecondaryDisplayRerouted(RunningTaskInfo taskInfo, + int requestedDisplayId) { + mHandler.obtainMessage(ON_ACTIVITY_LAUNCH_ON_SECONDARY_DISPLAY_REROUTED, + requestedDisplayId, 0 /* unused */, taskInfo).sendToTarget(); + } + + @Override + public void onTaskProfileLocked(int taskId, int userId) { + mHandler.obtainMessage(ON_TASK_PROFILE_LOCKED, taskId, userId).sendToTarget(); + } + + @Override + public void onTaskSnapshotChanged(int taskId, TaskSnapshot snapshot) { + mHandler.obtainMessage(ON_TASK_SNAPSHOT_CHANGED, taskId, 0, snapshot).sendToTarget(); + } + + @Override + public void onTaskCreated(int taskId, ComponentName componentName) { + mHandler.obtainMessage(ON_TASK_CREATED, taskId, 0, componentName).sendToTarget(); + } + + @Override + public void onTaskRemoved(int taskId) { + mHandler.obtainMessage(ON_TASK_REMOVED, taskId, 0).sendToTarget(); + } + + @Override + public void onTaskMovedToFront(RunningTaskInfo taskInfo) { + mHandler.obtainMessage(ON_TASK_MOVED_TO_FRONT, taskInfo).sendToTarget(); + } + + @Override + public void onBackPressedOnTaskRoot(RunningTaskInfo taskInfo) { + mHandler.obtainMessage(ON_BACK_PRESSED_ON_TASK_ROOT, taskInfo).sendToTarget(); + } + + @Override + public void onActivityRequestedOrientationChanged(int taskId, int requestedOrientation) { + mHandler.obtainMessage(ON_ACTIVITY_REQUESTED_ORIENTATION_CHANGE, taskId, + requestedOrientation).sendToTarget(); + } + + @Override + public void onSizeCompatModeActivityChanged(int displayId, IBinder activityToken) { + mHandler.obtainMessage(ON_SIZE_COMPAT_MODE_ACTIVITY_CHANGED, displayId, + 0 /* unused */, + activityToken).sendToTarget(); + } + + @Override + public void onSingleTaskDisplayDrawn(int displayId) { + mHandler.obtainMessage(ON_SINGLE_TASK_DISPLAY_DRAWN, displayId, + 0 /* unused */).sendToTarget(); + } + + @Override + public void onSingleTaskDisplayEmpty(int displayId) { + mHandler.obtainMessage(ON_SINGLE_TASK_DISPLAY_EMPTY, displayId, + 0 /* unused */).sendToTarget(); + } + + @Override + public void onTaskDisplayChanged(int taskId, int newDisplayId) { + mHandler.obtainMessage(ON_TASK_DISPLAY_CHANGED, taskId, newDisplayId).sendToTarget(); + } + + @Override + public void onRecentTaskListUpdated() { + mHandler.obtainMessage(ON_TASK_LIST_UPDATED).sendToTarget(); + } + + @Override + public void onRecentTaskListFrozenChanged(boolean frozen) { + mHandler.obtainMessage(ON_TASK_LIST_FROZEN_UNFROZEN, frozen ? 1 : 0, 0 /* unused */) + .sendToTarget(); + } + + @Override + public void onTaskDescriptionChanged(RunningTaskInfo taskInfo) { + mHandler.obtainMessage(ON_TASK_DESCRIPTION_CHANGED, taskInfo).sendToTarget(); + } + + @Override + public void onActivityRotation(int displayId) { + mHandler.obtainMessage(ON_ACTIVITY_ROTATION, displayId, 0 /* unused */) + .sendToTarget(); + } + + @Override + public boolean handleMessage(Message msg) { synchronized (mTaskStackListeners) { switch (msg.what) { case ON_TASK_STACK_CHANGED: { @@ -298,7 +320,8 @@ public class TaskStackChangeListeners extends TaskStackListener { final PinnedActivityInfo info = (PinnedActivityInfo) msg.obj; for (int i = mTaskStackListeners.size() - 1; i >= 0; i--) { mTaskStackListeners.get(i).onActivityPinned( - info.mPackageName, info.mUserId, info.mTaskId, info.mStackId); + info.mPackageName, info.mUserId, info.mTaskId, + info.mStackId); } break; } @@ -404,8 +427,7 @@ public class TaskStackChangeListeners extends TaskStackListener { } case ON_SINGLE_TASK_DISPLAY_EMPTY: { for (int i = mTaskStackListeners.size() - 1; i >= 0; i--) { - mTaskStackListeners.get(i).onSingleTaskDisplayEmpty( - msg.arg1); + mTaskStackListeners.get(i).onSingleTaskDisplayEmpty(msg.arg1); } break; } @@ -423,7 +445,8 @@ public class TaskStackChangeListeners extends TaskStackListener { } case ON_TASK_LIST_FROZEN_UNFROZEN: { for (int i = mTaskStackListeners.size() - 1; i >= 0; i--) { - mTaskStackListeners.get(i).onRecentTaskListFrozenChanged(msg.arg1 != 0); + mTaskStackListeners.get(i).onRecentTaskListFrozenChanged( + msg.arg1 != 0); } break; } @@ -445,6 +468,7 @@ public class TaskStackChangeListeners extends TaskStackListener { if (msg.obj instanceof SomeArgs) { ((SomeArgs) msg.obj).recycle(); } + return true; } } diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java index bdb34bb56c570..8ca3246cc231e 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -100,8 +100,8 @@ import com.android.systemui.dagger.qualifiers.Background; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dump.DumpManager; import com.android.systemui.plugins.statusbar.StatusBarStateController; -import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.TaskStackChangeListener; +import com.android.systemui.shared.system.TaskStackChangeListeners; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.phone.KeyguardBypassController; import com.android.systemui.util.Assert; @@ -1796,7 +1796,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab mIsAutomotive = isAutomotive(); - ActivityManagerWrapper.getInstance().registerTaskStackListener(mTaskStackListener); + TaskStackChangeListeners.getInstance().registerTaskStackListener(mTaskStackListener); mUserManager = context.getSystemService(UserManager.class); mIsPrimaryUser = mUserManager.isPrimaryUser(); int user = ActivityManager.getCurrentUser(); @@ -2965,7 +2965,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab Log.d(TAG, "RemoteException onDestroy. cannot unregister userSwitchObserver"); } - ActivityManagerWrapper.getInstance().unregisterTaskStackListener(mTaskStackListener); + TaskStackChangeListeners.getInstance().unregisterTaskStackListener(mTaskStackListener); mBroadcastDispatcher.unregisterReceiver(mBroadcastReceiver); mBroadcastDispatcher.unregisterReceiver(mBroadcastAllReceiver); diff --git a/packages/SystemUI/src/com/android/systemui/SizeCompatModeActivityController.java b/packages/SystemUI/src/com/android/systemui/SizeCompatModeActivityController.java index 34efa35c37c5d..02f34ac3dec00 100644 --- a/packages/SystemUI/src/com/android/systemui/SizeCompatModeActivityController.java +++ b/packages/SystemUI/src/com/android/systemui/SizeCompatModeActivityController.java @@ -42,8 +42,8 @@ import android.widget.PopupWindow; import com.android.internal.annotations.VisibleForTesting; import com.android.systemui.dagger.SysUISingleton; -import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.TaskStackChangeListener; +import com.android.systemui.shared.system.TaskStackChangeListeners; import com.android.systemui.statusbar.CommandQueue; import java.lang.ref.WeakReference; @@ -66,11 +66,11 @@ public class SizeCompatModeActivityController extends SystemUI implements Comman @VisibleForTesting @Inject - SizeCompatModeActivityController(Context context, ActivityManagerWrapper am, + SizeCompatModeActivityController(Context context, TaskStackChangeListeners listeners, CommandQueue commandQueue) { super(context); mCommandQueue = commandQueue; - am.registerTaskStackListener(new TaskStackChangeListener() { + listeners.registerTaskStackListener(new TaskStackChangeListener() { @Override public void onSizeCompatModeActivityChanged(int displayId, IBinder activityToken) { // Note the callback already runs on main thread. diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleReminderExpBehavior.java b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleReminderExpBehavior.java index 02a672b587d83..c1c2de1666277 100644 --- a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleReminderExpBehavior.java +++ b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleReminderExpBehavior.java @@ -47,6 +47,7 @@ import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.PackageManagerWrapper; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.TaskStackChangeListener; +import com.android.systemui.shared.system.TaskStackChangeListeners; import com.android.systemui.statusbar.StatusBarState; import java.io.PrintWriter; @@ -171,6 +172,7 @@ final class AssistHandleReminderExpBehavior implements BehaviorController { private final DeviceConfigHelper mDeviceConfigHelper; private final Lazy mStatusBarStateController; private final Lazy mActivityManagerWrapper; + private final Lazy mTaskStackChangeListeners; private final Lazy mOverviewProxyService; private final Lazy mSysUiFlagContainer; private final Lazy mWakefulnessLifecycle; @@ -207,6 +209,7 @@ final class AssistHandleReminderExpBehavior implements BehaviorController { DeviceConfigHelper deviceConfigHelper, Lazy statusBarStateController, Lazy activityManagerWrapper, + Lazy taskStackChangeListeners, Lazy overviewProxyService, Lazy sysUiFlagContainer, Lazy wakefulnessLifecycle, @@ -218,6 +221,7 @@ final class AssistHandleReminderExpBehavior implements BehaviorController { mDeviceConfigHelper = deviceConfigHelper; mStatusBarStateController = statusBarStateController; mActivityManagerWrapper = activityManagerWrapper; + mTaskStackChangeListeners = taskStackChangeListeners; mOverviewProxyService = overviewProxyService; mSysUiFlagContainer = sysUiFlagContainer; mWakefulnessLifecycle = wakefulnessLifecycle; @@ -245,7 +249,7 @@ final class AssistHandleReminderExpBehavior implements BehaviorController { ActivityManager.RunningTaskInfo runningTaskInfo = mActivityManagerWrapper.get().getRunningTask(); mRunningTaskId = runningTaskInfo == null ? 0 : runningTaskInfo.taskId; - mActivityManagerWrapper.get().registerTaskStackListener(mTaskStackChangeListener); + mTaskStackChangeListeners.get().registerTaskStackListener(mTaskStackChangeListener); mOverviewProxyService.get().addCallback(mOverviewProxyListener); mSysUiFlagContainer.get().addCallback(mSysUiStateCallback); mIsAwake = mWakefulnessLifecycle.get().getWakefulness() @@ -300,7 +304,7 @@ final class AssistHandleReminderExpBehavior implements BehaviorController { mContext = null; } mStatusBarStateController.get().removeCallback(mStatusBarStateListener); - mActivityManagerWrapper.get().unregisterTaskStackListener(mTaskStackChangeListener); + mTaskStackChangeListeners.get().unregisterTaskStackListener(mTaskStackChangeListener); mOverviewProxyService.get().removeCallback(mOverviewProxyListener); mSysUiFlagContainer.get().removeCallback(mSysUiStateCallback); mWakefulnessLifecycle.get().removeObserver(mWakefulnessLifecycleObserver); diff --git a/packages/SystemUI/src/com/android/systemui/assist/PhoneStateMonitor.java b/packages/SystemUI/src/com/android/systemui/assist/PhoneStateMonitor.java index 50d559b7aeab1..61951cc0b5e94 100644 --- a/packages/SystemUI/src/com/android/systemui/assist/PhoneStateMonitor.java +++ b/packages/SystemUI/src/com/android/systemui/assist/PhoneStateMonitor.java @@ -35,6 +35,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.PackageManagerWrapper; import com.android.systemui.shared.system.TaskStackChangeListener; +import com.android.systemui.shared.system.TaskStackChangeListeners; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.phone.StatusBar; @@ -82,7 +83,6 @@ public final class PhoneStateMonitor { mStatusBarOptionalLazy = statusBarOptionalLazy; mStatusBarStateController = Dependency.get(StatusBarStateController.class); - ActivityManagerWrapper activityManagerWrapper = ActivityManagerWrapper.getInstance(); mDefaultHome = getCurrentDefaultHome(); bootCompleteCache.addListener(() -> mDefaultHome = getCurrentDefaultHome()); IntentFilter intentFilter = new IntentFilter(); @@ -95,12 +95,13 @@ public final class PhoneStateMonitor { mDefaultHome = getCurrentDefaultHome(); } }, intentFilter); - mLauncherShowing = isLauncherShowing(activityManagerWrapper.getRunningTask()); - activityManagerWrapper.registerTaskStackListener(new TaskStackChangeListener() { - @Override - public void onTaskMovedToFront(ActivityManager.RunningTaskInfo taskInfo) { - mLauncherShowing = isLauncherShowing(taskInfo); - } + mLauncherShowing = isLauncherShowing(ActivityManagerWrapper.getInstance().getRunningTask()); + TaskStackChangeListeners.getInstance().registerTaskStackListener( + new TaskStackChangeListener() { + @Override + public void onTaskMovedToFront(ActivityManager.RunningTaskInfo taskInfo) { + mLauncherShowing = isLauncherShowing(taskInfo); + } }); } diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java index 2372529b6f111..b4ecb5a2cf326 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java @@ -87,8 +87,8 @@ import com.android.systemui.bubbles.dagger.BubbleModule; import com.android.systemui.dump.DumpManager; import com.android.systemui.model.SysUiState; import com.android.systemui.plugins.statusbar.StatusBarStateController; -import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.TaskStackChangeListener; +import com.android.systemui.shared.system.TaskStackChangeListeners; import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.NotificationLockscreenUserManager; import com.android.systemui.statusbar.NotificationRemoveInterceptor; @@ -480,7 +480,7 @@ public class BubbleController implements Bubbles, ConfigurationController.Config statusBarStateController.addCallback(mStatusBarStateListener); mTaskStackListener = new BubbleTaskStackListener(); - ActivityManagerWrapper.getInstance().registerTaskStackListener(mTaskStackListener); + TaskStackChangeListeners.getInstance().registerTaskStackListener(mTaskStackListener); try { windowManagerShellWrapper.addPinnedStackListener(new BubblesImeListener()); diff --git a/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java b/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java index e3037543f2e37..cb90b61143968 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java @@ -66,6 +66,7 @@ import com.android.systemui.shared.plugins.PluginManager; import com.android.systemui.shared.plugins.PluginManagerImpl; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.DevicePolicyManagerWrapper; +import com.android.systemui.shared.system.TaskStackChangeListeners; import com.android.systemui.shared.system.WindowManagerWrapper; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.NotificationRemoteInputManager; @@ -263,6 +264,13 @@ public class DependencyProvider { return ActivityManagerWrapper.getInstance(); } + /** */ + @Provides + @SysUISingleton + public TaskStackChangeListeners provideTaskStackChangeListeners() { + return TaskStackChangeListeners.getInstance(); + } + /** Provides and initializes the {#link BroadcastDispatcher} for SystemUI */ @Provides @SysUISingleton diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/WorkLockActivityController.java b/packages/SystemUI/src/com/android/systemui/keyguard/WorkLockActivityController.java index c281ece59c5a3..75851102bc4a1 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/WorkLockActivityController.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/WorkLockActivityController.java @@ -30,8 +30,8 @@ import android.os.UserHandle; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; -import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.TaskStackChangeListener; +import com.android.systemui.shared.system.TaskStackChangeListeners; public class WorkLockActivityController { private static final String TAG = WorkLockActivityController.class.getSimpleName(); @@ -40,16 +40,16 @@ public class WorkLockActivityController { private final IActivityTaskManager mIatm; public WorkLockActivityController(Context context) { - this(context, ActivityManagerWrapper.getInstance(), ActivityTaskManager.getService()); + this(context, TaskStackChangeListeners.getInstance(), ActivityTaskManager.getService()); } @VisibleForTesting WorkLockActivityController( - Context context, ActivityManagerWrapper am, IActivityTaskManager iAtm) { + Context context, TaskStackChangeListeners tscl, IActivityTaskManager iAtm) { mContext = context; mIatm = iAtm; - am.registerTaskStackListener(mLockListener); + tscl.registerTaskStackListener(mLockListener); } private void startWorkChallengeInTask(int taskId, int userId) { diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/RotationButtonController.java b/packages/SystemUI/src/com/android/systemui/navigationbar/RotationButtonController.java index 6cbf065ea6a9f..df9e7a428877b 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/RotationButtonController.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/RotationButtonController.java @@ -47,6 +47,7 @@ import com.android.systemui.R; import com.android.systemui.navigationbar.buttons.KeyButtonDrawable; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.TaskStackChangeListener; +import com.android.systemui.shared.system.TaskStackChangeListeners; import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper; import com.android.systemui.statusbar.policy.RotationLockController; @@ -156,7 +157,7 @@ public class RotationButtonController { throw e.rethrowFromSystemServer(); } - ActivityManagerWrapper.getInstance().registerTaskStackListener(mTaskStackListener); + TaskStackChangeListeners.getInstance().registerTaskStackListener(mTaskStackListener); } void unregisterListeners() { @@ -171,7 +172,7 @@ public class RotationButtonController { throw e.rethrowFromSystemServer(); } - ActivityManagerWrapper.getInstance().unregisterTaskStackListener(mTaskStackListener); + TaskStackChangeListeners.getInstance().unregisterTaskStackListener(mTaskStackListener); } void addRotationCallback(Consumer watcher) { diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java index fc9c3d9d8f0a6..beca7c370f2f5 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java @@ -71,6 +71,7 @@ import com.android.systemui.shared.system.InputChannelCompat; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.SysUiStatsLog; import com.android.systemui.shared.system.TaskStackChangeListener; +import com.android.systemui.shared.system.TaskStackChangeListeners; import com.android.systemui.shared.tracing.ProtoTraceable; import com.android.systemui.tracing.ProtoTracer; import com.android.systemui.tracing.nano.EdgeBackGestureHandlerProto; @@ -387,7 +388,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker implements Displa mGestureNavigationSettingsObserver.unregister(); mContext.getSystemService(DisplayManager.class).unregisterDisplayListener(this); mPluginManager.removePluginListener(this); - ActivityManagerWrapper.getInstance().unregisterTaskStackListener(mTaskStackListener); + TaskStackChangeListeners.getInstance().unregisterTaskStackListener(mTaskStackListener); DeviceConfig.removeOnPropertiesChangedListener(mOnPropertiesChangedListener); try { @@ -403,7 +404,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker implements Displa updateDisplaySize(); mContext.getSystemService(DisplayManager.class).registerDisplayListener(this, mContext.getMainThreadHandler()); - ActivityManagerWrapper.getInstance().registerTaskStackListener(mTaskStackListener); + TaskStackChangeListeners.getInstance().registerTaskStackListener(mTaskStackListener); DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_SYSTEMUI, runnable -> (mContext.getMainThreadHandler()).post(runnable), mOnPropertiesChangedListener); diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java index 9c5a3de4523ac..ccf2598e4f182 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java @@ -67,6 +67,7 @@ import com.android.systemui.shared.recents.IOverviewProxy; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.TaskStackChangeListener; +import com.android.systemui.shared.system.TaskStackChangeListeners; import java.io.PrintWriter; import java.util.Collections; @@ -365,7 +366,7 @@ public class RecentsOnboarding { mOverviewProxyListenerRegistered = true; } if (!mTaskListenerRegistered) { - ActivityManagerWrapper.getInstance().registerTaskStackListener(mTaskListener); + TaskStackChangeListeners.getInstance().registerTaskStackListener(mTaskListener); mTaskListenerRegistered = true; } } @@ -377,7 +378,7 @@ public class RecentsOnboarding { mOverviewProxyListenerRegistered = false; } if (mTaskListenerRegistered) { - ActivityManagerWrapper.getInstance().unregisterTaskStackListener(mTaskListener); + TaskStackChangeListeners.getInstance().unregisterTaskStackListener(mTaskListener); mTaskListenerRegistered = false; } diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java b/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java index a948103d39086..9281a090fd978 100644 --- a/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java +++ b/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java @@ -55,9 +55,9 @@ import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.keyguard.ScreenLifecycle; import com.android.systemui.model.SysUiState; import com.android.systemui.navigationbar.NavigationModeController; -import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.InputConsumerController; import com.android.systemui.shared.system.TaskStackChangeListener; +import com.android.systemui.shared.system.TaskStackChangeListeners; import com.android.systemui.shared.tracing.ProtoTraceable; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.policy.ConfigurationController; @@ -104,7 +104,7 @@ public final class WMShell extends SystemUI private final DisplayImeController mDisplayImeController; private final InputConsumerController mInputConsumerController; private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; - private final ActivityManagerWrapper mActivityManagerWrapper; + private final TaskStackChangeListeners mTaskStackChangeListeners; private final NavigationModeController mNavigationModeController; private final ScreenLifecycle mScreenLifecycle; private final SysUiState mSysUiState; @@ -125,7 +125,7 @@ public final class WMShell extends SystemUI ConfigurationController configurationController, InputConsumerController inputConsumerController, KeyguardUpdateMonitor keyguardUpdateMonitor, - ActivityManagerWrapper activityManagerWrapper, + TaskStackChangeListeners taskStackChangeListeners, DisplayImeController displayImeController, NavigationModeController navigationModeController, ScreenLifecycle screenLifecycle, @@ -140,7 +140,7 @@ public final class WMShell extends SystemUI mConfigurationController = configurationController; mInputConsumerController = inputConsumerController; mKeyguardUpdateMonitor = keyguardUpdateMonitor; - mActivityManagerWrapper = activityManagerWrapper; + mTaskStackChangeListeners = taskStackChangeListeners; mDisplayImeController = displayImeController; mNavigationModeController = navigationModeController; mScreenLifecycle = screenLifecycle; @@ -205,7 +205,7 @@ public final class WMShell extends SystemUI }); // Handle for system task stack changes. - mActivityManagerWrapper.registerTaskStackListener( + mTaskStackChangeListeners.registerTaskStackListener( new TaskStackChangeListener() { @Override public void onTaskStackChanged() { @@ -276,7 +276,7 @@ public final class WMShell extends SystemUI }; mKeyguardUpdateMonitor.registerCallback(mSplitScreenKeyguardCallback); - mActivityManagerWrapper.registerTaskStackListener( + mTaskStackChangeListeners.registerTaskStackListener( new TaskStackChangeListener() { @Override public void onActivityRestartAttempt(ActivityManager.RunningTaskInfo task, @@ -388,7 +388,7 @@ public final class WMShell extends SystemUI } }); - mActivityManagerWrapper.registerTaskStackListener( + mTaskStackChangeListeners.registerTaskStackListener( new TaskStackChangeListener() { @Override public void onTaskCreated(int taskId, ComponentName componentName) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/SizeCompatModeActivityControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/SizeCompatModeActivityControllerTest.java index 1638ea1ca843d..71a0434c41b42 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/SizeCompatModeActivityControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/SizeCompatModeActivityControllerTest.java @@ -29,8 +29,8 @@ import android.view.View; import androidx.test.filters.SmallTest; import com.android.systemui.SizeCompatModeActivityController.RestartActivityButton; -import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.TaskStackChangeListener; +import com.android.systemui.shared.system.TaskStackChangeListeners; import com.android.systemui.statusbar.CommandQueue; import org.junit.Before; @@ -50,7 +50,7 @@ public class SizeCompatModeActivityControllerTest extends SysuiTestCase { private SizeCompatModeActivityController mController; private TaskStackChangeListener mTaskStackListener; - private @Mock ActivityManagerWrapper mMockAm; + private @Mock TaskStackChangeListeners mMockTaskListeners; private @Mock RestartActivityButton mMockButton; private @Mock IBinder mMockActivityToken; @@ -59,7 +59,7 @@ public class SizeCompatModeActivityControllerTest extends SysuiTestCase { MockitoAnnotations.initMocks(this); doReturn(true).when(mMockButton).show(); - mController = new SizeCompatModeActivityController(mContext, mMockAm, + mController = new SizeCompatModeActivityController(mContext, mMockTaskListeners, new CommandQueue(mContext)) { @Override RestartActivityButton createRestartButton(Context context) { @@ -69,7 +69,7 @@ public class SizeCompatModeActivityControllerTest extends SysuiTestCase { ArgumentCaptor listenerCaptor = ArgumentCaptor.forClass(TaskStackChangeListener.class); - verify(mMockAm).registerTaskStackListener(listenerCaptor.capture()); + verify(mMockTaskListeners).registerTaskStackListener(listenerCaptor.capture()); mTaskStackListener = listenerCaptor.getValue(); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/WorkLockActivityControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/keyguard/WorkLockActivityControllerTest.java index 3439fe53c48f2..cd5740d227c40 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/WorkLockActivityControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/WorkLockActivityControllerTest.java @@ -41,8 +41,8 @@ import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import com.android.systemui.SysuiTestCase; -import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.TaskStackChangeListener; +import com.android.systemui.shared.system.TaskStackChangeListeners; import org.junit.Before; import org.junit.Test; @@ -62,7 +62,7 @@ public class WorkLockActivityControllerTest extends SysuiTestCase { private static final int TASK_ID = 444; private @Mock Context mContext; - private @Mock ActivityManagerWrapper mActivityManager; + private @Mock TaskStackChangeListeners mTaskStackChangeListeners; private @Mock IActivityTaskManager mIActivityTaskManager; private WorkLockActivityController mController; @@ -78,10 +78,10 @@ public class WorkLockActivityControllerTest extends SysuiTestCase { // Construct controller. Save the TaskStackListener for injecting events. final ArgumentCaptor listenerCaptor = ArgumentCaptor.forClass(TaskStackChangeListener.class); - mController = new WorkLockActivityController(mContext, mActivityManager, + mController = new WorkLockActivityController(mContext, mTaskStackChangeListeners, mIActivityTaskManager); - verify(mActivityManager).registerTaskStackListener(listenerCaptor.capture()); + verify(mTaskStackChangeListeners).registerTaskStackListener(listenerCaptor.capture()); mTaskStackListener = listenerCaptor.getValue(); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/WMShellTest.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/WMShellTest.java index 76fe3bf96500c..2bc07ed43e290 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/WMShellTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/WMShellTest.java @@ -36,9 +36,9 @@ import com.android.systemui.SysuiTestCase; import com.android.systemui.keyguard.ScreenLifecycle; import com.android.systemui.model.SysUiState; import com.android.systemui.navigationbar.NavigationModeController; -import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.InputConsumerController; import com.android.systemui.shared.system.TaskStackChangeListener; +import com.android.systemui.shared.system.TaskStackChangeListeners; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.tracing.ProtoTracer; @@ -68,7 +68,7 @@ public class WMShellTest extends SysuiTestCase { @Mock CommandQueue mCommandQueue; @Mock ConfigurationController mConfigurationController; @Mock KeyguardUpdateMonitor mKeyguardUpdateMonitor; - @Mock ActivityManagerWrapper mActivityManagerWrapper; + @Mock TaskStackChangeListeners mTaskStackChangeListeners; @Mock DisplayImeController mDisplayImeController; @Mock InputConsumerController mMockInputConsumerController; @Mock NavigationModeController mNavigationModeController; @@ -88,7 +88,7 @@ public class WMShellTest extends SysuiTestCase { mInputConsumerController = InputConsumerController.getPipInputConsumer(); mWMShell = new WMShell(mContext, mCommandQueue, mConfigurationController, - mInputConsumerController, mKeyguardUpdateMonitor, mActivityManagerWrapper, + mInputConsumerController, mKeyguardUpdateMonitor, mTaskStackChangeListeners, mDisplayImeController, mNavigationModeController, mScreenLifecycle, mSysUiState, Optional.of(mPip), Optional.of(mSplitScreen), Optional.of(mOneHanded), mTaskOrganizer, mProtoTracer); @@ -116,7 +116,7 @@ public class WMShellTest extends SysuiTestCase { final TestableContext nonPipContext = getNonPipFeatureContext(); final WMShell nonPipWMShell = new WMShell(nonPipContext, mCommandQueue, mConfigurationController, mMockInputConsumerController, mKeyguardUpdateMonitor, - mActivityManagerWrapper, mDisplayImeController, mNavigationModeController, + mTaskStackChangeListeners, mDisplayImeController, mNavigationModeController, mScreenLifecycle, mSysUiState, Optional.of(mPip), Optional.of(mSplitScreen), Optional.of(mOneHanded), mTaskOrganizer, mProtoTracer); nonPipWMShell.initPip(mPip); @@ -125,7 +125,7 @@ public class WMShellTest extends SysuiTestCase { verify(mKeyguardUpdateMonitor, never()).registerCallback(any()); verify(mConfigurationController, never()).addCallback(any()); verify(mSysUiState, never()).addCallback(any()); - verify(mActivityManagerWrapper, never()).registerTaskStackListener(any()); + verify(mTaskStackChangeListeners, never()).registerTaskStackListener(any()); verify(mMockInputConsumerController, never()).setInputListener(any()); verify(mMockInputConsumerController, never()).setRegistrationListener(any()); verify(mPip, never()).registerSessionListenerForCurrentUser(); @@ -136,7 +136,7 @@ public class WMShellTest extends SysuiTestCase { mWMShell.initSplitScreen(mSplitScreen); verify(mKeyguardUpdateMonitor).registerCallback(any(KeyguardUpdateMonitorCallback.class)); - verify(mActivityManagerWrapper).registerTaskStackListener( + verify(mTaskStackChangeListeners).registerTaskStackListener( any(TaskStackChangeListener.class)); } @@ -149,7 +149,7 @@ public class WMShellTest extends SysuiTestCase { verify(mScreenLifecycle).addObserver(any(ScreenLifecycle.Observer.class)); verify(mNavigationModeController).addListener( any(NavigationModeController.ModeChangedListener.class)); - verify(mActivityManagerWrapper).registerTaskStackListener( + verify(mTaskStackChangeListeners).registerTaskStackListener( any(TaskStackChangeListener.class)); verify(mOneHanded).registerGestureCallback(any(