OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.chrome.browser.tab; | 5 package org.chromium.chrome.browser.tab; |
6 | 6 |
7 import android.annotation.TargetApi; | 7 import android.annotation.TargetApi; |
8 import android.app.Activity; | 8 import android.app.Activity; |
9 import android.app.ActivityManager; | 9 import android.app.ActivityManager; |
10 import android.content.Context; | 10 import android.content.Context; |
11 import android.content.Intent; | 11 import android.content.Intent; |
12 import android.graphics.Rect; | 12 import android.graphics.Rect; |
13 import android.graphics.RectF; | 13 import android.graphics.RectF; |
14 import android.media.AudioManager; | 14 import android.media.AudioManager; |
15 import android.os.Build; | 15 import android.os.Build; |
16 import android.os.Handler; | 16 import android.os.Handler; |
17 import android.util.Pair; | 17 import android.util.Pair; |
18 import android.view.KeyEvent; | 18 import android.view.KeyEvent; |
19 import android.view.View; | 19 import android.view.View; |
20 | 20 |
21 import org.chromium.base.Log; | 21 import org.chromium.base.Log; |
22 import org.chromium.base.ObserverList.RewindableIterator; | 22 import org.chromium.base.ObserverList.RewindableIterator; |
23 import org.chromium.base.annotations.CalledByNative; | 23 import org.chromium.base.annotations.CalledByNative; |
24 import org.chromium.blink_public.platform.WebDisplayMode; | 24 import org.chromium.blink_public.platform.WebDisplayMode; |
25 import org.chromium.chrome.R; | 25 import org.chromium.chrome.R; |
26 import org.chromium.chrome.browser.AppHooks; | 26 import org.chromium.chrome.browser.AppHooks; |
27 import org.chromium.chrome.browser.ChromeTabbedActivity; | |
28 import org.chromium.chrome.browser.FullscreenWebContentsActivity; | |
27 import org.chromium.chrome.browser.RepostFormWarningDialog; | 29 import org.chromium.chrome.browser.RepostFormWarningDialog; |
28 import org.chromium.chrome.browser.document.DocumentUtils; | 30 import org.chromium.chrome.browser.document.DocumentUtils; |
29 import org.chromium.chrome.browser.document.DocumentWebContentsDelegate; | 31 import org.chromium.chrome.browser.document.DocumentWebContentsDelegate; |
30 import org.chromium.chrome.browser.findinpage.FindMatchRectsDetails; | 32 import org.chromium.chrome.browser.findinpage.FindMatchRectsDetails; |
31 import org.chromium.chrome.browser.findinpage.FindNotificationDetails; | 33 import org.chromium.chrome.browser.findinpage.FindNotificationDetails; |
32 import org.chromium.chrome.browser.fullscreen.FullscreenManager; | 34 import org.chromium.chrome.browser.fullscreen.FullscreenManager; |
33 import org.chromium.chrome.browser.media.MediaCaptureNotificationService; | 35 import org.chromium.chrome.browser.media.MediaCaptureNotificationService; |
34 import org.chromium.chrome.browser.media.VideoPersister; | 36 import org.chromium.chrome.browser.media.VideoPersister; |
37 import org.chromium.chrome.browser.multiwindow.MultiWindowUtils; | |
35 import org.chromium.chrome.browser.policy.PolicyAuditor; | 38 import org.chromium.chrome.browser.policy.PolicyAuditor; |
36 import org.chromium.chrome.browser.policy.PolicyAuditor.AuditEvent; | 39 import org.chromium.chrome.browser.policy.PolicyAuditor.AuditEvent; |
37 import org.chromium.chrome.browser.tabmodel.TabCreatorManager.TabCreator; | 40 import org.chromium.chrome.browser.tabmodel.TabCreatorManager.TabCreator; |
38 import org.chromium.chrome.browser.tabmodel.TabModel; | 41 import org.chromium.chrome.browser.tabmodel.TabModel; |
39 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; | 42 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; |
40 import org.chromium.chrome.browser.tabmodel.TabModelUtils; | 43 import org.chromium.chrome.browser.tabmodel.TabModelUtils; |
41 import org.chromium.chrome.browser.tabmodel.TabWindowManager; | 44 import org.chromium.chrome.browser.tabmodel.TabWindowManager; |
42 import org.chromium.components.web_contents_delegate_android.WebContentsDelegate Android; | 45 import org.chromium.components.web_contents_delegate_android.WebContentsDelegate Android; |
43 import org.chromium.content.browser.ActivityContentVideoViewEmbedder; | 46 import org.chromium.content.browser.ActivityContentVideoViewEmbedder; |
44 import org.chromium.content.browser.ContentVideoViewEmbedder; | 47 import org.chromium.content.browser.ContentVideoViewEmbedder; |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
207 | 210 |
208 @Override | 211 @Override |
209 public void showRepostFormWarningDialog() { | 212 public void showRepostFormWarningDialog() { |
210 mTab.resetSwipeRefreshHandler(); | 213 mTab.resetSwipeRefreshHandler(); |
211 if (mTab.getActivity() == null) return; | 214 if (mTab.getActivity() == null) return; |
212 RepostFormWarningDialog warningDialog = new RepostFormWarningDialog(mTab ); | 215 RepostFormWarningDialog warningDialog = new RepostFormWarningDialog(mTab ); |
213 warningDialog.show(mTab.getActivity().getFragmentManager(), null); | 216 warningDialog.show(mTab.getActivity().getFragmentManager(), null); |
214 } | 217 } |
215 | 218 |
216 @Override | 219 @Override |
217 public void toggleFullscreenModeForTab(boolean enableFullscreen) { | 220 public void toggleFullscreenModeForTab(final boolean enableFullscreen) { |
218 if (!VideoPersister.getInstance().shouldDelayFullscreenModeChange(mTab, enableFullscreen)) { | 221 // TODO(peconn): Change this to the flag. |
219 mTab.toggleFullscreenMode(enableFullscreen); | 222 final boolean useFullscreenActivity = true; |
223 if (useFullscreenActivity && mTab.getActivity().supportsFullscreenActivi ty()) { | |
224 if (mTab.getFullscreenManager() == null) { | |
225 Log.d(TAG, "Cannot toggle fullscreen, Manager is null."); | |
226 return; | |
227 } | |
228 | |
229 Class<? extends Activity> targetActivity; | |
230 if (enableFullscreen) { | |
231 targetActivity = FullscreenWebContentsActivity.class; | |
232 } else { | |
233 targetActivity = MultiWindowUtils.getSenderActivity(mTab.getActi vity()); | |
234 if (targetActivity == null) { | |
235 Log.w(TAG, "Tab exiting fullscreen without sender Activity." ); | |
236 targetActivity = ChromeTabbedActivity.class; | |
237 } | |
238 } | |
239 | |
240 if (mTab.getFullscreenManager().getTab() == mTab) { | |
241 mTab.getFullscreenManager().setTab(null); | |
242 } | |
243 | |
244 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
| |
245 mTab.getActivity(), mTab, targetActivity, new Runnable() { | |
246 @Override | |
247 public void run() { | |
248 // The Tab's FullscreenManager changes when it is mo ved. | |
249 mTab.getFullscreenManager().setTab(mTab); | |
250 | |
251 mTab.toggleFullscreenMode(enableFullscreen); | |
252 } | |
253 }); | |
254 } else { | |
255 if (!VideoPersister.getInstance().shouldDelayFullscreenModeChange( | |
256 mTab, enableFullscreen)) { | |
257 mTab.toggleFullscreenMode(enableFullscreen); | |
258 } | |
220 } | 259 } |
221 } | 260 } |
222 | 261 |
223 @Override | 262 @Override |
224 public void navigationStateChanged(int flags) { | 263 public void navigationStateChanged(int flags) { |
225 if ((flags & InvalidateTypes.TAB) != 0) { | 264 if ((flags & InvalidateTypes.TAB) != 0) { |
226 int mediaType = MediaCaptureNotificationService.getMediaType( | 265 int mediaType = MediaCaptureNotificationService.getMediaType( |
227 isCapturingAudio(), isCapturingVideo(), isCapturingScreen()) ; | 266 isCapturingAudio(), isCapturingVideo(), isCapturingScreen()) ; |
228 MediaCaptureNotificationService.updateMediaNotificationForTab( | 267 MediaCaptureNotificationService.updateMediaNotificationForTab( |
229 mTab.getApplicationContext(), mTab.getId(), mediaType, mTab. getUrl()); | 268 mTab.getApplicationContext(), mTab.getId(), mediaType, mTab. getUrl()); |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
519 }; | 558 }; |
520 } | 559 } |
521 | 560 |
522 private static native void nativeOnRendererUnresponsive(WebContents webConte nts); | 561 private static native void nativeOnRendererUnresponsive(WebContents webConte nts); |
523 private static native void nativeOnRendererResponsive(WebContents webContent s); | 562 private static native void nativeOnRendererResponsive(WebContents webContent s); |
524 private static native boolean nativeIsCapturingAudio(WebContents webContents ); | 563 private static native boolean nativeIsCapturingAudio(WebContents webContents ); |
525 private static native boolean nativeIsCapturingVideo(WebContents webContents ); | 564 private static native boolean nativeIsCapturingVideo(WebContents webContents ); |
526 private static native boolean nativeIsCapturingScreen(WebContents webContent s); | 565 private static native boolean nativeIsCapturingScreen(WebContents webContent s); |
527 private static native void nativeNotifyStopped(WebContents webContents); | 566 private static native void nativeNotifyStopped(WebContents webContents); |
528 } | 567 } |
OLD | NEW |