| 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 40de50a82f08b82ac36e16a6dd3cb0af4598cd73..52104beb89ef2502dc1e3f10abd96f88b0b76b0d 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
|
| @@ -8,14 +8,22 @@ import android.app.Activity;
|
| import android.app.Instrumentation;
|
| import android.content.Context;
|
| 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.util.Feature;
|
| import org.chromium.chrome.browser.accessibility.FontSizePrefs;
|
| +import org.chromium.chrome.browser.search_engines.TemplateUrlService;
|
| +import org.chromium.chrome.browser.search_engines.TemplateUrlService.LoadListener;
|
| import org.chromium.chrome.shell.ChromeShellTestBase;
|
| +import org.chromium.chrome.shell.preferences.ChromeShellMainPreferences;
|
| +import org.chromium.content.browser.test.util.CallbackHelper;
|
| import org.chromium.content.browser.test.util.UiUtils;
|
|
|
| +import java.lang.reflect.Method;
|
| import java.text.NumberFormat;
|
|
|
| /**
|
| @@ -42,6 +50,74 @@ public class PreferencesTest extends ChromeShellTestBase {
|
| return (Preferences) activity;
|
| }
|
|
|
| + public static void clickPreference(PreferenceFragment fragment, Preference preference) {
|
| + try {
|
| + Method performClick = Preference.class.getDeclaredMethod("performClick",
|
| + PreferenceScreen.class);
|
| + performClick.invoke(preference, fragment.getPreferenceScreen());
|
| + } catch (ReflectiveOperationException e) {
|
| + throw new RuntimeException(e);
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * Change search engine and make sure it works correctly.
|
| + */
|
| + @SmallTest
|
| + @Feature({"Preferences"})
|
| + public void testSearchEnginePreference() throws Exception {
|
| + // Make sure the template_url_service is loaded.
|
| + final CallbackHelper onTemplateUrlServiceLoadedHelper = new CallbackHelper();
|
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + if (TemplateUrlService.getInstance().isLoaded()) {
|
| + onTemplateUrlServiceLoadedHelper.notifyCalled();
|
| + } else {
|
| + TemplateUrlService.getInstance().registerLoadListener(new LoadListener() {
|
| + @Override
|
| + public void onTemplateUrlServiceLoaded() {
|
| + onTemplateUrlServiceLoadedHelper.notifyCalled();
|
| + }
|
| + });
|
| + TemplateUrlService.getInstance().load();
|
| + }
|
| + }
|
| + });
|
| + onTemplateUrlServiceLoadedHelper.waitForCallback(0);
|
| +
|
| + // Set the second search engine as the default using TemplateUrlService.
|
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + TemplateUrlService.getInstance().setSearchEngine(1);
|
| + }
|
| + });
|
| +
|
| + final Preferences prefActivity = startPreferences(getInstrumentation(),
|
| + ChromeShellMainPreferences.class.getName());
|
| +
|
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + // Ensure that the second search engine in the list is selected.
|
| + PreferenceFragment fragment = (PreferenceFragment)
|
| + prefActivity.getFragmentForTest();
|
| + SearchEnginePreference pref = (SearchEnginePreference)
|
| + fragment.findPreference(SearchEnginePreference.PREF_SEARCH_ENGINE);
|
| + assertNotNull(pref);
|
| + assertEquals("1", pref.getValue());
|
| +
|
| + // Simulate selecting the third search engine and ensure that TemplateUrlService
|
| + // is updated.
|
| + if (pref.getOnPreferenceChangeListener().onPreferenceChange(pref, "2")) {
|
| + pref.setValue("2");
|
| + }
|
| + assertEquals(2, TemplateUrlService.getInstance().getDefaultSearchEngineIndex());
|
| + }
|
| + });
|
| + }
|
| +
|
| /**
|
| * Tests setting FontScaleFactor and ForceEnableZoom in AccessibilityPreferences and ensures
|
| * that ForceEnableZoom changes corresponding to FontScaleFactor.
|
|
|