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

Commit 7f2ea4cc authored by Beverly Tai's avatar Beverly Tai Committed by Automerger Merge Worker
Browse files

Merge "Update burn-in offsets for the lock icon on AoD => LS" into sc-v2-dev am: b49a1c2b

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

Change-Id: I22f4d27cffbf3bb52d6a9051cf34a01b729d48ec
parents 9bd21329 b49a1c2b
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -218,11 +218,14 @@ public class LockIconView extends FrameLayout implements Dumpable {

    @Override
    public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
        pw.println("Center in px (x, y)= (" + mLockIconCenter.x + ", " + mLockIconCenter.y + ")");
        pw.println("Lock Icon View Parameters:");
        pw.println("    Center in px (x, y)= ("
                + mLockIconCenter.x + ", " + mLockIconCenter.y + ")");
        pw.println("    Radius in pixels: " + mRadius);
        pw.println("topLeft= (" + getX() + ", " + getY() + ")");
        pw.println("topLeft= (" + getX() + ", " + getY() + ")");
        pw.println("    mIconType=" + typeToString(mIconType));
        pw.println("    mAod=" + mAod);
        pw.println("Lock Icon View actual measurements:");
        pw.println("    topLeft= (" + getX() + ", " + getY() + ")");
        pw.println("    width=" + getWidth() + " height=" + getHeight());
    }
}
+2 −4
Original line number Diff line number Diff line
@@ -425,11 +425,9 @@ public class LockIconViewController extends ViewController<LockIconView> impleme
            mAodFp.setAlpha(255 * mInterpolatedDarkAmount);
        }

        if (mShowAodLockIcon) {
        mView.setTranslationX(offsetX);
        mView.setTranslationY(offsetY);
    }
    }

    private void updateIsUdfpsEnrolled() {
        boolean wasUdfpsSupported = mUdfpsSupported;
+53 −0
Original line number Diff line number Diff line
@@ -16,12 +16,14 @@

package com.android.systemui.keyguard;

import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
import static com.android.keyguard.LockIconView.ICON_LOCK;
import static com.android.keyguard.LockIconView.ICON_UNLOCK;

import static junit.framework.Assert.assertEquals;

import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyBoolean;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.never;
@@ -57,6 +59,7 @@ import com.android.systemui.R;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.biometrics.AuthController;
import com.android.systemui.biometrics.AuthRippleController;
import com.android.systemui.doze.util.BurnInHelperKt;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
@@ -68,6 +71,7 @@ import com.android.systemui.util.time.FakeSystemClock;

import com.airbnb.lottie.LottieAnimationView;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -76,6 +80,8 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.MockitoSession;
import org.mockito.quality.Strictness;

import java.util.ArrayList;
import java.util.List;
@@ -86,6 +92,8 @@ import java.util.List;
public class LockIconViewControllerTest extends SysuiTestCase {
    private static final String UNLOCKED_LABEL = "unlocked";

    private MockitoSession mStaticMockSession;

    private @Mock LockIconView mLockIconView;
    private @Mock AnimatedStateListDrawable mIconDrawable;
    private @Mock Context mContext;
@@ -133,6 +141,10 @@ public class LockIconViewControllerTest extends SysuiTestCase {

    @Before
    public void setUp() throws Exception {
        mStaticMockSession = mockitoSession()
                .mockStatic(BurnInHelperKt.class)
                .strictness(Strictness.LENIENT)
                .startMocking();
        MockitoAnnotations.initMocks(this);

        when(mLockIconView.getResources()).thenReturn(mResources);
@@ -169,6 +181,11 @@ public class LockIconViewControllerTest extends SysuiTestCase {
        );
    }

    @After
    public void tearDown() {
        mStaticMockSession.finishMocking();
    }

    @Test
    public void testIgnoreUdfpsWhenNotSupported() {
        // GIVEN Udpfs sensor is NOT available
@@ -369,6 +386,42 @@ public class LockIconViewControllerTest extends SysuiTestCase {
        verify(mLockIconView).updateIcon(ICON_LOCK, true);
    }

    @Test
    public void testBurnInOffsetsUpdated_onDozeAmountChanged() {
        // GIVEN udfps enrolled
        setupUdfps();
        when(mKeyguardUpdateMonitor.isUdfpsEnrolled()).thenReturn(true);

        // GIVEN burn-in offset = 5
        int burnInOffset = 5;
        when(BurnInHelperKt.getBurnInOffset(anyInt(), anyBoolean())).thenReturn(burnInOffset);

        // GIVEN starting state for the lock icon (keyguard)
        setupShowLockIcon();
        mLockIconViewController.init();
        captureAttachListener();
        mAttachListener.onViewAttachedToWindow(mLockIconView);
        captureStatusBarStateListener();
        reset(mLockIconView);

        // WHEN dozing updates
        mStatusBarStateListener.onDozingChanged(true /* isDozing */);
        mStatusBarStateListener.onDozeAmountChanged(1f, 1f);

        // THEN the view's translation is updated to use the AoD burn-in offsets
        verify(mLockIconView).setTranslationY(burnInOffset);
        verify(mLockIconView).setTranslationX(burnInOffset);
        reset(mLockIconView);

        // WHEN the device is no longer dozing
        mStatusBarStateListener.onDozingChanged(false /* isDozing */);
        mStatusBarStateListener.onDozeAmountChanged(0f, 0f);

        // THEN the view is updated to NO translation (no burn-in offsets anymore)
        verify(mLockIconView).setTranslationY(0);
        verify(mLockIconView).setTranslationX(0);

    }
    private Pair<Integer, PointF> setupUdfps() {
        when(mKeyguardUpdateMonitor.isUdfpsSupported()).thenReturn(true);
        final PointF udfpsLocation = new PointF(50, 75);