Loading res/layout/confirm_lock_pattern_internal_base.xml +1 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ style="@style/LockPatternIconStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="?attr/suwGlifHeaderGravity" android:src="@drawable/ic_lock" /> <TextView Loading src/com/android/settings/password/ChooseLockSettingsHelper.java +10 −2 Original line number Diff line number Diff line Loading @@ -21,16 +21,15 @@ import android.app.Activity; import android.app.Fragment; import android.app.KeyguardManager; import android.app.admin.DevicePolicyManager; import android.content.Context; import android.content.Intent; import android.content.IntentSender; import android.os.UserManager; import android.provider.Settings; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.widget.LockPatternUtils; import com.android.settings.SettingsActivity; import com.android.settings.Utils; import com.android.setupwizardlib.util.WizardManagerHelper; public final class ChooseLockSettingsHelper { Loading Loading @@ -278,8 +277,10 @@ public final class ChooseLockSettingsHelper { } } else { if (mFragment != null) { copyInternalExtras(mFragment.getActivity().getIntent(), intent); mFragment.startActivityForResult(intent, request); } else { copyInternalExtras(mActivity.getIntent(), intent); mActivity.startActivityForResult(intent, request); } } Loading @@ -304,4 +305,11 @@ public final class ChooseLockSettingsHelper { outIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); } } private void copyInternalExtras(Intent inIntent, Intent outIntent) { String theme = inIntent.getStringExtra(WizardManagerHelper.EXTRA_THEME); if (theme != null) { outIntent.putExtra(WizardManagerHelper.EXTRA_THEME, theme); } } } src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java +2 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.widget.LinearLayout; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.SetupWizardUtils; import com.android.settings.Utils; public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivity { Loading Loading @@ -56,7 +57,7 @@ public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivi setTheme(R.style.Theme_ConfirmDeviceCredentialsDark); mConfirmCredentialTheme = ConfirmCredentialTheme.DARK; } else { setTheme(R.style.GlifTheme_Light); setTheme(SetupWizardUtils.getTheme(getIntent())); mConfirmCredentialTheme = ConfirmCredentialTheme.INTERNAL; } super.onCreate(savedState); Loading tests/robotests/src/com/android/settings/password/ChooseLockSettingsHelperTest.java 0 → 100644 +157 −0 Original line number Diff line number Diff line package com.android.settings.password; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.anyInt; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import android.app.Activity; import android.app.admin.DevicePolicyManager; import android.content.ComponentName; import android.content.Intent; import android.os.UserHandle; import com.android.internal.widget.LockPatternUtils; import com.android.settings.TestConfig; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.ShadowUserManager; import com.android.settings.testutils.shadow.ShadowUtils; import com.android.setupwizardlib.util.WizardManagerHelper; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.Robolectric; import org.robolectric.Shadows; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowActivity; import org.robolectric.shadows.ShadowActivity.IntentForResult; @RunWith(SettingsRobolectricTestRunner.class) @Config( manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, shadows = { ShadowUserManager.class, ShadowUtils.class }) public class ChooseLockSettingsHelperTest { @Test public void testLaunchConfirmationActivityWithExternalAndChallenge() { final int userId = UserHandle.myUserId(); final int request = 100; final long challenge = 10000L; final Activity activity = Robolectric.setupActivity(Activity.class); ChooseLockSettingsHelper helper = getChooseLockSettingsHelper(activity); helper.launchConfirmationActivityWithExternalAndChallenge( request, // request "title", "header", "description", true, // external challenge, userId ); ShadowActivity shadowActivity = Shadows.shadowOf(activity); Intent startedIntent = shadowActivity.getNextStartedActivity(); assertEquals(new ComponentName("com.android.settings", ConfirmLockPattern.InternalActivity.class.getName()), startedIntent.getComponent()); assertFalse(startedIntent.getBooleanExtra( ChooseLockSettingsHelper.EXTRA_KEY_RETURN_CREDENTIALS, false)); assertTrue(startedIntent.getBooleanExtra( ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, false)); assertEquals(challenge, startedIntent.getLongExtra( ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, 0L)); assertEquals( true, (startedIntent.getFlags() & Intent.FLAG_ACTIVITY_FORWARD_RESULT) != 0); assertEquals(true, startedIntent.getBooleanExtra( ConfirmDeviceCredentialBaseFragment.ALLOW_FP_AUTHENTICATION, false)); assertEquals(true, startedIntent.getBooleanExtra( ConfirmDeviceCredentialBaseFragment.DARK_THEME, false)); assertEquals(true, startedIntent.getBooleanExtra( ConfirmDeviceCredentialBaseFragment.SHOW_CANCEL_BUTTON, false)); assertEquals(true, startedIntent.getBooleanExtra( ConfirmDeviceCredentialBaseFragment.SHOW_WHEN_LOCKED, false)); } @Test public void testLaunchConfirmationActivityInternalAndChallenge() { final int userId = UserHandle.myUserId(); final int request = 100; final long challenge = 10000L; final Activity activity = Robolectric.setupActivity(Activity.class); ChooseLockSettingsHelper helper = getChooseLockSettingsHelper(activity); helper.launchConfirmationActivityWithExternalAndChallenge( request, "title", "header", "description", false, // external challenge, userId ); ShadowActivity shadowActivity = Shadows.shadowOf(activity); Intent startedIntent = shadowActivity.getNextStartedActivity(); assertEquals(new ComponentName("com.android.settings", ConfirmLockPattern.InternalActivity.class.getName()), startedIntent.getComponent()); assertFalse(startedIntent.getBooleanExtra( ChooseLockSettingsHelper.EXTRA_KEY_RETURN_CREDENTIALS, false)); assertTrue(startedIntent.getBooleanExtra( ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, false)); assertEquals(challenge, startedIntent.getLongExtra( ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, 0L)); assertEquals( false, (startedIntent.getFlags() & Intent.FLAG_ACTIVITY_FORWARD_RESULT) != 0); assertEquals(false, startedIntent.getBooleanExtra( ConfirmDeviceCredentialBaseFragment.ALLOW_FP_AUTHENTICATION, false)); assertEquals(false, startedIntent.getBooleanExtra( ConfirmDeviceCredentialBaseFragment.DARK_THEME, false)); assertEquals(false, startedIntent.getBooleanExtra( ConfirmDeviceCredentialBaseFragment.SHOW_CANCEL_BUTTON, false)); assertEquals(false, startedIntent.getBooleanExtra( ConfirmDeviceCredentialBaseFragment.SHOW_WHEN_LOCKED, false)); } @Test public void testLaunchConfirmationActivity_internal_shouldPropagateTheme() { Intent intent = new Intent() .putExtra(WizardManagerHelper.EXTRA_THEME, WizardManagerHelper.THEME_GLIF_V2); Activity activity = Robolectric.buildActivity(Activity.class) .withIntent(intent) .get(); ChooseLockSettingsHelper helper = getChooseLockSettingsHelper(activity); helper.launchConfirmationActivity(123, "test title", true, 0 /* userId */); ShadowActivity shadowActivity = Shadows.shadowOf(activity); IntentForResult startedActivity = shadowActivity.getNextStartedActivityForResult(); assertThat(startedActivity.requestCode).isEqualTo(123); assertThat(startedActivity.intent.getStringExtra(WizardManagerHelper.EXTRA_THEME)) .isEqualTo(WizardManagerHelper.THEME_GLIF_V2); } private ChooseLockSettingsHelper getChooseLockSettingsHelper(Activity activity) { LockPatternUtils mockLockPatternUtils = mock(LockPatternUtils.class); when(mockLockPatternUtils.getKeyguardStoredPasswordQuality(anyInt())) .thenReturn(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING); ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(activity); helper.mLockPatternUtils = mockLockPatternUtils; return helper; } } tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -34,7 +34,7 @@ import java.util.List; * This class provides the API 24 implementation of UserManager.get(Context). */ @Implements(UserManager.class) public class ShadowUserManager { public class ShadowUserManager extends org.robolectric.shadows.ShadowUserManager { private SparseArray<UserInfo> mUserInfos = new SparseArray<>(); Loading Loading
res/layout/confirm_lock_pattern_internal_base.xml +1 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ style="@style/LockPatternIconStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="?attr/suwGlifHeaderGravity" android:src="@drawable/ic_lock" /> <TextView Loading
src/com/android/settings/password/ChooseLockSettingsHelper.java +10 −2 Original line number Diff line number Diff line Loading @@ -21,16 +21,15 @@ import android.app.Activity; import android.app.Fragment; import android.app.KeyguardManager; import android.app.admin.DevicePolicyManager; import android.content.Context; import android.content.Intent; import android.content.IntentSender; import android.os.UserManager; import android.provider.Settings; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.widget.LockPatternUtils; import com.android.settings.SettingsActivity; import com.android.settings.Utils; import com.android.setupwizardlib.util.WizardManagerHelper; public final class ChooseLockSettingsHelper { Loading Loading @@ -278,8 +277,10 @@ public final class ChooseLockSettingsHelper { } } else { if (mFragment != null) { copyInternalExtras(mFragment.getActivity().getIntent(), intent); mFragment.startActivityForResult(intent, request); } else { copyInternalExtras(mActivity.getIntent(), intent); mActivity.startActivityForResult(intent, request); } } Loading @@ -304,4 +305,11 @@ public final class ChooseLockSettingsHelper { outIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); } } private void copyInternalExtras(Intent inIntent, Intent outIntent) { String theme = inIntent.getStringExtra(WizardManagerHelper.EXTRA_THEME); if (theme != null) { outIntent.putExtra(WizardManagerHelper.EXTRA_THEME, theme); } } }
src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java +2 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.widget.LinearLayout; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.SetupWizardUtils; import com.android.settings.Utils; public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivity { Loading Loading @@ -56,7 +57,7 @@ public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivi setTheme(R.style.Theme_ConfirmDeviceCredentialsDark); mConfirmCredentialTheme = ConfirmCredentialTheme.DARK; } else { setTheme(R.style.GlifTheme_Light); setTheme(SetupWizardUtils.getTheme(getIntent())); mConfirmCredentialTheme = ConfirmCredentialTheme.INTERNAL; } super.onCreate(savedState); Loading
tests/robotests/src/com/android/settings/password/ChooseLockSettingsHelperTest.java 0 → 100644 +157 −0 Original line number Diff line number Diff line package com.android.settings.password; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.anyInt; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import android.app.Activity; import android.app.admin.DevicePolicyManager; import android.content.ComponentName; import android.content.Intent; import android.os.UserHandle; import com.android.internal.widget.LockPatternUtils; import com.android.settings.TestConfig; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.ShadowUserManager; import com.android.settings.testutils.shadow.ShadowUtils; import com.android.setupwizardlib.util.WizardManagerHelper; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.Robolectric; import org.robolectric.Shadows; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowActivity; import org.robolectric.shadows.ShadowActivity.IntentForResult; @RunWith(SettingsRobolectricTestRunner.class) @Config( manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, shadows = { ShadowUserManager.class, ShadowUtils.class }) public class ChooseLockSettingsHelperTest { @Test public void testLaunchConfirmationActivityWithExternalAndChallenge() { final int userId = UserHandle.myUserId(); final int request = 100; final long challenge = 10000L; final Activity activity = Robolectric.setupActivity(Activity.class); ChooseLockSettingsHelper helper = getChooseLockSettingsHelper(activity); helper.launchConfirmationActivityWithExternalAndChallenge( request, // request "title", "header", "description", true, // external challenge, userId ); ShadowActivity shadowActivity = Shadows.shadowOf(activity); Intent startedIntent = shadowActivity.getNextStartedActivity(); assertEquals(new ComponentName("com.android.settings", ConfirmLockPattern.InternalActivity.class.getName()), startedIntent.getComponent()); assertFalse(startedIntent.getBooleanExtra( ChooseLockSettingsHelper.EXTRA_KEY_RETURN_CREDENTIALS, false)); assertTrue(startedIntent.getBooleanExtra( ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, false)); assertEquals(challenge, startedIntent.getLongExtra( ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, 0L)); assertEquals( true, (startedIntent.getFlags() & Intent.FLAG_ACTIVITY_FORWARD_RESULT) != 0); assertEquals(true, startedIntent.getBooleanExtra( ConfirmDeviceCredentialBaseFragment.ALLOW_FP_AUTHENTICATION, false)); assertEquals(true, startedIntent.getBooleanExtra( ConfirmDeviceCredentialBaseFragment.DARK_THEME, false)); assertEquals(true, startedIntent.getBooleanExtra( ConfirmDeviceCredentialBaseFragment.SHOW_CANCEL_BUTTON, false)); assertEquals(true, startedIntent.getBooleanExtra( ConfirmDeviceCredentialBaseFragment.SHOW_WHEN_LOCKED, false)); } @Test public void testLaunchConfirmationActivityInternalAndChallenge() { final int userId = UserHandle.myUserId(); final int request = 100; final long challenge = 10000L; final Activity activity = Robolectric.setupActivity(Activity.class); ChooseLockSettingsHelper helper = getChooseLockSettingsHelper(activity); helper.launchConfirmationActivityWithExternalAndChallenge( request, "title", "header", "description", false, // external challenge, userId ); ShadowActivity shadowActivity = Shadows.shadowOf(activity); Intent startedIntent = shadowActivity.getNextStartedActivity(); assertEquals(new ComponentName("com.android.settings", ConfirmLockPattern.InternalActivity.class.getName()), startedIntent.getComponent()); assertFalse(startedIntent.getBooleanExtra( ChooseLockSettingsHelper.EXTRA_KEY_RETURN_CREDENTIALS, false)); assertTrue(startedIntent.getBooleanExtra( ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, false)); assertEquals(challenge, startedIntent.getLongExtra( ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, 0L)); assertEquals( false, (startedIntent.getFlags() & Intent.FLAG_ACTIVITY_FORWARD_RESULT) != 0); assertEquals(false, startedIntent.getBooleanExtra( ConfirmDeviceCredentialBaseFragment.ALLOW_FP_AUTHENTICATION, false)); assertEquals(false, startedIntent.getBooleanExtra( ConfirmDeviceCredentialBaseFragment.DARK_THEME, false)); assertEquals(false, startedIntent.getBooleanExtra( ConfirmDeviceCredentialBaseFragment.SHOW_CANCEL_BUTTON, false)); assertEquals(false, startedIntent.getBooleanExtra( ConfirmDeviceCredentialBaseFragment.SHOW_WHEN_LOCKED, false)); } @Test public void testLaunchConfirmationActivity_internal_shouldPropagateTheme() { Intent intent = new Intent() .putExtra(WizardManagerHelper.EXTRA_THEME, WizardManagerHelper.THEME_GLIF_V2); Activity activity = Robolectric.buildActivity(Activity.class) .withIntent(intent) .get(); ChooseLockSettingsHelper helper = getChooseLockSettingsHelper(activity); helper.launchConfirmationActivity(123, "test title", true, 0 /* userId */); ShadowActivity shadowActivity = Shadows.shadowOf(activity); IntentForResult startedActivity = shadowActivity.getNextStartedActivityForResult(); assertThat(startedActivity.requestCode).isEqualTo(123); assertThat(startedActivity.intent.getStringExtra(WizardManagerHelper.EXTRA_THEME)) .isEqualTo(WizardManagerHelper.THEME_GLIF_V2); } private ChooseLockSettingsHelper getChooseLockSettingsHelper(Activity activity) { LockPatternUtils mockLockPatternUtils = mock(LockPatternUtils.class); when(mockLockPatternUtils.getKeyguardStoredPasswordQuality(anyInt())) .thenReturn(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING); ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(activity); helper.mLockPatternUtils = mockLockPatternUtils; return helper; } }
tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -34,7 +34,7 @@ import java.util.List; * This class provides the API 24 implementation of UserManager.get(Context). */ @Implements(UserManager.class) public class ShadowUserManager { public class ShadowUserManager extends org.robolectric.shadows.ShadowUserManager { private SparseArray<UserInfo> mUserInfos = new SparseArray<>(); Loading