Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2e682217 authored by Eghosa Ewansiha-Vlachavas's avatar Eghosa Ewansiha-Vlachavas Committed by Automerger Merge Worker
Browse files

Merge "[3/n] Optimize user aspect ratio button heuristic" into udc-qpr-dev am:...

Merge "[3/n] Optimize user aspect ratio button heuristic" into udc-qpr-dev am: f0d77596 am: 23b9d378

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/24793206



Change-Id: Id5346e8d861c200cbdbebdab747a03fccf384e3c
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 84c5a997 23b9d378
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -192,6 +192,12 @@ class UserAspectRatioSettingsWindowManager extends CompatUIWindowManagerAbstract
        }
    }

    @VisibleForTesting
    boolean isShowingButton() {
        return (mUserAspectRatioButtonShownChecker.get()
                && !isHideDelayReached(mNextButtonHideTimeMs));
    }

    private void showUserAspectRatioButton() {
        if (mLayout == null) {
            return;
@@ -224,7 +230,7 @@ class UserAspectRatioSettingsWindowManager extends CompatUIWindowManagerAbstract
        return taskInfo.topActivityEligibleForUserAspectRatioButton
                && (taskInfo.topActivityBoundsLetterboxed
                    || taskInfo.isUserFullscreenOverrideEnabled)
                && !mUserAspectRatioButtonShownChecker.get();
                && (!mUserAspectRatioButtonShownChecker.get() || isShowingButton());
    }

    private long getDisappearTimeMs() {
+41 −2
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import android.content.ComponentName;
import android.content.res.Configuration;
import android.graphics.Rect;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper.RunWithLooper;
import android.util.Pair;
import android.view.DisplayInfo;
import android.view.InsetsSource;
@@ -66,6 +67,7 @@ import org.mockito.MockitoAnnotations;
import java.util.HashSet;
import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.Supplier;

/**
 * Tests for {@link UserAspectRatioSettingsWindowManager}.
@@ -74,6 +76,7 @@ import java.util.function.BiConsumer;
 *  atest WMShellUnitTests:UserAspectRatioSettingsWindowManagerTest
 */
@RunWith(AndroidTestingRunner.class)
@RunWithLooper
@SmallTest
public class UserAspectRatioSettingsWindowManagerTest extends ShellTestCase {

@@ -81,6 +84,8 @@ public class UserAspectRatioSettingsWindowManagerTest extends ShellTestCase {

    @Mock private SyncTransactionQueue mSyncTransactionQueue;
    @Mock
    private Supplier<Boolean> mUserAspectRatioButtonShownChecker;
    @Mock
    private BiConsumer<TaskInfo, ShellTaskOrganizer.TaskListener>
            mOnUserAspectRatioSettingsButtonClicked;
    @Mock private ShellTaskOrganizer.TaskListener mTaskListener;
@@ -106,11 +111,12 @@ public class UserAspectRatioSettingsWindowManagerTest extends ShellTestCase {
                false, /* topActivityBoundsLetterboxed */ true);
        mWindowManager = new UserAspectRatioSettingsWindowManager(mContext, mTaskInfo,
                mSyncTransactionQueue, mTaskListener, new DisplayLayout(), new CompatUIHintsState(),
                mOnUserAspectRatioSettingsButtonClicked, mExecutor, flags -> 0, () -> false,
                s -> {});
                mOnUserAspectRatioSettingsButtonClicked, mExecutor, flags -> 0,
                mUserAspectRatioButtonShownChecker, s -> {});
        spyOn(mWindowManager);
        doReturn(mLayout).when(mWindowManager).inflateLayout();
        doReturn(mViewHost).when(mWindowManager).createSurfaceViewHost();
        doReturn(false).when(mUserAspectRatioButtonShownChecker).get();
    }

    @Test
@@ -293,6 +299,39 @@ public class UserAspectRatioSettingsWindowManagerTest extends ShellTestCase {
        verify(mLayout).setVisibility(View.VISIBLE);
    }

    @Test
    public void testLayoutHasUserAspectRatioSettingsButton() {
        clearInvocations(mWindowManager);
        spyOn(mWindowManager);
        TaskInfo taskInfo = createTaskInfo(/* eligibleForUserAspectRatioButton= */
                true, /* topActivityBoundsLetterboxed */ true);

        // User aspect ratio settings button has not yet been shown.
        doReturn(false).when(mUserAspectRatioButtonShownChecker).get();

        // Check the layout has the user aspect ratio settings button.
        mWindowManager.updateCompatInfo(taskInfo, mTaskListener, /* canShow= */ true);
        assertTrue(mWindowManager.mHasUserAspectRatioSettingsButton);

        // User aspect ratio settings button has been shown and is still visible.
        spyOn(mWindowManager);
        doReturn(true).when(mWindowManager).isShowingButton();
        doReturn(true).when(mUserAspectRatioButtonShownChecker).get();

        // Check the layout still has the user aspect ratio settings button.
        mWindowManager.updateCompatInfo(taskInfo, mTaskListener, /* canShow= */ true);
        assertTrue(mWindowManager.mHasUserAspectRatioSettingsButton);

        // User aspect ratio settings button has been shown and has timed out so is no longer
        // visible.
        doReturn(false).when(mWindowManager).isShowingButton();
        doReturn(true).when(mUserAspectRatioButtonShownChecker).get();

        // Check the layout no longer has the user aspect ratio button.
        mWindowManager.updateCompatInfo(taskInfo, mTaskListener, /* canShow= */ true);
        assertFalse(mWindowManager.mHasUserAspectRatioSettingsButton);
    }

    @Test
    public void testAttachToParentSurface() {
        final SurfaceControl.Builder b = new SurfaceControl.Builder();