From 2eb170cd6ff43db01dc0ff3c1fcac5ebba4489de Mon Sep 17 00:00:00 2001 From: Maurice Lam Date: Fri, 28 Apr 2017 16:18:47 -0700 Subject: [PATCH] Clean up choose lock intent creation Consolidated the many variants of ChooseLock*.createIntent, so that it will take the same set of arguments. Also modified SetupChooseLock*.createIntent to modifyIntentForSetup, which will take the intent created by ChooseLock* and modify it for use with setup. Test: cd tests/robotests && mma Change-Id: I5ff033f459c33ec9980872a536b3996d89f2bbbb --- AndroidManifest.xml | 34 +++--- .../android/settings/CredentialStorage.java | 8 +- .../android/settings/CryptKeeperSettings.java | 2 + .../settings/EncryptionInterstitial.java | 1 + src/com/android/settings/MasterClear.java | 6 +- src/com/android/settings/ResetNetwork.java | 5 +- .../settings/ScreenPinningSettings.java | 1 + .../android/settings/SecuritySettings.java | 12 ++- src/com/android/settings/Settings.java | 1 + ...ccessibilityServicePreferenceFragment.java | 10 +- .../settings/accounts/AddAccountSettings.java | 6 +- .../settings/applications/ConvertToFbe.java | 2 +- .../core/gateway/SettingsGateway.java | 4 +- .../development/DevelopmentSettings.java | 2 +- .../BuildNumberPreferenceController.java | 2 +- .../fingerprint/FingerprintEnrollBase.java | 4 +- .../FingerprintEnrollEnrolling.java | 2 +- .../FingerprintEnrollFindSensor.java | 2 +- .../FingerprintEnrollIntroduction.java | 4 +- .../fingerprint/FingerprintEnrollSidecar.java | 3 +- .../fingerprint/FingerprintSettings.java | 11 +- .../SetupFingerprintEnrollFindSensor.java | 2 +- .../SetupFingerprintEnrollFinish.java | 2 +- .../SetupFingerprintEnrollIntroduction.java | 2 +- .../{ => password}/ChooseLockGeneric.java | 98 +++++++---------- .../{ => password}/ChooseLockPassword.java | 94 +++++++--------- .../{ => password}/ChooseLockPattern.java | 57 ++++++---- .../ChooseLockSettingsHelper.java | 10 +- .../ConfirmDeviceCredentialActivity.java | 3 +- .../ConfirmDeviceCredentialBaseActivity.java | 6 +- .../ConfirmDeviceCredentialBaseFragment.java | 5 +- .../{ => password}/ConfirmLockPassword.java | 5 +- .../{ => password}/ConfirmLockPattern.java | 4 +- .../CredentialCheckResultTracker.java | 2 +- .../ManagedLockPasswordProvider.java | 10 +- .../password/PasswordRequirementAdapter.java | 6 +- .../SaveChosenLockWorkerBase.java | 2 +- .../password/SetNewPasswordActivity.java | 2 - .../password/SetNewPasswordController.java | 3 +- .../SetupChooseLockGeneric.java | 57 ++-------- .../SetupChooseLockPassword.java | 38 ++----- .../SetupChooseLockPattern.java | 29 ++--- .../android/settings/users/UserSettings.java | 6 +- .../{ => password}/ChooseLockGenericTest.java | 4 +- .../ConfirmLockPasswordTest.java | 4 +- .../grandfather_not_implementing_indexable | 4 +- ...randfather_not_implementing_instrumentable | 8 +- .../settings/SetupChooseLockPatternTest.java | 12 ++- .../FingerprintEnrollFindSensorTest.java | 2 +- .../password/ChooseLockPasswordTest.java | 100 ++++++++++++++++++ .../password/ChooseLockPatternTest.java | 100 ++++++++++++++++++ .../{ => password}/ConfirmCredentialTest.java | 18 ++-- .../password/SetNewPasswordActivityTest.java | 9 +- .../SetNewPasswordControllerTest.java | 33 +++--- .../ChooseLockSettingsHelperTest.java | 16 +-- 55 files changed, 510 insertions(+), 365 deletions(-) rename src/com/android/settings/{ => password}/ChooseLockGeneric.java (92%) rename src/com/android/settings/{ => password}/ChooseLockPassword.java (92%) rename src/com/android/settings/{ => password}/ChooseLockPattern.java (95%) rename src/com/android/settings/{ => password}/ChooseLockSettingsHelper.java (97%) rename src/com/android/settings/{ => password}/ConfirmDeviceCredentialActivity.java (98%) rename src/com/android/settings/{ => password}/ConfirmDeviceCredentialBaseActivity.java (97%) rename src/com/android/settings/{ => password}/ConfirmDeviceCredentialBaseFragment.java (99%) rename src/com/android/settings/{ => password}/ConfirmLockPassword.java (99%) rename src/com/android/settings/{ => password}/ConfirmLockPattern.java (99%) rename src/com/android/settings/{ => password}/CredentialCheckResultTracker.java (98%) rename src/com/android/settings/{ => password}/ManagedLockPasswordProvider.java (92%) rename src/com/android/settings/{ => password}/SaveChosenLockWorkerBase.java (98%) rename src/com/android/settings/{ => password}/SetupChooseLockGeneric.java (76%) rename src/com/android/settings/{ => password}/SetupChooseLockPassword.java (63%) rename src/com/android/settings/{ => password}/SetupChooseLockPattern.java (67%) rename tests/app/src/com/android/settings/{ => password}/ChooseLockGenericTest.java (98%) rename tests/app/src/com/android/settings/{ => password}/ConfirmLockPasswordTest.java (97%) create mode 100644 tests/robotests/src/com/android/settings/password/ChooseLockPasswordTest.java create mode 100644 tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java rename tests/robotests/src/com/android/settings/{ => password}/ConfirmCredentialTest.java (72%) rename tests/unit/src/com/android/settings/{ => password}/ChooseLockSettingsHelperTest.java (99%) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 24b96328168..970ee76c7f0 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1497,7 +1497,7 @@ - @@ -1505,9 +1505,13 @@ + + - - - @@ -1593,17 +1597,17 @@ - - - @@ -1613,7 +1617,7 @@ - @@ -1660,27 +1664,27 @@ android:resource="@string/suggested_fingerprint_lock_settings_summary" /> - + android:excludeFromRecents="true" /> - - - - diff --git a/src/com/android/settings/CredentialStorage.java b/src/com/android/settings/CredentialStorage.java index d662c2ed5c6..03a5f4bbd0a 100644 --- a/src/com/android/settings/CredentialStorage.java +++ b/src/com/android/settings/CredentialStorage.java @@ -47,14 +47,16 @@ import android.widget.Toast; import com.android.internal.widget.LockPatternUtils; import com.android.org.bouncycastle.asn1.ASN1InputStream; import com.android.org.bouncycastle.asn1.pkcs.PrivateKeyInfo; +import com.android.settings.password.ChooseLockGeneric; +import com.android.settings.password.ChooseLockSettingsHelper; import com.android.settings.vpn2.VpnUtils; -import sun.security.util.ObjectIdentifier; -import sun.security.x509.AlgorithmId; - import java.io.ByteArrayInputStream; import java.io.IOException; +import sun.security.util.ObjectIdentifier; +import sun.security.x509.AlgorithmId; + /** * CredentialStorage handles KeyStore reset, unlock, and install. * diff --git a/src/com/android/settings/CryptKeeperSettings.java b/src/com/android/settings/CryptKeeperSettings.java index d9b98f0f5aa..e11bccd7cc0 100644 --- a/src/com/android/settings/CryptKeeperSettings.java +++ b/src/com/android/settings/CryptKeeperSettings.java @@ -37,6 +37,8 @@ import android.widget.Button; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.core.InstrumentedPreferenceFragment; +import com.android.settings.password.ChooseLockSettingsHelper; +import com.android.settings.password.ConfirmLockPattern; public class CryptKeeperSettings extends InstrumentedPreferenceFragment { private static final String TAG = "CryptKeeper"; diff --git a/src/com/android/settings/EncryptionInterstitial.java b/src/com/android/settings/EncryptionInterstitial.java index ed9596d9c24..c352bf0b93d 100644 --- a/src/com/android/settings/EncryptionInterstitial.java +++ b/src/com/android/settings/EncryptionInterstitial.java @@ -36,6 +36,7 @@ import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.core.InstrumentedFragment; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; +import com.android.settings.password.ChooseLockSettingsHelper; import com.android.setupwizardlib.GlifLayout; import java.util.List; diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java index ef4190b2ccf..77c6091a565 100644 --- a/src/com/android/settings/MasterClear.java +++ b/src/com/android/settings/MasterClear.java @@ -16,6 +16,8 @@ package com.android.settings; +import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; + import android.accounts.Account; import android.accounts.AccountManager; import android.accounts.AuthenticatorDescription; @@ -48,13 +50,13 @@ import android.widget.ScrollView; import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; +import com.android.settings.password.ChooseLockSettingsHelper; +import com.android.settings.password.ConfirmLockPattern; import com.android.settings.widget.CarrierDemoPasswordDialogFragment; import com.android.settingslib.RestrictedLockUtils; import java.util.List; -import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; - /** * Confirm and execute a reset of the device to a clean "just out of the box" * state. Multiple confirmations are required: first, a general "are you sure diff --git a/src/com/android/settings/ResetNetwork.java b/src/com/android/settings/ResetNetwork.java index 45490ab7b31..1529e777f74 100644 --- a/src/com/android/settings/ResetNetwork.java +++ b/src/com/android/settings/ResetNetwork.java @@ -34,13 +34,14 @@ import android.widget.Spinner; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.telephony.PhoneConstants; +import com.android.settings.password.ChooseLockSettingsHelper; +import com.android.settings.password.ConfirmLockPattern; import com.android.settingslib.RestrictedLockUtils; +import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import java.util.ArrayList; import java.util.List; -import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; - /** * Confirm and execute a reset of the device's network settings to a clean "just out of the box" * state. Multiple confirmations are required: first, a general "are you sure you want to do this?" diff --git a/src/com/android/settings/ScreenPinningSettings.java b/src/com/android/settings/ScreenPinningSettings.java index d74a07fa154..c4870f74510 100644 --- a/src/com/android/settings/ScreenPinningSettings.java +++ b/src/com/android/settings/ScreenPinningSettings.java @@ -33,6 +33,7 @@ import android.widget.Switch; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.widget.LockPatternUtils; +import com.android.settings.password.ChooseLockGeneric; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settings.search.SearchIndexableRaw; diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java index 9d44c42c85b..ec57ed17967 100644 --- a/src/com/android/settings/SecuritySettings.java +++ b/src/com/android/settings/SecuritySettings.java @@ -17,6 +17,7 @@ package com.android.settings; import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT; + import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import android.app.Activity; @@ -65,6 +66,9 @@ import com.android.settings.fingerprint.FingerprintSettings; import com.android.settings.location.LocationPreferenceController; import com.android.settings.notification.LockScreenNotificationPreferenceController; import com.android.settings.overlay.FeatureFactory; +import com.android.settings.password.ChooseLockGeneric.ChooseLockGenericFragment; +import com.android.settings.password.ChooseLockSettingsHelper; +import com.android.settings.password.ManagedLockPasswordProvider; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settings.search.SearchIndexableRaw; @@ -635,7 +639,7 @@ public class SecuritySettings extends SettingsPreferenceFragment return false; } } - startFragment(this, "com.android.settings.ChooseLockGeneric$ChooseLockGenericFragment", + startFragment(this, ChooseLockGenericFragment.class.getName(), R.string.lock_settings_picker_title, SET_OR_CHANGE_LOCK_METHOD_REQUEST, null); } else if (KEY_UNLOCK_SET_OR_CHANGE_PROFILE.equals(key)) { if (Utils.startQuietModeDialogIfNecessary(this.getActivity(), mUm, @@ -644,7 +648,7 @@ public class SecuritySettings extends SettingsPreferenceFragment } Bundle extras = new Bundle(); extras.putInt(Intent.EXTRA_USER_ID, mProfileChallengeUserId); - startFragment(this, "com.android.settings.ChooseLockGeneric$ChooseLockGenericFragment", + startFragment(this, ChooseLockGenericFragment.class.getName(), R.string.lock_settings_picker_title_profile, SET_OR_CHANGE_LOCK_METHOD_REQUEST_PROFILE, extras); } else if (KEY_TRUST_AGENT.equals(key)) { @@ -744,7 +748,7 @@ public class SecuritySettings extends SettingsPreferenceFragment private void unifyUncompliantLocks() { mLockPatternUtils.setSeparateProfileChallengeEnabled(mProfileChallengeUserId, false, mCurrentProfilePassword); - startFragment(this, "com.android.settings.ChooseLockGeneric$ChooseLockGenericFragment", + startFragment(this, ChooseLockGenericFragment.class.getName(), R.string.lock_settings_picker_title, SET_OR_CHANGE_LOCK_METHOD_REQUEST, null); } @@ -752,7 +756,7 @@ public class SecuritySettings extends SettingsPreferenceFragment Bundle extras = new Bundle(); extras.putInt(Intent.EXTRA_USER_ID, mProfileChallengeUserId); startFragment(this, - "com.android.settings.ChooseLockGeneric$ChooseLockGenericFragment", + ChooseLockGenericFragment.class.getName(), R.string.lock_settings_picker_title_profile, SET_OR_CHANGE_LOCK_METHOD_REQUEST_PROFILE, extras); } diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java index 2e6aed088f3..38b6e1b625e 100644 --- a/src/com/android/settings/Settings.java +++ b/src/com/android/settings/Settings.java @@ -22,6 +22,7 @@ import com.android.settings.applications.AppOpsSummary; import com.android.settings.enterprise.EnterprisePrivacySettings; import com.android.settings.fingerprint.FingerprintEnrollIntroduction; import com.android.settings.fingerprint.FingerprintSettings; +import com.android.settings.password.ChooseLockGeneric; /** * Top-level Settings activity diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java index 9c01a5f21aa..04aa5e4a836 100644 --- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java @@ -22,7 +22,6 @@ import android.app.AlertDialog; import android.app.Dialog; import android.app.admin.DevicePolicyManager; import android.content.ComponentName; -import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.ResolveInfo; @@ -33,22 +32,15 @@ import android.os.UserHandle; import android.os.storage.StorageManager; import android.provider.Settings; import android.text.TextUtils; -import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; -import android.view.MotionEvent; -import android.view.View; import android.view.accessibility.AccessibilityManager; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; -import android.widget.Toast; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.widget.LockPatternUtils; -import com.android.settings.ConfirmDeviceCredentialActivity; import com.android.settings.R; +import com.android.settings.password.ConfirmDeviceCredentialActivity; import com.android.settings.widget.ToggleSwitch; import com.android.settings.widget.ToggleSwitch.OnBeforeCheckedChangeListener; import com.android.settingslib.accessibility.AccessibilityUtils; diff --git a/src/com/android/settings/accounts/AddAccountSettings.java b/src/com/android/settings/accounts/AddAccountSettings.java index 345f9fc9907..cca15c96d3c 100644 --- a/src/com/android/settings/accounts/AddAccountSettings.java +++ b/src/com/android/settings/accounts/AddAccountSettings.java @@ -16,6 +16,8 @@ package com.android.settings.accounts; +import static android.content.Intent.EXTRA_USER; + import android.accounts.AccountManager; import android.accounts.AccountManagerCallback; import android.accounts.AccountManagerFuture; @@ -32,14 +34,12 @@ import android.os.UserManager; import android.util.Log; import android.widget.Toast; -import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.R; import com.android.settings.Settings; import com.android.settings.Utils; +import com.android.settings.password.ChooseLockSettingsHelper; import java.io.IOException; - -import static android.content.Intent.EXTRA_USER; /** * Entry point Activity for account setup. Works as follows * diff --git a/src/com/android/settings/applications/ConvertToFbe.java b/src/com/android/settings/applications/ConvertToFbe.java index 9c43af4a540..c5e6d771e6d 100644 --- a/src/com/android/settings/applications/ConvertToFbe.java +++ b/src/com/android/settings/applications/ConvertToFbe.java @@ -25,10 +25,10 @@ import android.view.ViewGroup; import android.widget.Button; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; -import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.core.InstrumentedFragment; +import com.android.settings.password.ChooseLockSettingsHelper; /* Class to prompt for conversion of userdata to file based encryption */ diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java index 8869bf105d6..ac3c8ac8776 100644 --- a/src/com/android/settings/core/gateway/SettingsGateway.java +++ b/src/com/android/settings/core/gateway/SettingsGateway.java @@ -18,8 +18,6 @@ package com.android.settings.core.gateway; import com.android.settings.ApnEditor; import com.android.settings.ApnSettings; -import com.android.settings.ChooseLockPassword; -import com.android.settings.ChooseLockPattern; import com.android.settings.CryptKeeperSettings; import com.android.settings.DateTimeSettings; import com.android.settings.DeviceAdminSettings; @@ -109,6 +107,8 @@ import com.android.settings.notification.ZenModePrioritySettings; import com.android.settings.notification.ZenModeScheduleRuleSettings; import com.android.settings.notification.ZenModeSettings; import com.android.settings.notification.ZenModeVisualInterruptionSettings; +import com.android.settings.password.ChooseLockPassword; +import com.android.settings.password.ChooseLockPattern; import com.android.settings.print.PrintJobSettingsFragment; import com.android.settings.print.PrintSettingsFragment; import com.android.settings.security.LockscreenDashboardFragment; diff --git a/src/com/android/settings/development/DevelopmentSettings.java b/src/com/android/settings/development/DevelopmentSettings.java index 2b3b82677e7..b4dda7539bc 100644 --- a/src/com/android/settings/development/DevelopmentSettings.java +++ b/src/com/android/settings/development/DevelopmentSettings.java @@ -82,13 +82,13 @@ import android.widget.Toast; import com.android.internal.app.LocalePicker; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; -import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.R; import com.android.settings.RestrictedSettingsFragment; import com.android.settings.SettingsActivity; import com.android.settings.Utils; import com.android.settings.dashboard.DashboardFeatureProvider; import com.android.settings.overlay.FeatureFactory; +import com.android.settings.password.ChooseLockSettingsHelper; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settings.webview.WebViewAppPreferenceController; diff --git a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java index 5a1835df687..92328386c58 100644 --- a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java +++ b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java @@ -30,7 +30,6 @@ import android.util.Pair; import android.widget.Toast; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; -import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.core.PreferenceController; @@ -38,6 +37,7 @@ import com.android.settings.core.instrumentation.MetricsFeatureProvider; import com.android.settings.development.DevelopmentSettings; import com.android.settings.development.DevelopmentSettingsEnabler; import com.android.settings.overlay.FeatureFactory; +import com.android.settings.password.ChooseLockSettingsHelper; import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollBase.java b/src/com/android/settings/fingerprint/FingerprintEnrollBase.java index d58180428a9..df7bf3c3c1f 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollBase.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollBase.java @@ -26,9 +26,9 @@ import android.view.View; import android.widget.Button; import android.widget.TextView; -import com.android.settings.ChooseLockSettingsHelper; -import com.android.settings.core.InstrumentedActivity; import com.android.settings.R; +import com.android.settings.core.InstrumentedActivity; +import com.android.settings.password.ChooseLockSettingsHelper; import com.android.setupwizardlib.GlifLayout; /** diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java index e6e6bcd4381..3b3e61d4b18 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java @@ -40,9 +40,9 @@ import android.widget.ProgressBar; import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; -import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.R; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; +import com.android.settings.password.ChooseLockSettingsHelper; /** * Activity which handles the actual enrolling for fingerprint. diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java b/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java index 107838ce587..b46fef735a4 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java @@ -22,10 +22,10 @@ import android.os.Bundle; import android.os.UserHandle; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; -import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.fingerprint.FingerprintEnrollSidecar.Listener; +import com.android.settings.password.ChooseLockSettingsHelper; /** * Activity explaining the fingerprint sensor location for fingerprint enrollment. diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java b/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java index 551564dea83..dd831219ad5 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java @@ -29,10 +29,10 @@ import android.widget.Button; import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; -import com.android.settings.ChooseLockGeneric; -import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.R; import com.android.settings.Utils; +import com.android.settings.password.ChooseLockGeneric; +import com.android.settings.password.ChooseLockSettingsHelper; import com.android.settingslib.HelpUtils; import com.android.settingslib.RestrictedLockUtils; import com.android.setupwizardlib.span.LinkSpan; diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java b/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java index 7fc7a040021..0225f11a6cc 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java @@ -26,9 +26,10 @@ import android.os.Handler; import android.os.UserHandle; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; -import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.Utils; import com.android.settings.core.InstrumentedFragment; +import com.android.settings.password.ChooseLockSettingsHelper; + import com.android.settings.password.IFingerprintManager; /** diff --git a/src/com/android/settings/fingerprint/FingerprintSettings.java b/src/com/android/settings/fingerprint/FingerprintSettings.java index 9b54385bed1..a5595f97ad9 100644 --- a/src/com/android/settings/fingerprint/FingerprintSettings.java +++ b/src/com/android/settings/fingerprint/FingerprintSettings.java @@ -46,8 +46,8 @@ import android.text.Annotation; import android.text.SpannableString; import android.text.SpannableStringBuilder; import android.text.TextPaint; -import android.text.style.URLSpan; import android.text.TextUtils; +import android.text.style.URLSpan; import android.util.AttributeSet; import android.util.Log; import android.view.View; @@ -56,21 +56,20 @@ import android.widget.EditText; import android.widget.Toast; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; -import com.android.settings.ChooseLockGeneric; -import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.SubSettings; import com.android.settings.Utils; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; +import com.android.settings.password.ChooseLockGeneric; +import com.android.settings.password.ChooseLockSettingsHelper; import com.android.settingslib.HelpUtils; import com.android.settingslib.RestrictedLockUtils; +import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import com.android.settingslib.widget.FooterPreference; -import java.util.List; import java.util.HashMap; - -import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; +import java.util.List; /** * Settings screen for fingerprints diff --git a/src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensor.java b/src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensor.java index aff10282698..d7a4a7399e4 100644 --- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensor.java +++ b/src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensor.java @@ -21,9 +21,9 @@ import android.content.res.Resources; import android.os.UserHandle; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; -import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.R; import com.android.settings.SetupWizardUtils; +import com.android.settings.password.ChooseLockSettingsHelper; public class SetupFingerprintEnrollFindSensor extends FingerprintEnrollFindSensor { diff --git a/src/com/android/settings/fingerprint/SetupFingerprintEnrollFinish.java b/src/com/android/settings/fingerprint/SetupFingerprintEnrollFinish.java index 92ea5cb4796..4d7395d9b22 100644 --- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollFinish.java +++ b/src/com/android/settings/fingerprint/SetupFingerprintEnrollFinish.java @@ -23,9 +23,9 @@ import android.view.View; import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; -import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.R; import com.android.settings.SetupWizardUtils; +import com.android.settings.password.ChooseLockSettingsHelper; public class SetupFingerprintEnrollFinish extends FingerprintEnrollFinish { diff --git a/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java b/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java index 3951aff7826..a1f4017fbc7 100644 --- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java +++ b/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java @@ -26,8 +26,8 @@ import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.widget.LockPatternUtils; import com.android.settings.R; -import com.android.settings.SetupChooseLockGeneric; import com.android.settings.SetupWizardUtils; +import com.android.settings.password.SetupChooseLockGeneric; public class SetupFingerprintEnrollIntroduction extends FingerprintEnrollIntroduction { diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/password/ChooseLockGeneric.java similarity index 92% rename from src/com/android/settings/ChooseLockGeneric.java rename to src/com/android/settings/password/ChooseLockGeneric.java index 546b11ef51f..bbf5a1614f9 100644 --- a/src/com/android/settings/ChooseLockGeneric.java +++ b/src/com/android/settings/password/ChooseLockGeneric.java @@ -14,12 +14,12 @@ * limitations under the License. */ -package com.android.settings; +package com.android.settings.password; import static android.app.admin.DevicePolicyManager.ACTION_SET_NEW_PARENT_PROFILE_PASSWORD; import static android.app.admin.DevicePolicyManager.ACTION_SET_NEW_PASSWORD; -import static com.android.settings.ChooseLockPassword.ChooseLockPasswordFragment.RESULT_FINISHED; -import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; + +import static com.android.settings.password.ChooseLockPassword.ChooseLockPasswordFragment.RESULT_FINISHED; import android.accessibilityservice.AccessibilityServiceInfo; import android.app.Activity; @@ -50,10 +50,17 @@ import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.widget.LockPatternUtils; +import com.android.settings.EncryptionInterstitial; +import com.android.settings.EventLogTags; +import com.android.settings.R; +import com.android.settings.SettingsActivity; +import com.android.settings.SettingsPreferenceFragment; +import com.android.settings.Utils; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.fingerprint.FingerprintEnrollBase; import com.android.settings.fingerprint.FingerprintEnrollFindSensor; import com.android.settingslib.RestrictedLockUtils; +import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import com.android.settingslib.RestrictedPreference; import java.util.List; @@ -120,7 +127,6 @@ public class ChooseLockGeneric extends SettingsActivity { private boolean mWaitingForConfirmation = false; private int mEncryptionRequestQuality; private boolean mEncryptionRequestDisabled; - private boolean mRequirePassword; private boolean mForChangeCredRequiredForBoot = false; private String mUserPassword; private LockPatternUtils mLockPatternUtils; @@ -271,7 +277,7 @@ public class ChooseLockGeneric extends SettingsActivity { mEncryptionRequestDisabled = disabled; // Get the intent that the encryption interstitial should start for creating // the new unlock method. - Intent unlockMethodIntent = getIntentForUnlockMethod(quality, disabled); + Intent unlockMethodIntent = getIntentForUnlockMethod(quality); unlockMethodIntent.putExtra( ChooseLockSettingsHelper.EXTRA_KEY_FOR_CHANGE_CRED_REQUIRED_FOR_BOOT, mForChangeCredRequiredForBoot); @@ -297,7 +303,6 @@ public class ChooseLockGeneric extends SettingsActivity { finish(); return; } - mRequirePassword = false; // device encryption not enabled or not device owner. updateUnlockMethodAndFinish(quality, disabled); } } @@ -595,44 +600,34 @@ public class ChooseLockGeneric extends SettingsActivity { } } - protected Intent getLockManagedPasswordIntent(boolean requirePassword, String password) { - return mManagedPasswordProvider.createIntent(requirePassword, password); + protected Intent getLockManagedPasswordIntent(String password) { + return mManagedPasswordProvider.createIntent(false, password); } - protected Intent getLockPasswordIntent(Context context, int quality, - int minLength, final int maxLength, - boolean requirePasswordToDecrypt, boolean confirmCredentials, int userId) { - return ChooseLockPassword.createIntent(context, quality, minLength, - maxLength, requirePasswordToDecrypt, confirmCredentials, userId); + protected Intent getLockPasswordIntent(int quality, int minLength, int maxLength) { + ChooseLockPassword.IntentBuilder builder = + new ChooseLockPassword.IntentBuilder(getContext()) + .setPasswordQuality(quality) + .setPasswordLengthRange(minLength, maxLength) + .setUserId(mUserId); + if (mHasChallenge) { + builder.setChallenge(mChallenge); + } else { + builder.setPassword(mUserPassword); + } + return builder.build(); } - protected Intent getLockPasswordIntent(Context context, int quality, - int minLength, final int maxLength, - boolean requirePasswordToDecrypt, long challenge, int userId) { - return ChooseLockPassword.createIntent(context, quality, minLength, - maxLength, requirePasswordToDecrypt, challenge, userId); - } - - protected Intent getLockPasswordIntent(Context context, int quality, int minLength, - int maxLength, boolean requirePasswordToDecrypt, String password, int userId) { - return ChooseLockPassword.createIntent(context, quality, minLength, maxLength, - requirePasswordToDecrypt, password, userId); - } - - protected Intent getLockPatternIntent(Context context, final boolean requirePassword, - final boolean confirmCredentials, int userId) { - return ChooseLockPattern.createIntent(context, requirePassword, - confirmCredentials, userId); - } - - protected Intent getLockPatternIntent(Context context, final boolean requirePassword, - long challenge, int userId) { - return ChooseLockPattern.createIntent(context, requirePassword, challenge, userId); - } - - protected Intent getLockPatternIntent(Context context, final boolean requirePassword, - final String pattern, int userId) { - return ChooseLockPattern.createIntent(context, requirePassword, pattern, userId); + protected Intent getLockPatternIntent() { + ChooseLockPattern.IntentBuilder builder = + new ChooseLockPattern.IntentBuilder(getContext()) + .setUserId(mUserId); + if (mHasChallenge) { + builder.setChallenge(mChallenge); + } else { + builder.setPattern(mUserPassword); + } + return builder.build(); } protected Intent getEncryptionInterstitialIntent(Context context, int quality, @@ -657,7 +652,7 @@ public class ChooseLockGeneric extends SettingsActivity { } quality = upgradeQuality(quality); - Intent intent = getIntentForUnlockMethod(quality, disabled); + Intent intent = getIntentForUnlockMethod(quality); if (intent != null) { startActivityForResult(intent, mIsSetNewPassword && mHasChallenge @@ -677,32 +672,19 @@ public class ChooseLockGeneric extends SettingsActivity { } } - private Intent getIntentForUnlockMethod(int quality, boolean disabled) { + private Intent getIntentForUnlockMethod(int quality) { Intent intent = null; - final Context context = getActivity(); if (quality >= DevicePolicyManager.PASSWORD_QUALITY_MANAGED) { - intent = getLockManagedPasswordIntent(mRequirePassword, mUserPassword); + intent = getLockManagedPasswordIntent(mUserPassword); } else if (quality >= DevicePolicyManager.PASSWORD_QUALITY_NUMERIC) { int minLength = mDPM.getPasswordMinimumLength(null, mUserId); if (minLength < MIN_PASSWORD_LENGTH) { minLength = MIN_PASSWORD_LENGTH; } final int maxLength = mDPM.getPasswordMaximumLength(quality); - if (mHasChallenge) { - intent = getLockPasswordIntent(context, quality, minLength, - maxLength, mRequirePassword, mChallenge, mUserId); - } else { - intent = getLockPasswordIntent(context, quality, minLength, - maxLength, mRequirePassword, mUserPassword, mUserId); - } + intent = getLockPasswordIntent(quality, minLength, maxLength); } else if (quality == DevicePolicyManager.PASSWORD_QUALITY_SOMETHING) { - if (mHasChallenge) { - intent = getLockPatternIntent(context, mRequirePassword, - mChallenge, mUserId); - } else { - intent = getLockPatternIntent(context, mRequirePassword, - mUserPassword, mUserId); - } + intent = getLockPatternIntent(); } if (intent != null) { intent.putExtra(EXTRA_HIDE_DRAWER, mHideDrawer); diff --git a/src/com/android/settings/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java similarity index 92% rename from src/com/android/settings/ChooseLockPassword.java rename to src/com/android/settings/password/ChooseLockPassword.java index 88f3165fb01..f9aabd6f414 100644 --- a/src/com/android/settings/ChooseLockPassword.java +++ b/src/com/android/settings/password/ChooseLockPassword.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings; +package com.android.settings.password; import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC; import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC; @@ -28,8 +28,6 @@ import android.app.admin.DevicePolicyManager; import android.app.admin.PasswordMetrics; import android.content.Context; import android.content.Intent; -import android.graphics.Rect; -import android.graphics.drawable.InsetDrawable; import android.os.Bundle; import android.os.Handler; import android.os.Message; @@ -41,14 +39,12 @@ import android.text.Selection; import android.text.Spannable; import android.text.TextUtils; import android.text.TextWatcher; -import android.util.AttributeSet; import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; -import android.view.ViewParent; import android.view.inputmethod.EditorInfo; import android.widget.Button; import android.widget.EditText; @@ -60,9 +56,12 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockPatternUtils.RequestThrottledException; import com.android.internal.widget.TextViewInputDisabler; +import com.android.settings.EncryptionInterstitial; +import com.android.settings.R; +import com.android.settings.SettingsActivity; +import com.android.settings.Utils; import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.notification.RedactionInterstitial; -import com.android.settings.password.PasswordRequirementAdapter; import com.android.setupwizardlib.GlifLayout; import java.util.ArrayList; @@ -87,58 +86,47 @@ public class ChooseLockPassword extends SettingsActivity { return modIntent; } - public static Intent createIntent(Context context, int quality, - int minLength, final int maxLength, boolean requirePasswordToDecrypt, - boolean confirmCredentials) { - Intent intent = new Intent().setClass(context, ChooseLockPassword.class); - intent.putExtra(LockPatternUtils.PASSWORD_TYPE_KEY, quality); - intent.putExtra(PASSWORD_MIN_KEY, minLength); - intent.putExtra(PASSWORD_MAX_KEY, maxLength); - intent.putExtra(ChooseLockGeneric.CONFIRM_CREDENTIALS, confirmCredentials); - intent.putExtra(EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, requirePasswordToDecrypt); - return intent; - } + public static class IntentBuilder { - public static Intent createIntent(Context context, int quality, - int minLength, final int maxLength, boolean requirePasswordToDecrypt, - boolean confirmCredentials, int userId) { - Intent intent = createIntent(context, quality, minLength, maxLength, - requirePasswordToDecrypt, confirmCredentials); - intent.putExtra(Intent.EXTRA_USER_ID, userId); - return intent; - } + private final Intent mIntent; - public static Intent createIntent(Context context, int quality, - int minLength, final int maxLength, boolean requirePasswordToDecrypt, String password) { - Intent intent = createIntent(context, quality, minLength, maxLength, - requirePasswordToDecrypt, false); - intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD, password); - return intent; - } + public IntentBuilder(Context context) { + mIntent = new Intent(context, ChooseLockPassword.class); + mIntent.putExtra(ChooseLockGeneric.CONFIRM_CREDENTIALS, false); + mIntent.putExtra(EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, false); + } - public static Intent createIntent(Context context, int quality, int minLength, - int maxLength, boolean requirePasswordToDecrypt, String password, int userId) { - Intent intent = createIntent(context, quality, minLength, maxLength, - requirePasswordToDecrypt, password); - intent.putExtra(Intent.EXTRA_USER_ID, userId); - return intent; - } + public IntentBuilder setPasswordQuality(int quality) { + mIntent.putExtra(LockPatternUtils.PASSWORD_TYPE_KEY, quality); + return this; + } - public static Intent createIntent(Context context, int quality, - int minLength, final int maxLength, boolean requirePasswordToDecrypt, long challenge) { - Intent intent = createIntent(context, quality, minLength, maxLength, - requirePasswordToDecrypt, false); - intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, true); - intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, challenge); - return intent; - } + public IntentBuilder setPasswordLengthRange(int min, int max) { + mIntent.putExtra(PASSWORD_MIN_KEY, min); + mIntent.putExtra(PASSWORD_MAX_KEY, max); + return this; + } - public static Intent createIntent(Context context, int quality, int minLength, - int maxLength, boolean requirePasswordToDecrypt, long challenge, int userId) { - Intent intent = createIntent(context, quality, minLength, maxLength, - requirePasswordToDecrypt, challenge); - intent.putExtra(Intent.EXTRA_USER_ID, userId); - return intent; + public IntentBuilder setUserId(int userId) { + mIntent.putExtra(Intent.EXTRA_USER_ID, userId); + return this; + } + + public IntentBuilder setChallenge(long challenge) { + mIntent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, true); + mIntent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, challenge); + return this; + } + + public IntentBuilder setPassword(String password) { + mIntent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, false); + mIntent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD, password); + return this; + } + + public Intent build() { + return mIntent; + } } @Override diff --git a/src/com/android/settings/ChooseLockPattern.java b/src/com/android/settings/password/ChooseLockPattern.java similarity index 95% rename from src/com/android/settings/ChooseLockPattern.java rename to src/com/android/settings/password/ChooseLockPattern.java index 4afeae02408..a9035c27f77 100644 --- a/src/com/android/settings/ChooseLockPattern.java +++ b/src/com/android/settings/password/ChooseLockPattern.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings; +package com.android.settings.password; import android.app.Activity; import android.app.Fragment; @@ -37,9 +37,14 @@ import com.android.internal.widget.LockPatternUtils.RequestThrottledException; import com.android.internal.widget.LockPatternView; import com.android.internal.widget.LockPatternView.Cell; import com.android.internal.widget.LockPatternView.DisplayMode; +import com.android.settings.EncryptionInterstitial; +import com.android.settings.R; +import com.android.settings.SettingsActivity; +import com.android.settings.Utils; import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.notification.RedactionInterstitial; import com.android.setupwizardlib.GlifLayout; + import com.google.android.collect.Lists; import java.util.ArrayList; @@ -75,29 +80,35 @@ public class ChooseLockPattern extends SettingsActivity { return modIntent; } - public static Intent createIntent(Context context, - boolean requirePassword, boolean confirmCredentials, int userId) { - Intent intent = new Intent(context, ChooseLockPattern.class); - intent.putExtra("key_lock_method", "pattern"); - intent.putExtra(ChooseLockGeneric.CONFIRM_CREDENTIALS, confirmCredentials); - intent.putExtra(EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, requirePassword); - intent.putExtra(Intent.EXTRA_USER_ID, userId); - return intent; - } + public static class IntentBuilder { + private final Intent mIntent; - public static Intent createIntent(Context context, - boolean requirePassword, String pattern, int userId) { - Intent intent = createIntent(context, requirePassword, false, userId); - intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD, pattern); - return intent; - } + public IntentBuilder(Context context) { + mIntent = new Intent(context, ChooseLockPattern.class); + mIntent.putExtra(EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, false); + mIntent.putExtra(ChooseLockGeneric.CONFIRM_CREDENTIALS, false); + } - public static Intent createIntent(Context context, - boolean requirePassword, long challenge, int userId) { - Intent intent = createIntent(context, requirePassword, false, userId); - intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, true); - intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, challenge); - return intent; + public IntentBuilder setUserId(int userId) { + mIntent.putExtra(Intent.EXTRA_USER_ID, userId); + return this; + } + + public IntentBuilder setChallenge(long challenge) { + mIntent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, true); + mIntent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, challenge); + return this; + } + + public IntentBuilder setPattern(String pattern) { + mIntent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, false); + mIntent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD, pattern); + return this; + } + + public Intent build() { + return mIntent; + } } @Override @@ -442,7 +453,7 @@ public class ChooseLockPattern extends SettingsActivity { topLayout.setDefaultTouchRecepient(mLockPatternView); final boolean confirmCredentials = getActivity().getIntent() - .getBooleanExtra("confirm_credentials", true); + .getBooleanExtra(ChooseLockGeneric.CONFIRM_CREDENTIALS, true); Intent intent = getActivity().getIntent(); mCurrentPattern = intent.getStringExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD); mHasChallenge = intent.getBooleanExtra( diff --git a/src/com/android/settings/ChooseLockSettingsHelper.java b/src/com/android/settings/password/ChooseLockSettingsHelper.java similarity index 97% rename from src/com/android/settings/ChooseLockSettingsHelper.java rename to src/com/android/settings/password/ChooseLockSettingsHelper.java index 6f0c453698b..8c73355b5ac 100644 --- a/src/com/android/settings/ChooseLockSettingsHelper.java +++ b/src/com/android/settings/password/ChooseLockSettingsHelper.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings; +package com.android.settings.password; import android.annotation.Nullable; import android.app.Activity; @@ -26,11 +26,13 @@ import android.os.UserManager; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.widget.LockPatternUtils; +import com.android.settings.SettingsActivity; +import com.android.settings.Utils; public final class ChooseLockSettingsHelper { - static final String EXTRA_KEY_TYPE = "type"; - static final String EXTRA_KEY_PASSWORD = "password"; + public static final String EXTRA_KEY_TYPE = "type"; + public static final String EXTRA_KEY_PASSWORD = "password"; public static final String EXTRA_KEY_RETURN_CREDENTIALS = "return_credentials"; public static final String EXTRA_KEY_HAS_CHALLENGE = "has_challenge"; public static final String EXTRA_KEY_CHALLENGE = "challenge"; @@ -77,7 +79,7 @@ public final class ChooseLockSettingsHelper { * @return true if one exists and we launched an activity to confirm it * @see Activity#onActivityResult(int, int, android.content.Intent) */ - boolean launchConfirmationActivity(int request, CharSequence title, boolean returnCredentials) { + public boolean launchConfirmationActivity(int request, CharSequence title, boolean returnCredentials) { return launchConfirmationActivity(request, title, null, null, returnCredentials, false); } diff --git a/src/com/android/settings/ConfirmDeviceCredentialActivity.java b/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java similarity index 98% rename from src/com/android/settings/ConfirmDeviceCredentialActivity.java rename to src/com/android/settings/password/ConfirmDeviceCredentialActivity.java index 22f1e524790..38b38fc1a9c 100644 --- a/src/com/android/settings/ConfirmDeviceCredentialActivity.java +++ b/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package com.android.settings; +package com.android.settings.password; import android.app.Activity; import android.app.KeyguardManager; @@ -27,6 +27,7 @@ import android.os.UserManager; import android.util.Log; import com.android.internal.widget.LockPatternUtils; +import com.android.settings.Utils; /** * Launch this when you want to confirm the user is present by asking them to enter their diff --git a/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java b/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java similarity index 97% rename from src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java rename to src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java index d36947fc77f..2de955f4d6f 100644 --- a/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java +++ b/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java @@ -14,7 +14,7 @@ * limitations under the License */ -package com.android.settings; +package com.android.settings.password; import android.app.Fragment; import android.app.KeyguardManager; @@ -24,6 +24,10 @@ import android.view.MenuItem; import android.view.WindowManager; import android.widget.LinearLayout; +import com.android.settings.R; +import com.android.settings.SettingsActivity; +import com.android.settings.Utils; + public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivity { private static final String STATE_IS_KEYGUARD_LOCKED = "STATE_IS_KEYGUARD_LOCKED"; diff --git a/src/com/android/settings/ConfirmDeviceCredentialBaseFragment.java b/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java similarity index 99% rename from src/com/android/settings/ConfirmDeviceCredentialBaseFragment.java rename to src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java index 2c97e1a78e3..ae2dd426912 100644 --- a/src/com/android/settings/ConfirmDeviceCredentialBaseFragment.java +++ b/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java @@ -15,7 +15,7 @@ */ // TODO (b/35202196): move this class out of the root of the package. -package com.android.settings; +package com.android.settings.password; import android.annotation.Nullable; import android.app.ActivityManager; @@ -47,6 +47,9 @@ import android.widget.ImageView; import android.widget.TextView; import com.android.internal.widget.LockPatternUtils; +import com.android.settings.OptionsMenuFragment; +import com.android.settings.R; +import com.android.settings.Utils; import com.android.settings.fingerprint.FingerprintUiHelper; /** diff --git a/src/com/android/settings/ConfirmLockPassword.java b/src/com/android/settings/password/ConfirmLockPassword.java similarity index 99% rename from src/com/android/settings/ConfirmLockPassword.java rename to src/com/android/settings/password/ConfirmLockPassword.java index 489f7a5dc0b..ef115218657 100644 --- a/src/com/android/settings/ConfirmLockPassword.java +++ b/src/com/android/settings/password/ConfirmLockPassword.java @@ -14,8 +14,9 @@ * limitations under the License. */ -package com.android.settings; +package com.android.settings.password; +import android.app.Activity; import android.app.Fragment; import android.app.admin.DevicePolicyManager; import android.content.Context; @@ -43,6 +44,8 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.widget.LockPatternChecker; import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.TextViewInputDisabler; +import com.android.settings.R; +import com.android.settings.SettingsActivity; import com.android.settingslib.animation.AppearAnimationUtils; import com.android.settingslib.animation.DisappearAnimationUtils; diff --git a/src/com/android/settings/ConfirmLockPattern.java b/src/com/android/settings/password/ConfirmLockPattern.java similarity index 99% rename from src/com/android/settings/ConfirmLockPattern.java rename to src/com/android/settings/password/ConfirmLockPattern.java index 56d92f1fcf6..b66edfec01d 100644 --- a/src/com/android/settings/ConfirmLockPattern.java +++ b/src/com/android/settings/password/ConfirmLockPattern.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings; +package com.android.settings.password; import android.app.Activity; import android.content.Intent; @@ -37,6 +37,8 @@ import com.android.internal.widget.LockPatternChecker; import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockPatternView; import com.android.internal.widget.LockPatternView.Cell; +import com.android.settings.R; +import com.android.settings.SettingsActivity; import com.android.settingslib.animation.AppearAnimationCreator; import com.android.settingslib.animation.AppearAnimationUtils; import com.android.settingslib.animation.DisappearAnimationUtils; diff --git a/src/com/android/settings/CredentialCheckResultTracker.java b/src/com/android/settings/password/CredentialCheckResultTracker.java similarity index 98% rename from src/com/android/settings/CredentialCheckResultTracker.java rename to src/com/android/settings/password/CredentialCheckResultTracker.java index cfd6f2984a6..a17939c446c 100644 --- a/src/com/android/settings/CredentialCheckResultTracker.java +++ b/src/com/android/settings/password/CredentialCheckResultTracker.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings; +package com.android.settings.password; import android.app.Fragment; import android.content.Intent; diff --git a/src/com/android/settings/ManagedLockPasswordProvider.java b/src/com/android/settings/password/ManagedLockPasswordProvider.java similarity index 92% rename from src/com/android/settings/ManagedLockPasswordProvider.java rename to src/com/android/settings/password/ManagedLockPasswordProvider.java index b9725d706cb..65bf1f61601 100644 --- a/src/com/android/settings/ManagedLockPasswordProvider.java +++ b/src/com/android/settings/password/ManagedLockPasswordProvider.java @@ -14,11 +14,13 @@ * limitations under the License */ -package com.android.settings; +package com.android.settings.password; import android.content.Context; import android.content.Intent; +import com.android.settings.R; + /** * Helper for handling managed passwords in security settings UI. * It provides resources that should be shown in settings UI when lock password quality is set to @@ -28,7 +30,7 @@ import android.content.Intent; */ public class ManagedLockPasswordProvider { /** Factory method to make it easier to inject extended ManagedLockPasswordProviders. */ - static ManagedLockPasswordProvider get(Context context, int userId) { + public static ManagedLockPasswordProvider get(Context context, int userId) { return new ManagedLockPasswordProvider(); } @@ -58,7 +60,7 @@ public class ManagedLockPasswordProvider { * {@link android.app.admin.DevicePolicyManager#PASSWORD_QUALITY_MANAGED}. * @param forProfile Whether the settings are shown for a user profile rather than a user. */ - int getResIdForLockUnlockScreen(boolean forProfile) { + public int getResIdForLockUnlockScreen(boolean forProfile) { return forProfile ? R.xml.security_settings_password_profile : R.xml.security_settings_password; } @@ -68,7 +70,7 @@ public class ManagedLockPasswordProvider { * screen preference in security settings if the current password quality is set to * {@link android.app.admin.DevicePolicyManager#PASSWORD_QUALITY_MANAGED}. */ - int getResIdForLockUnlockSubScreen() { + public int getResIdForLockUnlockSubScreen() { return R.xml.security_settings_password_sub; } diff --git a/src/com/android/settings/password/PasswordRequirementAdapter.java b/src/com/android/settings/password/PasswordRequirementAdapter.java index b05d8b8a871..5fcd8a99f8a 100644 --- a/src/com/android/settings/password/PasswordRequirementAdapter.java +++ b/src/com/android/settings/password/PasswordRequirementAdapter.java @@ -23,12 +23,10 @@ import android.view.ViewGroup; import android.widget.TextView; import com.android.settings.R; - -import static com.android.settings.password.PasswordRequirementAdapter - .PasswordRequirementViewHolder; +import com.android.settings.password.PasswordRequirementAdapter.PasswordRequirementViewHolder; /** - * Used in {@link com.android.settings.ChooseLockPassword} to show password requirements. + * Used in {@link ChooseLockPassword} to show password requirements. */ public class PasswordRequirementAdapter extends RecyclerView.Adapter { diff --git a/src/com/android/settings/SaveChosenLockWorkerBase.java b/src/com/android/settings/password/SaveChosenLockWorkerBase.java similarity index 98% rename from src/com/android/settings/SaveChosenLockWorkerBase.java rename to src/com/android/settings/password/SaveChosenLockWorkerBase.java index 7ce7a9064b7..95980e93e8b 100644 --- a/src/com/android/settings/SaveChosenLockWorkerBase.java +++ b/src/com/android/settings/password/SaveChosenLockWorkerBase.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings; +package com.android.settings.password; import android.app.Fragment; import android.content.Context; diff --git a/src/com/android/settings/password/SetNewPasswordActivity.java b/src/com/android/settings/password/SetNewPasswordActivity.java index 4692609a9fd..99f67cb13d5 100644 --- a/src/com/android/settings/password/SetNewPasswordActivity.java +++ b/src/com/android/settings/password/SetNewPasswordActivity.java @@ -25,8 +25,6 @@ import android.content.Intent; import android.os.Bundle; import android.util.Log; -import com.android.settings.ChooseLockGeneric; -import com.android.settings.SetupChooseLockGeneric; import com.android.settings.Utils; /** diff --git a/src/com/android/settings/password/SetNewPasswordController.java b/src/com/android/settings/password/SetNewPasswordController.java index 9443541b49d..57aa8c17d1d 100644 --- a/src/com/android/settings/password/SetNewPasswordController.java +++ b/src/com/android/settings/password/SetNewPasswordController.java @@ -19,6 +19,7 @@ package com.android.settings.password; import static android.app.admin.DevicePolicyManager.ACTION_SET_NEW_PASSWORD; import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT; import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_SOMETHING; + import static com.android.internal.util.Preconditions.checkNotNull; import android.annotation.Nullable; @@ -34,8 +35,6 @@ import android.os.UserManager; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.widget.LockPatternUtils; -import com.android.settings.ChooseLockGeneric; -import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.Utils; /** diff --git a/src/com/android/settings/SetupChooseLockGeneric.java b/src/com/android/settings/password/SetupChooseLockGeneric.java similarity index 76% rename from src/com/android/settings/SetupChooseLockGeneric.java rename to src/com/android/settings/password/SetupChooseLockGeneric.java index 2c8195d7075..74aac2c0041 100644 --- a/src/com/android/settings/SetupChooseLockGeneric.java +++ b/src/com/android/settings/password/SetupChooseLockGeneric.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings; +package com.android.settings.password; import android.app.admin.DevicePolicyManager; import android.content.Context; @@ -31,6 +31,9 @@ import android.view.ViewGroup; import android.widget.LinearLayout; import com.android.internal.widget.LockPatternUtils; +import com.android.settings.R; +import com.android.settings.SetupEncryptionInterstitial; +import com.android.settings.SetupWizardUtils; import com.android.settings.fingerprint.SetupFingerprintEnrollFindSensor; import com.android.settings.fingerprint.SetupSkipDialog; import com.android.settings.utils.SettingsDividerItemDecoration; @@ -172,57 +175,17 @@ public class SetupChooseLockGeneric extends ChooseLockGeneric { } @Override - protected Intent getLockPasswordIntent(Context context, int quality, - int minLength, final int maxLength, - boolean requirePasswordToDecrypt, boolean confirmCredentials, int userId) { - final Intent intent = SetupChooseLockPassword.createIntent(context, quality, minLength, - maxLength, requirePasswordToDecrypt, confirmCredentials); + protected Intent getLockPasswordIntent(int quality, int minLength, int maxLength) { + final Intent intent = SetupChooseLockPassword.modifyIntentForSetup( + getContext(), super.getLockPasswordIntent(quality, minLength, maxLength)); SetupWizardUtils.copySetupExtras(getActivity().getIntent(), intent); return intent; } @Override - protected Intent getLockPasswordIntent(Context context, int quality, - int minLength, final int maxLength, - boolean requirePasswordToDecrypt, long challenge, int userId) { - final Intent intent = SetupChooseLockPassword.createIntent(context, quality, minLength, - maxLength, requirePasswordToDecrypt, challenge); - SetupWizardUtils.copySetupExtras(getActivity().getIntent(), intent); - return intent; - } - - @Override - protected Intent getLockPasswordIntent(Context context, int quality, int minLength, - int maxLength, boolean requirePasswordToDecrypt, String password, int userId) { - final Intent intent = SetupChooseLockPassword.createIntent(context, quality, minLength, - maxLength, requirePasswordToDecrypt, password); - SetupWizardUtils.copySetupExtras(getActivity().getIntent(), intent); - return intent; - } - - @Override - protected Intent getLockPatternIntent(Context context, final boolean requirePassword, - final boolean confirmCredentials, int userId) { - final Intent intent = SetupChooseLockPattern.createIntent(context, requirePassword, - confirmCredentials); - SetupWizardUtils.copySetupExtras(getActivity().getIntent(), intent); - return intent; - } - - @Override - protected Intent getLockPatternIntent(Context context, final boolean requirePassword, - long challenge, int userId) { - final Intent intent = SetupChooseLockPattern.createIntent(context, requirePassword, - challenge); - SetupWizardUtils.copySetupExtras(getActivity().getIntent(), intent); - return intent; - } - - @Override - protected Intent getLockPatternIntent(Context context, final boolean requirePassword, - final String pattern, int userId) { - final Intent intent = SetupChooseLockPattern.createIntent(context, requirePassword, - pattern); + protected Intent getLockPatternIntent() { + final Intent intent = SetupChooseLockPattern.modifyIntentForSetup( + getContext(), super.getLockPatternIntent()); SetupWizardUtils.copySetupExtras(getActivity().getIntent(), intent); return intent; } diff --git a/src/com/android/settings/SetupChooseLockPassword.java b/src/com/android/settings/password/SetupChooseLockPassword.java similarity index 63% rename from src/com/android/settings/SetupChooseLockPassword.java rename to src/com/android/settings/password/SetupChooseLockPassword.java index f2c24d0f0f7..b8a741dbeba 100644 --- a/src/com/android/settings/SetupChooseLockPassword.java +++ b/src/com/android/settings/password/SetupChooseLockPassword.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings; +package com.android.settings.password; import android.app.Fragment; import android.content.Context; @@ -23,6 +23,10 @@ import android.content.res.Resources; import android.os.Bundle; import android.widget.LinearLayout; +import com.android.settings.R; +import com.android.settings.SetupRedactionInterstitial; +import com.android.settings.SetupWizardUtils; + /** * Setup Wizard's version of ChooseLockPassword screen. It inherits the logic and basic structure * from ChooseLockPassword class, and should remain similar to that behaviorally. This class should @@ -32,32 +36,12 @@ import android.widget.LinearLayout; */ public class SetupChooseLockPassword extends ChooseLockPassword { - public static Intent createIntent(Context context, int quality, - int minLength, final int maxLength, boolean requirePasswordToDecrypt, - boolean confirmCredentials) { - Intent intent = ChooseLockPassword.createIntent(context, quality, minLength, - maxLength, requirePasswordToDecrypt, confirmCredentials); - intent.setClass(context, SetupChooseLockPassword.class); - intent.putExtra(EXTRA_PREFS_SHOW_BUTTON_BAR, false); - return intent; - } - - public static Intent createIntent(Context context, int quality, - int minLength, final int maxLength, boolean requirePasswordToDecrypt, String password) { - Intent intent = ChooseLockPassword.createIntent(context, quality, minLength, maxLength, - requirePasswordToDecrypt, password); - intent.setClass(context, SetupChooseLockPassword.class); - intent.putExtra(EXTRA_PREFS_SHOW_BUTTON_BAR, false); - return intent; - } - - public static Intent createIntent(Context context, int quality, - int minLength, final int maxLength, boolean requirePasswordToDecrypt, long challenge) { - Intent intent = ChooseLockPassword.createIntent(context, quality, minLength, maxLength, - requirePasswordToDecrypt, challenge); - intent.setClass(context, SetupChooseLockPassword.class); - intent.putExtra(EXTRA_PREFS_SHOW_BUTTON_BAR, false); - return intent; + public static Intent modifyIntentForSetup( + Context context, + Intent chooseLockPasswordIntent) { + chooseLockPasswordIntent.setClass(context, SetupChooseLockPassword.class); + chooseLockPasswordIntent.putExtra(EXTRA_PREFS_SHOW_BUTTON_BAR, false); + return chooseLockPasswordIntent; } @Override diff --git a/src/com/android/settings/SetupChooseLockPattern.java b/src/com/android/settings/password/SetupChooseLockPattern.java similarity index 67% rename from src/com/android/settings/SetupChooseLockPattern.java rename to src/com/android/settings/password/SetupChooseLockPattern.java index 762d3b3c093..7cb5afbd947 100644 --- a/src/com/android/settings/SetupChooseLockPattern.java +++ b/src/com/android/settings/password/SetupChooseLockPattern.java @@ -14,13 +14,15 @@ * limitations under the License. */ -package com.android.settings; +package com.android.settings.password; import android.app.Fragment; import android.content.Context; import android.content.Intent; import android.content.res.Resources; -import android.os.UserHandle; + +import com.android.settings.SetupRedactionInterstitial; +import com.android.settings.SetupWizardUtils; /** * Setup Wizard's version of ChooseLockPattern screen. It inherits the logic and basic structure @@ -31,26 +33,9 @@ import android.os.UserHandle; */ public class SetupChooseLockPattern extends ChooseLockPattern { - public static Intent createIntent(Context context, boolean requirePassword, - boolean confirmCredentials) { - Intent intent = ChooseLockPattern.createIntent(context, requirePassword, - confirmCredentials, UserHandle.myUserId()); - intent.setClass(context, SetupChooseLockPattern.class); - return intent; - } - - public static Intent createIntent(Context context, boolean requirePassword, String pattern) { - Intent intent = ChooseLockPattern.createIntent( - context, requirePassword, pattern, UserHandle.myUserId()); - intent.setClass(context, SetupChooseLockPattern.class); - return intent; - } - - public static Intent createIntent(Context context, boolean requirePassword, long challenge) { - Intent intent = ChooseLockPattern.createIntent( - context, requirePassword, challenge, UserHandle.myUserId()); - intent.setClass(context, SetupChooseLockPattern.class); - return intent; + public static Intent modifyIntentForSetup(Context context, Intent chooseLockPatternIntent) { + chooseLockPatternIntent.setClass(context, SetupChooseLockPattern.class); + return chooseLockPatternIntent; } @Override diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java index 8026e278ecc..5cb27f9f257 100644 --- a/src/com/android/settings/users/UserSettings.java +++ b/src/com/android/settings/users/UserSettings.java @@ -54,7 +54,6 @@ import android.widget.SimpleAdapter; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.widget.LockPatternUtils; -import com.android.settings.ChooseLockGeneric; import com.android.settings.DimmableIconPreference; import com.android.settings.OwnerInfoSettings; import com.android.settings.R; @@ -62,11 +61,12 @@ import com.android.settings.SettingsActivity; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; import com.android.settings.dashboard.SummaryLoader; +import com.android.settings.password.ChooseLockGeneric; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settings.search.SearchIndexableRaw; import com.android.settingslib.RestrictedLockUtils; -import com.android.settingslib.RestrictedSwitchPreference; +import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import com.android.settingslib.drawable.CircleFramedDrawable; import java.util.ArrayList; @@ -74,8 +74,6 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; -import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; - /** * Screen that manages the list of users on the device. * Guest user is an always visible entry, even if the guest is not currently diff --git a/tests/app/src/com/android/settings/ChooseLockGenericTest.java b/tests/app/src/com/android/settings/password/ChooseLockGenericTest.java similarity index 98% rename from tests/app/src/com/android/settings/ChooseLockGenericTest.java rename to tests/app/src/com/android/settings/password/ChooseLockGenericTest.java index 924e716e740..e2bd6eeaace 100644 --- a/tests/app/src/com/android/settings/ChooseLockGenericTest.java +++ b/tests/app/src/com/android/settings/password/ChooseLockGenericTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings; +package com.android.settings.password; import static android.support.test.InstrumentationRegistry.getInstrumentation; import static android.support.test.InstrumentationRegistry.getTargetContext; @@ -56,7 +56,7 @@ import java.util.List; * m SettingsTests && * adb install \ * -r -g ${ANDROID_PRODUCT_OUT}/data/app/SettingsTests/SettingsTests.apk && - * adb shell am instrument -e class com.android.settings.ChooseLockGenericTest \ + * adb shell am instrument -e class com.android.settings.password.ChooseLockGenericTest \ * -w com.android.settings.tests/android.support.test.runner.AndroidJUnitRunner */ @RunWith(AndroidJUnit4.class) diff --git a/tests/app/src/com/android/settings/ConfirmLockPasswordTest.java b/tests/app/src/com/android/settings/password/ConfirmLockPasswordTest.java similarity index 97% rename from tests/app/src/com/android/settings/ConfirmLockPasswordTest.java rename to tests/app/src/com/android/settings/password/ConfirmLockPasswordTest.java index 05464ad78ca..25e7da05edc 100644 --- a/tests/app/src/com/android/settings/ConfirmLockPasswordTest.java +++ b/tests/app/src/com/android/settings/password/ConfirmLockPasswordTest.java @@ -14,7 +14,7 @@ * limitations under the License */ -package com.android.settings; +package com.android.settings.password; import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.action.ViewActions.pressKey; @@ -30,6 +30,8 @@ import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; import android.view.KeyEvent; +import com.android.settings.R; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/tests/robotests/assets/grandfather_not_implementing_indexable b/tests/robotests/assets/grandfather_not_implementing_indexable index ca6d7644689..9ecc0b44888 100644 --- a/tests/robotests/assets/grandfather_not_implementing_indexable +++ b/tests/robotests/assets/grandfather_not_implementing_indexable @@ -96,10 +96,10 @@ com.android.settings.ApnSettings com.android.settings.SecuritySettings$SecuritySubSettings com.android.settings.PrivacySettings com.android.settings.WifiCallingSettings -com.android.settings.SetupChooseLockGeneric$SetupChooseLockGenericFragment +com.android.settings.password.SetupChooseLockGeneric$SetupChooseLockGenericFragment com.android.settings.SetupRedactionInterstitial$SetupRedactionInterstitialFragment com.android.settings.TrustAgentSettings -com.android.settings.ChooseLockGeneric$ChooseLockGenericFragment +com.android.settings.password.ChooseLockGeneric$ChooseLockGenericFragment com.android.settings.IccLockSettings com.android.settings.TetherSettings com.android.settings.ApplicationSettings diff --git a/tests/robotests/assets/grandfather_not_implementing_instrumentable b/tests/robotests/assets/grandfather_not_implementing_instrumentable index b0b40514160..992f25a094f 100644 --- a/tests/robotests/assets/grandfather_not_implementing_instrumentable +++ b/tests/robotests/assets/grandfather_not_implementing_instrumentable @@ -3,9 +3,9 @@ com.android.settings.applications.AppOpsCategory com.android.settings.inputmethod.UserDictionaryLocalePicker com.android.settings.CustomEditTextPreference$CustomPreferenceDialogFragment com.android.settings.CustomListPreference$CustomListPreferenceDialogFragment -com.android.settings.ChooseLockPassword$SaveAndFinishWorker -com.android.settings.ChooseLockPattern$SaveAndFinishWorker +com.android.settings.password.ChooseLockPassword$SaveAndFinishWorker +com.android.settings.password.ChooseLockPattern$SaveAndFinishWorker com.android.settings.RestrictedListPreference$RestrictedListPreferenceDialogFragment com.android.settings.CustomDialogPreference$CustomPreferenceDialogFragment -com.android.settings.ConfirmDeviceCredentialBaseFragment$LastTryDialog -com.android.settings.CredentialCheckResultTracker +com.android.settings.password.ConfirmDeviceCredentialBaseFragment$LastTryDialog +com.android.settings.password.CredentialCheckResultTracker diff --git a/tests/robotests/src/com/android/settings/SetupChooseLockPatternTest.java b/tests/robotests/src/com/android/settings/SetupChooseLockPatternTest.java index 4b78ee73c8a..5238a396064 100644 --- a/tests/robotests/src/com/android/settings/SetupChooseLockPatternTest.java +++ b/tests/robotests/src/com/android/settings/SetupChooseLockPatternTest.java @@ -25,7 +25,9 @@ import android.content.ComponentName; import android.content.pm.PackageManager; import android.os.UserHandle; -import com.android.settings.ChooseLockPattern.ChooseLockPatternFragment; +import com.android.settings.password.ChooseLockPattern.ChooseLockPatternFragment; +import com.android.settings.password.ChooseLockPattern.IntentBuilder; +import com.android.settings.password.SetupChooseLockPattern; import com.android.settings.testutils.shadow.SettingsShadowResources; import com.android.settings.testutils.shadow.ShadowDynamicIndexableContentMonitor; import com.android.settings.testutils.shadow.ShadowEventLogWriter; @@ -63,11 +65,11 @@ public class SetupChooseLockPatternTest { mActivity = Robolectric.buildActivity( SetupChooseLockPattern.class, - SetupChooseLockPattern.createIntent( + SetupChooseLockPattern.modifyIntentForSetup( application, - false, /* requirePassword */ - false, /* confirmCredentials */ - UserHandle.myUserId())) + new IntentBuilder(application) + .setUserId(UserHandle.myUserId()) + .build())) .setup().get(); } diff --git a/tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollFindSensorTest.java b/tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollFindSensorTest.java index 646774d8363..74cfc7b7c6c 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollFindSensorTest.java +++ b/tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollFindSensorTest.java @@ -29,10 +29,10 @@ import android.hardware.fingerprint.FingerprintManager.EnrollmentCallback; import android.os.CancellationSignal; import android.widget.Button; -import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.R; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; +import com.android.settings.password.ChooseLockSettingsHelper; import com.android.settings.password.IFingerprintManager; import com.android.settings.testutils.shadow.SettingsShadowResources; import com.android.settings.testutils.shadow.ShadowDynamicIndexableContentMonitor; diff --git a/tests/robotests/src/com/android/settings/password/ChooseLockPasswordTest.java b/tests/robotests/src/com/android/settings/password/ChooseLockPasswordTest.java new file mode 100644 index 00000000000..b077c9a3d28 --- /dev/null +++ b/tests/robotests/src/com/android/settings/password/ChooseLockPasswordTest.java @@ -0,0 +1,100 @@ +/* + * Copyright (C) 2017 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 static com.google.common.truth.Truth.assertThat; + +import static org.robolectric.RuntimeEnvironment.application; + +import android.app.admin.DevicePolicyManager; +import android.content.Intent; + +import com.android.internal.widget.LockPatternUtils; +import com.android.settings.SettingsRobolectricTestRunner; +import com.android.settings.TestConfig; +import com.android.settings.password.ChooseLockPassword; +import com.android.settings.password.ChooseLockPassword.IntentBuilder; +import com.android.settings.password.ChooseLockSettingsHelper; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.annotation.Config; + +@RunWith(SettingsRobolectricTestRunner.class) +@Config( + manifest = TestConfig.MANIFEST_PATH, + sdk = TestConfig.SDK_VERSION) +public class ChooseLockPasswordTest { + + @Test + public void intentBuilder_setPassword_shouldAddExtras() { + Intent intent = new IntentBuilder(application) + .setPassword("password") + .setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_NUMERIC) + .setPasswordLengthRange(123, 456) + .setUserId(123) + .build(); + + assertThat(intent.getBooleanExtra(ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, true)) + .named("EXTRA_KEY_HAS_CHALLENGE") + .isFalse(); + assertThat(intent.getStringExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD)) + .named("EXTRA_KEY_PASSWORD") + .isEqualTo("password"); + assertThat(intent.getIntExtra(ChooseLockPassword.PASSWORD_MIN_KEY, 0)) + .named("PASSWORD_MIN_KEY") + .isEqualTo(123); + assertThat(intent.getIntExtra(ChooseLockPassword.PASSWORD_MAX_KEY, 0)) + .named("PASSWORD_MAX_KEY") + .isEqualTo(456); + assertThat(intent.getIntExtra(LockPatternUtils.PASSWORD_TYPE_KEY, 0)) + .named("PASSWORD_TYPE_KEY") + .isEqualTo(DevicePolicyManager.PASSWORD_QUALITY_NUMERIC); + assertThat(intent.getIntExtra(Intent.EXTRA_USER_ID, 0)) + .named("EXTRA_USER_ID") + .isEqualTo(123); + } + + @Test + public void intentBuilder_setChallenge_shouldAddExtras() { + Intent intent = new IntentBuilder(application) + .setChallenge(12345L) + .setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC) + .setPasswordLengthRange(123, 456) + .setUserId(123) + .build(); + + assertThat(intent.getBooleanExtra(ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, false)) + .named("EXTRA_KEY_HAS_CHALLENGE") + .isTrue(); + assertThat(intent.getLongExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, 0L)) + .named("EXTRA_KEY_CHALLENGE") + .isEqualTo(12345L); + assertThat(intent.getIntExtra(ChooseLockPassword.PASSWORD_MIN_KEY, 0)) + .named("PASSWORD_MIN_KEY") + .isEqualTo(123); + assertThat(intent.getIntExtra(ChooseLockPassword.PASSWORD_MAX_KEY, 0)) + .named("PASSWORD_MAX_KEY") + .isEqualTo(456); + assertThat(intent.getIntExtra(LockPatternUtils.PASSWORD_TYPE_KEY, 0)) + .named("PASSWORD_TYPE_KEY") + .isEqualTo(DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC); + assertThat(intent.getIntExtra(Intent.EXTRA_USER_ID, 0)) + .named("EXTRA_USER_ID") + .isEqualTo(123); + } +} diff --git a/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java b/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java new file mode 100644 index 00000000000..49ca7177269 --- /dev/null +++ b/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java @@ -0,0 +1,100 @@ +/* + * Copyright (C) 2017 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 static com.google.common.truth.Truth.assertThat; + +import static org.robolectric.RuntimeEnvironment.application; + +import android.content.Intent; + +import com.android.settings.SettingsRobolectricTestRunner; +import com.android.settings.TestConfig; +import com.android.settings.password.ChooseLockPattern; +import com.android.settings.password.ChooseLockPattern.IntentBuilder; +import com.android.settings.password.ChooseLockSettingsHelper; +import com.android.settings.testutils.shadow.SettingsShadowResources; +import com.android.settings.testutils.shadow.ShadowDynamicIndexableContentMonitor; +import com.android.settings.testutils.shadow.ShadowEventLogWriter; +import com.android.settings.testutils.shadow.ShadowUtils; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.annotation.Config; + +@RunWith(SettingsRobolectricTestRunner.class) +@Config( + manifest = TestConfig.MANIFEST_PATH, + sdk = TestConfig.SDK_VERSION, + shadows = { + SettingsShadowResources.class, + SettingsShadowResources.SettingsShadowTheme.class, + ShadowDynamicIndexableContentMonitor.class, + ShadowEventLogWriter.class, + ShadowUtils.class + }) +public class ChooseLockPatternTest { + + @Test + public void activityCreationTest() { + // Basic sanity test for activity created without crashing + Robolectric.buildActivity(ChooseLockPattern.class, new IntentBuilder(application).build()) + .setup().get(); + } + + @Test + public void intentBuilder_setPattern_shouldAddExtras() { + Intent intent = new IntentBuilder(application) + .setPattern("pattern") + .setUserId(123) + .build(); + + assertThat(intent + .getBooleanExtra(ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, true)) + .named("EXTRA_KEY_HAS_CHALLENGE") + .isFalse(); + assertThat(intent + .getStringExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD)) + .named("EXTRA_KEY_PASSWORD") + .isEqualTo("pattern"); + assertThat(intent.getIntExtra(Intent.EXTRA_USER_ID, 0)) + .named("EXTRA_USER_ID") + .isEqualTo(123); + } + + @Test + public void intentBuilder_setChallenge_shouldAddExtras() { + Intent intent = new IntentBuilder(application) + .setChallenge(12345L) + .setUserId(123) + .build(); + + assertThat(intent + .getBooleanExtra(ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, false)) + .named("EXTRA_KEY_HAS_CHALLENGE") + .isTrue(); + assertThat(intent + .getLongExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, 0L)) + .named("EXTRA_KEY_CHALLENGE") + .isEqualTo(12345L); + assertThat(intent + .getIntExtra(Intent.EXTRA_USER_ID, 0)) + .named("EXTRA_USER_ID") + .isEqualTo(123); + } +} diff --git a/tests/robotests/src/com/android/settings/ConfirmCredentialTest.java b/tests/robotests/src/com/android/settings/password/ConfirmCredentialTest.java similarity index 72% rename from tests/robotests/src/com/android/settings/ConfirmCredentialTest.java rename to tests/robotests/src/com/android/settings/password/ConfirmCredentialTest.java index f771a1ffec4..6072d425d80 100644 --- a/tests/robotests/src/com/android/settings/ConfirmCredentialTest.java +++ b/tests/robotests/src/com/android/settings/password/ConfirmCredentialTest.java @@ -14,14 +14,15 @@ * limitations under the License */ -package com.android.settings; +package com.android.settings.password; -import static com.android.settings.ConfirmDeviceCredentialBaseFragment.LastTryDialog; import static com.google.common.truth.Truth.assertThat; -import android.R; +import com.android.settings.SettingsRobolectricTestRunner; +import com.android.settings.TestConfig; +import com.android.settings.password.ConfirmDeviceCredentialBaseFragment.LastTryDialog; + import android.app.Activity; -import android.app.Fragment; import android.app.FragmentManager; import com.android.settings.testutils.shadow.SettingsShadowResources; @@ -45,11 +46,14 @@ public class ConfirmCredentialTest { FragmentManager fm = Robolectric.buildActivity(Activity.class).get().getFragmentManager(); // Launch only one instance at a time. - assertThat(LastTryDialog.show(fm, "title", R.string.yes, R.string.ok, false)).isTrue(); - assertThat(LastTryDialog.show(fm, "title", R.string.yes, R.string.ok, false)).isFalse(); + assertThat(LastTryDialog.show( + fm, "title", android.R.string.yes, android.R.string.ok, false)).isTrue(); + assertThat(LastTryDialog.show( + fm, "title", android.R.string.yes, android.R.string.ok, false)).isFalse(); // After cancelling, the dialog should be re-shown when asked for. LastTryDialog.hide(fm); - assertThat(LastTryDialog.show(fm, "title", R.string.yes, R.string.ok, false)).isTrue(); + assertThat(LastTryDialog.show( + fm, "title", android.R.string.yes, android.R.string.ok, false)).isTrue(); } } diff --git a/tests/robotests/src/com/android/settings/password/SetNewPasswordActivityTest.java b/tests/robotests/src/com/android/settings/password/SetNewPasswordActivityTest.java index 573f5d86951..44f1fef6f90 100644 --- a/tests/robotests/src/com/android/settings/password/SetNewPasswordActivityTest.java +++ b/tests/robotests/src/com/android/settings/password/SetNewPasswordActivityTest.java @@ -16,14 +16,16 @@ package com.android.settings.password; +import static com.google.common.truth.Truth.assertThat; + +import static org.robolectric.Shadows.shadowOf; + import android.content.ComponentName; import android.content.Intent; import android.os.Bundle; 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; @@ -35,9 +37,6 @@ 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 { diff --git a/tests/robotests/src/com/android/settings/password/SetNewPasswordControllerTest.java b/tests/robotests/src/com/android/settings/password/SetNewPasswordControllerTest.java index ab01360910e..bb7f5c1c88e 100644 --- a/tests/robotests/src/com/android/settings/password/SetNewPasswordControllerTest.java +++ b/tests/robotests/src/com/android/settings/password/SetNewPasswordControllerTest.java @@ -16,6 +16,25 @@ package com.android.settings.password; +import static android.content.pm.PackageManager.FEATURE_FINGERPRINT; + +import static com.android.settings.password.ChooseLockGeneric.ChooseLockGenericFragment + .HIDE_DISABLED_PREFS; +import static com.android.settings.password.ChooseLockGeneric.ChooseLockGenericFragment + .MINIMUM_QUALITY_KEY; +import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE; +import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT; +import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE; + +import static com.google.common.truth.Truth.assertThat; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + import android.app.admin.DevicePolicyManager; import android.content.ComponentName; import android.content.Intent; @@ -33,20 +52,6 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; -import static android.content.pm.PackageManager.FEATURE_FINGERPRINT; -import static com.android.settings.ChooseLockGeneric.ChooseLockGenericFragment.HIDE_DISABLED_PREFS; -import static com.android.settings.ChooseLockGeneric.ChooseLockGenericFragment.MINIMUM_QUALITY_KEY; -import static com.android.settings.ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE; -import static com.android.settings.ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT; -import static com.android.settings.ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE; -import static com.google.common.truth.Truth.assertThat; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - /** * Tests for {@link SetNewPasswordController}. diff --git a/tests/unit/src/com/android/settings/ChooseLockSettingsHelperTest.java b/tests/unit/src/com/android/settings/password/ChooseLockSettingsHelperTest.java similarity index 99% rename from tests/unit/src/com/android/settings/ChooseLockSettingsHelperTest.java rename to tests/unit/src/com/android/settings/password/ChooseLockSettingsHelperTest.java index 218a74ea7af..e534fb62df1 100644 --- a/tests/unit/src/com/android/settings/ChooseLockSettingsHelperTest.java +++ b/tests/unit/src/com/android/settings/password/ChooseLockSettingsHelperTest.java @@ -1,6 +1,13 @@ -package com.android.settings; +package com.android.settings.password; +import static org.mockito.Matchers.anyInt; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + import android.app.Activity; import android.app.admin.DevicePolicyManager; import android.content.ComponentName; @@ -16,13 +23,6 @@ import org.mockito.ArgumentCaptor; import java.util.List; -import static org.mockito.Matchers.anyInt; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - public class ChooseLockSettingsHelperTest extends AndroidTestCase { private static final String SYSTEM_PROPERTY_DEXMAKER_DEXCACHE = "dexmaker.dexcache";