Loading core/java/android/window/ITaskOrganizer.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -88,4 +88,9 @@ oneway interface ITaskOrganizer { * user has pressed back on the root activity of a task controlled by the task organizer. */ void onBackPressedOnTaskRoot(in ActivityManager.RunningTaskInfo taskInfo); /** * Called when the IME has drawn on the organized task. */ void onImeDrawnOnTask(int taskId); } core/java/android/window/TaskOrganizer.java +9 −0 Original line number Diff line number Diff line Loading @@ -144,6 +144,10 @@ public class TaskOrganizer extends WindowOrganizer { @BinderThread public void onBackPressedOnTaskRoot(@NonNull ActivityManager.RunningTaskInfo taskInfo) {} /** @hide */ @BinderThread public void onImeDrawnOnTask(int taskId) {} /** * Creates a persistent root task in WM for a particular windowing-mode. * @param displayId The display to create the root task on. Loading Loading @@ -287,6 +291,11 @@ public class TaskOrganizer extends WindowOrganizer { public void onBackPressedOnTaskRoot(ActivityManager.RunningTaskInfo info) { mExecutor.execute(() -> TaskOrganizer.this.onBackPressedOnTaskRoot(info)); } @Override public void onImeDrawnOnTask(int taskId) { mExecutor.execute(() -> TaskOrganizer.this.onImeDrawnOnTask(taskId)); } }; private ITaskOrganizerController getController() { Loading libs/WindowManager/Shell/src/com/android/wm/shell/ShellTaskOrganizer.java +7 −0 Original line number Diff line number Diff line Loading @@ -335,6 +335,13 @@ public class ShellTaskOrganizer extends TaskOrganizer implements } } @Override public void onImeDrawnOnTask(int taskId) { if (mStartingWindow != null) { mStartingWindow.onImeDrawnOnTask(taskId); } } @Override public void onTaskAppeared(RunningTaskInfo taskInfo, SurfaceControl leash) { synchronized (mLock) { Loading libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java +12 −2 Original line number Diff line number Diff line Loading @@ -545,6 +545,15 @@ public class StartingSurfaceDrawer { removeWindowSynced(taskId, null, null, false); } void onImeDrawnOnTask(int taskId) { final StartingWindowRecord record = mStartingWindowRecords.get(taskId); if (record != null && record.mTaskSnapshotWindow != null && record.mTaskSnapshotWindow.hasImeSurface()) { record.mTaskSnapshotWindow.removeImmediately(); } mStartingWindowRecords.remove(taskId); } protected void removeWindowSynced(int taskId, SurfaceControl leash, Rect frame, boolean playRevealAnimation) { final StartingWindowRecord record = mStartingWindowRecords.get(taskId); Loading Loading @@ -572,14 +581,15 @@ public class StartingSurfaceDrawer { Slog.e(TAG, "Found empty splash screen, remove!"); removeWindowInner(record.mDecorView, false); } mStartingWindowRecords.remove(taskId); } if (record.mTaskSnapshotWindow != null) { if (DEBUG_TASK_SNAPSHOT) { Slog.v(TAG, "Removing task snapshot window for " + taskId); } record.mTaskSnapshotWindow.remove(); record.mTaskSnapshotWindow.scheduleRemove( () -> mStartingWindowRecords.remove(taskId)); } mStartingWindowRecords.remove(taskId); } } Loading libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingWindowController.java +7 −0 Original line number Diff line number Diff line Loading @@ -176,6 +176,13 @@ public class StartingWindowController implements RemoteCallable<StartingWindowCo () -> mStartingSurfaceDrawer.onAppSplashScreenViewRemoved(taskId)); } /** * Called when the IME has drawn on the organized task. */ public void onImeDrawnOnTask(int taskId) { mSplashScreenExecutor.execute(() -> mStartingSurfaceDrawer.onImeDrawnOnTask(taskId)); } /** * Called when the content of a task is ready to show, starting window can be removed. */ Loading Loading
core/java/android/window/ITaskOrganizer.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -88,4 +88,9 @@ oneway interface ITaskOrganizer { * user has pressed back on the root activity of a task controlled by the task organizer. */ void onBackPressedOnTaskRoot(in ActivityManager.RunningTaskInfo taskInfo); /** * Called when the IME has drawn on the organized task. */ void onImeDrawnOnTask(int taskId); }
core/java/android/window/TaskOrganizer.java +9 −0 Original line number Diff line number Diff line Loading @@ -144,6 +144,10 @@ public class TaskOrganizer extends WindowOrganizer { @BinderThread public void onBackPressedOnTaskRoot(@NonNull ActivityManager.RunningTaskInfo taskInfo) {} /** @hide */ @BinderThread public void onImeDrawnOnTask(int taskId) {} /** * Creates a persistent root task in WM for a particular windowing-mode. * @param displayId The display to create the root task on. Loading Loading @@ -287,6 +291,11 @@ public class TaskOrganizer extends WindowOrganizer { public void onBackPressedOnTaskRoot(ActivityManager.RunningTaskInfo info) { mExecutor.execute(() -> TaskOrganizer.this.onBackPressedOnTaskRoot(info)); } @Override public void onImeDrawnOnTask(int taskId) { mExecutor.execute(() -> TaskOrganizer.this.onImeDrawnOnTask(taskId)); } }; private ITaskOrganizerController getController() { Loading
libs/WindowManager/Shell/src/com/android/wm/shell/ShellTaskOrganizer.java +7 −0 Original line number Diff line number Diff line Loading @@ -335,6 +335,13 @@ public class ShellTaskOrganizer extends TaskOrganizer implements } } @Override public void onImeDrawnOnTask(int taskId) { if (mStartingWindow != null) { mStartingWindow.onImeDrawnOnTask(taskId); } } @Override public void onTaskAppeared(RunningTaskInfo taskInfo, SurfaceControl leash) { synchronized (mLock) { Loading
libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java +12 −2 Original line number Diff line number Diff line Loading @@ -545,6 +545,15 @@ public class StartingSurfaceDrawer { removeWindowSynced(taskId, null, null, false); } void onImeDrawnOnTask(int taskId) { final StartingWindowRecord record = mStartingWindowRecords.get(taskId); if (record != null && record.mTaskSnapshotWindow != null && record.mTaskSnapshotWindow.hasImeSurface()) { record.mTaskSnapshotWindow.removeImmediately(); } mStartingWindowRecords.remove(taskId); } protected void removeWindowSynced(int taskId, SurfaceControl leash, Rect frame, boolean playRevealAnimation) { final StartingWindowRecord record = mStartingWindowRecords.get(taskId); Loading Loading @@ -572,14 +581,15 @@ public class StartingSurfaceDrawer { Slog.e(TAG, "Found empty splash screen, remove!"); removeWindowInner(record.mDecorView, false); } mStartingWindowRecords.remove(taskId); } if (record.mTaskSnapshotWindow != null) { if (DEBUG_TASK_SNAPSHOT) { Slog.v(TAG, "Removing task snapshot window for " + taskId); } record.mTaskSnapshotWindow.remove(); record.mTaskSnapshotWindow.scheduleRemove( () -> mStartingWindowRecords.remove(taskId)); } mStartingWindowRecords.remove(taskId); } } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingWindowController.java +7 −0 Original line number Diff line number Diff line Loading @@ -176,6 +176,13 @@ public class StartingWindowController implements RemoteCallable<StartingWindowCo () -> mStartingSurfaceDrawer.onAppSplashScreenViewRemoved(taskId)); } /** * Called when the IME has drawn on the organized task. */ public void onImeDrawnOnTask(int taskId) { mSplashScreenExecutor.execute(() -> mStartingSurfaceDrawer.onImeDrawnOnTask(taskId)); } /** * Called when the content of a task is ready to show, starting window can be removed. */ Loading