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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsDelegateAndroid.java

Issue 2123863004: ScreenCapture for Android phase1, part II (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address comments and rebase Created 4 years, 4 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 unified diff | Download patch
OLDNEW
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;
(...skipping 18 matching lines...) Expand all
29 import org.chromium.chrome.browser.document.DocumentWebContentsDelegate; 29 import org.chromium.chrome.browser.document.DocumentWebContentsDelegate;
30 import org.chromium.chrome.browser.findinpage.FindMatchRectsDetails; 30 import org.chromium.chrome.browser.findinpage.FindMatchRectsDetails;
31 import org.chromium.chrome.browser.findinpage.FindNotificationDetails; 31 import org.chromium.chrome.browser.findinpage.FindNotificationDetails;
32 import org.chromium.chrome.browser.media.MediaCaptureNotificationService; 32 import org.chromium.chrome.browser.media.MediaCaptureNotificationService;
33 import org.chromium.chrome.browser.policy.PolicyAuditor; 33 import org.chromium.chrome.browser.policy.PolicyAuditor;
34 import org.chromium.chrome.browser.policy.PolicyAuditor.AuditEvent; 34 import org.chromium.chrome.browser.policy.PolicyAuditor.AuditEvent;
35 import org.chromium.chrome.browser.tabmodel.TabCreatorManager.TabCreator; 35 import org.chromium.chrome.browser.tabmodel.TabCreatorManager.TabCreator;
36 import org.chromium.chrome.browser.tabmodel.TabModel; 36 import org.chromium.chrome.browser.tabmodel.TabModel;
37 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; 37 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
38 import org.chromium.chrome.browser.tabmodel.TabModelUtils; 38 import org.chromium.chrome.browser.tabmodel.TabModelUtils;
39 import org.chromium.chrome.browser.tabmodel.TabWindowManager;
39 import org.chromium.chrome.browser.util.FeatureUtilities; 40 import org.chromium.chrome.browser.util.FeatureUtilities;
40 import org.chromium.components.web_contents_delegate_android.WebContentsDelegate Android; 41 import org.chromium.components.web_contents_delegate_android.WebContentsDelegate Android;
41 import org.chromium.content_public.browser.InvalidateTypes; 42 import org.chromium.content_public.browser.InvalidateTypes;
42 import org.chromium.content_public.browser.WebContents; 43 import org.chromium.content_public.browser.WebContents;
43 import org.chromium.content_public.common.ResourceRequestBody; 44 import org.chromium.content_public.common.ResourceRequestBody;
44 import org.chromium.ui.WindowOpenDisposition; 45 import org.chromium.ui.WindowOpenDisposition;
45 46
46 /** 47 /**
47 * A basic {@link TabWebContentsDelegateAndroid} that forwards some calls to the registered 48 * A basic {@link TabWebContentsDelegateAndroid} that forwards some calls to the registered
48 * {@link TabObserver}s. 49 * {@link TabObserver}s.
(...skipping 18 matching lines...) Expand all
67 68
68 protected final Tab mTab; 69 protected final Tab mTab;
69 70
70 private FindResultListener mFindResultListener; 71 private FindResultListener mFindResultListener;
71 72
72 private FindMatchRectsListener mFindMatchRectsListener = null; 73 private FindMatchRectsListener mFindMatchRectsListener = null;
73 74
74 private int mDisplayMode = WebDisplayMode.Browser; 75 private int mDisplayMode = WebDisplayMode.Browser;
75 76
76 protected Handler mHandler; 77 protected Handler mHandler;
78
77 private final Runnable mCloseContentsRunnable = new Runnable() { 79 private final Runnable mCloseContentsRunnable = new Runnable() {
78 @Override 80 @Override
79 public void run() { 81 public void run() {
80 boolean isSelected = mTab.getTabModelSelector().getCurrentTab() == m Tab; 82 boolean isSelected = mTab.getTabModelSelector().getCurrentTab() == m Tab;
81 mTab.getTabModelSelector().closeTab(mTab); 83 mTab.getTabModelSelector().closeTab(mTab);
82 84
83 // If the parent Tab belongs to another Activity, fire the Intent to bring it back. 85 // If the parent Tab belongs to another Activity, fire the Intent to bring it back.
84 if (isSelected && mTab.getParentIntent() != null 86 if (isSelected && mTab.getParentIntent() != null
85 && mTab.getActivity().getIntent() != mTab.getParentIntent()) { 87 && mTab.getActivity().getIntent() != mTab.getParentIntent()) {
86 boolean mayLaunch = FeatureUtilities.isDocumentMode(mTab.getAppl icationContext()) 88 boolean mayLaunch = FeatureUtilities.isDocumentMode(mTab.getAppl icationContext())
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 221
220 RewindableIterator<TabObserver> observers = mTab.getTabObservers(); 222 RewindableIterator<TabObserver> observers = mTab.getTabObservers();
221 while (observers.hasNext()) { 223 while (observers.hasNext()) {
222 observers.next().onToggleFullscreenMode(mTab, enableFullscreen); 224 observers.next().onToggleFullscreenMode(mTab, enableFullscreen);
223 } 225 }
224 } 226 }
225 227
226 @Override 228 @Override
227 public void navigationStateChanged(int flags) { 229 public void navigationStateChanged(int flags) {
228 if ((flags & InvalidateTypes.TAB) != 0) { 230 if ((flags & InvalidateTypes.TAB) != 0) {
231 int mediaType = MediaCaptureNotificationService.getMediaType(
232 isCapturingAudio(), isCapturingVideo(), isCapturingScreen()) ;
229 MediaCaptureNotificationService.updateMediaNotificationForTab( 233 MediaCaptureNotificationService.updateMediaNotificationForTab(
230 mTab.getApplicationContext(), mTab.getId(), isCapturingAudio (), 234 mTab.getApplicationContext(), mTab.getId(), mediaType, mTab. getUrl());
231 isCapturingVideo(), mTab.getUrl());
232 } 235 }
233 if ((flags & InvalidateTypes.TITLE) != 0) { 236 if ((flags & InvalidateTypes.TITLE) != 0) {
234 // Update cached title then notify observers. 237 // Update cached title then notify observers.
235 mTab.updateTitle(); 238 mTab.updateTitle();
236 } 239 }
237 if ((flags & InvalidateTypes.URL) != 0) { 240 if ((flags & InvalidateTypes.URL) != 0) {
238 RewindableIterator<TabObserver> observers = mTab.getTabObservers(); 241 RewindableIterator<TabObserver> observers = mTab.getTabObservers();
239 while (observers.hasNext()) { 242 while (observers.hasNext()) {
240 observers.next().onUrlUpdated(mTab); 243 observers.next().onUrlUpdated(mTab);
241 } 244 }
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 return !mTab.isClosing() && nativeIsCapturingAudio(mTab.getWebContents() ); 471 return !mTab.isClosing() && nativeIsCapturingAudio(mTab.getWebContents() );
469 } 472 }
470 473
471 /** 474 /**
472 * @return Whether video is being captured. 475 * @return Whether video is being captured.
473 */ 476 */
474 private boolean isCapturingVideo() { 477 private boolean isCapturingVideo() {
475 return !mTab.isClosing() && nativeIsCapturingVideo(mTab.getWebContents() ); 478 return !mTab.isClosing() && nativeIsCapturingVideo(mTab.getWebContents() );
476 } 479 }
477 480
481 /**
482 * @return Whether screen is being captured.
483 */
484 private boolean isCapturingScreen() {
485 return !mTab.isClosing() && nativeIsCapturingScreen(mTab.getWebContents( ));
486 }
487
488 /**
489 * When STOP button in the media capture notification is clicked, pass the e vent to native
490 * to stop the media capture.
491 */
braveyao 2016/08/12 23:37:44 Done
492 public static void notifyStopped(int tabId) {
493 final Tab tab = TabWindowManager.getInstance().getTabById(tabId);
494 if (tab != null) nativeNotifyStopped(tab.getWebContents());
495 }
496
478 private static native void nativeOnRendererUnresponsive(WebContents webConte nts); 497 private static native void nativeOnRendererUnresponsive(WebContents webConte nts);
479 private static native void nativeOnRendererResponsive(WebContents webContent s); 498 private static native void nativeOnRendererResponsive(WebContents webContent s);
480 private static native boolean nativeIsCapturingAudio(WebContents webContents ); 499 private static native boolean nativeIsCapturingAudio(WebContents webContents );
481 private static native boolean nativeIsCapturingVideo(WebContents webContents ); 500 private static native boolean nativeIsCapturingVideo(WebContents webContents );
501 private static native boolean nativeIsCapturingScreen(WebContents webContent s);
502 private static native void nativeNotifyStopped(WebContents webContents);
482 } 503 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698