Loading services/core/java/com/android/server/wm/ActivityRecord.java +0 −4 Original line number Diff line number Diff line Loading @@ -1354,10 +1354,6 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return true; } void setAppTimeTracker(AppTimeTracker att) { appTimeTracker = att; } /** Update the saved state of an activity. */ void setSavedState(@Nullable Bundle savedState) { mIcicle = savedState; Loading services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +16 −35 Original line number Diff line number Diff line Loading @@ -139,7 +139,6 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.content.ReferrerIntent; import com.android.internal.protolog.common.ProtoLog; import com.android.internal.util.ArrayUtils; import com.android.internal.util.function.pooled.PooledConsumer; import com.android.internal.util.function.pooled.PooledLambda; import com.android.server.LocalServices; import com.android.server.am.ActivityManagerService; Loading Loading @@ -1578,15 +1577,10 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { if (rootTask.getWindowingMode() == WINDOWING_MODE_PINNED) { removePinnedRootTaskInSurfaceTransaction(rootTask); } else { final PooledConsumer c = PooledLambda.obtainConsumer( ActivityTaskSupervisor::processRemoveTask, this, PooledLambda.__(Task.class)); rootTask.forAllLeafTasks(c, true /* traverseTopToBottom */); c.recycle(); } } private void processRemoveTask(Task task) { rootTask.forAllLeafTasks(task -> { removeTask(task, true /* killProcess */, REMOVE_FROM_RECENTS, "remove-root-task"); }, true /* traverseTopToBottom */); } } /** Loading Loading @@ -2268,23 +2262,17 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { } void scheduleUpdateMultiWindowMode(Task task) { final PooledConsumer c = PooledLambda.obtainConsumer( ActivityTaskSupervisor::addToMultiWindowModeChangedList, this, PooledLambda.__(ActivityRecord.class)); task.forAllActivities(c); c.recycle(); task.forAllActivities(r -> { if (r.attachedToProcess()) { mMultiWindowModeChangedActivities.add(r); } }); if (!mHandler.hasMessages(REPORT_MULTI_WINDOW_MODE_CHANGED_MSG)) { mHandler.sendEmptyMessage(REPORT_MULTI_WINDOW_MODE_CHANGED_MSG); } } private void addToMultiWindowModeChangedList(ActivityRecord r) { if (r.attachedToProcess()) { mMultiWindowModeChangedActivities.add(r); } } void scheduleUpdatePictureInPictureModeIfNeeded(Task task, Task prevRootTask) { final Task rootTask = task.getRootTask(); if ((prevRootTask == null || (prevRootTask != rootTask Loading @@ -2296,27 +2284,20 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { } void scheduleUpdatePictureInPictureModeIfNeeded(Task task, Rect targetRootTaskBounds) { final PooledConsumer c = PooledLambda.obtainConsumer( ActivityTaskSupervisor::addToPipModeChangedList, this, PooledLambda.__(ActivityRecord.class)); task.forAllActivities(c); c.recycle(); mPipModeChangedTargetRootTaskBounds = targetRootTaskBounds; if (!mHandler.hasMessages(REPORT_PIP_MODE_CHANGED_MSG)) { mHandler.sendEmptyMessage(REPORT_PIP_MODE_CHANGED_MSG); } } private void addToPipModeChangedList(ActivityRecord r) { task.forAllActivities(r -> { if (!r.attachedToProcess()) return; mPipModeChangedActivities.add(r); // If we are scheduling pip change, then remove this activity from multi-window // change list as the processing of pip change will make sure multi-window changed // message is processed in the right order relative to pip changed. mMultiWindowModeChangedActivities.remove(r); }); mPipModeChangedTargetRootTaskBounds = targetRootTaskBounds; if (!mHandler.hasMessages(REPORT_PIP_MODE_CHANGED_MSG)) { mHandler.sendEmptyMessage(REPORT_PIP_MODE_CHANGED_MSG); } } void wakeUp(String reason) { Loading services/core/java/com/android/server/wm/DisplayContent.java +6 −23 Original line number Diff line number Diff line Loading @@ -241,7 +241,6 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.protolog.common.ProtoLog; import com.android.internal.util.ToBooleanFunction; import com.android.internal.util.function.TriConsumer; import com.android.internal.util.function.pooled.PooledConsumer; import com.android.internal.util.function.pooled.PooledLambda; import com.android.internal.util.function.pooled.PooledPredicate; import com.android.server.inputmethod.InputMethodManagerInternal; Loading Loading @@ -3075,18 +3074,13 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp */ boolean pointWithinAppWindow(int x, int y) { final int[] targetWindowType = {-1}; final PooledConsumer fn = PooledLambda.obtainConsumer((w, nonArg) -> { if (targetWindowType[0] != -1) { return; } forAllWindows(w -> { if (w.isOnScreen() && w.isVisible() && w.getFrame().contains(x, y)) { targetWindowType[0] = w.mAttrs.type; return; return true; } }, PooledLambda.__(WindowState.class), mTmpRect); forAllWindows(fn, true /* traverseTopToBottom */); fn.recycle(); return false; }, true /* traverseTopToBottom */); return FIRST_APPLICATION_WINDOW <= targetWindowType[0] && targetWindowType[0] <= LAST_APPLICATION_WINDOW; } Loading @@ -3112,11 +3106,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp mTmpRect.setEmpty(); mTmpRect2.setEmpty(); final PooledConsumer c = PooledLambda.obtainConsumer( DisplayContent::processTaskForTouchExcludeRegion, this, PooledLambda.__(Task.class), focusedTask, delta); forAllTasks(c); c.recycle(); forAllTasks(t -> { processTaskForTouchExcludeRegion(t, focusedTask, delta); }); // If we removed the focused task above, add it back and only leave its // outside touch area in the exclusion. TapDetector is not interested in Loading Loading @@ -6187,17 +6177,10 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp /** Update and get all UIDs that are present on the display and have access to it. */ IntArray getPresentUIDs() { mDisplayAccessUIDs.clear(); final PooledConsumer c = PooledLambda.obtainConsumer(DisplayContent::addActivityUid, PooledLambda.__(ActivityRecord.class), mDisplayAccessUIDs); mDisplayContent.forAllActivities(c); c.recycle(); mDisplayContent.forAllActivities(r -> { mDisplayAccessUIDs.add(r.getUid()); }); return mDisplayAccessUIDs; } private static void addActivityUid(ActivityRecord r, IntArray uids) { uids.add(r.getUid()); } @VisibleForTesting boolean shouldDestroyContentOnRemove() { return mDisplay.getRemoveMode() == REMOVE_MODE_DESTROY_CONTENT; Loading services/core/java/com/android/server/wm/RecentsAnimationController.java +5 −7 Original line number Diff line number Diff line Loading @@ -62,8 +62,6 @@ import android.window.TaskSnapshot; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.protolog.common.ProtoLog; import com.android.internal.util.function.pooled.PooledConsumer; import com.android.internal.util.function.pooled.PooledLambda; import com.android.server.LocalServices; import com.android.server.inputmethod.InputMethodManagerInternal; import com.android.server.statusbar.StatusBarManagerInternal; Loading Loading @@ -403,11 +401,11 @@ public class RecentsAnimationController implements DeathRecipient { final Task targetRootTask = mDisplayContent.getDefaultTaskDisplayArea() .getRootTask(WINDOWING_MODE_UNDEFINED, targetActivityType); if (targetRootTask != null) { final PooledConsumer c = PooledLambda.obtainConsumer((t, outList) -> { if (!outList.contains(t)) outList.add(t); }, PooledLambda.__(Task.class), visibleTasks); targetRootTask.forAllLeafTasks(c, true /* traverseTopToBottom */); c.recycle(); targetRootTask.forAllLeafTasks(t -> { if (!visibleTasks.contains(t)) { visibleTasks.add(t); } }, true /* traverseTopToBottom */); } final int taskCount = visibleTasks.size(); Loading services/core/java/com/android/server/wm/RootWindowContainer.java +2 −3 Original line number Diff line number Diff line Loading @@ -3102,9 +3102,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> } void finishVoiceTask(IVoiceInteractionSession session) { forAllRootTasks(rootTask -> { rootTask.finishVoiceTask(session); }); final IBinder binder = session.asBinder(); forAllLeafTasks(t -> t.finishIfVoiceTask(binder), true /* traverseTopToBottom */); } /** Loading Loading
services/core/java/com/android/server/wm/ActivityRecord.java +0 −4 Original line number Diff line number Diff line Loading @@ -1354,10 +1354,6 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return true; } void setAppTimeTracker(AppTimeTracker att) { appTimeTracker = att; } /** Update the saved state of an activity. */ void setSavedState(@Nullable Bundle savedState) { mIcicle = savedState; Loading
services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +16 −35 Original line number Diff line number Diff line Loading @@ -139,7 +139,6 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.content.ReferrerIntent; import com.android.internal.protolog.common.ProtoLog; import com.android.internal.util.ArrayUtils; import com.android.internal.util.function.pooled.PooledConsumer; import com.android.internal.util.function.pooled.PooledLambda; import com.android.server.LocalServices; import com.android.server.am.ActivityManagerService; Loading Loading @@ -1578,15 +1577,10 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { if (rootTask.getWindowingMode() == WINDOWING_MODE_PINNED) { removePinnedRootTaskInSurfaceTransaction(rootTask); } else { final PooledConsumer c = PooledLambda.obtainConsumer( ActivityTaskSupervisor::processRemoveTask, this, PooledLambda.__(Task.class)); rootTask.forAllLeafTasks(c, true /* traverseTopToBottom */); c.recycle(); } } private void processRemoveTask(Task task) { rootTask.forAllLeafTasks(task -> { removeTask(task, true /* killProcess */, REMOVE_FROM_RECENTS, "remove-root-task"); }, true /* traverseTopToBottom */); } } /** Loading Loading @@ -2268,23 +2262,17 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { } void scheduleUpdateMultiWindowMode(Task task) { final PooledConsumer c = PooledLambda.obtainConsumer( ActivityTaskSupervisor::addToMultiWindowModeChangedList, this, PooledLambda.__(ActivityRecord.class)); task.forAllActivities(c); c.recycle(); task.forAllActivities(r -> { if (r.attachedToProcess()) { mMultiWindowModeChangedActivities.add(r); } }); if (!mHandler.hasMessages(REPORT_MULTI_WINDOW_MODE_CHANGED_MSG)) { mHandler.sendEmptyMessage(REPORT_MULTI_WINDOW_MODE_CHANGED_MSG); } } private void addToMultiWindowModeChangedList(ActivityRecord r) { if (r.attachedToProcess()) { mMultiWindowModeChangedActivities.add(r); } } void scheduleUpdatePictureInPictureModeIfNeeded(Task task, Task prevRootTask) { final Task rootTask = task.getRootTask(); if ((prevRootTask == null || (prevRootTask != rootTask Loading @@ -2296,27 +2284,20 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { } void scheduleUpdatePictureInPictureModeIfNeeded(Task task, Rect targetRootTaskBounds) { final PooledConsumer c = PooledLambda.obtainConsumer( ActivityTaskSupervisor::addToPipModeChangedList, this, PooledLambda.__(ActivityRecord.class)); task.forAllActivities(c); c.recycle(); mPipModeChangedTargetRootTaskBounds = targetRootTaskBounds; if (!mHandler.hasMessages(REPORT_PIP_MODE_CHANGED_MSG)) { mHandler.sendEmptyMessage(REPORT_PIP_MODE_CHANGED_MSG); } } private void addToPipModeChangedList(ActivityRecord r) { task.forAllActivities(r -> { if (!r.attachedToProcess()) return; mPipModeChangedActivities.add(r); // If we are scheduling pip change, then remove this activity from multi-window // change list as the processing of pip change will make sure multi-window changed // message is processed in the right order relative to pip changed. mMultiWindowModeChangedActivities.remove(r); }); mPipModeChangedTargetRootTaskBounds = targetRootTaskBounds; if (!mHandler.hasMessages(REPORT_PIP_MODE_CHANGED_MSG)) { mHandler.sendEmptyMessage(REPORT_PIP_MODE_CHANGED_MSG); } } void wakeUp(String reason) { Loading
services/core/java/com/android/server/wm/DisplayContent.java +6 −23 Original line number Diff line number Diff line Loading @@ -241,7 +241,6 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.protolog.common.ProtoLog; import com.android.internal.util.ToBooleanFunction; import com.android.internal.util.function.TriConsumer; import com.android.internal.util.function.pooled.PooledConsumer; import com.android.internal.util.function.pooled.PooledLambda; import com.android.internal.util.function.pooled.PooledPredicate; import com.android.server.inputmethod.InputMethodManagerInternal; Loading Loading @@ -3075,18 +3074,13 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp */ boolean pointWithinAppWindow(int x, int y) { final int[] targetWindowType = {-1}; final PooledConsumer fn = PooledLambda.obtainConsumer((w, nonArg) -> { if (targetWindowType[0] != -1) { return; } forAllWindows(w -> { if (w.isOnScreen() && w.isVisible() && w.getFrame().contains(x, y)) { targetWindowType[0] = w.mAttrs.type; return; return true; } }, PooledLambda.__(WindowState.class), mTmpRect); forAllWindows(fn, true /* traverseTopToBottom */); fn.recycle(); return false; }, true /* traverseTopToBottom */); return FIRST_APPLICATION_WINDOW <= targetWindowType[0] && targetWindowType[0] <= LAST_APPLICATION_WINDOW; } Loading @@ -3112,11 +3106,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp mTmpRect.setEmpty(); mTmpRect2.setEmpty(); final PooledConsumer c = PooledLambda.obtainConsumer( DisplayContent::processTaskForTouchExcludeRegion, this, PooledLambda.__(Task.class), focusedTask, delta); forAllTasks(c); c.recycle(); forAllTasks(t -> { processTaskForTouchExcludeRegion(t, focusedTask, delta); }); // If we removed the focused task above, add it back and only leave its // outside touch area in the exclusion. TapDetector is not interested in Loading Loading @@ -6187,17 +6177,10 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp /** Update and get all UIDs that are present on the display and have access to it. */ IntArray getPresentUIDs() { mDisplayAccessUIDs.clear(); final PooledConsumer c = PooledLambda.obtainConsumer(DisplayContent::addActivityUid, PooledLambda.__(ActivityRecord.class), mDisplayAccessUIDs); mDisplayContent.forAllActivities(c); c.recycle(); mDisplayContent.forAllActivities(r -> { mDisplayAccessUIDs.add(r.getUid()); }); return mDisplayAccessUIDs; } private static void addActivityUid(ActivityRecord r, IntArray uids) { uids.add(r.getUid()); } @VisibleForTesting boolean shouldDestroyContentOnRemove() { return mDisplay.getRemoveMode() == REMOVE_MODE_DESTROY_CONTENT; Loading
services/core/java/com/android/server/wm/RecentsAnimationController.java +5 −7 Original line number Diff line number Diff line Loading @@ -62,8 +62,6 @@ import android.window.TaskSnapshot; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.protolog.common.ProtoLog; import com.android.internal.util.function.pooled.PooledConsumer; import com.android.internal.util.function.pooled.PooledLambda; import com.android.server.LocalServices; import com.android.server.inputmethod.InputMethodManagerInternal; import com.android.server.statusbar.StatusBarManagerInternal; Loading Loading @@ -403,11 +401,11 @@ public class RecentsAnimationController implements DeathRecipient { final Task targetRootTask = mDisplayContent.getDefaultTaskDisplayArea() .getRootTask(WINDOWING_MODE_UNDEFINED, targetActivityType); if (targetRootTask != null) { final PooledConsumer c = PooledLambda.obtainConsumer((t, outList) -> { if (!outList.contains(t)) outList.add(t); }, PooledLambda.__(Task.class), visibleTasks); targetRootTask.forAllLeafTasks(c, true /* traverseTopToBottom */); c.recycle(); targetRootTask.forAllLeafTasks(t -> { if (!visibleTasks.contains(t)) { visibleTasks.add(t); } }, true /* traverseTopToBottom */); } final int taskCount = visibleTasks.size(); Loading
services/core/java/com/android/server/wm/RootWindowContainer.java +2 −3 Original line number Diff line number Diff line Loading @@ -3102,9 +3102,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> } void finishVoiceTask(IVoiceInteractionSession session) { forAllRootTasks(rootTask -> { rootTask.finishVoiceTask(session); }); final IBinder binder = session.asBinder(); forAllLeafTasks(t -> t.finishIfVoiceTask(binder), true /* traverseTopToBottom */); } /** Loading