Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5123)

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/preferences/PreferencesTest.java

Issue 2092723002: Redirect users without sync passphrase to passwords.google.com (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Revert change to testUserRedirect Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/javatests/src/org/chromium/chrome/browser/preferences/PreferencesTest.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/PreferencesTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/PreferencesTest.java
index 12d69bb81a3ad844e0fa5d8a2b84c5e1125ef696..f11a963d260c369bf4cfd7efa0de154f3d9455ca 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/PreferencesTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/PreferencesTest.java
@@ -4,6 +4,7 @@
package org.chromium.chrome.browser.preferences;
+import android.accounts.Account;
import android.app.Activity;
import android.app.Instrumentation;
import android.content.Context;
@@ -14,6 +15,7 @@ import android.preference.PreferenceScreen;
import android.test.suitebuilder.annotation.SmallTest;
import org.chromium.base.ThreadUtils;
+import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.DisableIf;
import org.chromium.base.test.util.Feature;
import org.chromium.chrome.browser.accessibility.FontSizePrefs;
@@ -23,9 +25,13 @@ import org.chromium.chrome.browser.preferences.website.WebsitePreferenceBridge;
import org.chromium.chrome.browser.search_engines.TemplateUrlService;
import org.chromium.chrome.browser.search_engines.TemplateUrlService.LoadListener;
import org.chromium.chrome.browser.search_engines.TemplateUrlService.TemplateUrl;
+import org.chromium.chrome.browser.sync.ProfileSyncService;
import org.chromium.content.browser.test.NativeLibraryTestBase;
import org.chromium.content.browser.test.util.CallbackHelper;
import org.chromium.content.browser.test.util.UiUtils;
+import org.chromium.sync.AndroidSyncSettings;
+import org.chromium.sync.signin.AccountManagerHelper;
+import org.chromium.sync.test.util.MockSyncContentResolverDelegate;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -56,6 +62,110 @@ public class PreferencesTest extends NativeLibraryTestBase {
return (Preferences) activity;
}
+ /**
+ * Fake ProfileSyncService to test displaying passwords natively.
+ */
+ private static class FakeProfileSyncServiceWithPassphrase extends ProfileSyncService {
+ public boolean isUsingSecondaryPassphrase() {
+ return true;
+ }
+ }
+
+ /**
+ * Fake ProfileSyncService to test redirecting the user to passwords.google.com.
+ */
+ private static class FakeProfileSyncServiceWithoutPassphrase extends ProfileSyncService {
Bernhard Bauer 2016/07/01 16:55:28 I think you could merge this with FakeProfileSyncS
dozsa 2016/07/05 10:19:54 Done.
+ public boolean isUsingSecondaryPassphrase() {
+ return false;
+ }
+ }
+
+ private void overrideProfileSyncService(final boolean usingPassphrase) {
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ if (usingPassphrase) {
+ // PSS has to be constructed on the UI thread.
+ ProfileSyncService.overrideForTests(
+ new FakeProfileSyncServiceWithPassphrase());
+ } else {
+ // PSS has to be constructed on the UI thread.
+ ProfileSyncService.overrideForTests(
+ new FakeProfileSyncServiceWithoutPassphrase());
+ }
+ }
+ });
+ }
+
+ /**
+ * Verifies that syncing users without a custom passphrase are redirected to
+ * passwords.google.com.
+ */
+ @SmallTest
+ @CommandLineFlags.Add("enable-features=" + MainPreferences.VIEW_PASSWORDS)
+ public void testUserRedirect() {
+ Account account = AccountManagerHelper.createAccountFromName("account@example.com");
+ String authority = AndroidSyncSettings.getContractAuthority(
+ getInstrumentation().getTargetContext());
+ MainPreferences mainPreferences = (MainPreferences) startPreferences(getInstrumentation(),
+ MainPreferences.class.getName()).getFragmentForTest();
+ ChromeBasePreference passwordsPref =
+ (ChromeBasePreference) mainPreferences.findPreference(
+ MainPreferences.PREF_SAVED_PASSWORDS);
Bernhard Bauer 2016/07/01 16:55:28 Could you move these tests to a new class? Then yo
dozsa 2016/07/05 10:19:54 Done.
+ overrideProfileSyncService(false);
+ MockSyncContentResolverDelegate delegate = new MockSyncContentResolverDelegate();
+ delegate.setIsSyncable(account, authority, 1);
+ AndroidSyncSettings.overrideForTests(getInstrumentation().getTargetContext(),
+ delegate);
+ assertTrue(mainPreferences.onPreferenceClick(passwordsPref));
+ }
+
+ /**
+ * Verifies that syncing users with a custom passphrase are allowed to
+ * natively view passwords.
+ */
+ @SmallTest
+ @CommandLineFlags.Add("enable-features=" + MainPreferences.VIEW_PASSWORDS)
+ public void testNativePasswordViewSyncing() {
+ Account account = AccountManagerHelper.createAccountFromName("account@example.com");
+ String authority = AndroidSyncSettings.getContractAuthority(
+ getInstrumentation().getTargetContext());
+ MainPreferences mainPreferences = (MainPreferences) startPreferences(getInstrumentation(),
+ MainPreferences.class.getName()).getFragmentForTest();
+ ChromeBasePreference passwordsPref =
+ (ChromeBasePreference) mainPreferences.findPreference(
+ MainPreferences.PREF_SAVED_PASSWORDS);
+ overrideProfileSyncService(true);
+ MockSyncContentResolverDelegate delegate = new MockSyncContentResolverDelegate();
+ delegate.setIsSyncable(account, authority, 1);
+ AndroidSyncSettings.overrideForTests(getInstrumentation().getTargetContext(),
+ delegate);
+ assertEquals(passwordsPref.getFragment(), "org.chromium.chrome.browser.preferences"
Bernhard Bauer 2016/07/01 16:55:28 Expected value goes first.
dozsa 2016/07/05 10:19:54 Done.
+ + ".password.SavePasswordsPreferences");
+ }
+
+ /**
+ * Verifies that non-syncing users are allowed to natively view passwords.
+ */
+ @SmallTest
+ @CommandLineFlags.Add("enable-features=" + MainPreferences.VIEW_PASSWORDS)
+ public void testNativePasswordViewNonSyncing() {
+ Account account = AccountManagerHelper.createAccountFromName("account@example.com");
+ String authority = AndroidSyncSettings.getContractAuthority(
+ getInstrumentation().getTargetContext());
+ MainPreferences mainPreferences = (MainPreferences) startPreferences(getInstrumentation(),
+ MainPreferences.class.getName()).getFragmentForTest();
+ ChromeBasePreference passwordsPref =
+ (ChromeBasePreference) mainPreferences.findPreference(
+ MainPreferences.PREF_SAVED_PASSWORDS);
+ MockSyncContentResolverDelegate delegate = new MockSyncContentResolverDelegate();
+ delegate.setIsSyncable(account, authority, 0);
+ AndroidSyncSettings.overrideForTests(getInstrumentation().getTargetContext(),
+ delegate);
+ assertEquals(passwordsPref.getFragment(), "org.chromium.chrome.browser.preferences"
+ + ".password.SavePasswordsPreferences");
+ }
+
public static void clickPreference(PreferenceFragment fragment, Preference preference) {
try {
Method performClick = Preference.class.getDeclaredMethod("performClick",

Powered by Google App Engine
This is Rietveld 408576698