Index: chrome/android/shell/java/src/org/chromium/chrome/shell/omnibox/SuggestionPopup.java |
diff --git a/chrome/android/shell/java/src/org/chromium/chrome/shell/omnibox/SuggestionPopup.java b/chrome/android/shell/java/src/org/chromium/chrome/shell/omnibox/SuggestionPopup.java |
deleted file mode 100644 |
index a87ebcb7120b390f1e9575d902bf58f2653ae9ae..0000000000000000000000000000000000000000 |
--- a/chrome/android/shell/java/src/org/chromium/chrome/shell/omnibox/SuggestionPopup.java |
+++ /dev/null |
@@ -1,193 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-package org.chromium.chrome.shell.omnibox; |
- |
-import android.content.Context; |
-import android.graphics.Rect; |
-import android.os.Handler; |
-import android.text.Editable; |
-import android.text.TextUtils; |
-import android.text.TextWatcher; |
-import android.view.View; |
-import android.view.View.OnLayoutChangeListener; |
-import android.widget.AdapterView; |
-import android.widget.AdapterView.OnItemClickListener; |
-import android.widget.EditText; |
-import android.widget.ListPopupWindow; |
-import android.widget.PopupWindow.OnDismissListener; |
- |
- |
-import org.chromium.chrome.browser.omnibox.AutocompleteController; |
-import org.chromium.chrome.browser.omnibox.AutocompleteController.OnSuggestionsReceivedListener; |
-import org.chromium.chrome.browser.omnibox.OmniboxSuggestion; |
-import org.chromium.chrome.shell.ChromeShellActivity; |
-import org.chromium.chrome.shell.ChromeShellToolbar; |
-import org.chromium.chrome.shell.R; |
- |
-import java.util.List; |
- |
-/** |
- * Displays suggestions for the text that is entered to the ChromeShell URL field. |
- */ |
-public class SuggestionPopup implements OnSuggestionsReceivedListener, TextWatcher { |
- private static final long SUGGESTION_START_DELAY_MS = 30; |
- |
- private final Context mContext; |
- private final EditText mUrlField; |
- private final ChromeShellToolbar mToolbar; |
- private final AutocompleteController mAutocomplete; |
- |
- private boolean mHasStartedNewOmniboxEditSession; |
- private Runnable mRequestSuggestions; |
- private ListPopupWindow mSuggestionsPopup; |
- private SuggestionArrayAdapter mSuggestionArrayAdapter; |
- private int mSuggestionsPopupItemsCount; |
- |
- /** |
- * Initializes a suggestion popup that will track urlField value and display suggestions based |
- * on that value. |
- */ |
- public SuggestionPopup(Context context, EditText urlField, ChromeShellToolbar toolbar) { |
- mContext = context; |
- mUrlField = urlField; |
- mToolbar = toolbar; |
- mAutocomplete = new AutocompleteController(this); |
- OnLayoutChangeListener listener = new OnLayoutChangeListener() { |
- @Override |
- public void onLayoutChange(View v, int left, int top, int right, int bottom, |
- int oldLeft, int oldTop, int oldRight, int oldBottom) { |
- if (mSuggestionsPopup == null || !mSuggestionsPopup.isShowing()) return; |
- mSuggestionsPopup.setWidth(mToolbar.getWidth()); |
- mSuggestionsPopup.setHeight(getSuggestionPopupHeight()); |
- mSuggestionsPopup.show(); |
- } |
- }; |
- mUrlField.addOnLayoutChangeListener(listener); |
- } |
- |
- private void navigateToSuggestion(int position) { |
- mToolbar.getCurrentTab().loadUrlWithSanitization( |
- mSuggestionArrayAdapter.getItem(position).getUrl()); |
- mUrlField.clearFocus(); |
- mToolbar.setKeyboardVisibilityForUrl(false); |
- mToolbar.getCurrentTab().getView().requestFocus(); |
- dismissPopup(); |
- } |
- |
- public void dismissPopup() { |
- if (mSuggestionsPopup != null) { |
- mSuggestionsPopup.dismiss(); |
- mSuggestionsPopup = null; |
- } |
- } |
- |
- /** |
- * Stops the autocomplete controller and closes the suggestion popup. |
- */ |
- public void hideSuggestions() { |
- stopAutocomplete(true); |
- dismissPopup(); |
- } |
- |
- /** |
- * Signals the autocomplete controller to stop generating suggestions and |
- * cancels the queued task to start the autocomplete controller, if any. |
- * |
- * @param clear Whether to clear the most recent autocomplete results. |
- */ |
- private void stopAutocomplete(boolean clear) { |
- if (mAutocomplete != null) mAutocomplete.stop(clear); |
- if (mRequestSuggestions != null) mRequestSuggestions = null; |
- } |
- |
- private int getSuggestionPopupHeight() { |
- Rect appRect = new Rect(); |
- ((ChromeShellActivity) mContext).getWindow().getDecorView() |
- .getWindowVisibleDisplayFrame(appRect); |
- int dropDownItemHeight = mContext.getResources() |
- .getDimensionPixelSize(R.dimen.dropdown_item_height); |
- // Applying margin height equal to |dropDownItemHeight| if constrained by app rect. |
- int popupHeight = appRect.height() - dropDownItemHeight; |
- if (mSuggestionsPopup != null) { |
- int height = mSuggestionsPopupItemsCount * dropDownItemHeight; |
- if (height < popupHeight) popupHeight = height; |
- } |
- return popupHeight; |
- } |
- |
- // OnSuggestionsReceivedListener implementation |
- @Override |
- public void onSuggestionsReceived(List<OmniboxSuggestion> suggestions, |
- String inlineAutocompleteText) { |
- if (!mUrlField.isFocused() || suggestions.isEmpty()) return; |
- mSuggestionsPopupItemsCount = suggestions.size(); |
- if (mSuggestionsPopup == null) { |
- mSuggestionsPopup = new ListPopupWindow( |
- mContext, null, android.R.attr.autoCompleteTextViewStyle); |
- mSuggestionsPopup.setOnDismissListener(new OnDismissListener() { |
- @Override |
- public void onDismiss() { |
- mHasStartedNewOmniboxEditSession = false; |
- mSuggestionArrayAdapter = null; |
- } |
- }); |
- } |
- mSuggestionsPopup.setInputMethodMode(ListPopupWindow.INPUT_METHOD_NEEDED); |
- mSuggestionsPopup.setWidth(mToolbar.getWidth()); |
- mSuggestionArrayAdapter = |
- new SuggestionArrayAdapter(mContext, R.layout.dropdown_item, suggestions, |
- mUrlField); |
- mSuggestionsPopup.setHeight(getSuggestionPopupHeight()); |
- mSuggestionsPopup.setAdapter(mSuggestionArrayAdapter); |
- mSuggestionsPopup.setAnchorView(mToolbar); |
- mSuggestionsPopup.setOnItemClickListener(new OnItemClickListener() { |
- @Override |
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) { |
- navigateToSuggestion(position); |
- } |
- }); |
- mSuggestionsPopup.show(); |
- } |
- |
- // TextWatcher implementation |
- |
- @Override |
- public void afterTextChanged(final Editable editableText) { |
- if (!mUrlField.hasFocus()) return; |
- if (!mHasStartedNewOmniboxEditSession) { |
- mAutocomplete.resetSession(); |
- mHasStartedNewOmniboxEditSession = true; |
- } |
- |
- stopAutocomplete(false); |
- if (TextUtils.isEmpty(editableText)) { |
- dismissPopup(); |
- } else { |
- assert mRequestSuggestions == null : "Multiple omnibox requests in flight."; |
- mRequestSuggestions = new Runnable() { |
- @Override |
- public void run() { |
- // TODO(aurimas): Create new tab if none exists. |
- if (mToolbar.getCurrentTab() == null) return; |
- mRequestSuggestions = null; |
- mAutocomplete.start( |
- mToolbar.getCurrentTab().getProfile(), |
- mToolbar.getCurrentTab().getUrl(), |
- editableText.toString(), false); |
- } |
- }; |
- new Handler().postDelayed(mRequestSuggestions, SUGGESTION_START_DELAY_MS); |
- } |
- } |
- |
- @Override |
- public void beforeTextChanged(CharSequence s, int start, int count, int after) { |
- mRequestSuggestions = null; |
- } |
- |
- @Override |
- public void onTextChanged(CharSequence s, int start, int before, int count) { |
- } |
-} |