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

Unified Diff: blimp/client/app/android/javatests/src/org/chromium/blimp/core/settings/BlimpPreferencesTest.java

Issue 2261273002: Integrate UI with authentication flow. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Misc fixes/ Created 4 years, 4 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: blimp/client/app/android/javatests/src/org/chromium/blimp/core/settings/BlimpPreferencesTest.java
diff --git a/blimp/client/app/android/javatests/src/org/chromium/blimp/core/settings/BlimpPreferencesTest.java b/blimp/client/app/android/javatests/src/org/chromium/blimp/core/settings/BlimpPreferencesTest.java
index 0d53f4e6b222013355d735ab3c83f331586e4c73..19396a9779d5c55e9fb2234cb39bc5bd025ebe69 100644
--- a/blimp/client/app/android/javatests/src/org/chromium/blimp/core/settings/BlimpPreferencesTest.java
+++ b/blimp/client/app/android/javatests/src/org/chromium/blimp/core/settings/BlimpPreferencesTest.java
@@ -9,11 +9,15 @@ import android.content.Intent;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
+import android.preference.SwitchPreference;
import android.test.suitebuilder.annotation.SmallTest;
+import org.chromium.base.ContextUtils;
import org.chromium.base.ThreadUtils;
import org.chromium.base.test.BaseActivityInstrumentationTestCase;
-import org.chromium.blimp_public.BlimpSettingsCallbacks;
+import org.chromium.blimp.core.MockBlimpClientContext;
+import org.chromium.blimp.core.MockBlimpClientContextDelegate;
+import org.chromium.components.sync.signin.ChromeSigninController;
/**
* Test blimp setting page.
@@ -34,30 +38,48 @@ public class BlimpPreferencesTest extends BaseActivityInstrumentationTestCase<Mo
getActivity();
}
- // Mock callback implementation.
- static class MockSettingCallback implements BlimpSettingsCallbacks {
- private int mRestartCalled = 0;
+ /**
+ * Mock {@link AboutBlimpPreferences}, the main test target class.
+ */
+ public static class MockAboutBlimpPreferences extends AboutBlimpPreferences {
+ private static final String BLIMP_PREF_TAG = "TestBlimpPref";
+
+ // Avoid calling native code in instrumentation test.
@Override
- public void onRestartBrowserRequested() {
- ++mRestartCalled;
- }
- }
+ protected void initializeNative() {}
+ @Override
+ protected void destroyNative() {}
- // Mock {@link AboutBlimpPreferences}, the main test target class.
- static class MockAboutBlimpPreferences extends AboutBlimpPreferences {
- private static final String BLIMP_PREF_TAG = "TestBlimpPref";
public void testRestartBrowser() {
super.restartBrowser();
}
}
- private Preference attachBlimpPref(PreferenceFragment fragment,
- BlimpSettingsCallbacks callback) {
+ private Preference attachBlimpPref(PreferenceFragment fragment) {
ThreadUtils.assertOnUiThread();
assertNotNull(fragment);
- MockAboutBlimpPreferences.addBlimpPreferences(fragment);
- MockAboutBlimpPreferences.registerCallback(callback);
- return fragment.findPreference(MockAboutBlimpPreferences.PREF_BLIMP_SWITCH);
+ MockAboutBlimpPreferences.addBlimpPreferences(fragment, new MockBlimpClientContext());
+ return fragment.findPreference(PreferencesUtil.PREF_BLIMP_SWITCH);
+ }
+
+ // Create the setting page preference.
+ private MockAboutBlimpPreferences createMockBlimpPreferenceFragment() {
+ FragmentManager manager = getActivity().getFragmentManager();
+ manager.beginTransaction()
+ .add(new MockAboutBlimpPreferences(), MockAboutBlimpPreferences.BLIMP_PREF_TAG)
+ .commitAllowingStateLoss();
+ manager.executePendingTransactions();
+
+ MockAboutBlimpPreferences blimpFragment =
+ (MockAboutBlimpPreferences) manager.findFragmentByTag(
+ MockAboutBlimpPreferences.BLIMP_PREF_TAG);
+
+ assertNotNull("Blimp PreferenceFragment is not found.", blimpFragment);
+
+ // Call onResume to load preferences items, this simulate the actual fragment life cycle.
+ blimpFragment.onResume();
+
+ return blimpFragment;
}
/**
@@ -76,27 +98,85 @@ public class BlimpPreferencesTest extends BaseActivityInstrumentationTestCase<Mo
PreferenceScreen mainScreen = mainFragment.getPreferenceScreen();
assertNotNull("Mock Main preferences screen is null.", mainScreen);
- MockSettingCallback callback = new MockSettingCallback();
-
// Check if blimp settings preference item can be attached to main preferences list.
- Preference blimpPref = attachBlimpPref(mainFragment, callback);
+ Preference blimpPref = attachBlimpPref(mainFragment);
assertNotNull("Blimp preference item in main preferences list is not found.",
blimpPref);
// Open blimp settings page and check if callback is handled.
- FragmentManager manager = mainFragment.getFragmentManager();
- manager.beginTransaction().add(
- new MockAboutBlimpPreferences(), MockAboutBlimpPreferences.BLIMP_PREF_TAG)
- .commitAllowingStateLoss();
- manager.executePendingTransactions();
-
- MockAboutBlimpPreferences blimpFragment = (MockAboutBlimpPreferences)
- manager.findFragmentByTag(MockAboutBlimpPreferences.BLIMP_PREF_TAG);
- assertNotNull("Blimp PreferenceFragment is not found.", blimpFragment);
+ MockAboutBlimpPreferences blimpFragment = createMockBlimpPreferenceFragment();
+ MockBlimpClientContext mockClientContext = new MockBlimpClientContext();
+ MockAboutBlimpPreferences.setDelegate(mockClientContext);
blimpFragment.testRestartBrowser();
- assertEquals("Unexpected number of callback triggered.", 1,
- callback.mRestartCalled);
+ MockBlimpClientContextDelegate mockDelegate =
+ (MockBlimpClientContextDelegate) mockClientContext.getDelegate();
+ assertEquals("Restart browser should be called.",
+ mockDelegate.restartBrowserCalled(), 1);
+ }
+ });
+ }
+
+ /**
+ * Test the Blimp switch preference when user signed in or signed out.
+ */
+ @SmallTest
+ public void testSwitchPrefSignedIn() {
+ launchActivity();
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ // Mock user sign in.
+ ChromeSigninController signinController =
+ ChromeSigninController.get(ContextUtils.getApplicationContext());
+ signinController.setSignedInAccountName("test@gmail.com");
+ assertTrue("User should be signed in.", signinController.isSignedIn());
+
+ MockBlimpClientContext mockClientContext = new MockBlimpClientContext();
+ MockAboutBlimpPreferences.setDelegate(mockClientContext);
+
+ MockAboutBlimpPreferences blimpFragment = createMockBlimpPreferenceFragment();
+
+ // Test switch preference states after the setting page is created.
+ SwitchPreference switchPref = (SwitchPreference) blimpFragment.findPreference(
+ PreferencesUtil.PREF_BLIMP_SWITCH);
+ boolean canUpdate = switchPref.getOnPreferenceChangeListener().onPreferenceChange(
+ switchPref, true);
+ assertTrue("User can change switch if the user signed in.", canUpdate);
+ assertEquals(
+ "Connect should be called.", mockClientContext.connectCalledCount(), 1);
+ mockClientContext.reset();
+
+ // Test switch state after user signed out.
+ signinController.setSignedInAccountName(null);
+ blimpFragment.onResume();
+
+ // Need to update the reference of switchPreference since UI will remove all the
+ // prefs, and fill in with new ones in onResume.
+ switchPref = (SwitchPreference) blimpFragment.findPreference(
+ PreferencesUtil.PREF_BLIMP_SWITCH);
+ canUpdate = switchPref.getOnPreferenceChangeListener().onPreferenceChange(
+ switchPref, true);
+ assertFalse("User can't change switch if the user signed out.", canUpdate);
+
+ // Test waiting for sign in and sign in call from native code.
+ blimpFragment.mWaitForSignIn = true;
+ blimpFragment.onSignedIn();
+ switchPref = (SwitchPreference) blimpFragment.findPreference(
+ PreferencesUtil.PREF_BLIMP_SWITCH);
+ assertFalse(
+ "UI should no longer wait for user sign in.", blimpFragment.mWaitForSignIn);
+ assertTrue("User sign in call should turn on the switch.", switchPref.isChecked());
+ assertEquals(
+ "Connect should be called.", mockClientContext.connectCalledCount(), 1);
+ mockClientContext.reset();
+
+ // Test sign out call from native code.
+ blimpFragment.onSignedOut();
+ switchPref = (SwitchPreference) blimpFragment.findPreference(
+ PreferencesUtil.PREF_BLIMP_SWITCH);
+ assertFalse(
+ "User sign out call should turn off the switch.", switchPref.isChecked());
}
});
}

Powered by Google App Engine
This is Rietveld 408576698