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

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

Issue 2930063002: Ensure TemplateUrlService is loaded in SearchActivity. (Closed)
Patch Set: Rebase Created 3 years, 6 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
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/search_engines/TemplateUrlService.java ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.app.Activity; 7 import android.app.Activity;
8 import android.content.Intent; 8 import android.content.Intent;
9 import android.net.Uri; 9 import android.net.Uri;
10 import android.support.v4.app.ActivityOptionsCompat; 10 import android.support.v4.app.ActivityOptionsCompat;
11 import android.text.TextUtils; 11 import android.text.TextUtils;
12 import android.view.LayoutInflater; 12 import android.view.LayoutInflater;
13 import android.view.View; 13 import android.view.View;
14 import android.view.ViewGroup; 14 import android.view.ViewGroup;
15 15
16 import org.chromium.base.Callback; 16 import org.chromium.base.Callback;
17 import org.chromium.base.Log; 17 import org.chromium.base.Log;
18 import org.chromium.base.VisibleForTesting; 18 import org.chromium.base.VisibleForTesting;
19 import org.chromium.base.metrics.RecordUserAction; 19 import org.chromium.base.metrics.RecordUserAction;
20 import org.chromium.chrome.R; 20 import org.chromium.chrome.R;
21 import org.chromium.chrome.browser.IntentHandler; 21 import org.chromium.chrome.browser.IntentHandler;
22 import org.chromium.chrome.browser.WebContentsFactory; 22 import org.chromium.chrome.browser.WebContentsFactory;
23 import org.chromium.chrome.browser.WindowDelegate; 23 import org.chromium.chrome.browser.WindowDelegate;
24 import org.chromium.chrome.browser.customtabs.CustomTabsConnection; 24 import org.chromium.chrome.browser.customtabs.CustomTabsConnection;
25 import org.chromium.chrome.browser.document.ChromeLauncherActivity; 25 import org.chromium.chrome.browser.document.ChromeLauncherActivity;
26 import org.chromium.chrome.browser.init.AsyncInitializationActivity; 26 import org.chromium.chrome.browser.init.AsyncInitializationActivity;
27 import org.chromium.chrome.browser.locale.LocaleManager; 27 import org.chromium.chrome.browser.locale.LocaleManager;
28 import org.chromium.chrome.browser.omnibox.AutocompleteController; 28 import org.chromium.chrome.browser.omnibox.AutocompleteController;
29 import org.chromium.chrome.browser.search_engines.TemplateUrlService;
29 import org.chromium.chrome.browser.snackbar.SnackbarManager; 30 import org.chromium.chrome.browser.snackbar.SnackbarManager;
30 import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarManageable; 31 import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarManageable;
31 import org.chromium.chrome.browser.tab.Tab; 32 import org.chromium.chrome.browser.tab.Tab;
32 import org.chromium.chrome.browser.tab.TabDelegateFactory; 33 import org.chromium.chrome.browser.tab.TabDelegateFactory;
33 import org.chromium.chrome.browser.tab.TabIdManager; 34 import org.chromium.chrome.browser.tab.TabIdManager;
34 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; 35 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
35 import org.chromium.chrome.browser.util.IntentUtils; 36 import org.chromium.chrome.browser.util.IntentUtils;
36 import org.chromium.components.url_formatter.UrlFormatter; 37 import org.chromium.components.url_formatter.UrlFormatter;
37 import org.chromium.content_public.browser.LoadUrlParams; 38 import org.chromium.content_public.browser.LoadUrlParams;
38 import org.chromium.ui.base.ActivityWindowAndroid; 39 import org.chromium.ui.base.ActivityWindowAndroid;
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 new TabDelegateFactory(), false, false); 155 new TabDelegateFactory(), false, false);
155 mTab.loadUrl(new LoadUrlParams("about:blank")); 156 mTab.loadUrl(new LoadUrlParams("about:blank"));
156 157
157 mSearchBoxDataProvider.onNativeLibraryReady(mTab); 158 mSearchBoxDataProvider.onNativeLibraryReady(mTab);
158 mSearchBox.onNativeLibraryReady(); 159 mSearchBox.onNativeLibraryReady();
159 160
160 // Force the user to choose a search engine if they have to. 161 // Force the user to choose a search engine if they have to.
161 final Callback<Boolean> deferredCallback = new Callback<Boolean>() { 162 final Callback<Boolean> deferredCallback = new Callback<Boolean>() {
162 @Override 163 @Override
163 public void onResult(Boolean result) { 164 public void onResult(Boolean result) {
165 if (isActivityDestroyed()) return;
166
164 if (result == null || !result.booleanValue()) { 167 if (result == null || !result.booleanValue()) {
165 Log.e(TAG, "User failed to select a default search engine.") ; 168 Log.e(TAG, "User failed to select a default search engine.") ;
166 finish(); 169 finish();
167 return; 170 return;
168 } 171 }
169 172
170 finishDeferredInitialization(); 173 finishDeferredInitialization();
171 } 174 }
172 }; 175 };
173 if (!getActivityDelegate().showSearchEngineDialogIfNeeded(this, deferred Callback)) { 176 final Runnable showSearchEngineDialogTrigger = new Runnable() {
174 mHandler.post(new Runnable() { 177 @Override
175 @Override 178 public void run() {
176 public void run() { 179 if (!getActivityDelegate().showSearchEngineDialogIfNeeded(
177 finishDeferredInitialization(); 180 SearchActivity.this, deferredCallback)) {
181 mHandler.post(new Runnable() {
182 @Override
183 public void run() {
184 deferredCallback.onResult(true);
185 }
186 });
178 } 187 }
179 }); 188 }
180 } 189 };
190 TemplateUrlService.getInstance().runWhenLoaded(showSearchEngineDialogTri gger);
181 } 191 }
182 192
183 void finishDeferredInitialization() { 193 void finishDeferredInitialization() {
184 mIsActivityUsable = true; 194 mIsActivityUsable = true;
185 if (mQueuedUrl != null) loadUrl(mQueuedUrl); 195 if (mQueuedUrl != null) loadUrl(mQueuedUrl);
186 196
187 AutocompleteController.nativePrefetchZeroSuggestResults(); 197 AutocompleteController.nativePrefetchZeroSuggestResults();
188 CustomTabsConnection.getInstance(getApplication()).warmup(0); 198 CustomTabsConnection.getInstance(getApplication()).warmup(0);
189 mSearchBox.onDeferredStartup(isVoiceSearchIntent()); 199 mSearchBox.onDeferredStartup(isVoiceSearchIntent());
190 RecordUserAction.record("SearchWidget.WidgetSelected"); 200 RecordUserAction.record("SearchWidget.WidgetSelected");
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 } 296 }
287 return sDelegate; 297 return sDelegate;
288 } 298 }
289 299
290 /** See {@link #sDelegate}. */ 300 /** See {@link #sDelegate}. */
291 @VisibleForTesting 301 @VisibleForTesting
292 static void setDelegateForTests(SearchActivityDelegate delegate) { 302 static void setDelegateForTests(SearchActivityDelegate delegate) {
293 sDelegate = delegate; 303 sDelegate = delegate;
294 } 304 }
295 } 305 }
OLDNEW
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/search_engines/TemplateUrlService.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698