| Index: chrome/android/java_staging/src/org/chromium/chrome/browser/document/DocumentTab.java
|
| diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/document/DocumentTab.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/document/DocumentTab.java
|
| deleted file mode 100644
|
| index 38c7be48ff125812c92cce855e21a1f8105ce712..0000000000000000000000000000000000000000
|
| --- a/chrome/android/java_staging/src/org/chromium/chrome/browser/document/DocumentTab.java
|
| +++ /dev/null
|
| @@ -1,336 +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.document;
|
| -
|
| -import android.graphics.Bitmap;
|
| -import android.graphics.Rect;
|
| -
|
| -import org.chromium.base.ObserverList.RewindableIterator;
|
| -import org.chromium.base.VisibleForTesting;
|
| -import org.chromium.base.metrics.RecordUserAction;
|
| -import org.chromium.chrome.browser.ChromeMobileApplication;
|
| -import org.chromium.chrome.browser.EmptyTabObserver;
|
| -import org.chromium.chrome.browser.IntentHandler;
|
| -import org.chromium.chrome.browser.Tab;
|
| -import org.chromium.chrome.browser.TabObserver;
|
| -import org.chromium.chrome.browser.TabState;
|
| -import org.chromium.chrome.browser.TabUma.TabCreationState;
|
| -import org.chromium.chrome.browser.WarmupManager;
|
| -import org.chromium.chrome.browser.WebContentsFactory;
|
| -import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
|
| -import org.chromium.chrome.browser.contextmenu.ChromeContextMenuPopulator;
|
| -import org.chromium.chrome.browser.contextmenu.ContextMenuPopulator;
|
| -import org.chromium.chrome.browser.preferences.PrefServiceBridge;
|
| -import org.chromium.chrome.browser.tab.ChromeTab;
|
| -import org.chromium.chrome.browser.tabmodel.TabModel;
|
| -import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
|
| -import org.chromium.chrome.browser.tabmodel.document.ActivityDelegate;
|
| -import org.chromium.content_public.browser.LoadUrlParams;
|
| -import org.chromium.content_public.browser.WebContents;
|
| -import org.chromium.content_public.common.Referrer;
|
| -import org.chromium.ui.base.PageTransition;
|
| -import org.chromium.ui.base.WindowAndroid;
|
| -
|
| -/**
|
| - * A Tab child class with Chrome documents specific functionality.
|
| - */
|
| -public class DocumentTab extends ChromeTab {
|
| - private static final int DESIRED_ICON_SIZE_DP = 32;
|
| -
|
| - /**
|
| - * Observer class with extra calls specific to Chrome Documents
|
| - */
|
| - public static class DocumentTabObserver extends EmptyTabObserver {
|
| - /**
|
| - * Called when a Favicon is received for the current document.
|
| - * @param image The favicon image that was received.
|
| - */
|
| - protected void onFaviconReceived(Bitmap image) { }
|
| -
|
| - /**
|
| - * Called when a tab is set to be covered or uncovered by child activity.
|
| - */
|
| - protected void onSetCoveredByChildActivity() { }
|
| - }
|
| -
|
| - private int mDesiredIconSizePx;
|
| - private boolean mDidRestoreState;
|
| -
|
| - // Whether this document tab was constructed from passed-in web contents pointer.
|
| - private boolean mCreatedFromWebContents;
|
| -
|
| - private final DocumentActivity mActivity;
|
| -
|
| - // Whether this tab is covered by its child activity.
|
| - private boolean mIsCoveredByChildActivity;
|
| -
|
| - /**
|
| - * Standard constructor for the document tab.
|
| - * @param activity The document activity that will hold on to this tab.
|
| - * @param incognito Whether the tab is incognito.
|
| - * @param windowAndroid The window that this tab should be using.
|
| - * @param url The url to load on creation.
|
| - * @param parentTabId The id of the parent tab.
|
| - */
|
| - private DocumentTab(DocumentActivity activity, boolean incognito,
|
| - WindowAndroid windowAndroid, String url, int parentTabId) {
|
| - super(ActivityDelegate.getTabIdFromIntent(activity.getIntent()), activity,
|
| - incognito, windowAndroid, TabLaunchType.FROM_EXTERNAL_APP, parentTabId, null, null);
|
| - mActivity = activity;
|
| - initialize(url, null, activity.getTabContentManager(), false);
|
| - }
|
| -
|
| - /**
|
| - * Constructor for document tab from a frozen state.
|
| - * @param activity The document activity that will hold on to this tab.
|
| - * @param incognito Whether the tab is incognito.
|
| - * @param windowAndroid The window that this tab should be using.
|
| - * @param url The url to load on creation.
|
| - * @param tabState The {@link TabState} the tab will be recreated from.
|
| - * @param parentTabId The id of the parent tab.
|
| - */
|
| - private DocumentTab(DocumentActivity activity, boolean incognito,
|
| - WindowAndroid windowAndroid, String url, TabState tabState, int parentTabId) {
|
| - super(ActivityDelegate.getTabIdFromIntent(activity.getIntent()), activity,
|
| - incognito, windowAndroid, TabLaunchType.FROM_RESTORE, parentTabId,
|
| - TabCreationState.FROZEN_ON_RESTORE, tabState);
|
| - mActivity = activity;
|
| - initialize(url, null, activity.getTabContentManager(), true);
|
| - }
|
| -
|
| - /**
|
| - * Constructor for tab opened via JS.
|
| - * @param activity The document activity that will hold on to this tab.
|
| - * @param incognito Whether the tab is incognito.
|
| - * @param windowAndroid The window that this tab should be using.
|
| - * @param url The url to load on creation.
|
| - * @param parentTabId The id of the parent tab.
|
| - * @param webContents An optional {@link WebContents} object to use.
|
| - */
|
| - private DocumentTab(DocumentActivity activity, boolean incognito,
|
| - WindowAndroid windowAndroid, String url, int parentTabId, WebContents webContents) {
|
| - super(ActivityDelegate.getTabIdFromIntent(activity.getIntent()), activity,
|
| - incognito, windowAndroid, TabLaunchType.FROM_LONGPRESS_FOREGROUND,
|
| - parentTabId, null, null);
|
| - mActivity = activity;
|
| - initialize(url, webContents, activity.getTabContentManager(), false);
|
| - mCreatedFromWebContents = true;
|
| - }
|
| -
|
| - @Override
|
| - protected void initContentViewCore(WebContents webContents) {
|
| - super.initContentViewCore(webContents);
|
| - getContentViewCore().setFullscreenRequiredForOrientationLock(false);
|
| - }
|
| -
|
| - /**
|
| - * Initializes the tab with native web contents.
|
| - * @param url The url to use for looking up potentially pre-rendered web contents.
|
| - * @param webContents Optionally, a pre-created web contents.
|
| - * @param unfreeze Whether we want to initialize the tab from tab state.
|
| - */
|
| - private void initialize(String url, WebContents webContents,
|
| - TabContentManager tabContentManager, boolean unfreeze) {
|
| - mDesiredIconSizePx = (int) (DESIRED_ICON_SIZE_DP
|
| - * mActivity.getResources().getDisplayMetrics().density);
|
| -
|
| - if (!unfreeze && webContents == null) {
|
| - webContents = WarmupManager.getInstance().hasPrerenderedUrl(url)
|
| - ? WarmupManager.getInstance().takePrerenderedWebContents()
|
| - : WebContentsFactory.createWebContents(isIncognito(), false);
|
| - }
|
| - initialize(webContents, tabContentManager, false);
|
| - if (unfreeze) mDidRestoreState = unfreezeContents();
|
| -
|
| - getView().requestFocus();
|
| - }
|
| -
|
| - @Override
|
| - public void onFaviconAvailable(Bitmap image) {
|
| - super.onFaviconAvailable(image);
|
| - if (image == null) return;
|
| - if (image.getWidth() < mDesiredIconSizePx || image.getHeight() < mDesiredIconSizePx) {
|
| - return;
|
| - }
|
| - RewindableIterator<TabObserver> observers = getTabObservers();
|
| - while (observers.hasNext()) {
|
| - TabObserver observer = observers.next();
|
| - if (observer instanceof DocumentTabObserver) {
|
| - ((DocumentTabObserver) observer).onFaviconReceived(image);
|
| - }
|
| - }
|
| - }
|
| -
|
| - private class DocumentContextMenuItemDelegate extends TabChromeContextMenuItemDelegate {
|
| - @Override
|
| - public boolean isIncognitoSupported() {
|
| - return PrefServiceBridge.getInstance().isIncognitoModeEnabled();
|
| - }
|
| -
|
| - @Override
|
| - public boolean canLoadOriginalImage() {
|
| - return mUsedSpdyProxy && !mUsedSpdyProxyWithPassthrough;
|
| - }
|
| -
|
| - @Override
|
| - public boolean isDataReductionProxyEnabledForURL(String url) {
|
| - return isSpdyProxyEnabledForUrl(url);
|
| - }
|
| -
|
| - @Override
|
| - public boolean startDownload(String url, boolean isLink) {
|
| - if (isLink && shouldInterceptContextMenuDownload(url)) {
|
| - return false;
|
| - }
|
| - return true;
|
| - }
|
| -
|
| - @Override
|
| - public void onOpenInNewTab(String url, Referrer referrer) {
|
| - LoadUrlParams params = new LoadUrlParams(url, PageTransition.AUTO_TOPLEVEL);
|
| - params.setReferrer(referrer);
|
| - mActivity.getTabModelSelector().openNewTab(params,
|
| - TabLaunchType.FROM_LONGPRESS_BACKGROUND, DocumentTab.this, isIncognito());
|
| - }
|
| -
|
| - @Override
|
| - public void onOpenInNewIncognitoTab(String url) {
|
| - mActivity.getTabModelSelector().openNewTab(
|
| - new LoadUrlParams(url, PageTransition.AUTO_TOPLEVEL),
|
| - TabLaunchType.FROM_LONGPRESS_FOREGROUND, DocumentTab.this, true);
|
| - }
|
| -
|
| - @Override
|
| - public void onOpenImageInNewTab(String url, Referrer referrer) {
|
| - boolean useOriginal = isSpdyProxyEnabledForUrl(url);
|
| -
|
| - LoadUrlParams loadUrlParams = new LoadUrlParams(url);
|
| - loadUrlParams.setVerbatimHeaders(useOriginal ? PAGESPEED_PASSTHROUGH_HEADER : null);
|
| - loadUrlParams.setReferrer(referrer);
|
| - mActivity.getTabModelSelector().openNewTab(loadUrlParams,
|
| - TabLaunchType.FROM_LONGPRESS_BACKGROUND, DocumentTab.this, isIncognito());
|
| - }
|
| -
|
| - @Override
|
| - public void onOpenImageUrl(String url, Referrer referrer) {
|
| - LoadUrlParams loadUrlParams = new LoadUrlParams(url);
|
| - loadUrlParams.setTransitionType(PageTransition.AUTO_BOOKMARK);
|
| - loadUrlParams.setReferrer(referrer);
|
| - loadUrl(loadUrlParams);
|
| - }
|
| -
|
| - @Override
|
| - public void onSearchByImageInNewTab() {
|
| - RecordUserAction.record("MobileContextMenuSearchByImage");
|
| - triggerSearchByImage();
|
| - }
|
| - }
|
| -
|
| - @Override
|
| - protected ContextMenuPopulator createContextMenuPopulator() {
|
| - return new ChromeContextMenuPopulator(new DocumentContextMenuItemDelegate());
|
| - }
|
| -
|
| - /**
|
| - * A web contents delegate for handling opening new windows in Document mode.
|
| - */
|
| - public class DocumentTabChromeWebContentsDelegateAndroidImpl
|
| - extends TabChromeWebContentsDelegateAndroidImpl {
|
| - @Override
|
| - public void webContentsCreated(WebContents sourceWebContents, long openerRenderFrameId,
|
| - String frameName, String targetUrl, WebContents newWebContents) {
|
| - // TODO(dfalcantara): Replace with TabObserver, combine with FullScreenActivityTab's
|
| - // WebContentsDelegateAndroidImpl.
|
| - super.webContentsCreated(sourceWebContents, openerRenderFrameId, frameName,
|
| - targetUrl, newWebContents);
|
| - DocumentWebContentsDelegate.getInstance().attachDelegate(newWebContents);
|
| - }
|
| -
|
| - @Override
|
| - public boolean addNewContents(WebContents sourceWebContents, WebContents webContents,
|
| - int disposition, Rect initialPosition, boolean userGesture) {
|
| - if (isClosing()) return false;
|
| - mActivity.getTabCreator(isIncognito()).createTabWithWebContents(
|
| - webContents, getId(), TabLaunchType.FROM_LONGPRESS_FOREGROUND);
|
| -
|
| - // Returns true because Tabs are created asynchronously.
|
| - return true;
|
| - }
|
| -
|
| - /**
|
| - * TODO(dfalcantara): remove this when DocumentActivity.getTabModelSelector()
|
| - * will return the right TabModelSelector.
|
| - */
|
| - @Override
|
| - protected TabModel getTabModel() {
|
| - return ChromeMobileApplication.getDocumentTabModelSelector().getModel(isIncognito());
|
| - }
|
| - }
|
| -
|
| - @Override
|
| - protected TabChromeWebContentsDelegateAndroid createWebContentsDelegate() {
|
| - return new DocumentTabChromeWebContentsDelegateAndroidImpl();
|
| - }
|
| -
|
| - /**
|
| - * @return Whether or not the tab's state was restored.
|
| - */
|
| - public boolean didRestoreState() {
|
| - return mDidRestoreState;
|
| - }
|
| -
|
| - /**
|
| - * @return Whether this tab was created using web contents passed to it.
|
| - */
|
| - public boolean isCreatedWithWebContents() {
|
| - return mCreatedFromWebContents;
|
| - }
|
| -
|
| - /**
|
| - * Create a DocumentTab.
|
| - * @param activity The activity the tab will be residing in.
|
| - * @param incognito Whether the tab is incognito.
|
| - * @param window The window the activity is using.
|
| - * @param url The url that should be displayed by the tab.
|
| - * @param webContents A {@link WebContents} object.
|
| - * @param tabState State that was previously persisted to disk for the Tab.
|
| - * @return The created {@link DocumentTab}.
|
| - */
|
| - static DocumentTab create(DocumentActivity activity, boolean incognito, WindowAndroid window,
|
| - String url, WebContents webContents, boolean webContentsPaused, TabState tabState) {
|
| - int parentTabId = activity.getIntent().getIntExtra(
|
| - IntentHandler.EXTRA_PARENT_TAB_ID, Tab.INVALID_TAB_ID);
|
| - if (webContents != null) {
|
| - DocumentTab tab = new DocumentTab(
|
| - activity, incognito, window, url, parentTabId, webContents);
|
| - if (webContentsPaused) webContents.resumeLoadingCreatedWebContents();
|
| - return tab;
|
| - }
|
| -
|
| - if (tabState == null) {
|
| - return new DocumentTab(activity, incognito, window, url, parentTabId);
|
| - } else {
|
| - return new DocumentTab(activity, incognito, window, "", tabState, parentTabId);
|
| - }
|
| - }
|
| -
|
| - @Override
|
| - public boolean isCoveredByChildActivity() {
|
| - return mIsCoveredByChildActivity;
|
| - }
|
| -
|
| - @Override
|
| - @VisibleForTesting
|
| - public void setCoveredByChildActivity(boolean isCoveredByChildActivity) {
|
| - mIsCoveredByChildActivity = isCoveredByChildActivity;
|
| - RewindableIterator<TabObserver> observers = getTabObservers();
|
| - while (observers.hasNext()) {
|
| - TabObserver observer = observers.next();
|
| - if (observer instanceof DocumentTabObserver) {
|
| - ((DocumentTabObserver) observer).onSetCoveredByChildActivity();
|
| - }
|
| - }
|
| - }
|
| -}
|
|
|