EMMA Coverage Report (generated Fri Aug 23 16:39:17 PDT 2013)
[all classes][org.chromium.chrome.browser.search_engines]

COVERAGE SUMMARY FOR SOURCE FILE [TemplateUrlService.java]

nameclass, %method, %block, %line, %
TemplateUrlService.java100% (2/2)60%  (12/20)71%  (132/187)76%  (40.4/53)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class TemplateUrlService$TemplateUrl100% (1/1)40%  (2/5)68%  (19/28)67%  (6/9)
getIndex (): int 0%   (0/1)0%   (0/3)0%   (0/1)
getKeyword (): String 0%   (0/1)0%   (0/3)0%   (0/1)
getShortName (): String 0%   (0/1)0%   (0/3)0%   (0/1)
TemplateUrlService$TemplateUrl (int, String, String): void 100% (1/1)100% (12/12)100% (5/5)
create (int, String, String): TemplateUrlService$TemplateUrl 100% (1/1)100% (7/7)100% (1/1)
     
class TemplateUrlService100% (1/1)67%  (10/15)71%  (113/159)78%  (34.4/44)
getDefaultSearchEngineTemplateUrl (): TemplateUrlService$TemplateUrl 0%   (0/1)0%   (0/7)0%   (0/1)
isDefaultSearchEngineGoogle (): boolean 0%   (0/1)0%   (0/5)0%   (0/1)
isSearchByImageAvailable (): boolean 0%   (0/1)0%   (0/6)0%   (0/2)
isSearchProviderManaged (): boolean 0%   (0/1)0%   (0/5)0%   (0/1)
unregisterLoadListener (TemplateUrlService$LoadListener): void 0%   (0/1)0%   (0/17)0%   (0/4)
<static initializer> 100% (1/1)75%  (6/8)75%  (0.8/1)
registerLoadListener (TemplateUrlService$LoadListener): void 100% (1/1)76%  (13/17)92%  (3.7/4)
TemplateUrlService (): void 100% (1/1)100% (12/12)100% (4/4)
getDefaultSearchEngineIndex (): int 100% (1/1)100% (6/6)100% (2/2)
getInstance (): TemplateUrlService 100% (1/1)100% (9/9)100% (4/4)
getLocalizedSearchEngines (): List 100% (1/1)100% (32/32)100% (8/8)
isLoaded (): boolean 100% (1/1)100% (6/6)100% (2/2)
load (): void 100% (1/1)100% (6/6)100% (3/3)
setSearchEngine (int): void 100% (1/1)100% (7/7)100% (3/3)
templateUrlServiceLoaded (): void 100% (1/1)100% (16/16)100% (4/4)

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 org.chromium.base.CalledByNative;
8import org.chromium.base.ObserverList;
9import org.chromium.base.ThreadUtils;
10 
11import java.util.ArrayList;
12import java.util.List;
13 
14/**
15 * Android wrapper of the TemplateUrlService which provides access from the Java
16 * layer.
17 *
18 * Only usable from the UI thread as it's primary purpose is for supporting the Android
19 * preferences UI.
20 *
21 * See chrome/browser/search_engines/template_url_service.h for more details.
22 */
23public class TemplateUrlService {
24 
25    /**
26     * This listener will be notified when template url service is done loading.
27     */
28    public interface LoadListener {
29        public abstract void onTemplateUrlServiceLoaded();
30    }
31 
32    public static class TemplateUrl {
33        private final int mIndex;
34        private final String mShortName;
35        private final String mKeyword;
36 
37        @CalledByNative("TemplateUrl")
38        public static TemplateUrl create(int id, String shortName, String keyword) {
39            return new TemplateUrl(id, shortName, keyword);
40        }
41 
42        public TemplateUrl(int index, String shortName, String keyword) {
43          mIndex = index;
44          mShortName = shortName;
45          mKeyword = keyword;
46        }
47 
48        public int getIndex() {
49            return mIndex;
50        }
51 
52        public String getShortName() {
53            return mShortName;
54        }
55 
56        public String getKeyword() {
57            return mKeyword;
58        }
59    }
60 
61    private static TemplateUrlService sService;
62 
63    public static TemplateUrlService getInstance() {
64        ThreadUtils.assertOnUiThread();
65        if (sService == null) {
66            sService = new TemplateUrlService();
67        }
68        return sService;
69    }
70 
71    private final int mNativeTemplateUrlServiceAndroid;
72    private final ObserverList<LoadListener> mLoadListeners = new ObserverList<LoadListener>();
73 
74    private TemplateUrlService() {
75        // Note that this technically leaks the native object, however, TemlateUrlService
76        // is a singleton that lives forever and there's no clean shutdown of Chrome on Android
77        mNativeTemplateUrlServiceAndroid = nativeInit();
78    }
79 
80    public boolean isLoaded() {
81        ThreadUtils.assertOnUiThread();
82        return nativeIsLoaded(mNativeTemplateUrlServiceAndroid);
83    }
84 
85    public void load() {
86        ThreadUtils.assertOnUiThread();
87        nativeLoad(mNativeTemplateUrlServiceAndroid);
88    }
89 
90    /**
91     * Get the collection of localized search engines.
92     */
93    public List<TemplateUrl> getLocalizedSearchEngines() {
94        ThreadUtils.assertOnUiThread();
95        int templateUrlCount = nativeGetTemplateUrlCount(mNativeTemplateUrlServiceAndroid);
96        List<TemplateUrl> templateUrls = new ArrayList<TemplateUrl>(templateUrlCount);
97        for (int i = 0; i < templateUrlCount; i++) {
98            TemplateUrl templateUrl = nativeGetPrepopulatedTemplateUrlAt(
99                    mNativeTemplateUrlServiceAndroid, i);
100            if (templateUrl != null) {
101              templateUrls.add(templateUrl);
102            }
103        }
104        return templateUrls;
105    }
106 
107    /**
108     * Called from native when template URL service is done loading.
109     */
110    @CalledByNative
111    private void templateUrlServiceLoaded() {
112        ThreadUtils.assertOnUiThread();
113        for (LoadListener listener : mLoadListeners) {
114            listener.onTemplateUrlServiceLoaded();
115        }
116    }
117 
118    /**
119     * @return The default search engine index (e.g., 0, 1, 2,...).
120     */
121    public int getDefaultSearchEngineIndex() {
122        ThreadUtils.assertOnUiThread();
123        return nativeGetDefaultSearchProvider(mNativeTemplateUrlServiceAndroid);
124    }
125 
126    /**
127     * @return {@link TemplateUrlService.TemplateUrl} for the default search engine.
128     */
129    public TemplateUrl getDefaultSearchEngineTemplateUrl() {
130        return nativeGetPrepopulatedTemplateUrlAt(
131                mNativeTemplateUrlServiceAndroid, getDefaultSearchEngineIndex());
132    }
133 
134    public void setSearchEngine(int selectedIndex) {
135        ThreadUtils.assertOnUiThread();
136        nativeSetDefaultSearchProvider(mNativeTemplateUrlServiceAndroid, selectedIndex);
137    }
138 
139    public boolean isSearchProviderManaged() {
140        return nativeIsSearchProviderManaged(mNativeTemplateUrlServiceAndroid);
141    }
142 
143    /**
144     * @return Whether or not the default search engine has search by image support.
145     */
146    public boolean isSearchByImageAvailable() {
147        ThreadUtils.assertOnUiThread();
148        return nativeIsSearchByImageAvailable(mNativeTemplateUrlServiceAndroid);
149    }
150 
151    /**
152     * @return Whether the default configured search engine is for a Google property.
153     */
154    public boolean isDefaultSearchEngineGoogle() {
155        return nativeIsDefaultSearchEngineGoogle(mNativeTemplateUrlServiceAndroid);
156    }
157 
158    /**
159     * Registers a listener for the TEMPLATE_URL_SERVICE_LOADED notification.
160     */
161    public void registerLoadListener(LoadListener listener) {
162        ThreadUtils.assertOnUiThread();
163        assert !mLoadListeners.hasObserver(listener);
164        mLoadListeners.addObserver(listener);
165    }
166 
167    /**
168     * Unregisters a listener for the TEMPLATE_URL_SERVICE_LOADED notification.
169     */
170    public void unregisterLoadListener(LoadListener listener) {
171        ThreadUtils.assertOnUiThread();
172        assert (mLoadListeners.hasObserver(listener));
173        mLoadListeners.removeObserver(listener);
174    }
175 
176    private native int nativeInit();
177    private native void nativeLoad(int nativeTemplateUrlServiceAndroid);
178    private native boolean nativeIsLoaded(int nativeTemplateUrlServiceAndroid);
179    private native int nativeGetTemplateUrlCount(int nativeTemplateUrlServiceAndroid);
180    private native TemplateUrl nativeGetPrepopulatedTemplateUrlAt(
181            int nativeTemplateUrlServiceAndroid, int i);
182    private native void nativeSetDefaultSearchProvider(int nativeTemplateUrlServiceAndroid,
183            int selectedIndex);
184    private native int nativeGetDefaultSearchProvider(int nativeTemplateUrlServiceAndroid);
185    private native boolean nativeIsSearchProviderManaged(int nativeTemplateUrlServiceAndroid);
186    private native boolean nativeIsSearchByImageAvailable(int nativeTemplateUrlServiceAndroid);
187    private native boolean nativeIsDefaultSearchEngineGoogle(int nativeTemplateUrlServiceAndroid);
188}

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