diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java index 3a1f5015b84..0e76890ac7a 100644 --- a/src/com/android/settings/ChooseLockGeneric.java +++ b/src/com/android/settings/ChooseLockGeneric.java @@ -338,7 +338,7 @@ public class ChooseLockGeneric extends SettingsActivity { } } else if (requestCode == CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST && resultCode == FingerprintEnrollBase.RESULT_FINISHED) { - Intent intent = new Intent(getActivity(), FingerprintEnrollFindSensor.class); + Intent intent = getFindSensorIntent(getActivity()); if (data != null) { intent.putExtras(data.getExtras()); } @@ -359,6 +359,10 @@ public class ChooseLockGeneric extends SettingsActivity { } } + protected Intent getFindSensorIntent(Context context) { + return new Intent(context, FingerprintEnrollFindSensor.class); + } + @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); diff --git a/src/com/android/settings/SetupChooseLockGeneric.java b/src/com/android/settings/SetupChooseLockGeneric.java index 71679f30a80..61545a66ff1 100644 --- a/src/com/android/settings/SetupChooseLockGeneric.java +++ b/src/com/android/settings/SetupChooseLockGeneric.java @@ -33,6 +33,7 @@ import android.view.ViewGroup; import android.widget.LinearLayout; import com.android.internal.widget.LockPatternUtils; +import com.android.settings.fingerprint.SetupFingerprintEnrollFindSensor; import com.android.settings.fingerprint.SetupSkipDialog; import com.android.settings.utils.SettingsDividerItemDecoration; import com.android.setupwizardlib.GlifPreferenceLayout; @@ -242,5 +243,12 @@ public class SetupChooseLockGeneric extends ChooseLockGeneric { SetupWizardUtils.copySetupExtras(getActivity().getIntent(), intent); return intent; } + + @Override + protected Intent getFindSensorIntent(Context context) { + final Intent intent = new Intent(context, SetupFingerprintEnrollFindSensor.class); + SetupWizardUtils.copySetupExtras(getActivity().getIntent(), intent); + return intent; + } } } diff --git a/src/com/android/settings/password/SetNewPasswordActivity.java b/src/com/android/settings/password/SetNewPasswordActivity.java index 7cdf006746a..6ca90a4d21d 100644 --- a/src/com/android/settings/password/SetNewPasswordActivity.java +++ b/src/com/android/settings/password/SetNewPasswordActivity.java @@ -23,6 +23,9 @@ import android.content.Intent; import android.os.Bundle; import com.android.settings.ChooseLockGeneric; +import com.android.settings.SetupChooseLockGeneric; +import com.android.settings.Utils; + /** * Trampolines {@link DevicePolicyManager#ACTION_SET_NEW_PASSWORD} and @@ -44,8 +47,10 @@ public class SetNewPasswordActivity extends Activity implements SetNewPasswordCo @Override public void launchChooseLock(@Nullable Bundle chooseLockFingerprintExtras) { - Intent intent = new Intent(this, ChooseLockGeneric.class) - .setAction(mNewPasswordAction); + final boolean isInSetupWizard = !Utils.isDeviceProvisioned(this); + Intent intent = isInSetupWizard ? new Intent(this, SetupChooseLockGeneric.class) + : new Intent(this, ChooseLockGeneric.class); + intent.setAction(mNewPasswordAction); if (chooseLockFingerprintExtras != null) { intent.putExtras(chooseLockFingerprintExtras); } diff --git a/tests/robotests/src/com/android/settings/SetupWizardUtilsTest.java b/tests/robotests/src/com/android/settings/SetupWizardUtilsTest.java new file mode 100644 index 00000000000..1c83a1a4c7b --- /dev/null +++ b/tests/robotests/src/com/android/settings/SetupWizardUtilsTest.java @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings; + +import android.content.Intent; + +import com.android.settings.SettingsRobolectricTestRunner; +import com.android.settings.TestConfig; +import com.android.setupwizardlib.util.WizardManagerHelper; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.annotation.Config; + +import static com.google.common.truth.Truth.assertThat; + +@RunWith(SettingsRobolectricTestRunner.class) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +public class SetupWizardUtilsTest { + + @Test + public void testCopySetupExtras() throws Throwable { + Intent fromIntent = new Intent(); + final String theme = "TEST_THEME"; + fromIntent.putExtra(WizardManagerHelper.EXTRA_THEME, theme); + fromIntent.putExtra(WizardManagerHelper.EXTRA_USE_IMMERSIVE_MODE, true); + Intent toIntent = new Intent(); + SetupWizardUtils.copySetupExtras(fromIntent, toIntent); + + assertThat(theme).isEqualTo(toIntent.getStringExtra(WizardManagerHelper.EXTRA_THEME)); + assertThat(toIntent.getBooleanExtra(WizardManagerHelper.EXTRA_USE_IMMERSIVE_MODE, false)) + .isTrue(); + } +} diff --git a/tests/robotests/src/com/android/settings/password/SetNewPasswordActivityTest.java b/tests/robotests/src/com/android/settings/password/SetNewPasswordActivityTest.java new file mode 100644 index 00000000000..4c110087777 --- /dev/null +++ b/tests/robotests/src/com/android/settings/password/SetNewPasswordActivityTest.java @@ -0,0 +1,82 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.password; + +import android.content.ComponentName; +import android.content.Intent; +import android.provider.Settings; + +import com.android.settings.ChooseLockGeneric; +import com.android.settings.SettingsRobolectricTestRunner; +import com.android.settings.SetupChooseLockGeneric; +import com.android.settings.TestConfig; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RuntimeEnvironment; +import org.robolectric.annotation.Config; +import org.robolectric.shadows.ShadowActivity; + +import static com.google.common.truth.Truth.assertThat; +import static org.robolectric.Shadows.shadowOf; + +@RunWith(SettingsRobolectricTestRunner.class) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +public class SetNewPasswordActivityTest { + + private int mProvisioned; + + @Before + public void setUp() { + mProvisioned = Settings.Global.getInt(RuntimeEnvironment.application.getContentResolver(), + Settings.Global.DEVICE_PROVISIONED, 0); + } + + @After + public void tearDown() { + Settings.Global.putInt(RuntimeEnvironment.application.getContentResolver(), + Settings.Global.DEVICE_PROVISIONED, mProvisioned); + } + + @Test + public void testChooseLockGeneric() { + Settings.Global.putInt(RuntimeEnvironment.application.getContentResolver(), + Settings.Global.DEVICE_PROVISIONED, 1); + SetNewPasswordActivity activity = Robolectric.setupActivity(SetNewPasswordActivity.class); + ShadowActivity shadowActivity = shadowOf(activity); + Intent intent = shadowActivity.getNextStartedActivityForResult().intent; + + assertThat(intent.getComponent()) + .isEqualTo(new ComponentName(activity, ChooseLockGeneric.class)); + } + + @Test + public void testSetupChooseLockGeneric() { + Settings.Global.putInt(RuntimeEnvironment.application.getContentResolver(), + Settings.Global.DEVICE_PROVISIONED, 0); + SetNewPasswordActivity activity = Robolectric.setupActivity(SetNewPasswordActivity.class); + ShadowActivity shadowActivity = shadowOf(activity); + Intent intent = shadowActivity.getNextStartedActivityForResult().intent; + + assertThat(intent.getComponent()) + .isEqualTo(new ComponentName(activity, SetupChooseLockGeneric.class)); + + } +}