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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/webapps/FullScreenActivity.java

Issue 2946223002: Replaces FullscreenActivity with SingleTabActivity. (Closed)
Patch Set: Removes the WebContentsObserver on reparenting in FullscreenWebContentsActivity Created 3 years, 5 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/webapps/FullScreenActivity.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/FullScreenActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/FullScreenActivity.java
deleted file mode 100644
index a68604a0bd2158d86fb38ad0d1751f300ac5cdcb..0000000000000000000000000000000000000000
--- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/FullScreenActivity.java
+++ /dev/null
@@ -1,215 +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.webapps;
-
-import android.content.Intent;
-import android.util.Pair;
-import android.view.View;
-import android.view.ViewGroup;
-
-import org.chromium.base.annotations.SuppressFBWarnings;
-import org.chromium.chrome.R;
-import org.chromium.chrome.browser.ChromeActivity;
-import org.chromium.chrome.browser.TabState;
-import org.chromium.chrome.browser.compositor.layouts.LayoutManagerDocument;
-import org.chromium.chrome.browser.tab.EmptyTabObserver;
-import org.chromium.chrome.browser.tab.Tab;
-import org.chromium.chrome.browser.tab.TabDelegateFactory;
-import org.chromium.chrome.browser.tab.TabUma.TabCreationState;
-import org.chromium.chrome.browser.tabmodel.SingleTabModelSelector;
-import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
-import org.chromium.chrome.browser.tabmodel.TabModel.TabSelectionType;
-import org.chromium.chrome.browser.tabmodel.TabModelSelector;
-import org.chromium.chrome.browser.tabmodel.document.TabDelegate;
-import org.chromium.chrome.browser.widget.ControlContainer;
-import org.chromium.content.browser.ContentViewCore;
-import org.chromium.content_public.browser.LoadUrlParams;
-import org.chromium.content_public.browser.WebContents;
-import org.chromium.content_public.browser.WebContentsObserver;
-
-import java.io.File;
-
-/**
- * Base class for task-focused activities that need to display web content in a nearly UI-less
- * Chrome (InfoBars still appear).
- *
- * This is vaguely analogous to a WebView, but in Chrome. Example applications that might use this
- * Activity would be webapps and streaming media activities - anything where user interaction with
- * the regular browser's UI is either unnecessary or undesirable.
- * Subclasses can override {@link #createUI()} if they need something more exotic.
- */
-@SuppressFBWarnings("URF_UNREAD_FIELD")
-public abstract class FullScreenActivity extends ChromeActivity {
- protected static final String BUNDLE_TAB_ID = "tabId";
- protected static final String BUNDLE_TAB_URL = "tabUrl";
- private static final String TAG = "FullScreenActivity";
-
- private WebContents mWebContents;
- @SuppressWarnings("unused") // Reference needed to prevent GC.
- private WebContentsObserver mWebContentsObserver;
-
- @Override
- protected void onNewIntent(Intent intent) {
- super.onNewIntent(intent);
- setIntent(intent);
- }
-
- @Override
- protected TabModelSelector createTabModelSelector() {
- return new SingleTabModelSelector(this, false, false) {
- @Override
- public Tab openNewTab(LoadUrlParams loadUrlParams, TabLaunchType type, Tab parent,
- boolean incognito) {
- getTabCreator(incognito).createNewTab(loadUrlParams, type, parent);
- return null;
- }
- };
- }
-
- @Override
- protected Pair<TabDelegate, TabDelegate> createTabCreators() {
- return Pair.create(createTabDelegate(false), createTabDelegate(true));
- }
-
- /** Creates TabDelegates for opening new Tabs. */
- protected TabDelegate createTabDelegate(boolean incognito) {
- return new TabDelegate(incognito);
- }
-
- @Override
- public void initializeState() {
- super.initializeState();
-
- Tab tab = createTab();
- getTabModelSelector().setTab(tab);
- handleTabContentChanged();
- tab.show(TabSelectionType.FROM_NEW);
- }
-
- @Override
- public void finishNativeInitialization() {
- ControlContainer controlContainer = (ControlContainer) findViewById(R.id.control_container);
- initializeCompositorContent(new LayoutManagerDocument(getCompositorViewHolder()),
- (View) controlContainer, (ViewGroup) findViewById(android.R.id.content),
- controlContainer);
-
- if (getFullscreenManager() != null) getFullscreenManager().setTab(getActivityTab());
- super.finishNativeInitialization();
- }
-
- @Override
- protected void initializeToolbar() { }
-
- @Override
- public SingleTabModelSelector getTabModelSelector() {
- return (SingleTabModelSelector) super.getTabModelSelector();
- }
-
- /**
- * Creates the {@link Tab} used by the FullScreenActivity.
- * If the {@code savedInstanceState} exists, then the user did not intentionally close the app
- * by swiping it away in the recent tasks list. In that case, we try to restore the tab from
- * disk.
- */
- protected Tab createTab() {
- Tab tab = null;
- boolean unfreeze = false;
-
- int tabId = Tab.INVALID_TAB_ID;
- String tabUrl = null;
- if (getSavedInstanceState() != null) {
- tabId = getSavedInstanceState().getInt(BUNDLE_TAB_ID, Tab.INVALID_TAB_ID);
- tabUrl = getSavedInstanceState().getString(BUNDLE_TAB_URL);
- }
-
- if (tabId != Tab.INVALID_TAB_ID && tabUrl != null && getActivityDirectory() != null) {
- // Restore the tab.
- TabState tabState = TabState.restoreTabState(getActivityDirectory(), tabId);
- tab = new Tab(tabId, Tab.INVALID_TAB_ID, false, this, getWindowAndroid(),
- TabLaunchType.FROM_RESTORE,
- TabCreationState.FROZEN_ON_RESTORE, tabState);
- unfreeze = true;
- }
-
- if (tab == null) {
- tab = new Tab(Tab.INVALID_TAB_ID, Tab.INVALID_TAB_ID, false, this, getWindowAndroid(),
- TabLaunchType.FROM_CHROME_UI, null, null);
- }
-
- tab.initialize(null, getTabContentManager(), createTabDelegateFactory(), false, unfreeze);
- tab.addObserver(new EmptyTabObserver() {
- @Override
- public void onContentChanged(Tab tab) {
- assert tab == getActivityTab();
- handleTabContentChanged();
- }
- });
- return tab;
- }
-
- private void handleTabContentChanged() {
- final Tab tab = getActivityTab();
- assert tab != null;
-
- WebContents webContents = tab.getWebContents();
- if (mWebContents == webContents) return;
-
- // Clean up any old references to the previous WebContents.
- if (mWebContentsObserver != null) {
- mWebContentsObserver.destroy();
- mWebContentsObserver = null;
- }
-
- mWebContents = webContents;
- if (mWebContents == null) return;
-
- ContentViewCore.fromWebContents(webContents).setFullscreenRequiredForOrientationLock(false);
- mWebContentsObserver = new WebContentsObserver(webContents) {
- @Override
- public void didFinishNavigation(String url, boolean isInMainFrame, boolean isErrorPage,
- boolean hasCommitted, boolean isSameDocument, boolean isFragmentNavigation,
- Integer pageTransition, int errorCode, String errorDescription,
- int httpStatusCode) {
- if (hasCommitted && isInMainFrame) {
- // Notify the renderer to permanently hide the top controls since they do
- // not apply to fullscreen content views.
- tab.updateBrowserControlsState(tab.getBrowserControlsStateConstraints(), true);
- }
- }
- };
- }
-
- /**
- * @return {@link TabDelegateFactory} to be used while creating the associated {@link Tab}.
- */
- protected TabDelegateFactory createTabDelegateFactory() {
- return new FullScreenDelegateFactory();
- }
-
- /**
- * @return {@link File} pointing at a directory specific for this class.
- */
- protected File getActivityDirectory() {
- return null;
- }
-
- @Override
- protected boolean handleBackPressed() {
- Tab tab = getActivityTab();
- if (tab == null) return false;
-
- if (exitFullscreenIfShowing()) return true;
-
- if (tab.canGoBack()) {
- tab.goBack();
- return true;
- }
- return false;
- }
-
- @Override
- public void onCheckForUpdate(boolean updateAvailable) {
- }
-}

Powered by Google App Engine
This is Rietveld 408576698