diff options
| author | 2024-10-31 18:25:29 +0000 | |
|---|---|---|
| committer | 2024-11-11 15:47:45 +0000 | |
| commit | c1b338df9924d0549b882cfa43d825b8f0a48813 (patch) | |
| tree | d0ef94e302b002c81811d5ea0740debcfe51f499 | |
| parent | 4d1ca400951cb2870770203f18859e2102288e57 (diff) | |
Skip Compat UI when in desktop mode
Added more checks to prevent the creation of Compat UI elements
when in Desktop Window mode.
Flag: com.android.window.flags.skip_compat_ui_education_in_desktop_mode
Bug: b/372366522
Fix: b/357062954
Test: atest WMShellUnitTests:CompatUIControllerTest
Change-Id: I54af8280a0a7b585af86892c88e886ecbfcbfb83
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java | 60 |
1 files changed, 42 insertions, 18 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java index 0200e18b5c50..c99d9ba862c1 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java @@ -188,6 +188,8 @@ public class CompatUIController implements OnDisplaysChangedListener, */ private boolean mIsFirstReachabilityEducationRunning; + private boolean mIsInDesktopMode; + @NonNull private final CompatUIStatusManager mCompatUIStatusManager; @@ -253,18 +255,19 @@ public class CompatUIController implements OnDisplaysChangedListener, if (taskInfo != null && !taskInfo.appCompatTaskInfo.isTopActivityInSizeCompat()) { mSetOfTaskIdsShowingRestartDialog.remove(taskInfo.taskId); } - - if (taskInfo != null && taskListener != null) { - updateActiveTaskInfo(taskInfo); - } - - // We close all the Compat UI educations in case we're in desktop mode. - if (taskInfo.configuration == null || taskListener == null - || isInDesktopMode(taskInfo.displayId)) { + mIsInDesktopMode = isInDesktopMode(taskInfo); + // We close all the Compat UI educations in case TaskInfo has no configuration or + // TaskListener or in desktop mode. + if (taskInfo.configuration == null || taskListener == null || mIsInDesktopMode) { // Null token means the current foreground activity is not in compatibility mode. removeLayouts(taskInfo.taskId); return; } + if (taskInfo != null && taskListener != null) { + updateActiveTaskInfo(taskInfo); + } + + // We're showing the first reachability education so we ignore incoming TaskInfo // until the education flow has completed or we double tap. The double-tap // basically cancel all the onboarding flow. We don't have to ignore events in case @@ -443,7 +446,7 @@ public class CompatUIController implements OnDisplaysChangedListener, @Nullable ShellTaskOrganizer.TaskListener taskListener) { CompatUIWindowManager layout = mActiveCompatLayouts.get(taskInfo.taskId); if (layout != null) { - if (layout.needsToBeRecreated(taskInfo, taskListener)) { + if (layout.needsToBeRecreated(taskInfo, taskListener) || mIsInDesktopMode) { mActiveCompatLayouts.remove(taskInfo.taskId); layout.release(); } else { @@ -456,7 +459,10 @@ public class CompatUIController implements OnDisplaysChangedListener, return; } } - + if (mIsInDesktopMode) { + // Return if in desktop mode. + return; + } // Create a new UI layout. final Context context = getOrCreateDisplayContext(taskInfo.displayId); if (context == null) { @@ -494,7 +500,8 @@ public class CompatUIController implements OnDisplaysChangedListener, private void createOrUpdateLetterboxEduLayout(@NonNull TaskInfo taskInfo, @Nullable ShellTaskOrganizer.TaskListener taskListener) { if (mActiveLetterboxEduLayout != null) { - if (mActiveLetterboxEduLayout.needsToBeRecreated(taskInfo, taskListener)) { + if (mActiveLetterboxEduLayout.needsToBeRecreated(taskInfo, taskListener) + || mIsInDesktopMode) { mActiveLetterboxEduLayout.release(); mActiveLetterboxEduLayout = null; } else { @@ -507,6 +514,10 @@ public class CompatUIController implements OnDisplaysChangedListener, return; } } + if (mIsInDesktopMode) { + // Return if in desktop mode. + return; + } // Create a new UI layout. final Context context = getOrCreateDisplayContext(taskInfo.displayId); if (context == null) { @@ -541,7 +552,7 @@ public class CompatUIController implements OnDisplaysChangedListener, RestartDialogWindowManager layout = mTaskIdToRestartDialogWindowManagerMap.get(taskInfo.taskId); if (layout != null) { - if (layout.needsToBeRecreated(taskInfo, taskListener)) { + if (layout.needsToBeRecreated(taskInfo, taskListener) || mIsInDesktopMode) { mTaskIdToRestartDialogWindowManagerMap.remove(taskInfo.taskId); layout.release(); } else { @@ -556,6 +567,10 @@ public class CompatUIController implements OnDisplaysChangedListener, return; } } + if (mIsInDesktopMode) { + // Return if in desktop mode. + return; + } // Create a new UI layout. final Context context = getOrCreateDisplayContext(taskInfo.displayId); if (context == null) { @@ -594,7 +609,8 @@ public class CompatUIController implements OnDisplaysChangedListener, private void createOrUpdateReachabilityEduLayout(@NonNull TaskInfo taskInfo, @Nullable ShellTaskOrganizer.TaskListener taskListener) { if (mActiveReachabilityEduLayout != null) { - if (mActiveReachabilityEduLayout.needsToBeRecreated(taskInfo, taskListener)) { + if (mActiveReachabilityEduLayout.needsToBeRecreated(taskInfo, taskListener) + || mIsInDesktopMode) { mActiveReachabilityEduLayout.release(); mActiveReachabilityEduLayout = null; } else { @@ -608,6 +624,10 @@ public class CompatUIController implements OnDisplaysChangedListener, return; } } + if (mIsInDesktopMode) { + // Return if in desktop mode. + return; + } // Create a new UI layout. final Context context = getOrCreateDisplayContext(taskInfo.displayId); if (context == null) { @@ -647,7 +667,8 @@ public class CompatUIController implements OnDisplaysChangedListener, private void createOrUpdateUserAspectRatioSettingsLayout(@NonNull TaskInfo taskInfo, @Nullable ShellTaskOrganizer.TaskListener taskListener) { if (mUserAspectRatioSettingsLayout != null) { - if (mUserAspectRatioSettingsLayout.needsToBeRecreated(taskInfo, taskListener)) { + if (mUserAspectRatioSettingsLayout.needsToBeRecreated(taskInfo, taskListener) + || mIsInDesktopMode) { mUserAspectRatioSettingsLayout.release(); mUserAspectRatioSettingsLayout = null; } else { @@ -660,7 +681,10 @@ public class CompatUIController implements OnDisplaysChangedListener, return; } } - + if (mIsInDesktopMode) { + // Return if in desktop mode. + return; + } // Create a new UI layout. final Context context = getOrCreateDisplayContext(taskInfo.displayId); if (context == null) { @@ -840,8 +864,8 @@ public class CompatUIController implements OnDisplaysChangedListener, boolean mHasShownUserAspectRatioSettingsButtonHint; } - private boolean isInDesktopMode(int displayId) { - return Flags.skipCompatUiEducationInDesktopMode() - && mInDesktopModePredicate.test(displayId); + private boolean isInDesktopMode(@Nullable TaskInfo taskInfo) { + return taskInfo != null && Flags.skipCompatUiEducationInDesktopMode() + && mInDesktopModePredicate.test(taskInfo.displayId); } } |