Chromium Code Reviews| Index: chrome/android/javatests/src/org/chromium/chrome/browser/search_engines/TemplateUrlServiceTest.java |
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/search_engines/TemplateUrlServiceTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/search_engines/TemplateUrlServiceTest.java |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..8c4e8b1b86379203a415c85c6cab4fce5c67ad01 |
| --- /dev/null |
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/search_engines/TemplateUrlServiceTest.java |
| @@ -0,0 +1,103 @@ |
| +// Copyright (c) 2013 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.chrome.browser.search_engines; |
| + |
| +import android.test.suitebuilder.annotation.SmallTest; |
| + |
| +import org.chromium.base.ThreadUtils; |
| +import org.chromium.base.test.util.Feature; |
| +import org.chromium.chrome.browser.search_engines.TemplateUrlService.LoadListener; |
| +import org.chromium.chrome.testshell.ChromiumTestShellTestBase; |
| +import org.chromium.content.browser.test.util.Criteria; |
| +import org.chromium.content.browser.test.util.CriteriaHelper; |
| + |
| +import java.util.Map; |
| +import java.util.concurrent.atomic.AtomicBoolean; |
| +import java.util.concurrent.atomic.AtomicReference; |
| + |
| +/** |
| + * Tests for Chrome on Android's usage of the TemplateUrlService API. |
| + */ |
| +public class TemplateUrlServiceTest extends ChromiumTestShellTestBase { |
| + |
| + @Override |
| + public void setUp() throws Exception { |
| + super.setUp(); |
| + launchChromiumTestShellWithBlankPage(); |
| + assertTrue(waitForActiveShellToBeDoneLoading()); |
| + } |
| + |
| + @SmallTest |
| + @Feature({"SearchEngines"}) |
| + public void testLoadUrlService() throws InterruptedException { |
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
| + @Override |
| + public void run() { |
| + assertFalse(TemplateUrlService.getInstance().isLoaded()); |
|
nyquist
2013/02/20 07:33:09
To ensure a test fails instead of crash, you must
Yaron
2013/02/21 21:39:15
Done except in one case which isn't really a failu
|
| + } |
| + }); |
| + |
| + waitForTemplateUrlServiceToLoad(); |
| + |
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
| + @Override |
| + public void run() { |
| + assertTrue(TemplateUrlService.getInstance().isLoaded()); |
| + |
| + } |
| + }); |
| + } |
| + |
| + @SmallTest |
| + @Feature({"SearchEngines"}) |
| + public void testSetAndGetSearchEngine() throws InterruptedException { |
| + final TemplateUrlService templateUrlService = waitForTemplateUrlServiceToLoad(); |
| + |
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
| + @Override |
| + public void run() { |
| + int searchEngine = templateUrlService.getSearchEngine(); |
| + assertEquals(0, searchEngine); |
| + Map<String, String>[] searchEngines = |
| + templateUrlService.getLocalizedSearchEngines(); |
| + assertTrue("There must be more than one search engine to change searchEngines", |
| + searchEngines.length > 1); |
| + templateUrlService.setSearchEngine(1); |
| + assertEquals(1, templateUrlService.getSearchEngine()); |
| + } |
| + }); |
| + } |
| + |
| + private TemplateUrlService waitForTemplateUrlServiceToLoad() throws InterruptedException { |
| + final AtomicBoolean observerNotified = new AtomicBoolean(false); |
| + final LoadListener listener = new LoadListener() { |
| + @Override |
| + public void onTemplateUrlServiceLoaded() { |
| + observerNotified.set(true); |
| + } |
| + }; |
| + final AtomicReference<TemplateUrlService> templateUrlService = |
| + new AtomicReference<TemplateUrlService>(); |
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
| + @Override |
| + public void run() { |
| + TemplateUrlService service = TemplateUrlService.getInstance(); |
| + templateUrlService.set(service); |
| + |
| + service.registerLoadListener(listener); |
| + service.load(); |
| + } |
| + }); |
| + |
| + assertTrue("Observer wasn't notified of TemplateUrlService load.", |
| + CriteriaHelper.pollForCriteria(new Criteria() { |
| + @Override |
| + public boolean isSatisfied() { |
| + return observerNotified.get(); |
| + } |
| + })); |
| + return templateUrlService.get(); |
| + } |
| +} |