EMMA Coverage Report (generated Tue Aug 20 10:07:21 PDT 2013)
[all classes][org.chromium.chrome.browser.search_engines]

COVERAGE SUMMARY FOR SOURCE FILE [TemplateUrlServiceTest.java]

nameclass, %method, %block, %line, %
TemplateUrlServiceTest.java100% (8/8)100% (19/19)100% (241/242)100% (46/46)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class TemplateUrlServiceTest$4100% (1/1)100% (2/2)97%  (35/36)99%  (6/6)
run (): void 100% (1/1)96%  (23/24)99%  (5/5)
TemplateUrlServiceTest$4 (TemplateUrlServiceTest, TemplateUrlService, AtomicI... 100% (1/1)100% (12/12)100% (1/1)
     
class TemplateUrlServiceTest100% (1/1)100% (5/5)100% (105/105)100% (26/26)
TemplateUrlServiceTest (): void 100% (1/1)100% (3/3)100% (1/1)
setUp (): void 100% (1/1)100% (12/12)100% (5/5)
testLoadUrlService (): void 100% (1/1)100% (26/26)100% (7/7)
testSetAndGetSearchEngine (): void 100% (1/1)100% (30/30)100% (7/7)
waitForTemplateUrlServiceToLoad (): TemplateUrlService 100% (1/1)100% (34/34)100% (6/6)
     
class TemplateUrlServiceTest$1100% (1/1)100% (2/2)100% (15/15)100% (3/3)
TemplateUrlServiceTest$1 (TemplateUrlServiceTest, AtomicBoolean): void 100% (1/1)100% (9/9)100% (1/1)
run (): void 100% (1/1)100% (6/6)100% (2/2)
     
class TemplateUrlServiceTest$2100% (1/1)100% (2/2)100% (15/15)100% (3/3)
TemplateUrlServiceTest$2 (TemplateUrlServiceTest, AtomicBoolean): void 100% (1/1)100% (9/9)100% (1/1)
run (): void 100% (1/1)100% (6/6)100% (2/2)
     
class TemplateUrlServiceTest$3100% (1/1)100% (2/2)100% (19/19)100% (3/3)
TemplateUrlServiceTest$3 (TemplateUrlServiceTest, AtomicInteger, TemplateUrlS... 100% (1/1)100% (12/12)100% (1/1)
run (): void 100% (1/1)100% (7/7)100% (2/2)
     
class TemplateUrlServiceTest$5100% (1/1)100% (2/2)100% (14/14)100% (3/3)
TemplateUrlServiceTest$5 (TemplateUrlServiceTest, AtomicBoolean): void 100% (1/1)100% (9/9)100% (1/1)
onTemplateUrlServiceLoaded (): void 100% (1/1)100% (5/5)100% (2/2)
     
class TemplateUrlServiceTest$6100% (1/1)100% (2/2)100% (25/25)100% (6/6)
TemplateUrlServiceTest$6 (TemplateUrlServiceTest, AtomicReference, TemplateUr... 100% (1/1)100% (12/12)100% (1/1)
run (): void 100% (1/1)100% (13/13)100% (5/5)
     
class TemplateUrlServiceTest$7100% (1/1)100% (2/2)100% (13/13)100% (2/2)
TemplateUrlServiceTest$7 (TemplateUrlServiceTest, AtomicBoolean): void 100% (1/1)100% (9/9)100% (1/1)
isSatisfied (): boolean 100% (1/1)100% (4/4)100% (1/1)

1// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4 
5package org.chromium.chrome.browser.search_engines;
6 
7import android.test.suitebuilder.annotation.SmallTest;
8 
9import org.chromium.base.ThreadUtils;
10import org.chromium.base.test.util.Feature;
11import org.chromium.chrome.browser.search_engines.TemplateUrlService.LoadListener;
12import org.chromium.chrome.browser.search_engines.TemplateUrlService.TemplateUrl;
13import org.chromium.chrome.testshell.ChromiumTestShellTestBase;
14import org.chromium.content.browser.test.util.Criteria;
15import org.chromium.content.browser.test.util.CriteriaHelper;
16 
17import java.util.List;
18import java.util.concurrent.atomic.AtomicBoolean;
19import java.util.concurrent.atomic.AtomicInteger;
20import java.util.concurrent.atomic.AtomicReference;
21 
22/**
23 * Tests for Chrome on Android's usage of the TemplateUrlService API.
24 */
25public class TemplateUrlServiceTest extends ChromiumTestShellTestBase {
26 
27    @Override
28    public void setUp() throws Exception {
29        super.setUp();
30        clearAppData();
31        launchChromiumTestShellWithBlankPage();
32        assertTrue(waitForActiveShellToBeDoneLoading());
33    }
34 
35    @SmallTest
36    @Feature({"SearchEngines"})
37    public void testLoadUrlService() throws InterruptedException {
38        final AtomicBoolean loadedResult = new AtomicBoolean();
39        ThreadUtils.runOnUiThreadBlocking(new Runnable() {
40            @Override
41            public void run() {
42                loadedResult.set(TemplateUrlService.getInstance().isLoaded());
43            }
44        });
45        assertFalse(loadedResult.get());
46 
47        waitForTemplateUrlServiceToLoad();
48 
49        ThreadUtils.runOnUiThreadBlocking(new Runnable() {
50            @Override
51            public void run() {
52                loadedResult.set(TemplateUrlService.getInstance().isLoaded());
53 
54            }
55        });
56        assertTrue(loadedResult.get());
57    }
58 
59    @SmallTest
60    @Feature({"SearchEngines"})
61    public void testSetAndGetSearchEngine() throws InterruptedException {
62        final TemplateUrlService templateUrlService = waitForTemplateUrlServiceToLoad();
63        final AtomicInteger searchEngineIndex = new AtomicInteger();
64 
65        // Ensure known state of default search index before running teest.
66        ThreadUtils.runOnUiThreadBlocking(new Runnable() {
67            @Override
68            public void run() {
69                searchEngineIndex.set(templateUrlService.getDefaultSearchEngineIndex());
70            }
71        });
72        assertEquals(0, searchEngineIndex.get());
73 
74        // Set search engine index and verified it stuck.
75        ThreadUtils.runOnUiThreadBlocking(new Runnable() {
76            @Override
77            public void run() {
78                List<TemplateUrl> searchEngines =
79                        templateUrlService.getLocalizedSearchEngines();
80                assertTrue("There must be more than one search engine to change searchEngines",
81                        searchEngines.size() > 1);
82                templateUrlService.setSearchEngine(1);
83                searchEngineIndex.set(templateUrlService.getDefaultSearchEngineIndex());
84            }
85        });
86        assertEquals(1, searchEngineIndex.get());
87    }
88 
89    private TemplateUrlService waitForTemplateUrlServiceToLoad() throws InterruptedException {
90        final AtomicBoolean observerNotified = new AtomicBoolean(false);
91        final LoadListener listener = new LoadListener() {
92            @Override
93            public void onTemplateUrlServiceLoaded() {
94                observerNotified.set(true);
95            }
96        };
97        final AtomicReference<TemplateUrlService> templateUrlService =
98                new AtomicReference<TemplateUrlService>();
99        ThreadUtils.runOnUiThreadBlocking(new Runnable() {
100            @Override
101            public void run() {
102                TemplateUrlService service = TemplateUrlService.getInstance();
103                templateUrlService.set(service);
104 
105                service.registerLoadListener(listener);
106                service.load();
107            }
108        });
109 
110        assertTrue("Observer wasn't notified of TemplateUrlService load.",
111                CriteriaHelper.pollForCriteria(new Criteria() {
112                    @Override
113                    public boolean isSatisfied() {
114                        return observerNotified.get();
115                    }
116        }));
117        return templateUrlService.get();
118    }
119}

[all classes][org.chromium.chrome.browser.search_engines]
EMMA 2.0.5312 (C) Vladimir Roubtsov