Index: chrome/android/java_staging/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchTabHelper.java |
diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchTabHelper.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchTabHelper.java |
deleted file mode 100644 |
index 04b7eb38bd100f1b0b79e47085bcd003bbf7bb28..0000000000000000000000000000000000000000 |
--- a/chrome/android/java_staging/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchTabHelper.java |
+++ /dev/null |
@@ -1,184 +0,0 @@ |
-// Copyright 2015 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.browser.contextualsearch; |
- |
-import org.chromium.base.CalledByNative; |
-import org.chromium.chrome.browser.ChromeActivity; |
-import org.chromium.chrome.browser.EmptyTabObserver; |
-import org.chromium.chrome.browser.Tab; |
-import org.chromium.chrome.browser.preferences.PrefServiceBridge; |
-import org.chromium.chrome.browser.profiles.Profile; |
-import org.chromium.chrome.browser.search_engines.TemplateUrlService; |
-import org.chromium.chrome.browser.search_engines.TemplateUrlService.TemplateUrlServiceObserver; |
-import org.chromium.content.browser.ContentViewCore; |
-import org.chromium.content_public.browser.GestureStateListener; |
- |
-/** |
- * Manages the activation and gesture listeners for ContextualSearch on a given tab. |
- */ |
-public class ContextualSearchTabHelper extends EmptyTabObserver { |
- /** |
- * Notification handler for Contextual Search events. |
- */ |
- private final TemplateUrlServiceObserver mTemplateUrlObserver = |
- new TemplateUrlServiceObserver() { |
- @Override |
- public void onTemplateURLServiceChanged() { |
- onContextualSearchPrefChanged(); |
- } |
- }; |
- |
- /** |
- * The current ContentViewCore for the Tab which this helper is monitoring. |
- */ |
- private ContentViewCore mBaseContentViewCore; |
- |
- /** |
- * The GestureListener used for handling events from the current ContentViewCore. |
- */ |
- private GestureStateListener mGestureStateListener; |
- |
- private long mNativeHelper = 0; |
- |
- /** |
- * Creates a contextual search tab helper for the given tab. |
- * @param tab The tab whose contextual search actions will be handled by this helper. |
- */ |
- public static void createForTab(Tab tab) { |
- new ContextualSearchTabHelper(tab); |
- } |
- |
- private ContextualSearchTabHelper(Tab tab) { |
- tab.addObserver(this); |
- } |
- |
- @Override |
- public void onPageLoadStarted(Tab tab, String url) { |
- if (tab.getContentViewCore() == null) { |
- // Nothing to do yet. |
- return; |
- } |
- |
- mBaseContentViewCore = tab.getContentViewCore(); |
- // Add Contextual Search here in case it couldn't get added in onContentChanged() due to |
- // being too early in initialization of Chrome (ContextualSearchManager being null). |
- setContextualSearchHooks(mBaseContentViewCore); |
- } |
- |
- @Override |
- public void onPageLoadFinished(Tab tab) { |
- // Native initialization happens after a page loads to ensure profile is initialized. |
- if (mNativeHelper == 0) { |
- mNativeHelper = nativeInit(tab.getProfile()); |
- } |
- } |
- |
- @Override |
- public void onContentChanged(Tab tab) { |
- updateHooksForNewContentViewCore(tab); |
- } |
- |
- @Override |
- public void onWebContentsSwapped(Tab tab, boolean didStartLoad, boolean didFinishLoad) { |
- updateHooksForNewContentViewCore(tab); |
- } |
- |
- @Override |
- public void onDestroyed(Tab tab) { |
- if (mNativeHelper != 0) { |
- nativeDestroy(mNativeHelper); |
- mNativeHelper = 0; |
- } |
- removeContextualSearchHooks(mBaseContentViewCore); |
- mBaseContentViewCore = null; |
- } |
- |
- /** |
- * Should be called whenever the Tab's ContentViewCore changes. Removes hooks from the |
- * existing ContentViewCore, if necessary and then adds hooks for the new ContentViewCore. |
- * @param tab |
- */ |
- private void updateHooksForNewContentViewCore(Tab tab) { |
- removeContextualSearchHooks(mBaseContentViewCore); |
- mBaseContentViewCore = tab.getContentViewCore(); |
- setContextualSearchHooks(mBaseContentViewCore); |
- } |
- |
- /** |
- * Sets up the Contextual Search hooks, adding or removing them depending on whether it is |
- * currently active. |
- * @param cvc The content view core to attach the gesture state listener to. |
- */ |
- private void setContextualSearchHooks(ContentViewCore cvc) { |
- if (cvc == null) return; |
- |
- if (isContextualSearchActive(cvc)) { |
- addContextualSearchHooks(cvc); |
- } else { |
- removeContextualSearchHooks(cvc); |
- } |
- } |
- |
- /** |
- * Adds Contextual Search hooks for its client and listener to the given content view core. |
- * @param cvc The content view core to attach the gesture state listener to. |
- */ |
- private void addContextualSearchHooks(ContentViewCore cvc) { |
- if (mGestureStateListener == null) { |
- mGestureStateListener = getContextualSearchManager(cvc).getGestureStateListener(); |
- cvc.addGestureStateListener(mGestureStateListener); |
- cvc.setContextualSearchClient(getContextualSearchManager(cvc)); |
- TemplateUrlService.getInstance().addObserver(mTemplateUrlObserver); |
- } |
- } |
- |
- /** |
- * Removes Contextual Search hooks for its client and listener from the given content view core. |
- * @param cvc The content view core to detach the gesture state listener from. |
- */ |
- private void removeContextualSearchHooks(ContentViewCore cvc) { |
- if (cvc == null) return; |
- |
- if (mGestureStateListener != null) { |
- cvc.removeGestureStateListener(mGestureStateListener); |
- mGestureStateListener = null; |
- cvc.setContextualSearchClient(null); |
- TemplateUrlService.getInstance().removeObserver(mTemplateUrlObserver); |
- } |
- } |
- |
- /** |
- * @return whether Contextual Search is enabled and active in this tab. |
- */ |
- private static boolean isContextualSearchActive(ContentViewCore cvc) { |
- return !cvc.getWebContents().isIncognito() && getContextualSearchManager(cvc) != null |
- && !PrefServiceBridge.getInstance().isContextualSearchDisabled() |
- && TemplateUrlService.getInstance().isDefaultSearchEngineGoogle() |
- // Svelte and Accessibility devices are incompatible with the first-run flow and |
- // Talkback has poor interaction with tap to search (see http://crbug.com/399708 and |
- // http://crbug.com/396934). |
- // TODO(jeremycho): Handle these cases. |
- && !getContextualSearchManager(cvc).isRunningInCompatibilityMode(); |
- } |
- |
- /** |
- * @return the Contextual Search manager. |
- */ |
- private static ContextualSearchManager getContextualSearchManager(ContentViewCore cvc) { |
- // TODO(yfriedman): Decouple this from the activity. |
- if (cvc.getContext() instanceof ChromeActivity) { |
- return ((ChromeActivity) cvc.getContext()).getContextualSearchManager(); |
- } |
- return null; |
- } |
- |
- @CalledByNative |
- private void onContextualSearchPrefChanged() { |
- setContextualSearchHooks(mBaseContentViewCore); |
- } |
- |
- private native long nativeInit(Profile profile); |
- private native void nativeDestroy(long nativeContextualSearchTabHelper); |
-} |