Chromium Code Reviews| 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); |
| + } |
| } |
| } |