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

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 Created 4 years, 2 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.components.web_contents_delegate_android.WebContentsDelegate Android; 40 import org.chromium.components.web_contents_delegate_android.WebContentsDelegate Android;
40 import org.chromium.content_public.browser.InvalidateTypes; 41 import org.chromium.content_public.browser.InvalidateTypes;
41 import org.chromium.content_public.browser.WebContents; 42 import org.chromium.content_public.browser.WebContents;
42 import org.chromium.content_public.common.ResourceRequestBody; 43 import org.chromium.content_public.common.ResourceRequestBody;
43 import org.chromium.ui.WindowOpenDisposition; 44 import org.chromium.ui.WindowOpenDisposition;
44 45
45 /** 46 /**
46 * A basic {@link TabWebContentsDelegateAndroid} that forwards some calls to the registered 47 * A basic {@link TabWebContentsDelegateAndroid} that forwards some calls to the registered
47 * {@link TabObserver}s. 48 * {@link TabObserver}s.
48 */ 49 */
(...skipping 17 matching lines...) Expand all
66 67
67 protected final Tab mTab; 68 protected final Tab mTab;
68 69
69 private FindResultListener mFindResultListener; 70 private FindResultListener mFindResultListener;
70 71
71 private FindMatchRectsListener mFindMatchRectsListener = null; 72 private FindMatchRectsListener mFindMatchRectsListener = null;
72 73
73 private int mDisplayMode = WebDisplayMode.Browser; 74 private int mDisplayMode = WebDisplayMode.Browser;
74 75
75 protected Handler mHandler; 76 protected Handler mHandler;
77
76 private final Runnable mCloseContentsRunnable = new Runnable() { 78 private final Runnable mCloseContentsRunnable = new Runnable() {
77 @Override 79 @Override
78 public void run() { 80 public void run() {
79 boolean isSelected = mTab.getTabModelSelector().getCurrentTab() == m Tab; 81 boolean isSelected = mTab.getTabModelSelector().getCurrentTab() == m Tab;
80 mTab.getTabModelSelector().closeTab(mTab); 82 mTab.getTabModelSelector().closeTab(mTab);
81 83
82 // If the parent Tab belongs to another Activity, fire the Intent to bring it back. 84 // If the parent Tab belongs to another Activity, fire the Intent to bring it back.
83 if (isSelected && mTab.getParentIntent() != null 85 if (isSelected && mTab.getParentIntent() != null
84 && mTab.getActivity().getIntent() != mTab.getParentIntent()) { 86 && mTab.getActivity().getIntent() != mTab.getParentIntent()) {
85 mTab.getActivity().startActivity(mTab.getParentIntent()); 87 mTab.getActivity().startActivity(mTab.getParentIntent());
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 216
215 RewindableIterator<TabObserver> observers = mTab.getTabObservers(); 217 RewindableIterator<TabObserver> observers = mTab.getTabObservers();
216 while (observers.hasNext()) { 218 while (observers.hasNext()) {
217 observers.next().onToggleFullscreenMode(mTab, enableFullscreen); 219 observers.next().onToggleFullscreenMode(mTab, enableFullscreen);
218 } 220 }
219 } 221 }
220 222
221 @Override 223 @Override
222 public void navigationStateChanged(int flags) { 224 public void navigationStateChanged(int flags) {
223 if ((flags & InvalidateTypes.TAB) != 0) { 225 if ((flags & InvalidateTypes.TAB) != 0) {
226 int mediaType = MediaCaptureNotificationService.getMediaType(
227 isCapturingAudio(), isCapturingVideo(), isCapturingScreen()) ;
224 MediaCaptureNotificationService.updateMediaNotificationForTab( 228 MediaCaptureNotificationService.updateMediaNotificationForTab(
225 mTab.getApplicationContext(), mTab.getId(), isCapturingAudio (), 229 mTab.getApplicationContext(), mTab.getId(), mediaType, mTab. getUrl());
226 isCapturingVideo(), mTab.getUrl());
227 } 230 }
228 if ((flags & InvalidateTypes.TITLE) != 0) { 231 if ((flags & InvalidateTypes.TITLE) != 0) {
229 // Update cached title then notify observers. 232 // Update cached title then notify observers.
230 mTab.updateTitle(); 233 mTab.updateTitle();
231 } 234 }
232 if ((flags & InvalidateTypes.URL) != 0) { 235 if ((flags & InvalidateTypes.URL) != 0) {
233 RewindableIterator<TabObserver> observers = mTab.getTabObservers(); 236 RewindableIterator<TabObserver> observers = mTab.getTabObservers();
234 while (observers.hasNext()) { 237 while (observers.hasNext()) {
235 observers.next().onUrlUpdated(mTab); 238 observers.next().onUrlUpdated(mTab);
236 } 239 }
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 return !mTab.isClosing() && nativeIsCapturingAudio(mTab.getWebContents() ); 466 return !mTab.isClosing() && nativeIsCapturingAudio(mTab.getWebContents() );
464 } 467 }
465 468
466 /** 469 /**
467 * @return Whether video is being captured. 470 * @return Whether video is being captured.
468 */ 471 */
469 private boolean isCapturingVideo() { 472 private boolean isCapturingVideo() {
470 return !mTab.isClosing() && nativeIsCapturingVideo(mTab.getWebContents() ); 473 return !mTab.isClosing() && nativeIsCapturingVideo(mTab.getWebContents() );
471 } 474 }
472 475
476 /**
477 * @return Whether screen is being captured.
478 */
479 private boolean isCapturingScreen() {
480 return !mTab.isClosing() && nativeIsCapturingScreen(mTab.getWebContents( ));
481 }
482
483 /**
484 * When STOP button in the media capture notification is clicked, pass the e vent to native
485 * to stop the media capture.
486 */
487 public static void notifyStopped(int tabId) {
488 final Tab tab = TabWindowManager.getInstance().getTabById(tabId);
489 if (tab != null) nativeNotifyStopped(tab.getWebContents());
490 }
491
473 private static native void nativeOnRendererUnresponsive(WebContents webConte nts); 492 private static native void nativeOnRendererUnresponsive(WebContents webConte nts);
474 private static native void nativeOnRendererResponsive(WebContents webContent s); 493 private static native void nativeOnRendererResponsive(WebContents webContent s);
475 private static native boolean nativeIsCapturingAudio(WebContents webContents ); 494 private static native boolean nativeIsCapturingAudio(WebContents webContents );
476 private static native boolean nativeIsCapturingVideo(WebContents webContents ); 495 private static native boolean nativeIsCapturingVideo(WebContents webContents );
496 private static native boolean nativeIsCapturingScreen(WebContents webContent s);
497 private static native void nativeNotifyStopped(WebContents webContents);
477 } 498 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698