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

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

Issue 2839943002: Revert of 🔍 Don't display the search engine until First Run completes (Closed)
Patch Set: Created 3 years, 8 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 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 TemplateUrlService.getInstance().unregisterLoadListener(this); 88 TemplateUrlService.getInstance().unregisterLoadListener(this);
89 updateCachedEngineName(); 89 updateCachedEngineName();
90 } 90 }
91 91
92 @Override 92 @Override
93 public void onTemplateURLServiceChanged() { 93 public void onTemplateURLServiceChanged() {
94 updateCachedEngineName(); 94 updateCachedEngineName();
95 } 95 }
96 96
97 private void updateCachedEngineName() { 97 private void updateCachedEngineName() {
98 SearchWidgetProvider.updateCachedEngineName(); 98 assert LibraryLoader.isInitialized();
99
100 // Getting an instance of the TemplateUrlService requires that the n ative library be
101 // loaded, but the TemplateUrlService also itself needs to be initia lized.
102 TemplateUrlService service = TemplateUrlService.getInstance();
103 assert service.isLoaded();
104 SearchWidgetProvider.updateCachedEngineName(
105 service.getDefaultSearchEngineTemplateUrl().getShortName());
99 } 106 }
100 } 107 }
101 108
102 static final String ACTION_START_TEXT_QUERY = 109 static final String ACTION_START_TEXT_QUERY =
103 "org.chromium.chrome.browser.searchwidget.START_TEXT_QUERY"; 110 "org.chromium.chrome.browser.searchwidget.START_TEXT_QUERY";
104 static final String ACTION_START_VOICE_QUERY = 111 static final String ACTION_START_VOICE_QUERY =
105 "org.chromium.chrome.browser.searchwidget.START_VOICE_QUERY"; 112 "org.chromium.chrome.browser.searchwidget.START_VOICE_QUERY";
106 static final String ACTION_UPDATE_ALL_WIDGETS = 113 static final String ACTION_UPDATE_ALL_WIDGETS =
107 "org.chromium.chrome.browser.searchwidget.UPDATE_ALL_WIDGETS"; 114 "org.chromium.chrome.browser.searchwidget.UPDATE_ALL_WIDGETS";
108 115
109 static final String EXTRA_START_VOICE_SEARCH = 116 static final String EXTRA_START_VOICE_SEARCH =
110 "org.chromium.chrome.browser.searchwidget.START_VOICE_SEARCH"; 117 "org.chromium.chrome.browser.searchwidget.START_VOICE_SEARCH";
111 118
112 private static final String PREF_IS_VOICE_SEARCH_AVAILABLE = 119 private static final String PREF_IS_VOICE_SEARCH_AVAILABLE =
113 "org.chromium.chrome.browser.searchwidget.IS_VOICE_SEARCH_AVAILABLE" ; 120 "org.chromium.chrome.browser.searchwidget.IS_VOICE_SEARCH_AVAILABLE" ;
114 private static final String PREF_NUM_CONSECUTIVE_CRASHES = 121 private static final String PREF_NUM_CONSECUTIVE_CRASHES =
115 "org.chromium.chrome.browser.searchwidget.NUM_CONSECUTIVE_CRASHES"; 122 "org.chromium.chrome.browser.searchwidget.NUM_CONSECUTIVE_CRASHES";
116 static final String PREF_SEARCH_ENGINE_SHORTNAME = 123 private static final String PREF_SEARCH_ENGINE_SHORTNAME =
117 "org.chromium.chrome.browser.searchwidget.SEARCH_ENGINE_SHORTNAME"; 124 "org.chromium.chrome.browser.searchwidget.SEARCH_ENGINE_SHORTNAME";
118 125
119 /** Number of consecutive crashes this widget will absorb before giving up. */ 126 /** Number of consecutive crashes this widget will absorb before giving up. */
120 private static final int CRASH_LIMIT = 3; 127 private static final int CRASH_LIMIT = 3;
121 128
122 private static final String TAG = "searchwidget"; 129 private static final String TAG = "searchwidget";
123 private static final Object DELEGATE_LOCK = new Object(); 130 private static final Object DELEGATE_LOCK = new Object();
124 private static final Object OBSERVER_LOCK = new Object(); 131 private static final Object OBSERVER_LOCK = new Object();
125 132
126 private static SearchWidgetTemplateUrlServiceObserver sObserver; 133 private static SearchWidgetTemplateUrlServiceObserver sObserver;
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 Intent voiceIntent = createStartQueryIntent(context, ACTION_START_VO ICE_QUERY, id); 256 Intent voiceIntent = createStartQueryIntent(context, ACTION_START_VO ICE_QUERY, id);
250 views.setOnClickPendingIntent(R.id.microphone_icon, 257 views.setOnClickPendingIntent(R.id.microphone_icon,
251 PendingIntent.getBroadcast( 258 PendingIntent.getBroadcast(
252 context, 0, voiceIntent, PendingIntent.FLAG_UPDATE_C URRENT)); 259 context, 0, voiceIntent, PendingIntent.FLAG_UPDATE_C URRENT));
253 views.setViewVisibility(R.id.microphone_icon, View.VISIBLE); 260 views.setViewVisibility(R.id.microphone_icon, View.VISIBLE);
254 } else { 261 } else {
255 views.setViewVisibility(R.id.microphone_icon, View.GONE); 262 views.setViewVisibility(R.id.microphone_icon, View.GONE);
256 } 263 }
257 264
258 // Update what string is displayed by the widget. 265 // Update what string is displayed by the widget.
259 String text = TextUtils.isEmpty(engineName) || !shouldShowFullString() 266 String text = TextUtils.isEmpty(engineName)
260 ? context.getString(R.string.search_widget_default) 267 ? context.getString(R.string.search_widget_default)
261 : context.getString(R.string.search_with_product, engineName); 268 : context.getString(R.string.search_with_product, engineName);
262 views.setTextViewText(R.id.title, text); 269 views.setTextViewText(R.id.title, text);
263 270
264 return views; 271 return views;
265 } 272 }
266 273
267 /** Creates a trusted Intent that lets the user begin performing queries. */ 274 /** Creates a trusted Intent that lets the user begin performing queries. */
268 private static Intent createStartQueryIntent(Context context, String action, int widgetId) { 275 private static Intent createStartQueryIntent(Context context, String action, int widgetId) {
269 Intent intent = new Intent(action, Uri.parse(String.valueOf(widgetId))); 276 Intent intent = new Intent(action, Uri.parse(String.valueOf(widgetId)));
270 intent.setClass(context, SearchWidgetProvider.class); 277 intent.setClass(context, SearchWidgetProvider.class);
271 IntentHandler.addTrustedIntentExtras(intent); 278 IntentHandler.addTrustedIntentExtras(intent);
272 return intent; 279 return intent;
273 } 280 }
274 281
275 /** Caches whether or not a voice search is possible. */ 282 /** Caches whether or not a voice search is possible. */
276 static void updateCachedVoiceSearchAvailability(boolean isVoiceSearchAvailab le) { 283 static void updateCachedVoiceSearchAvailability(boolean isVoiceSearchAvailab le) {
277 SharedPreferences prefs = getDelegate().getSharedPreferences(); 284 SharedPreferences prefs = getDelegate().getSharedPreferences();
278 if (getCachedVoiceSearchAvailability(prefs) != isVoiceSearchAvailable) { 285 if (getCachedVoiceSearchAvailability(prefs) != isVoiceSearchAvailable) {
279 prefs.edit().putBoolean(PREF_IS_VOICE_SEARCH_AVAILABLE, isVoiceSearc hAvailable).apply(); 286 prefs.edit().putBoolean(PREF_IS_VOICE_SEARCH_AVAILABLE, isVoiceSearc hAvailable).apply();
280 performUpdate(null); 287 performUpdate(null);
281 } 288 }
282 } 289 }
283 290
284 /** Attempts to update the cached search engine name. */
285 public static void updateCachedEngineName() {
286 ThreadUtils.assertOnUiThread();
287 if (!LibraryLoader.isInitialized()) return;
288
289 // 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.
291 TemplateUrlService service = TemplateUrlService.getInstance();
292 if (!service.isLoaded()) return;
293
294 updateCachedEngineName(service.getDefaultSearchEngineTemplateUrl().getSh ortName());
295 }
296
297 /** 291 /**
298 * Updates the name of the user's default search engine that is cached in Sh aredPreferences. 292 * 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 293 * Caching it in SharedPreferences prevents us from having to load the nativ e library and the
300 * TemplateUrlService whenever the widget is updated. 294 * TemplateUrlService whenever the widget is updated.
301 */ 295 */
302 static void updateCachedEngineName(String engineName) { 296 static void updateCachedEngineName(String engineName) {
303 SharedPreferences prefs = getDelegate().getSharedPreferences(); 297 SharedPreferences prefs = getDelegate().getSharedPreferences();
304
305 if (!shouldShowFullString()) engineName = null;
306
307 if (!TextUtils.equals(getCachedEngineName(prefs), engineName)) { 298 if (!TextUtils.equals(getCachedEngineName(prefs), engineName)) {
308 prefs.edit().putString(PREF_SEARCH_ENGINE_SHORTNAME, engineName).app ly(); 299 prefs.edit().putString(PREF_SEARCH_ENGINE_SHORTNAME, engineName).app ly();
309 performUpdate(null); 300 performUpdate(null);
310 } 301 }
311 } 302 }
312 303
313 /** Updates the number of consecutive crashes this widget has absorbed. */ 304 /** Updates the number of consecutive crashes this widget has absorbed. */
314 @SuppressLint("CommitPrefEdits") 305 @SuppressLint("CommitPrefEdits")
315 static void updateNumConsecutiveCrashes(int newValue) { 306 static void updateNumConsecutiveCrashes(int newValue) {
316 SharedPreferences prefs = getDelegate().getSharedPreferences(); 307 SharedPreferences prefs = getDelegate().getSharedPreferences();
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 if (numCrashes < CRASH_LIMIT) { 355 if (numCrashes < CRASH_LIMIT) {
365 // Absorb the crash. 356 // Absorb the crash.
366 Log.e(TAG, "Absorbing exception caught when attempting to launch widget.", e); 357 Log.e(TAG, "Absorbing exception caught when attempting to launch widget.", e);
367 } else { 358 } else {
368 // Too many crashes have happened consecutively. Let Android ha ndle it. 359 // Too many crashes have happened consecutively. Let Android ha ndle it.
369 throw e; 360 throw e;
370 } 361 }
371 } 362 }
372 } 363 }
373 364
374 static boolean shouldShowFullString() {
375 Intent freIntent = FirstRunFlowSequencer.checkIfFirstRunIsNecessary(
376 getDelegate().getContext(), null, false);
377 return freIntent == null;
378 }
379
380 /** Sets an {@link SearchWidgetProviderDelegate} to interact with. */ 365 /** Sets an {@link SearchWidgetProviderDelegate} to interact with. */
381 @VisibleForTesting 366 @VisibleForTesting
382 static void setDelegateForTest(SearchWidgetProviderDelegate delegate) { 367 static void setDelegateForTest(SearchWidgetProviderDelegate delegate) {
383 assert sDelegate == null; 368 assert sDelegate == null;
384 sDelegate = delegate; 369 sDelegate = delegate;
385 } 370 }
386 } 371 }
OLDNEW
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java ('k') | chrome/android/java_sources.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698