Merge "Moving task stack change listener management out of ActivityManagerWrapper"
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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<TaskStackChangeListener> mTaskStackListeners = new ArrayList<>();
|
||||
private final List<TaskStackChangeListener> 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<TaskStackChangeListener> mTaskStackListeners = new ArrayList<>();
|
||||
private final List<TaskStackChangeListener> 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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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<StatusBarStateController> mStatusBarStateController;
|
||||
private final Lazy<ActivityManagerWrapper> mActivityManagerWrapper;
|
||||
private final Lazy<TaskStackChangeListeners> mTaskStackChangeListeners;
|
||||
private final Lazy<OverviewProxyService> mOverviewProxyService;
|
||||
private final Lazy<SysUiState> mSysUiFlagContainer;
|
||||
private final Lazy<WakefulnessLifecycle> mWakefulnessLifecycle;
|
||||
@@ -207,6 +209,7 @@ final class AssistHandleReminderExpBehavior implements BehaviorController {
|
||||
DeviceConfigHelper deviceConfigHelper,
|
||||
Lazy<StatusBarStateController> statusBarStateController,
|
||||
Lazy<ActivityManagerWrapper> activityManagerWrapper,
|
||||
Lazy<TaskStackChangeListeners> taskStackChangeListeners,
|
||||
Lazy<OverviewProxyService> overviewProxyService,
|
||||
Lazy<SysUiState> sysUiFlagContainer,
|
||||
Lazy<WakefulnessLifecycle> 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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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<Integer> watcher) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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<TaskStackChangeListener> listenerCaptor =
|
||||
ArgumentCaptor.forClass(TaskStackChangeListener.class);
|
||||
verify(mMockAm).registerTaskStackListener(listenerCaptor.capture());
|
||||
verify(mMockTaskListeners).registerTaskStackListener(listenerCaptor.capture());
|
||||
mTaskStackListener = listenerCaptor.getValue();
|
||||
}
|
||||
|
||||
|
||||
@@ -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<TaskStackChangeListener> 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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user