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

Unified Diff: chrome/browser/media/media_capture_devices_dispatcher.cc

Issue 562863002: Gardening: Revert "Use AudioStreamMonitor to control power save blocking." (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/media/media_capture_devices_dispatcher.h ('k') | chrome/browser/ui/tabs/tab_utils.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/media/media_capture_devices_dispatcher.cc
diff --git a/chrome/browser/media/media_capture_devices_dispatcher.cc b/chrome/browser/media/media_capture_devices_dispatcher.cc
index a3a1ddcf23d30ab14882fad7b5f4cd158dd6d2a9..2d0a798918b2803ed790b473fd37952f59e243d4 100644
--- a/chrome/browser/media/media_capture_devices_dispatcher.cc
+++ b/chrome/browser/media/media_capture_devices_dispatcher.cc
@@ -54,6 +54,12 @@
#include "ash/shell.h"
#endif // defined(OS_CHROMEOS)
+// Only do audio stream monitoring for platforms that use it for the tab media
+// indicator UI or the OOM killer.
+#if !defined(OS_ANDROID) && !defined(OS_IOS)
+#define AUDIO_STREAM_MONITORING
+#include "chrome/browser/media/audio_stream_monitor.h"
+#endif // !defined(OS_ANDROID) && !defined(OS_IOS)
#if defined(ENABLE_EXTENSIONS)
#include "chrome/browser/extensions/api/tab_capture/tab_capture_registry.h"
@@ -190,6 +196,43 @@ scoped_ptr<content::MediaStreamUI> GetDevicesForDesktopCapture(
return ui.Pass();
}
+#if defined(AUDIO_STREAM_MONITORING)
+
+AudioStreamMonitor* AudioStreamMonitorFromRenderFrame(
+ int render_process_id,
+ int render_frame_id) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ content::WebContents* const web_contents =
+ content::WebContents::FromRenderFrameHost(
+ content::RenderFrameHost::FromID(render_process_id, render_frame_id));
+ if (!web_contents)
+ return NULL;
+ return AudioStreamMonitor::FromWebContents(web_contents);
+}
+
+void StartAudioStreamMonitoringOnUIThread(
+ int render_process_id,
+ int render_frame_id,
+ int stream_id,
+ const AudioStreamMonitor::ReadPowerAndClipCallback& read_power_callback) {
+ AudioStreamMonitor* const audio_stream_monitor =
+ AudioStreamMonitorFromRenderFrame(render_process_id, render_frame_id);
+ if (audio_stream_monitor)
+ audio_stream_monitor->StartMonitoringStream(stream_id, read_power_callback);
+}
+
+void StopAudioStreamMonitoringOnUIThread(
+ int render_process_id,
+ int render_frame_id,
+ int stream_id) {
+ AudioStreamMonitor* const audio_stream_monitor =
+ AudioStreamMonitorFromRenderFrame(render_process_id, render_frame_id);
+ if (audio_stream_monitor)
+ audio_stream_monitor->StopMonitoringStream(stream_id);
+}
+
+#endif // defined(AUDIO_STREAM_MONITORING)
+
#if !defined(OS_ANDROID)
// Find browser or app window from a given |web_contents|.
gfx::NativeWindow FindParentWindowForWebContents(
@@ -894,6 +937,40 @@ void MediaCaptureDevicesDispatcher::OnMediaRequestStateChanged(
page_request_id, security_origin, stream_type, state));
}
+void MediaCaptureDevicesDispatcher::OnAudioStreamPlaying(
+ int render_process_id,
+ int render_frame_id,
+ int stream_id,
+ const ReadPowerAndClipCallback& read_power_callback) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+#if defined(AUDIO_STREAM_MONITORING)
+ BrowserThread::PostTask(
+ BrowserThread::UI,
+ FROM_HERE,
+ base::Bind(&StartAudioStreamMonitoringOnUIThread,
+ render_process_id,
+ render_frame_id,
+ stream_id,
+ read_power_callback));
+#endif
+}
+
+void MediaCaptureDevicesDispatcher::OnAudioStreamStopped(
+ int render_process_id,
+ int render_frame_id,
+ int stream_id) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+#if defined(AUDIO_STREAM_MONITORING)
+ BrowserThread::PostTask(
+ BrowserThread::UI,
+ FROM_HERE,
+ base::Bind(&StopAudioStreamMonitoringOnUIThread,
+ render_process_id,
+ render_frame_id,
+ stream_id));
+#endif
+}
+
void MediaCaptureDevicesDispatcher::OnCreatingAudioStream(
int render_process_id,
int render_frame_id) {
@@ -992,6 +1069,16 @@ void MediaCaptureDevicesDispatcher::OnCreatingAudioStreamOnUIThread(
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
FOR_EACH_OBSERVER(Observer, observers_,
OnCreatingAudioStream(render_process_id, render_frame_id));
+#if defined(AUDIO_STREAM_MONITORING)
+ content::WebContents* const web_contents =
+ content::WebContents::FromRenderFrameHost(
+ content::RenderFrameHost::FromID(render_process_id, render_frame_id));
+ if (web_contents) {
+ // Note: Calling CreateForWebContents() multiple times is valid (see usage
+ // info for content::WebContentsUserData).
+ AudioStreamMonitor::CreateForWebContents(web_contents);
+ }
+#endif
}
bool MediaCaptureDevicesDispatcher::IsDesktopCaptureInProgress() {
@@ -999,6 +1086,7 @@ bool MediaCaptureDevicesDispatcher::IsDesktopCaptureInProgress() {
return desktop_capture_sessions_.size() > 0;
}
+
void MediaCaptureDevicesDispatcher::SetTestAudioCaptureDevices(
const MediaStreamDevices& devices) {
test_audio_devices_ = devices;
« no previous file with comments | « chrome/browser/media/media_capture_devices_dispatcher.h ('k') | chrome/browser/ui/tabs/tab_utils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698