Commit 4a156bd6 authored by Natalie Chouinard's avatar Natalie Chouinard Committed by Commit Bot

Migrate Password Manager to use prefs.h

Migrate Password Manager preferences to use PrefServiceBridge generic
methods, making use of the prefs.h enums.

Bug: 1016957
Change-Id: If35d6e14448dff0883bb66e836f67dbe631ae0f4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1885502Reviewed-by: default avatarGanggui Tang <gogerald@chromium.org>
Commit-Queue: Natalie Chouinard <chouinard@chromium.org>
Cr-Commit-Position: refs/heads/master@{#710971}
parent 69918b2d
......@@ -291,38 +291,6 @@ public class PrefServiceBridge {
return PrefServiceBridgeJni.get().getBlockThirdPartyCookiesManaged(PrefServiceBridge.this);
}
public boolean isRememberPasswordsEnabled() {
return PrefServiceBridgeJni.get().getRememberPasswordsEnabled(PrefServiceBridge.this);
}
public boolean isPasswordManagerAutoSigninEnabled() {
return PrefServiceBridgeJni.get().getPasswordManagerAutoSigninEnabled(
PrefServiceBridge.this);
}
public boolean isPasswordLeakDetectionEnabled() {
return PrefServiceBridgeJni.get().getPasswordLeakDetectionEnabled(PrefServiceBridge.this);
}
/**
* @return Whether password storage is configured by policy
*/
public boolean isRememberPasswordsManaged() {
return PrefServiceBridgeJni.get().getRememberPasswordsManaged(PrefServiceBridge.this);
}
public boolean isPasswordManagerAutoSigninManaged() {
return PrefServiceBridgeJni.get().getPasswordManagerAutoSigninManaged(
PrefServiceBridge.this);
}
/**
* @return Whether leak detection is enabled/disabled by policy
*/
public boolean isPasswordLeakDetectionManaged() {
return PrefServiceBridgeJni.get().getPasswordLeakDetectionManaged(PrefServiceBridge.this);
}
/**
* @return Whether vibration is enabled for notifications.
*/
......@@ -615,19 +583,6 @@ public class PrefServiceBridge {
PrefServiceBridgeJni.get().setDoNotTrackEnabled(PrefServiceBridge.this, enabled);
}
public void setRememberPasswordsEnabled(boolean allow) {
PrefServiceBridgeJni.get().setRememberPasswordsEnabled(PrefServiceBridge.this, allow);
}
public void setPasswordManagerAutoSigninEnabled(boolean enabled) {
PrefServiceBridgeJni.get().setPasswordManagerAutoSigninEnabled(
PrefServiceBridge.this, enabled);
}
public void setPasswordLeakDetectionEnabled(boolean enabled) {
PrefServiceBridgeJni.get().setPasswordLeakDetectionEnabled(PrefServiceBridge.this, enabled);
}
public void setNotificationsVibrateEnabled(boolean enabled) {
PrefServiceBridgeJni.get().setNotificationsVibrateEnabled(PrefServiceBridge.this, enabled);
}
......@@ -1063,12 +1018,6 @@ public class PrefServiceBridge {
boolean getBackgroundSyncEnabled(PrefServiceBridge caller);
boolean getBlockThirdPartyCookiesEnabled(PrefServiceBridge caller);
boolean getBlockThirdPartyCookiesManaged(PrefServiceBridge caller);
boolean getRememberPasswordsEnabled(PrefServiceBridge caller);
boolean getPasswordManagerAutoSigninEnabled(PrefServiceBridge caller);
boolean getPasswordLeakDetectionEnabled(PrefServiceBridge caller);
boolean getRememberPasswordsManaged(PrefServiceBridge caller);
boolean getPasswordManagerAutoSigninManaged(PrefServiceBridge caller);
boolean getPasswordLeakDetectionManaged(PrefServiceBridge caller);
boolean getAllowLocationUserModifiable(PrefServiceBridge caller);
boolean getLocationAllowedByPolicy(PrefServiceBridge caller);
boolean getAllowLocationManagedByCustodian(PrefServiceBridge caller);
......@@ -1111,9 +1060,6 @@ public class PrefServiceBridge {
void setBlockThirdPartyCookiesEnabled(PrefServiceBridge caller, boolean enabled);
void setClipboardEnabled(PrefServiceBridge caller, boolean enabled);
void setDoNotTrackEnabled(PrefServiceBridge caller, boolean enabled);
void setRememberPasswordsEnabled(PrefServiceBridge caller, boolean allow);
void setPasswordManagerAutoSigninEnabled(PrefServiceBridge caller, boolean enabled);
void setPasswordLeakDetectionEnabled(PrefServiceBridge caller, boolean enabled);
boolean getAllowLocationEnabled(PrefServiceBridge caller);
boolean getNotificationsEnabled(PrefServiceBridge caller);
boolean getNotificationsVibrateEnabled(PrefServiceBridge caller);
......
......@@ -138,7 +138,8 @@ public class PreferencesLauncher {
RecordHistogram.recordEnumeratedHistogram(
"PasswordManager.ManagePasswordsReferrerSignedInAndSyncing", referrer,
ManagePasswordsReferrer.MAX_VALUE + 1);
if (!PrefServiceBridge.getInstance().isRememberPasswordsManaged()) {
if (!PrefServiceBridge.getInstance().isManagedPreference(
Pref.REMEMBER_PASSWORDS_ENABLED)) {
if (tryShowingTheGooglePasswordManager(activity)) return;
}
}
......
......@@ -31,6 +31,7 @@ import org.chromium.chrome.browser.help.HelpAndFeedback;
import org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference;
import org.chromium.chrome.browser.preferences.ChromeBasePreference;
import org.chromium.chrome.browser.preferences.ChromeSwitchPreference;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.preferences.PreferencesLauncher;
import org.chromium.chrome.browser.preferences.SearchUtils;
......@@ -407,11 +408,13 @@ public class SavePasswordsPreferences
mSavePasswordsSwitch.setSummaryOn(R.string.text_on);
mSavePasswordsSwitch.setSummaryOff(R.string.text_off);
mSavePasswordsSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
PrefServiceBridge.getInstance().setRememberPasswordsEnabled((boolean) newValue);
PrefServiceBridge.getInstance().setBoolean(
Pref.REMEMBER_PASSWORDS_ENABLED, (boolean) newValue);
return true;
});
mSavePasswordsSwitch.setManagedPreferenceDelegate(
preference -> PrefServiceBridge.getInstance().isRememberPasswordsManaged());
mSavePasswordsSwitch.setManagedPreferenceDelegate(preference
-> PrefServiceBridge.getInstance().isManagedPreference(
Pref.REMEMBER_PASSWORDS_ENABLED));
try (StrictModeContext ignored = StrictModeContext.allowDiskReads()) {
getPreferenceScreen().addPreference(mSavePasswordsSwitch);
......@@ -422,7 +425,7 @@ public class SavePasswordsPreferences
// (e.g. the switch will say "On" when save passwords is really turned off), so
// .setChecked() should be called after .addPreference()
mSavePasswordsSwitch.setChecked(
PrefServiceBridge.getInstance().isRememberPasswordsEnabled());
PrefServiceBridge.getInstance().getBoolean(Pref.REMEMBER_PASSWORDS_ENABLED));
}
private void createAutoSignInCheckbox() {
......@@ -432,14 +435,16 @@ public class SavePasswordsPreferences
mAutoSignInSwitch.setOrder(ORDER_AUTO_SIGNIN_CHECKBOX);
mAutoSignInSwitch.setSummary(R.string.passwords_auto_signin_description);
mAutoSignInSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
PrefServiceBridge.getInstance().setPasswordManagerAutoSigninEnabled((boolean) newValue);
PrefServiceBridge.getInstance().setBoolean(
Pref.PASSWORD_MANAGER_AUTO_SIGNIN_ENABLED, (boolean) newValue);
return true;
});
mAutoSignInSwitch.setManagedPreferenceDelegate(
preference -> PrefServiceBridge.getInstance().isPasswordManagerAutoSigninManaged());
mAutoSignInSwitch.setManagedPreferenceDelegate(preference
-> PrefServiceBridge.getInstance().isManagedPreference(
Pref.PASSWORD_MANAGER_AUTO_SIGNIN_ENABLED));
getPreferenceScreen().addPreference(mAutoSignInSwitch);
mAutoSignInSwitch.setChecked(
PrefServiceBridge.getInstance().isPasswordManagerAutoSigninEnabled());
mAutoSignInSwitch.setChecked(PrefServiceBridge.getInstance().getBoolean(
Pref.PASSWORD_MANAGER_AUTO_SIGNIN_ENABLED));
}
private void createAutoLeakDetectionSwitch() {
......@@ -449,23 +454,26 @@ public class SavePasswordsPreferences
mAutoLeakDetectionSwitch.setKey(PREF_LEAK_DETECTION_SWITCH);
mAutoLeakDetectionSwitch.setTitle(R.string.passwords_leak_detection_switch_title);
mAutoLeakDetectionSwitch.setOrder(ORDER_AUTO_LEAK_DETECTION_SWITCH);
mAutoLeakDetectionSwitch.setManagedPreferenceDelegate(
preference -> PrefServiceBridge.getInstance().isPasswordLeakDetectionManaged());
mAutoLeakDetectionSwitch.setManagedPreferenceDelegate(preference
-> PrefServiceBridge.getInstance().isManagedPreference(
Pref.PASSWORD_MANAGER_LEAK_DETECTION_ENABLED));
getPreferenceScreen().addPreference(mAutoLeakDetectionSwitch);
if (PasswordUIView.hasAccountForLeakCheckRequest()) {
mAutoLeakDetectionSwitch.setChecked(
PrefServiceBridge.getInstance().isPasswordLeakDetectionEnabled());
mAutoLeakDetectionSwitch.setChecked(PrefServiceBridge.getInstance().getBoolean(
Pref.PASSWORD_MANAGER_LEAK_DETECTION_ENABLED));
mAutoLeakDetectionSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
PrefServiceBridge.getInstance().setPasswordLeakDetectionEnabled((boolean) newValue);
PrefServiceBridge.getInstance().setBoolean(
Pref.PASSWORD_MANAGER_LEAK_DETECTION_ENABLED, (boolean) newValue);
return true;
});
} else {
mAutoLeakDetectionSwitch.setChecked(false);
mAutoLeakDetectionSwitch.setEnabled(false);
mAutoLeakDetectionSwitch.setOnPreferenceClickListener(null);
if (PrefServiceBridge.getInstance().isPasswordLeakDetectionEnabled()) {
if (PrefServiceBridge.getInstance().getBoolean(
Pref.PASSWORD_MANAGER_LEAK_DETECTION_ENABLED)) {
mAutoLeakDetectionSwitch.setSummary(
R.string.passwords_leak_detection_switch_signed_out_enable_description);
}
......
......@@ -367,7 +367,8 @@ public class PreferencesTest {
CriteriaHelper.pollUiThread(new Criteria() {
@Override
public boolean isSatisfied() {
return PrefServiceBridge.getInstance().isRememberPasswordsManaged();
return PrefServiceBridge.getInstance().isManagedPreference(
Pref.REMEMBER_PASSWORDS_ENABLED);
}
});
......
......@@ -92,6 +92,7 @@ import org.chromium.chrome.browser.history.HistoryManager;
import org.chromium.chrome.browser.history.StubbedHistoryProvider;
import org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference;
import org.chromium.chrome.browser.preferences.ChromeSwitchPreference;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.preferences.Preferences;
import org.chromium.chrome.browser.preferences.PreferencesLauncher;
......@@ -534,8 +535,9 @@ public class SavePasswordsPreferencesTest {
@SmallTest
@Feature({"Preferences"})
public void testSavePasswordsSwitch() {
TestThreadUtils.runOnUiThreadBlocking(
() -> { PrefServiceBridge.getInstance().setRememberPasswordsEnabled(true); });
TestThreadUtils.runOnUiThreadBlocking(() -> {
PrefServiceBridge.getInstance().setBoolean(Pref.REMEMBER_PASSWORDS_ENABLED, true);
});
final Preferences preferences =
PreferencesTest.startPreferences(InstrumentationRegistry.getInstrumentation(),
......@@ -550,13 +552,15 @@ public class SavePasswordsPreferencesTest {
Assert.assertTrue(onOffSwitch.isChecked());
onOffSwitch.performClick();
Assert.assertFalse(PrefServiceBridge.getInstance().isRememberPasswordsEnabled());
Assert.assertFalse(
PrefServiceBridge.getInstance().getBoolean(Pref.REMEMBER_PASSWORDS_ENABLED));
onOffSwitch.performClick();
Assert.assertTrue(PrefServiceBridge.getInstance().isRememberPasswordsEnabled());
Assert.assertTrue(
PrefServiceBridge.getInstance().getBoolean(Pref.REMEMBER_PASSWORDS_ENABLED));
preferences.finish();
PrefServiceBridge.getInstance().setRememberPasswordsEnabled(false);
PrefServiceBridge.getInstance().setBoolean(Pref.REMEMBER_PASSWORDS_ENABLED, false);
});
final Preferences preferences2 =
......@@ -673,7 +677,8 @@ public class SavePasswordsPreferencesTest {
@Feature({"Preferences"})
public void testAutoSignInCheckbox() {
TestThreadUtils.runOnUiThreadBlocking(() -> {
PrefServiceBridge.getInstance().setPasswordManagerAutoSigninEnabled(true);
PrefServiceBridge.getInstance().setBoolean(
Pref.PASSWORD_MANAGER_AUTO_SIGNIN_ENABLED, true);
});
final Preferences preferences =
......@@ -689,14 +694,16 @@ public class SavePasswordsPreferencesTest {
Assert.assertTrue(onOffSwitch.isChecked());
onOffSwitch.performClick();
Assert.assertFalse(
PrefServiceBridge.getInstance().isPasswordManagerAutoSigninEnabled());
Assert.assertFalse(PrefServiceBridge.getInstance().getBoolean(
Pref.PASSWORD_MANAGER_AUTO_SIGNIN_ENABLED));
onOffSwitch.performClick();
Assert.assertTrue(PrefServiceBridge.getInstance().isPasswordManagerAutoSigninEnabled());
Assert.assertTrue(PrefServiceBridge.getInstance().getBoolean(
Pref.PASSWORD_MANAGER_AUTO_SIGNIN_ENABLED));
preferences.finish();
PrefServiceBridge.getInstance().setPasswordManagerAutoSigninEnabled(false);
PrefServiceBridge.getInstance().setBoolean(
Pref.PASSWORD_MANAGER_AUTO_SIGNIN_ENABLED, false);
});
final Preferences preferences2 =
......
......@@ -31,6 +31,7 @@ import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.SyncFirstSetupCompleteSource;
import org.chromium.chrome.browser.bookmarks.BookmarkBridge;
import org.chromium.chrome.browser.preferences.MainPreferences;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.preferences.Preferences;
import org.chromium.chrome.browser.preferences.sync.AccountManagementFragment;
......@@ -288,8 +289,8 @@ public class SigninTest {
Assert.assertNull(mSigninManager.getManagementDomain());
// Verify that the password manager is enabled by default.
Assert.assertTrue(mPrefService.isRememberPasswordsEnabled());
Assert.assertFalse(mPrefService.isRememberPasswordsManaged());
Assert.assertTrue(mPrefService.getBoolean(Pref.REMEMBER_PASSWORDS_ENABLED));
Assert.assertFalse(mPrefService.isManagedPreference(Pref.REMEMBER_PASSWORDS_ENABLED));
});
// Verify that its preference UI is enabled.
......
......@@ -364,48 +364,6 @@ static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesManaged(
return GetPrefService()->IsManagedPreference(prefs::kBlockThirdPartyCookies);
}
static jboolean JNI_PrefServiceBridge_GetRememberPasswordsEnabled(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
return GetPrefService()->GetBoolean(
password_manager::prefs::kCredentialsEnableService);
}
static jboolean JNI_PrefServiceBridge_GetPasswordManagerAutoSigninEnabled(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
return GetPrefService()->GetBoolean(
password_manager::prefs::kCredentialsEnableAutosignin);
}
static jboolean JNI_PrefServiceBridge_GetPasswordLeakDetectionEnabled(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
return GetPrefService()->GetBoolean(
password_manager::prefs::kPasswordLeakDetectionEnabled);
}
static jboolean JNI_PrefServiceBridge_GetRememberPasswordsManaged(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
return GetPrefService()->IsManagedPreference(
password_manager::prefs::kCredentialsEnableService);
}
static jboolean JNI_PrefServiceBridge_GetPasswordManagerAutoSigninManaged(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
return GetPrefService()->IsManagedPreference(
password_manager::prefs::kCredentialsEnableAutosignin);
}
static jboolean JNI_PrefServiceBridge_GetPasswordLeakDetectionManaged(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
return GetPrefService()->IsManagedPreference(
password_manager::prefs::kPasswordLeakDetectionEnabled);
}
static jboolean JNI_PrefServiceBridge_GetDoNotTrackEnabled(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
......@@ -811,30 +769,6 @@ static void JNI_PrefServiceBridge_SetBlockThirdPartyCookiesEnabled(
GetPrefService()->SetBoolean(prefs::kBlockThirdPartyCookies, enabled);
}
static void JNI_PrefServiceBridge_SetRememberPasswordsEnabled(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
jboolean allow) {
GetPrefService()->SetBoolean(
password_manager::prefs::kCredentialsEnableService, allow);
}
static void JNI_PrefServiceBridge_SetPasswordManagerAutoSigninEnabled(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
jboolean enabled) {
GetPrefService()->SetBoolean(
password_manager::prefs::kCredentialsEnableAutosignin, enabled);
}
static void JNI_PrefServiceBridge_SetPasswordLeakDetectionEnabled(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
jboolean enabled) {
GetPrefService()->SetBoolean(
password_manager::prefs::kPasswordLeakDetectionEnabled, enabled);
}
static void JNI_PrefServiceBridge_SetAllowLocationEnabled(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
......
......@@ -41,6 +41,9 @@ enum Pref {
SAFE_BROWSING_EXTENDED_REPORTING_OPT_IN_ALLOWED,
PASSWORD_MANAGER_ONBOARDING_STATE,
SEARCH_SUGGEST_ENABLED,
REMEMBER_PASSWORDS_ENABLED,
PASSWORD_MANAGER_AUTO_SIGNIN_ENABLED,
PASSWORD_MANAGER_LEAK_DETECTION_ENABLED,
// PREF_NUM_PREFS must be the last entry.
PREF_NUM_PREFS
};
......@@ -71,6 +74,9 @@ const char* const kPrefsExposedToJava[] = {
prefs::kSafeBrowsingExtendedReportingOptInAllowed,
password_manager::prefs::kPasswordManagerOnboardingState,
prefs::kSearchSuggestEnabled,
password_manager::prefs::kCredentialsEnableService,
password_manager::prefs::kCredentialsEnableAutosignin,
password_manager::prefs::kPasswordLeakDetectionEnabled,
};
#endif // CHROME_BROWSER_ANDROID_PREFERENCES_PREFS_H_
......@@ -67,6 +67,12 @@ TEST_F(PrefsTest, TestIndex) {
EXPECT_EQ(password_manager::prefs::kPasswordManagerOnboardingState,
GetPrefName(PASSWORD_MANAGER_ONBOARDING_STATE));
EXPECT_EQ(prefs::kSearchSuggestEnabled, GetPrefName(SEARCH_SUGGEST_ENABLED));
EXPECT_EQ(password_manager::prefs::kCredentialsEnableService,
GetPrefName(REMEMBER_PASSWORDS_ENABLED));
EXPECT_EQ(password_manager::prefs::kCredentialsEnableAutosignin,
GetPrefName(PASSWORD_MANAGER_AUTO_SIGNIN_ENABLED));
EXPECT_EQ(password_manager::prefs::kPasswordLeakDetectionEnabled,
GetPrefName(PASSWORD_MANAGER_LEAK_DETECTION_ENABLED));
// If this check fails, a pref is missing a test case above.
EXPECT_EQ(Pref::PREF_NUM_PREFS, pref_count_);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment