| Index: chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java
|
| index 98862b1eaa74e6bb4f33e65c497e2b62f7ad5cd0..d737c46301503ddf2e6712c83bc0c99a54be7cd7 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java
|
| @@ -40,6 +40,7 @@ import org.chromium.base.annotations.CalledByNative;
|
| import org.chromium.base.metrics.RecordHistogram;
|
| import org.chromium.blimp_public.contents.BlimpContents;
|
| import org.chromium.chrome.R;
|
| +import org.chromium.chrome.browser.ChromeActionModeCallback;
|
| import org.chromium.chrome.browser.ChromeActivity;
|
| import org.chromium.chrome.browser.ChromeApplication;
|
| import org.chromium.chrome.browser.ChromeFeatureList;
|
| @@ -69,13 +70,11 @@ import org.chromium.chrome.browser.ntp.NativePageAssassin;
|
| import org.chromium.chrome.browser.ntp.NativePageFactory;
|
| import org.chromium.chrome.browser.offlinepages.OfflinePageItem;
|
| import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
|
| -import org.chromium.chrome.browser.omnibox.geo.GeolocationHeader;
|
| import org.chromium.chrome.browser.policy.PolicyAuditor;
|
| import org.chromium.chrome.browser.prerender.ExternalPrerenderHandler;
|
| import org.chromium.chrome.browser.printing.TabPrinter;
|
| import org.chromium.chrome.browser.profiles.Profile;
|
| import org.chromium.chrome.browser.rlz.RevenueStats;
|
| -import org.chromium.chrome.browser.search_engines.TemplateUrlService;
|
| import org.chromium.chrome.browser.snackbar.SnackbarManager;
|
| import org.chromium.chrome.browser.ssl.SecurityStateModel;
|
| import org.chromium.chrome.browser.tab.TabUma.TabCreationState;
|
| @@ -397,20 +396,6 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener,
|
| }
|
|
|
| @Override
|
| - public void onContextualActionBarShown() {
|
| - for (TabObserver observer : mObservers) {
|
| - observer.onContextualActionBarVisibilityChanged(Tab.this, true);
|
| - }
|
| - }
|
| -
|
| - @Override
|
| - public void onContextualActionBarHidden() {
|
| - for (TabObserver observer : mObservers) {
|
| - observer.onContextualActionBarVisibilityChanged(Tab.this, false);
|
| - }
|
| - }
|
| -
|
| - @Override
|
| public void onImeEvent() {
|
| // Some text was set in the page. Don't reuse it if a tab is
|
| // open from the same external application, we might lose some
|
| @@ -425,26 +410,6 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener,
|
| }
|
|
|
| @Override
|
| - public boolean doesPerformWebSearch() {
|
| - return true;
|
| - }
|
| -
|
| - @Override
|
| - public void performWebSearch(String searchQuery) {
|
| - if (TextUtils.isEmpty(searchQuery)) return;
|
| - if (getTabModelSelector() == null) return;
|
| - String url = TemplateUrlService.getInstance().getUrlForSearchQuery(searchQuery);
|
| - String headers = GeolocationHeader.getGeoHeader(getApplicationContext(), url,
|
| - isIncognito());
|
| -
|
| - LoadUrlParams loadUrlParams = new LoadUrlParams(url);
|
| - loadUrlParams.setVerbatimHeaders(headers);
|
| - loadUrlParams.setTransitionType(PageTransition.GENERATED);
|
| - getTabModelSelector().openNewTab(loadUrlParams,
|
| - TabLaunchType.FROM_LONGPRESS_FOREGROUND, Tab.this, isIncognito());
|
| - }
|
| -
|
| - @Override
|
| public int getSystemWindowInsetLeft() {
|
| ChromeActivity activity = getActivity();
|
| if (activity != null && activity.getInsetObserverView() != null) {
|
| @@ -802,6 +767,29 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener,
|
| }
|
|
|
| /**
|
| + * Interface used to execute an operation over each {@link TabObserver} element
|
| + * stored in {@link mObservers}.
|
| + */
|
| + public interface ObserverNotifier {
|
| + /**
|
| + * Method invoked when iterating through {@link mObservers}.
|
| + * @param observer {@link TabObserver} instance.
|
| + */
|
| + void run(TabObserver observer);
|
| + }
|
| +
|
| + /**
|
| + * Iterate through {@link mObservers} to apply the given operation to each
|
| + * {@link mTabObserver}.
|
| + * @param notifier {@link ObserverNotifier} that contains the operation to perform.
|
| + */
|
| + public void notifyObserver(ObserverNotifier notifier) {
|
| + for (TabObserver observer : mObservers) {
|
| + notifier.run(observer);
|
| + }
|
| + }
|
| +
|
| + /**
|
| * Load the original image (uncompressed by spdy proxy) in this tab.
|
| */
|
| void loadOriginalImage() {
|
| @@ -887,7 +875,7 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener,
|
| * @return {@link TabModelSelector} that currently hosts the {@link TabModel} for this
|
| * {@link Tab}.
|
| */
|
| - TabModelSelector getTabModelSelector() {
|
| + public TabModelSelector getTabModelSelector() {
|
| if (getActivity() == null) return null;
|
| return getActivity().getTabModelSelector();
|
| }
|
| @@ -1770,13 +1758,20 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener,
|
| * {@link ContentViewCore}.
|
| */
|
| protected void initContentViewCore(WebContents webContents) {
|
| + setContentViewCore(createContentViewCore(webContents));
|
| + }
|
| +
|
| + private ContentViewCore createContentViewCore(WebContents webContents) {
|
| ContentViewCore cvc = new ContentViewCore(mThemedApplicationContext, PRODUCT_VERSION);
|
| ContentView cv = ContentView.createContentView(mThemedApplicationContext, cvc);
|
| + ChromeActionModeCallback actionModeCallback = new ChromeActionModeCallback(
|
| + mThemedApplicationContext, this);
|
| +
|
| cv.setContentDescription(mThemedApplicationContext.getResources().getString(
|
| R.string.accessibility_content_view));
|
| cvc.initialize(ViewAndroidDelegate.createBasicDelegate(cv), cv, webContents,
|
| - getWindowAndroid());
|
| - setContentViewCore(cvc);
|
| + getWindowAndroid(), actionModeCallback);
|
| + return cvc;
|
| }
|
|
|
| /**
|
| @@ -2462,12 +2457,7 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener,
|
| @CalledByNative
|
| public void swapWebContents(
|
| WebContents webContents, boolean didStartLoad, boolean didFinishLoad) {
|
| - ContentViewCore cvc = new ContentViewCore(mThemedApplicationContext, PRODUCT_VERSION);
|
| - ContentView cv = ContentView.createContentView(mThemedApplicationContext, cvc);
|
| - cv.setContentDescription(mThemedApplicationContext.getResources().getString(
|
| - R.string.accessibility_content_view));
|
| - cvc.initialize(ViewAndroidDelegate.createBasicDelegate(cv), cv, webContents,
|
| - getWindowAndroid());
|
| + ContentViewCore cvc = createContentViewCore(webContents);
|
| swapContentViewCore(cvc, false, didStartLoad, didFinishLoad);
|
| }
|
|
|
|
|