Loading packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java +7 −2 Original line number Diff line number Diff line Loading @@ -103,7 +103,8 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe private KeyguardSecurityModel mSecurityModel; private LockPatternUtils mLockPatternUtils; private KeyguardSecurityViewFlipper mSecurityViewFlipper; @VisibleForTesting KeyguardSecurityViewFlipper mSecurityViewFlipper; private boolean mIsVerifyUnlockOnly; private SecurityMode mCurrentSecuritySelection = SecurityMode.Invalid; private KeyguardSecurityView mCurrentSecurityView; Loading Loading @@ -375,6 +376,9 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe } public boolean startDisappearAnimation(Runnable onFinishRunnable) { if (mCurrentSecuritySelection == SecurityMode.Password) { mSecurityViewFlipper.getWindowInsetsController().hide(WindowInsets.Type.ime()); } if (mCurrentSecuritySelection != SecurityMode.None) { return getSecurityView(mCurrentSecuritySelection).startDisappearAnimation( onFinishRunnable); Loading @@ -397,7 +401,8 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe return mSecurityViewFlipper.getTitle(); } private KeyguardSecurityView getSecurityView(SecurityMode securityMode) { @VisibleForTesting protected KeyguardSecurityView getSecurityView(SecurityMode securityMode) { final int securityViewIdForMode = getSecurityViewIdForMode(securityMode); KeyguardSecurityView view = null; final int children = mSecurityViewFlipper.getChildCount(); Loading packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerTest.java +64 −9 Original line number Diff line number Diff line Loading @@ -16,31 +16,75 @@ package com.android.keyguard; import static android.view.WindowInsets.Type.ime; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; import android.test.UiThreadTest; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.view.LayoutInflater; import android.view.WindowInsetsController; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.statusbar.policy.KeyguardStateController; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; @SmallTest @RunWith(AndroidJUnit4.class) @RunWith(AndroidTestingRunner.class) @TestableLooper.RunWithLooper() public class KeyguardSecurityContainerTest extends SysuiTestCase { @UiThreadTest @Mock private KeyguardSecurityModel mKeyguardSecurityModel; @Mock private KeyguardStateController mKeyguardStateController; @Mock private KeyguardUpdateMonitor mKeyguardUpdateMonitor; @Mock private KeyguardSecurityContainer.SecurityCallback mSecurityCallback; @Mock private KeyguardSecurityView mSecurityView; @Mock private WindowInsetsController mWindowInsetsController; @Mock private KeyguardSecurityViewFlipper mSecurityViewFlipper; @Rule public MockitoRule mRule = MockitoJUnit.rule(); private KeyguardSecurityContainer mKeyguardSecurityContainer; @Before public void setup() { mDependency.injectTestDependency(KeyguardStateController.class, mKeyguardStateController); mDependency.injectTestDependency(KeyguardSecurityModel.class, mKeyguardSecurityModel); mDependency.injectTestDependency(KeyguardUpdateMonitor.class, mKeyguardUpdateMonitor); mKeyguardSecurityContainer = new KeyguardSecurityContainer(getContext()) { @Override protected KeyguardSecurityView getSecurityView( KeyguardSecurityModel.SecurityMode securityMode) { return mSecurityView; } }; mKeyguardSecurityContainer.mSecurityViewFlipper = mSecurityViewFlipper; when(mSecurityViewFlipper.getWindowInsetsController()).thenReturn(mWindowInsetsController); mKeyguardSecurityContainer.setSecurityCallback(mSecurityCallback); } @Test public void showSecurityScreen_canInflateAllModes() { mDependency.injectMockDependency(KeyguardStateController.class); KeyguardSecurityContainer keyguardSecurityContainer = new KeyguardSecurityContainer(getContext()); Context context = getContext(); for (int theme : new int[] {R.style.Theme_SystemUI, R.style.Theme_SystemUI_Light}) { Loading @@ -49,7 +93,7 @@ public class KeyguardSecurityContainerTest extends SysuiTestCase { KeyguardSecurityModel.SecurityMode[] modes = KeyguardSecurityModel.SecurityMode.values(); for (KeyguardSecurityModel.SecurityMode mode : modes) { final int resId = keyguardSecurityContainer.getLayoutIdFor(mode); final int resId = mKeyguardSecurityContainer.getLayoutIdFor(mode); if (resId == 0) { continue; } Loading @@ -57,4 +101,15 @@ public class KeyguardSecurityContainerTest extends SysuiTestCase { } } } @Test public void startDisappearAnimation_animatesKeyboard() { when(mKeyguardSecurityModel.getSecurityMode(anyInt())).thenReturn( KeyguardSecurityModel.SecurityMode.Password); mKeyguardSecurityContainer.showPrimarySecurityScreen(false /* turningOff */); mKeyguardSecurityContainer.startDisappearAnimation(null); verify(mSecurityView).startDisappearAnimation(eq(null)); verify(mWindowInsetsController).hide(eq(ime())); } } No newline at end of file Loading
packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java +7 −2 Original line number Diff line number Diff line Loading @@ -103,7 +103,8 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe private KeyguardSecurityModel mSecurityModel; private LockPatternUtils mLockPatternUtils; private KeyguardSecurityViewFlipper mSecurityViewFlipper; @VisibleForTesting KeyguardSecurityViewFlipper mSecurityViewFlipper; private boolean mIsVerifyUnlockOnly; private SecurityMode mCurrentSecuritySelection = SecurityMode.Invalid; private KeyguardSecurityView mCurrentSecurityView; Loading Loading @@ -375,6 +376,9 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe } public boolean startDisappearAnimation(Runnable onFinishRunnable) { if (mCurrentSecuritySelection == SecurityMode.Password) { mSecurityViewFlipper.getWindowInsetsController().hide(WindowInsets.Type.ime()); } if (mCurrentSecuritySelection != SecurityMode.None) { return getSecurityView(mCurrentSecuritySelection).startDisappearAnimation( onFinishRunnable); Loading @@ -397,7 +401,8 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe return mSecurityViewFlipper.getTitle(); } private KeyguardSecurityView getSecurityView(SecurityMode securityMode) { @VisibleForTesting protected KeyguardSecurityView getSecurityView(SecurityMode securityMode) { final int securityViewIdForMode = getSecurityViewIdForMode(securityMode); KeyguardSecurityView view = null; final int children = mSecurityViewFlipper.getChildCount(); Loading
packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerTest.java +64 −9 Original line number Diff line number Diff line Loading @@ -16,31 +16,75 @@ package com.android.keyguard; import static android.view.WindowInsets.Type.ime; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; import android.test.UiThreadTest; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.view.LayoutInflater; import android.view.WindowInsetsController; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.statusbar.policy.KeyguardStateController; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; @SmallTest @RunWith(AndroidJUnit4.class) @RunWith(AndroidTestingRunner.class) @TestableLooper.RunWithLooper() public class KeyguardSecurityContainerTest extends SysuiTestCase { @UiThreadTest @Mock private KeyguardSecurityModel mKeyguardSecurityModel; @Mock private KeyguardStateController mKeyguardStateController; @Mock private KeyguardUpdateMonitor mKeyguardUpdateMonitor; @Mock private KeyguardSecurityContainer.SecurityCallback mSecurityCallback; @Mock private KeyguardSecurityView mSecurityView; @Mock private WindowInsetsController mWindowInsetsController; @Mock private KeyguardSecurityViewFlipper mSecurityViewFlipper; @Rule public MockitoRule mRule = MockitoJUnit.rule(); private KeyguardSecurityContainer mKeyguardSecurityContainer; @Before public void setup() { mDependency.injectTestDependency(KeyguardStateController.class, mKeyguardStateController); mDependency.injectTestDependency(KeyguardSecurityModel.class, mKeyguardSecurityModel); mDependency.injectTestDependency(KeyguardUpdateMonitor.class, mKeyguardUpdateMonitor); mKeyguardSecurityContainer = new KeyguardSecurityContainer(getContext()) { @Override protected KeyguardSecurityView getSecurityView( KeyguardSecurityModel.SecurityMode securityMode) { return mSecurityView; } }; mKeyguardSecurityContainer.mSecurityViewFlipper = mSecurityViewFlipper; when(mSecurityViewFlipper.getWindowInsetsController()).thenReturn(mWindowInsetsController); mKeyguardSecurityContainer.setSecurityCallback(mSecurityCallback); } @Test public void showSecurityScreen_canInflateAllModes() { mDependency.injectMockDependency(KeyguardStateController.class); KeyguardSecurityContainer keyguardSecurityContainer = new KeyguardSecurityContainer(getContext()); Context context = getContext(); for (int theme : new int[] {R.style.Theme_SystemUI, R.style.Theme_SystemUI_Light}) { Loading @@ -49,7 +93,7 @@ public class KeyguardSecurityContainerTest extends SysuiTestCase { KeyguardSecurityModel.SecurityMode[] modes = KeyguardSecurityModel.SecurityMode.values(); for (KeyguardSecurityModel.SecurityMode mode : modes) { final int resId = keyguardSecurityContainer.getLayoutIdFor(mode); final int resId = mKeyguardSecurityContainer.getLayoutIdFor(mode); if (resId == 0) { continue; } Loading @@ -57,4 +101,15 @@ public class KeyguardSecurityContainerTest extends SysuiTestCase { } } } @Test public void startDisappearAnimation_animatesKeyboard() { when(mKeyguardSecurityModel.getSecurityMode(anyInt())).thenReturn( KeyguardSecurityModel.SecurityMode.Password); mKeyguardSecurityContainer.showPrimarySecurityScreen(false /* turningOff */); mKeyguardSecurityContainer.startDisappearAnimation(null); verify(mSecurityView).startDisappearAnimation(eq(null)); verify(mWindowInsetsController).hide(eq(ime())); } } No newline at end of file