Index: chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsDelegateAndroid.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsDelegateAndroid.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsDelegateAndroid.java |
index 6c6188991500c9ed886f643663a13bed8d8115b5..cd3452daee613bebf3e85c59e08021ac961c2b6b 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsDelegateAndroid.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsDelegateAndroid.java |
@@ -24,6 +24,8 @@ import org.chromium.base.annotations.CalledByNative; |
import org.chromium.blink_public.platform.WebDisplayMode; |
import org.chromium.chrome.R; |
import org.chromium.chrome.browser.AppHooks; |
+import org.chromium.chrome.browser.ChromeTabbedActivity; |
+import org.chromium.chrome.browser.FullscreenWebContentsActivity; |
import org.chromium.chrome.browser.RepostFormWarningDialog; |
import org.chromium.chrome.browser.document.DocumentUtils; |
import org.chromium.chrome.browser.document.DocumentWebContentsDelegate; |
@@ -32,6 +34,7 @@ import org.chromium.chrome.browser.findinpage.FindNotificationDetails; |
import org.chromium.chrome.browser.fullscreen.FullscreenManager; |
import org.chromium.chrome.browser.media.MediaCaptureNotificationService; |
import org.chromium.chrome.browser.media.VideoPersister; |
+import org.chromium.chrome.browser.multiwindow.MultiWindowUtils; |
import org.chromium.chrome.browser.policy.PolicyAuditor; |
import org.chromium.chrome.browser.policy.PolicyAuditor.AuditEvent; |
import org.chromium.chrome.browser.tabmodel.TabCreatorManager.TabCreator; |
@@ -214,9 +217,45 @@ public class TabWebContentsDelegateAndroid extends WebContentsDelegateAndroid { |
} |
@Override |
- public void toggleFullscreenModeForTab(boolean enableFullscreen) { |
- if (!VideoPersister.getInstance().shouldDelayFullscreenModeChange(mTab, enableFullscreen)) { |
- mTab.toggleFullscreenMode(enableFullscreen); |
+ public void toggleFullscreenModeForTab(final boolean enableFullscreen) { |
+ // TODO(peconn): Change this to the flag. |
+ final boolean useFullscreenActivity = true; |
+ if (useFullscreenActivity && mTab.getActivity().supportsFullscreenActivity()) { |
+ if (mTab.getFullscreenManager() == null) { |
+ Log.d(TAG, "Cannot toggle fullscreen, Manager is null."); |
+ return; |
+ } |
+ |
+ Class<? extends Activity> targetActivity; |
+ if (enableFullscreen) { |
+ targetActivity = FullscreenWebContentsActivity.class; |
+ } else { |
+ targetActivity = MultiWindowUtils.getSenderActivity(mTab.getActivity()); |
+ if (targetActivity == null) { |
+ Log.w(TAG, "Tab exiting fullscreen without sender Activity."); |
+ targetActivity = ChromeTabbedActivity.class; |
+ } |
+ } |
+ |
+ if (mTab.getFullscreenManager().getTab() == mTab) { |
+ mTab.getFullscreenManager().setTab(null); |
+ } |
+ |
+ MultiWindowUtils.moveTabToActivity( |
Theresa
2017/04/12 22:29:11
Does the fullscreen activity sit on top of the par
PEConn
2017/04/13 14:45:57
I was planning on having the fullscreen Activity b
Theresa
2017/04/13 15:22:09
I don't think Android will kill the background act
|
+ mTab.getActivity(), mTab, targetActivity, new Runnable() { |
+ @Override |
+ public void run() { |
+ // The Tab's FullscreenManager changes when it is moved. |
+ mTab.getFullscreenManager().setTab(mTab); |
+ |
+ mTab.toggleFullscreenMode(enableFullscreen); |
+ } |
+ }); |
+ } else { |
+ if (!VideoPersister.getInstance().shouldDelayFullscreenModeChange( |
+ mTab, enableFullscreen)) { |
+ mTab.toggleFullscreenMode(enableFullscreen); |
+ } |
} |
} |