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

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

Issue 2173563003: Blimp settings UI integration for Chrome, everything still lives in Blimp. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix nit issues, and prepare to commit. Created 4 years, 5 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
new file mode 100644
index 0000000000000000000000000000000000000000..0d53f4e6b222013355d735ab3c83f331586e4c73
--- /dev/null
+++ b/blimp/client/app/android/javatests/src/org/chromium/blimp/core/settings/BlimpPreferencesTest.java
@@ -0,0 +1,103 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.blimp.core.settings;
+
+import android.app.FragmentManager;
+import android.content.Intent;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+import android.preference.PreferenceScreen;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import org.chromium.base.ThreadUtils;
+import org.chromium.base.test.BaseActivityInstrumentationTestCase;
+import org.chromium.blimp_public.BlimpSettingsCallbacks;
+
+/**
+ * Test blimp setting page.
+ */
+public class BlimpPreferencesTest extends BaseActivityInstrumentationTestCase<MockPreferences> {
+
+ public BlimpPreferencesTest() {
+ super(MockPreferences.class);
+ }
+
+ // Launch the testing activity from non UI thread.
+ private void launchActivity() {
+ assertFalse(ThreadUtils.runningOnUiThread());
+ Intent intent = new Intent(Intent.ACTION_MAIN);
+ setActivityIntent(intent);
+
+ // Start the activity.
+ getActivity();
+ }
+
+ // Mock callback implementation.
+ static class MockSettingCallback implements BlimpSettingsCallbacks {
+ private int mRestartCalled = 0;
+ @Override
+ public void onRestartBrowserRequested() {
+ ++mRestartCalled;
+ }
+ }
+
+ // 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) {
+ ThreadUtils.assertOnUiThread();
+ assertNotNull(fragment);
+ MockAboutBlimpPreferences.addBlimpPreferences(fragment);
+ MockAboutBlimpPreferences.registerCallback(callback);
+ return fragment.findPreference(MockAboutBlimpPreferences.PREF_BLIMP_SWITCH);
+ }
+
+ /**
+ * Test if blimp settings can be attached correctly, and if callback is handled correctly.
+ */
+ @SmallTest
+ public void testBlimpPref() {
+ launchActivity();
+
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ PreferenceFragment mainFragment = getActivity().getMainFragment();
+ assertNotNull("Mock Main preferences is null.", mainFragment);
+
+ 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);
+ 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);
+
+ blimpFragment.testRestartBrowser();
+ assertEquals("Unexpected number of callback triggered.", 1,
+ callback.mRestartCalled);
+ }
+ });
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698