Loading libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManager.java +4 −10 Original line number Diff line number Diff line Loading @@ -80,8 +80,7 @@ class CompatUIWindowManager extends CompatUIWindowManagerAbstract { Consumer<Pair<TaskInfo, ShellTaskOrganizer.TaskListener>> onRestartButtonClicked) { super(context, taskInfo, syncQueue, taskListener, displayLayout); mCallback = callback; mHasSizeCompat = taskInfo.appCompatTaskInfo.topActivityInSizeCompat && shouldShowSizeCompatRestartButton(taskInfo); mHasSizeCompat = taskInfo.appCompatTaskInfo.topActivityInSizeCompat; mCameraCompatControlState = taskInfo.appCompatTaskInfo.cameraCompatControlState; mCompatUIHintsState = compatUIHintsState; mCompatUIConfiguration = compatUIConfiguration; Loading @@ -106,7 +105,8 @@ class CompatUIWindowManager extends CompatUIWindowManagerAbstract { @Override protected boolean eligibleToShowLayout() { return mHasSizeCompat || shouldShowCameraControl(); return (mHasSizeCompat && shouldShowSizeCompatRestartButton(getLastTaskInfo())) || shouldShowCameraControl(); } @Override Loading @@ -114,11 +114,6 @@ class CompatUIWindowManager extends CompatUIWindowManagerAbstract { mLayout = inflateLayout(); mLayout.inject(this); final TaskInfo taskInfo = getLastTaskInfo(); if (taskInfo != null) { mHasSizeCompat = mHasSizeCompat && shouldShowSizeCompatRestartButton(taskInfo); } updateVisibilityOfViews(); if (mHasSizeCompat) { Loading @@ -139,8 +134,7 @@ class CompatUIWindowManager extends CompatUIWindowManagerAbstract { boolean canShow) { final boolean prevHasSizeCompat = mHasSizeCompat; final int prevCameraCompatControlState = mCameraCompatControlState; mHasSizeCompat = taskInfo.appCompatTaskInfo.topActivityInSizeCompat && shouldShowSizeCompatRestartButton(taskInfo); mHasSizeCompat = taskInfo.appCompatTaskInfo.topActivityInSizeCompat; mCameraCompatControlState = taskInfo.appCompatTaskInfo.cameraCompatControlState; if (!super.updateCompatInfo(taskInfo, taskListener, canShow)) { Loading libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManagerAbstract.java +1 −1 Original line number Diff line number Diff line Loading @@ -332,7 +332,7 @@ public abstract class CompatUIWindowManagerAbstract extends WindowlessWindowMana updateSurfacePosition(); } @Nullable @NonNull protected TaskInfo getLastTaskInfo() { return mTaskInfo; } Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUILayoutTest.java +5 −1 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import static org.mockito.Mockito.verify; import android.app.ActivityManager; import android.app.AppCompatTaskInfo.CameraCompatControlState; import android.app.TaskInfo; import android.graphics.Rect; import android.testing.AndroidTestingRunner; import android.util.Pair; import android.view.LayoutInflater; Loading Loading @@ -83,6 +84,7 @@ public class CompatUILayoutTest extends ShellTestCase { @Before public void setUp() { MockitoAnnotations.initMocks(this); doReturn(100).when(mCompatUIConfiguration).getHideSizeCompatRestartButtonTolerance(); mTaskInfo = createTaskInfo(/* hasSizeCompat= */ false, CAMERA_COMPAT_CONTROL_HIDDEN); mWindowManager = new CompatUIWindowManager(mContext, mTaskInfo, mSyncTransactionQueue, mCallback, mTaskListener, new DisplayLayout(), new CompatUIHintsState(), Loading Loading @@ -127,7 +129,6 @@ public class CompatUILayoutTest extends ShellTestCase { @Test public void testOnClickForSizeCompatHint() { mWindowManager.mHasSizeCompat = true; doReturn(true).when(mWindowManager).shouldShowSizeCompatRestartButton(mTaskInfo); mWindowManager.createLayout(/* canShow= */ true); final LinearLayout sizeCompatHint = mLayout.findViewById(R.id.size_compat_hint); sizeCompatHint.performClick(); Loading Loading @@ -222,6 +223,9 @@ public class CompatUILayoutTest extends ShellTestCase { taskInfo.taskId = TASK_ID; taskInfo.appCompatTaskInfo.topActivityInSizeCompat = hasSizeCompat; taskInfo.appCompatTaskInfo.cameraCompatControlState = cameraCompatControlState; taskInfo.appCompatTaskInfo.topActivityLetterboxHeight = 1000; taskInfo.appCompatTaskInfo.topActivityLetterboxWidth = 1000; taskInfo.configuration.windowConfiguration.setBounds(new Rect(0, 0, 2000, 2000)); return taskInfo; } } libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIWindowManagerTest.java +24 −6 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_DISMISSED; import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_HIDDEN; import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED; import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.platform.test.flag.junit.SetFlagsRule.DefaultInitValueType.DEVICE_DEFAULT; import static android.view.WindowInsets.Type.navigationBars; Loading Loading @@ -86,6 +85,8 @@ public class CompatUIWindowManagerTest extends ShellTestCase { public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(DEVICE_DEFAULT); private static final int TASK_ID = 1; private static final int TASK_WIDTH = 2000; private static final int TASK_HEIGHT = 2000; @Mock private SyncTransactionQueue mSyncTransactionQueue; @Mock private CompatUIController.CompatUICallback mCallback; Loading @@ -101,6 +102,7 @@ public class CompatUIWindowManagerTest extends ShellTestCase { @Before public void setUp() { MockitoAnnotations.initMocks(this); doReturn(100).when(mCompatUIConfiguration).getHideSizeCompatRestartButtonTolerance(); mTaskInfo = createTaskInfo(/* hasSizeCompat= */ false, CAMERA_COMPAT_CONTROL_HIDDEN); mWindowManager = new CompatUIWindowManager(mContext, mTaskInfo, mSyncTransactionQueue, mCallback, mTaskListener, new DisplayLayout(), new CompatUIHintsState(), Loading @@ -115,7 +117,6 @@ public class CompatUIWindowManagerTest extends ShellTestCase { public void testCreateSizeCompatButton() { // Doesn't create layout if show is false. mWindowManager.mHasSizeCompat = true; doReturn(true).when(mWindowManager).shouldShowSizeCompatRestartButton(mTaskInfo); assertTrue(mWindowManager.createLayout(/* canShow= */ false)); verify(mWindowManager, never()).inflateLayout(); Loading Loading @@ -147,6 +148,13 @@ public class CompatUIWindowManagerTest extends ShellTestCase { mWindowManager.mHasSizeCompat = false; assertFalse(mWindowManager.createLayout(/* canShow= */ true)); // Returns false and doesn't create layout if restart button should be hidden. clearInvocations(mWindowManager); mWindowManager.mHasSizeCompat = true; mTaskInfo.appCompatTaskInfo.topActivityLetterboxWidth = TASK_WIDTH; mTaskInfo.appCompatTaskInfo.topActivityLetterboxHeight = TASK_HEIGHT; assertFalse(mWindowManager.createLayout(/* canShow= */ true)); verify(mWindowManager, never()).inflateLayout(); } Loading Loading @@ -293,8 +301,6 @@ public class CompatUIWindowManagerTest extends ShellTestCase { @Test public void testUpdateCompatInfoLayoutNotInflatedYet() { mWindowManager.mHasSizeCompat = true; doReturn(true).when(mWindowManager).shouldShowSizeCompatRestartButton(any()); mWindowManager.createLayout(/* canShow= */ false); verify(mWindowManager, never()).inflateLayout(); Loading @@ -314,6 +320,15 @@ public class CompatUIWindowManagerTest extends ShellTestCase { mWindowManager.updateCompatInfo(taskInfo, mTaskListener, /* canShow= */ true); verify(mWindowManager).inflateLayout(); // Change shouldShowSizeCompatRestartButton to false and pass canShow true, layout // shouldn't be inflated clearInvocations(mWindowManager); taskInfo.appCompatTaskInfo.topActivityLetterboxWidth = TASK_WIDTH; taskInfo.appCompatTaskInfo.topActivityLetterboxHeight = TASK_HEIGHT; mWindowManager.updateCompatInfo(taskInfo, mTaskListener, /* canShow= */ true); verify(mWindowManager, never()).inflateLayout(); } @Test Loading Loading @@ -364,7 +379,6 @@ public class CompatUIWindowManagerTest extends ShellTestCase { // Create button if it is not created. mWindowManager.mLayout = null; mWindowManager.mHasSizeCompat = true; doReturn(true).when(mWindowManager).shouldShowSizeCompatRestartButton(mTaskInfo); mWindowManager.updateVisibility(/* canShow= */ true); verify(mWindowManager).createLayout(/* canShow= */ true); Loading Loading @@ -489,7 +503,6 @@ public class CompatUIWindowManagerTest extends ShellTestCase { TaskInfo taskInfo = createTaskInfo(true, CAMERA_COMPAT_CONTROL_HIDDEN); taskInfo.configuration.windowConfiguration.setBounds(new Rect(0, 0, 2000, 2000)); taskInfo.appCompatTaskInfo.topActivityLetterboxHeight = 2000; taskInfo.configuration.windowConfiguration.setWindowingMode(WINDOWING_MODE_FULLSCREEN); taskInfo.appCompatTaskInfo.topActivityLetterboxWidth = 1850; assertFalse(mWindowManager.shouldShowSizeCompatRestartButton(taskInfo)); Loading @@ -514,6 +527,11 @@ public class CompatUIWindowManagerTest extends ShellTestCase { taskInfo.appCompatTaskInfo.topActivityInSizeCompat = hasSizeCompat; taskInfo.appCompatTaskInfo.cameraCompatControlState = cameraCompatControlState; taskInfo.configuration.uiMode &= ~Configuration.UI_MODE_TYPE_DESK; // Letterboxed activity that takes half the screen should show size compat restart button taskInfo.configuration.windowConfiguration.setBounds( new Rect(0, 0, TASK_WIDTH, TASK_HEIGHT)); taskInfo.appCompatTaskInfo.topActivityLetterboxHeight = 1000; taskInfo.appCompatTaskInfo.topActivityLetterboxWidth = 1000; return taskInfo; } } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManager.java +4 −10 Original line number Diff line number Diff line Loading @@ -80,8 +80,7 @@ class CompatUIWindowManager extends CompatUIWindowManagerAbstract { Consumer<Pair<TaskInfo, ShellTaskOrganizer.TaskListener>> onRestartButtonClicked) { super(context, taskInfo, syncQueue, taskListener, displayLayout); mCallback = callback; mHasSizeCompat = taskInfo.appCompatTaskInfo.topActivityInSizeCompat && shouldShowSizeCompatRestartButton(taskInfo); mHasSizeCompat = taskInfo.appCompatTaskInfo.topActivityInSizeCompat; mCameraCompatControlState = taskInfo.appCompatTaskInfo.cameraCompatControlState; mCompatUIHintsState = compatUIHintsState; mCompatUIConfiguration = compatUIConfiguration; Loading @@ -106,7 +105,8 @@ class CompatUIWindowManager extends CompatUIWindowManagerAbstract { @Override protected boolean eligibleToShowLayout() { return mHasSizeCompat || shouldShowCameraControl(); return (mHasSizeCompat && shouldShowSizeCompatRestartButton(getLastTaskInfo())) || shouldShowCameraControl(); } @Override Loading @@ -114,11 +114,6 @@ class CompatUIWindowManager extends CompatUIWindowManagerAbstract { mLayout = inflateLayout(); mLayout.inject(this); final TaskInfo taskInfo = getLastTaskInfo(); if (taskInfo != null) { mHasSizeCompat = mHasSizeCompat && shouldShowSizeCompatRestartButton(taskInfo); } updateVisibilityOfViews(); if (mHasSizeCompat) { Loading @@ -139,8 +134,7 @@ class CompatUIWindowManager extends CompatUIWindowManagerAbstract { boolean canShow) { final boolean prevHasSizeCompat = mHasSizeCompat; final int prevCameraCompatControlState = mCameraCompatControlState; mHasSizeCompat = taskInfo.appCompatTaskInfo.topActivityInSizeCompat && shouldShowSizeCompatRestartButton(taskInfo); mHasSizeCompat = taskInfo.appCompatTaskInfo.topActivityInSizeCompat; mCameraCompatControlState = taskInfo.appCompatTaskInfo.cameraCompatControlState; if (!super.updateCompatInfo(taskInfo, taskListener, canShow)) { Loading
libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManagerAbstract.java +1 −1 Original line number Diff line number Diff line Loading @@ -332,7 +332,7 @@ public abstract class CompatUIWindowManagerAbstract extends WindowlessWindowMana updateSurfacePosition(); } @Nullable @NonNull protected TaskInfo getLastTaskInfo() { return mTaskInfo; } Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUILayoutTest.java +5 −1 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import static org.mockito.Mockito.verify; import android.app.ActivityManager; import android.app.AppCompatTaskInfo.CameraCompatControlState; import android.app.TaskInfo; import android.graphics.Rect; import android.testing.AndroidTestingRunner; import android.util.Pair; import android.view.LayoutInflater; Loading Loading @@ -83,6 +84,7 @@ public class CompatUILayoutTest extends ShellTestCase { @Before public void setUp() { MockitoAnnotations.initMocks(this); doReturn(100).when(mCompatUIConfiguration).getHideSizeCompatRestartButtonTolerance(); mTaskInfo = createTaskInfo(/* hasSizeCompat= */ false, CAMERA_COMPAT_CONTROL_HIDDEN); mWindowManager = new CompatUIWindowManager(mContext, mTaskInfo, mSyncTransactionQueue, mCallback, mTaskListener, new DisplayLayout(), new CompatUIHintsState(), Loading Loading @@ -127,7 +129,6 @@ public class CompatUILayoutTest extends ShellTestCase { @Test public void testOnClickForSizeCompatHint() { mWindowManager.mHasSizeCompat = true; doReturn(true).when(mWindowManager).shouldShowSizeCompatRestartButton(mTaskInfo); mWindowManager.createLayout(/* canShow= */ true); final LinearLayout sizeCompatHint = mLayout.findViewById(R.id.size_compat_hint); sizeCompatHint.performClick(); Loading Loading @@ -222,6 +223,9 @@ public class CompatUILayoutTest extends ShellTestCase { taskInfo.taskId = TASK_ID; taskInfo.appCompatTaskInfo.topActivityInSizeCompat = hasSizeCompat; taskInfo.appCompatTaskInfo.cameraCompatControlState = cameraCompatControlState; taskInfo.appCompatTaskInfo.topActivityLetterboxHeight = 1000; taskInfo.appCompatTaskInfo.topActivityLetterboxWidth = 1000; taskInfo.configuration.windowConfiguration.setBounds(new Rect(0, 0, 2000, 2000)); return taskInfo; } }
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIWindowManagerTest.java +24 −6 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_DISMISSED; import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_HIDDEN; import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED; import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.platform.test.flag.junit.SetFlagsRule.DefaultInitValueType.DEVICE_DEFAULT; import static android.view.WindowInsets.Type.navigationBars; Loading Loading @@ -86,6 +85,8 @@ public class CompatUIWindowManagerTest extends ShellTestCase { public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(DEVICE_DEFAULT); private static final int TASK_ID = 1; private static final int TASK_WIDTH = 2000; private static final int TASK_HEIGHT = 2000; @Mock private SyncTransactionQueue mSyncTransactionQueue; @Mock private CompatUIController.CompatUICallback mCallback; Loading @@ -101,6 +102,7 @@ public class CompatUIWindowManagerTest extends ShellTestCase { @Before public void setUp() { MockitoAnnotations.initMocks(this); doReturn(100).when(mCompatUIConfiguration).getHideSizeCompatRestartButtonTolerance(); mTaskInfo = createTaskInfo(/* hasSizeCompat= */ false, CAMERA_COMPAT_CONTROL_HIDDEN); mWindowManager = new CompatUIWindowManager(mContext, mTaskInfo, mSyncTransactionQueue, mCallback, mTaskListener, new DisplayLayout(), new CompatUIHintsState(), Loading @@ -115,7 +117,6 @@ public class CompatUIWindowManagerTest extends ShellTestCase { public void testCreateSizeCompatButton() { // Doesn't create layout if show is false. mWindowManager.mHasSizeCompat = true; doReturn(true).when(mWindowManager).shouldShowSizeCompatRestartButton(mTaskInfo); assertTrue(mWindowManager.createLayout(/* canShow= */ false)); verify(mWindowManager, never()).inflateLayout(); Loading Loading @@ -147,6 +148,13 @@ public class CompatUIWindowManagerTest extends ShellTestCase { mWindowManager.mHasSizeCompat = false; assertFalse(mWindowManager.createLayout(/* canShow= */ true)); // Returns false and doesn't create layout if restart button should be hidden. clearInvocations(mWindowManager); mWindowManager.mHasSizeCompat = true; mTaskInfo.appCompatTaskInfo.topActivityLetterboxWidth = TASK_WIDTH; mTaskInfo.appCompatTaskInfo.topActivityLetterboxHeight = TASK_HEIGHT; assertFalse(mWindowManager.createLayout(/* canShow= */ true)); verify(mWindowManager, never()).inflateLayout(); } Loading Loading @@ -293,8 +301,6 @@ public class CompatUIWindowManagerTest extends ShellTestCase { @Test public void testUpdateCompatInfoLayoutNotInflatedYet() { mWindowManager.mHasSizeCompat = true; doReturn(true).when(mWindowManager).shouldShowSizeCompatRestartButton(any()); mWindowManager.createLayout(/* canShow= */ false); verify(mWindowManager, never()).inflateLayout(); Loading @@ -314,6 +320,15 @@ public class CompatUIWindowManagerTest extends ShellTestCase { mWindowManager.updateCompatInfo(taskInfo, mTaskListener, /* canShow= */ true); verify(mWindowManager).inflateLayout(); // Change shouldShowSizeCompatRestartButton to false and pass canShow true, layout // shouldn't be inflated clearInvocations(mWindowManager); taskInfo.appCompatTaskInfo.topActivityLetterboxWidth = TASK_WIDTH; taskInfo.appCompatTaskInfo.topActivityLetterboxHeight = TASK_HEIGHT; mWindowManager.updateCompatInfo(taskInfo, mTaskListener, /* canShow= */ true); verify(mWindowManager, never()).inflateLayout(); } @Test Loading Loading @@ -364,7 +379,6 @@ public class CompatUIWindowManagerTest extends ShellTestCase { // Create button if it is not created. mWindowManager.mLayout = null; mWindowManager.mHasSizeCompat = true; doReturn(true).when(mWindowManager).shouldShowSizeCompatRestartButton(mTaskInfo); mWindowManager.updateVisibility(/* canShow= */ true); verify(mWindowManager).createLayout(/* canShow= */ true); Loading Loading @@ -489,7 +503,6 @@ public class CompatUIWindowManagerTest extends ShellTestCase { TaskInfo taskInfo = createTaskInfo(true, CAMERA_COMPAT_CONTROL_HIDDEN); taskInfo.configuration.windowConfiguration.setBounds(new Rect(0, 0, 2000, 2000)); taskInfo.appCompatTaskInfo.topActivityLetterboxHeight = 2000; taskInfo.configuration.windowConfiguration.setWindowingMode(WINDOWING_MODE_FULLSCREEN); taskInfo.appCompatTaskInfo.topActivityLetterboxWidth = 1850; assertFalse(mWindowManager.shouldShowSizeCompatRestartButton(taskInfo)); Loading @@ -514,6 +527,11 @@ public class CompatUIWindowManagerTest extends ShellTestCase { taskInfo.appCompatTaskInfo.topActivityInSizeCompat = hasSizeCompat; taskInfo.appCompatTaskInfo.cameraCompatControlState = cameraCompatControlState; taskInfo.configuration.uiMode &= ~Configuration.UI_MODE_TYPE_DESK; // Letterboxed activity that takes half the screen should show size compat restart button taskInfo.configuration.windowConfiguration.setBounds( new Rect(0, 0, TASK_WIDTH, TASK_HEIGHT)); taskInfo.appCompatTaskInfo.topActivityLetterboxHeight = 1000; taskInfo.appCompatTaskInfo.topActivityLetterboxWidth = 1000; return taskInfo; } }