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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchWidgetProvider.java

Issue 2838833002: 🔍 Introduce default search engine dialog (Closed)
Patch Set: COmments Created 3 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.searchwidget; 5 package org.chromium.chrome.browser.searchwidget;
6 6
7 import android.annotation.SuppressLint; 7 import android.annotation.SuppressLint;
8 import android.app.PendingIntent; 8 import android.app.PendingIntent;
9 import android.appwidget.AppWidgetManager; 9 import android.appwidget.AppWidgetManager;
10 import android.appwidget.AppWidgetProvider; 10 import android.appwidget.AppWidgetProvider;
(...skipping 10 matching lines...) Expand all
21 import android.widget.RemoteViews; 21 import android.widget.RemoteViews;
22 22
23 import org.chromium.base.ContextUtils; 23 import org.chromium.base.ContextUtils;
24 import org.chromium.base.Log; 24 import org.chromium.base.Log;
25 import org.chromium.base.ThreadUtils; 25 import org.chromium.base.ThreadUtils;
26 import org.chromium.base.VisibleForTesting; 26 import org.chromium.base.VisibleForTesting;
27 import org.chromium.base.library_loader.LibraryLoader; 27 import org.chromium.base.library_loader.LibraryLoader;
28 import org.chromium.chrome.R; 28 import org.chromium.chrome.R;
29 import org.chromium.chrome.browser.IntentHandler; 29 import org.chromium.chrome.browser.IntentHandler;
30 import org.chromium.chrome.browser.firstrun.FirstRunFlowSequencer; 30 import org.chromium.chrome.browser.firstrun.FirstRunFlowSequencer;
31 import org.chromium.chrome.browser.omnibox.LocationBarLayout;
31 import org.chromium.chrome.browser.search_engines.TemplateUrlService; 32 import org.chromium.chrome.browser.search_engines.TemplateUrlService;
32 import org.chromium.chrome.browser.search_engines.TemplateUrlService.LoadListene r; 33 import org.chromium.chrome.browser.search_engines.TemplateUrlService.LoadListene r;
33 import org.chromium.chrome.browser.search_engines.TemplateUrlService.TemplateUrl ServiceObserver; 34 import org.chromium.chrome.browser.search_engines.TemplateUrlService.TemplateUrl ServiceObserver;
34 import org.chromium.chrome.browser.util.IntentUtils; 35 import org.chromium.chrome.browser.util.IntentUtils;
35 36
36 /** 37 /**
37 * Widget that lets the user search using their default search engine. 38 * Widget that lets the user search using their default search engine.
38 * 39 *
39 * Because this is a BroadcastReceiver, it dies immediately after it runs. A ne w one is created 40 * Because this is a BroadcastReceiver, it dies immediately after it runs. A ne w one is created
40 * for each new broadcast. 41 * for each new broadcast.
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 static final String PREF_SEARCH_ENGINE_SHORTNAME = 117 static final String PREF_SEARCH_ENGINE_SHORTNAME =
117 "org.chromium.chrome.browser.searchwidget.SEARCH_ENGINE_SHORTNAME"; 118 "org.chromium.chrome.browser.searchwidget.SEARCH_ENGINE_SHORTNAME";
118 119
119 /** Number of consecutive crashes this widget will absorb before giving up. */ 120 /** Number of consecutive crashes this widget will absorb before giving up. */
120 private static final int CRASH_LIMIT = 3; 121 private static final int CRASH_LIMIT = 3;
121 122
122 private static final String TAG = "searchwidget"; 123 private static final String TAG = "searchwidget";
123 private static final Object DELEGATE_LOCK = new Object(); 124 private static final Object DELEGATE_LOCK = new Object();
124 private static final Object OBSERVER_LOCK = new Object(); 125 private static final Object OBSERVER_LOCK = new Object();
125 126
127 /** The default search engine's root URL. */
128 private static String sDefaultSearchEngineUrl;
129
126 private static SearchWidgetTemplateUrlServiceObserver sObserver; 130 private static SearchWidgetTemplateUrlServiceObserver sObserver;
127 private static SearchWidgetProviderDelegate sDelegate; 131 private static SearchWidgetProviderDelegate sDelegate;
128 132
129 /** 133 /**
130 * Creates the singleton instance of the observer that will monitor for sear ch engine changes. 134 * Creates the singleton instance of the observer that will monitor for sear ch engine changes.
131 * The native library and the browser process must have been fully loaded be fore calling this. 135 * The native library and the browser process must have been fully loaded be fore calling this.
132 */ 136 */
133 public static void initialize() { 137 public static void initialize() {
134 ThreadUtils.assertOnUiThread(); 138 ThreadUtils.assertOnUiThread();
135 assert LibraryLoader.isInitialized(); 139 assert LibraryLoader.isInitialized();
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 /** Attempts to update the cached search engine name. */ 288 /** Attempts to update the cached search engine name. */
285 public static void updateCachedEngineName() { 289 public static void updateCachedEngineName() {
286 ThreadUtils.assertOnUiThread(); 290 ThreadUtils.assertOnUiThread();
287 if (!LibraryLoader.isInitialized()) return; 291 if (!LibraryLoader.isInitialized()) return;
288 292
289 // Getting an instance of the TemplateUrlService requires that the nativ e library be 293 // Getting an instance of the TemplateUrlService requires that the nativ e library be
290 // loaded, but the TemplateUrlService also itself needs to be initialize d. 294 // loaded, but the TemplateUrlService also itself needs to be initialize d.
291 TemplateUrlService service = TemplateUrlService.getInstance(); 295 TemplateUrlService service = TemplateUrlService.getInstance();
292 if (!service.isLoaded()) return; 296 if (!service.isLoaded()) return;
293 297
298 // Update the URL that we show for zero-suggest.
299 String searchEngineUrl = service.getSearchEngineUrlFromTemplateUrl(
300 service.getDefaultSearchEngineTemplateUrl().getKeyword());
301 sDefaultSearchEngineUrl =
302 LocationBarLayout.splitPathFromUrlDisplayText(searchEngineUrl).f irst;
303
294 updateCachedEngineName(service.getDefaultSearchEngineTemplateUrl().getSh ortName()); 304 updateCachedEngineName(service.getDefaultSearchEngineTemplateUrl().getSh ortName());
295 } 305 }
296 306
297 /** 307 /**
298 * Updates the name of the user's default search engine that is cached in Sh aredPreferences. 308 * Updates the name of the user's default search engine that is cached in Sh aredPreferences.
299 * Caching it in SharedPreferences prevents us from having to load the nativ e library and the 309 * Caching it in SharedPreferences prevents us from having to load the nativ e library and the
300 * TemplateUrlService whenever the widget is updated. 310 * TemplateUrlService whenever the widget is updated.
301 */ 311 */
302 static void updateCachedEngineName(String engineName) { 312 static void updateCachedEngineName(String engineName) {
303 SharedPreferences prefs = getDelegate().getSharedPreferences(); 313 SharedPreferences prefs = getDelegate().getSharedPreferences();
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 getDelegate().getContext(), null, false); 386 getDelegate().getContext(), null, false);
377 return freIntent == null; 387 return freIntent == null;
378 } 388 }
379 389
380 /** Sets an {@link SearchWidgetProviderDelegate} to interact with. */ 390 /** Sets an {@link SearchWidgetProviderDelegate} to interact with. */
381 @VisibleForTesting 391 @VisibleForTesting
382 static void setDelegateForTest(SearchWidgetProviderDelegate delegate) { 392 static void setDelegateForTest(SearchWidgetProviderDelegate delegate) {
383 assert sDelegate == null; 393 assert sDelegate == null;
384 sDelegate = delegate; 394 sDelegate = delegate;
385 } 395 }
396
397 /** See {@link #sDefaultSearchEngineUrl}. */
398 static String getDefaultSearchEngineUrl() {
399 // TODO(yusufo): Get rid of this.
400 return sDefaultSearchEngineUrl;
401 }
386 } 402 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698