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

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

Issue 2814593003: 🔍 Continue working on the search widget prototype (Closed)
Patch Set: 🔍 Continue cleaning up the search widget. 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 side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java
index eeb709880f19fb83088b1769ff70123f5b44f962..e6848cf07fc528809ddc460e3b6d87a1777fbad1 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java
@@ -5,8 +5,6 @@
package org.chromium.chrome.browser.searchwidget;
import android.content.Intent;
-import android.graphics.Rect;
-import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Handler;
import android.support.customtabs.CustomTabsIntent;
@@ -16,7 +14,6 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.ContextUtils;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.IntentHandler;
@@ -27,8 +24,6 @@ import org.chromium.chrome.browser.document.ChromeLauncherActivity;
import org.chromium.chrome.browser.init.AsyncInitializationActivity;
import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
import org.chromium.chrome.browser.omnibox.AutocompleteController;
-import org.chromium.chrome.browser.omnibox.UrlBar;
-import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.snackbar.SnackbarManager;
import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarManageable;
import org.chromium.chrome.browser.tab.Tab;
@@ -38,23 +33,12 @@ import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
import org.chromium.chrome.browser.util.IntentUtils;
import org.chromium.components.url_formatter.UrlFormatter;
import org.chromium.content_public.browser.LoadUrlParams;
-import org.chromium.ui.UiUtils;
import org.chromium.ui.base.ActivityWindowAndroid;
/** Prototype that queries the user's default search engine and shows autocomplete suggestions. */
public class SearchActivity extends AsyncInitializationActivity
implements SnackbarManageable, SearchActivityLocationBarLayout.Delegate,
View.OnLayoutChangeListener {
- private static final String TAG = "searchwidget";
-
- /** Padding gleaned from the background Drawable of the search box. */
- private final Rect mSearchBoxPadding = new Rect();
-
- /** Medium margin/padding used for the search box. */
- private int mSpacingMedium;
-
- /** Large margin/padding used for the search box. */
- private int mSpacingLarge;
/** Main content view. */
private ViewGroup mContentView;
@@ -68,29 +52,14 @@ public class SearchActivity extends AsyncInitializationActivity
/** The View that represents the search box. */
private SearchActivityLocationBarLayout mSearchBox;
- private UrlBar mUrlBar;
-
- private SearchBoxDataProvider mSearchBoxDataProvider;
-
- private SnackbarManager mSnackbarManager;
private ActivityWindowAndroid mWindowAndroid;
+ private SnackbarManager mSnackbarManager;
+ private SearchBoxDataProvider mSearchBoxDataProvider;
private Tab mTab;
@Override
public void backKeyPressed() {
- finish();
- }
-
- @Override
- public void onStop() {
- finish();
- super.onStop();
- }
-
- @Override
- public void finish() {
- super.finish();
- overridePendingTransition(0, android.R.anim.fade_out);
+ cancelSearch();
}
@Override
@@ -101,43 +70,39 @@ public class SearchActivity extends AsyncInitializationActivity
@Override
public boolean onActivityResultWithNative(int requestCode, int resultCode, Intent intent) {
if (super.onActivityResultWithNative(requestCode, resultCode, intent)) return true;
- boolean result = mWindowAndroid.onActivityResult(requestCode, resultCode, intent);
-
- // The voice query should have completed. If the voice recognition isn't confident about
- // what it heard, it puts the query into the omnibox. We need to focus it at that point.
- if (mUrlBar != null) focusTextBox(false);
+ return mWindowAndroid.onActivityResult(requestCode, resultCode, intent);
+ }
- return result;
+ @Override
+ public void onRequestPermissionsResult(
+ int requestCode, String[] permissions, int[] grantResults) {
+ // TODO(dfalcantara): This is from ChromeWindow. It should be moved into the
+ // AsyncInitializationActivity, but that has a lot of subclasses that
+ // don't need a WindowAndroid.
+ if (mWindowAndroid != null) {
+ if (mWindowAndroid.onRequestPermissionsResult(requestCode, permissions, grantResults)) {
+ return;
+ }
+ }
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
@Override
protected void setContentView() {
- initializeDimensions();
-
mWindowAndroid = new ActivityWindowAndroid(this);
mSnackbarManager = new SnackbarManager(this, null);
mSearchBoxDataProvider = new SearchBoxDataProvider();
- mContentView = createContentView(mSearchBox);
- mContentView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // Finish the Activity if the user clicks on the scrim.
- finish();
- }
- });
+ mContentView = createContentView();
// Build the search box.
mSearchBox = (SearchActivityLocationBarLayout) mContentView.findViewById(
R.id.search_location_bar);
mSearchBox.setDelegate(this);
- mSearchBox.setPadding(mSpacingLarge, mSpacingMedium, mSpacingLarge, mSpacingMedium);
- mSearchBox.initializeControls(new WindowDelegate(getWindow()), mWindowAndroid);
- mSearchBox.setUrlBarFocusable(true);
mSearchBox.setToolbarDataProvider(mSearchBoxDataProvider);
+ mSearchBox.initializeControls(new WindowDelegate(getWindow()), mWindowAndroid);
setContentView(mContentView);
- mUrlBar = (UrlBar) mSearchBox.findViewById(R.id.url_bar);
}
@Override
@@ -151,10 +116,9 @@ public class SearchActivity extends AsyncInitializationActivity
mTab.initialize(WebContentsFactory.createWebContents(false, false), null,
new TabDelegateFactory(), false, false);
mTab.loadUrl(new LoadUrlParams("about:blank"));
+
mSearchBoxDataProvider.onNativeLibraryReady(mTab);
mSearchBox.onNativeLibraryReady();
- mSearchBox.setAutocompleteProfile(Profile.getLastUsedProfile().getOriginalProfile());
- mSearchBox.setShowCachedZeroSuggestResults(true);
if (mQueuedUrl != null) loadUrl(mQueuedUrl);
@@ -172,8 +136,7 @@ public class SearchActivity extends AsyncInitializationActivity
AutocompleteController.nativePrefetchZeroSuggestResults();
CustomTabsConnection.getInstance(getApplication()).warmup(0);
-
- if (!isVoiceSearchIntent() && mUrlBar.isFocused()) mSearchBox.onUrlFocusChange(true);
+ mSearchBox.onDeferredStartup(isVoiceSearchIntent());
}
@Override
@@ -199,11 +162,7 @@ public class SearchActivity extends AsyncInitializationActivity
}
private void beginQuery() {
- if (isVoiceSearchIntent()) {
- mSearchBox.startVoiceRecognition();
- } else {
- focusTextBox(true);
- }
+ mSearchBox.beginQuery(isVoiceSearchIntent());
}
@Override
@@ -217,24 +176,6 @@ public class SearchActivity extends AsyncInitializationActivity
return true;
}
- private void focusTextBox(boolean clearQuery) {
- if (mIsNativeReady) mSearchBox.onUrlFocusChange(true);
-
- if (clearQuery) {
- mUrlBar.setIgnoreTextChangesForAutocomplete(true);
- mUrlBar.setUrl("", null);
- mUrlBar.setIgnoreTextChangesForAutocomplete(false);
- }
- mUrlBar.setCursorVisible(true);
- mUrlBar.setSelection(0, mUrlBar.getText().length());
- new Handler().post(new Runnable() {
- @Override
- public void run() {
- UiUtils.showKeyboard(mUrlBar);
- }
- });
- }
-
@Override
public void loadUrl(String url) {
// Wait until native has loaded.
@@ -263,20 +204,25 @@ public class SearchActivity extends AsyncInitializationActivity
IntentHandler.addTrustedIntentExtras(intent);
}
- // TODO(dfalcantara): Make IntentUtils take in an ActivityOptions bundle once public.
- startActivity(intent,
+ IntentUtils.safeStartActivity(this, intent,
ActivityOptionsCompat
.makeCustomAnimation(this, android.R.anim.fade_in, android.R.anim.fade_out)
.toBundle());
finish();
}
- private ViewGroup createContentView(final View searchBox) {
+ private ViewGroup createContentView() {
assert mContentView == null;
ViewGroup contentView = (ViewGroup) LayoutInflater.from(this).inflate(
R.layout.search_activity, null, false);
contentView.addOnLayoutChangeListener(this);
+ contentView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ cancelSearch();
+ }
+ });
return contentView;
}
@@ -287,19 +233,6 @@ public class SearchActivity extends AsyncInitializationActivity
beginLoadingLibrary();
}
- private void initializeDimensions() {
- // Cache the padding of the Drawable that is used as the background for the search box.
- Drawable searchBackground =
- ApiCompatibilityUtils.getDrawable(getResources(), R.drawable.card_single);
- searchBackground.getPadding(mSearchBoxPadding);
-
- // TODO(dfalcantara): Add values to the XML files instead of reusing random ones.
- mSpacingMedium =
- getResources().getDimensionPixelSize(R.dimen.location_bar_incognito_badge_padding);
- mSpacingLarge =
- getResources().getDimensionPixelSize(R.dimen.contextual_search_peek_promo_padding);
- }
-
private void beginLoadingLibrary() {
beginQuery();
mHandler.post(new Runnable() {
@@ -311,4 +244,9 @@ public class SearchActivity extends AsyncInitializationActivity
ChromeBrowserInitializer.getInstance(getApplicationContext())
.handlePreNativeStartup(SearchActivity.this);
}
+
+ private void cancelSearch() {
+ finish();
+ overridePendingTransition(0, R.anim.activity_close_exit);
+ }
}

Powered by Google App Engine
This is Rietveld 408576698