| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |