Chromium Code Reviews

Side by Side Diff: chrome/browser/media/media_capture_devices_dispatcher.cc

Issue 569713002: Revert of 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.
Jump to:
View unified diff |
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "chrome/browser/media/media_capture_devices_dispatcher.h" 5 #include "chrome/browser/media/media_capture_devices_dispatcher.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/metrics/field_trial.h" 9 #include "base/metrics/field_trial.h"
10 #include "base/prefs/pref_service.h" 10 #include "base/prefs/pref_service.h"
(...skipping 36 matching lines...)
47 #include "media/audio/audio_manager_base.h" 47 #include "media/audio/audio_manager_base.h"
48 #include "media/base/media_switches.h" 48 #include "media/base/media_switches.h"
49 #include "net/base/net_util.h" 49 #include "net/base/net_util.h"
50 #include "third_party/webrtc/modules/desktop_capture/desktop_capture_types.h" 50 #include "third_party/webrtc/modules/desktop_capture/desktop_capture_types.h"
51 #include "ui/base/l10n/l10n_util.h" 51 #include "ui/base/l10n/l10n_util.h"
52 52
53 #if defined(OS_CHROMEOS) 53 #if defined(OS_CHROMEOS)
54 #include "ash/shell.h" 54 #include "ash/shell.h"
55 #endif // defined(OS_CHROMEOS) 55 #endif // defined(OS_CHROMEOS)
56 56
57 // Only do audio stream monitoring for platforms that use it for the tab media
58 // indicator UI or the OOM killer.
59 #if !defined(OS_ANDROID) && !defined(OS_IOS)
60 #define AUDIO_STREAM_MONITORING
61 #include "chrome/browser/media/audio_stream_monitor.h"
62 #endif // !defined(OS_ANDROID) && !defined(OS_IOS)
63 57
64 #if defined(ENABLE_EXTENSIONS) 58 #if defined(ENABLE_EXTENSIONS)
65 #include "chrome/browser/extensions/api/tab_capture/tab_capture_registry.h" 59 #include "chrome/browser/extensions/api/tab_capture/tab_capture_registry.h"
66 #include "chrome/browser/extensions/extension_service.h" 60 #include "chrome/browser/extensions/extension_service.h"
67 #include "extensions/browser/app_window/app_window.h" 61 #include "extensions/browser/app_window/app_window.h"
68 #include "extensions/browser/app_window/app_window_registry.h" 62 #include "extensions/browser/app_window/app_window_registry.h"
69 #include "extensions/browser/extension_system.h" 63 #include "extensions/browser/extension_system.h"
70 #endif 64 #endif
71 65
72 using content::BrowserThread; 66 using content::BrowserThread;
(...skipping 116 matching lines...)
189 ui = ScreenCaptureNotificationUI::Create(l10n_util::GetStringFUTF16( 183 ui = ScreenCaptureNotificationUI::Create(l10n_util::GetStringFUTF16(
190 IDS_MEDIA_SCREEN_CAPTURE_NOTIFICATION_TEXT_DELEGATED, 184 IDS_MEDIA_SCREEN_CAPTURE_NOTIFICATION_TEXT_DELEGATED,
191 registered_extension_name, 185 registered_extension_name,
192 application_title)); 186 application_title));
193 } 187 }
194 } 188 }
195 189
196 return ui.Pass(); 190 return ui.Pass();
197 } 191 }
198 192
199 #if defined(AUDIO_STREAM_MONITORING)
200
201 AudioStreamMonitor* AudioStreamMonitorFromRenderFrame(
202 int render_process_id,
203 int render_frame_id) {
204 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
205 content::WebContents* const web_contents =
206 content::WebContents::FromRenderFrameHost(
207 content::RenderFrameHost::FromID(render_process_id, render_frame_id));
208 if (!web_contents)
209 return NULL;
210 return AudioStreamMonitor::FromWebContents(web_contents);
211 }
212
213 void StartAudioStreamMonitoringOnUIThread(
214 int render_process_id,
215 int render_frame_id,
216 int stream_id,
217 const AudioStreamMonitor::ReadPowerAndClipCallback& read_power_callback) {
218 AudioStreamMonitor* const audio_stream_monitor =
219 AudioStreamMonitorFromRenderFrame(render_process_id, render_frame_id);
220 if (audio_stream_monitor)
221 audio_stream_monitor->StartMonitoringStream(stream_id, read_power_callback);
222 }
223
224 void StopAudioStreamMonitoringOnUIThread(
225 int render_process_id,
226 int render_frame_id,
227 int stream_id) {
228 AudioStreamMonitor* const audio_stream_monitor =
229 AudioStreamMonitorFromRenderFrame(render_process_id, render_frame_id);
230 if (audio_stream_monitor)
231 audio_stream_monitor->StopMonitoringStream(stream_id);
232 }
233
234 #endif // defined(AUDIO_STREAM_MONITORING)
235
236 #if !defined(OS_ANDROID) 193 #if !defined(OS_ANDROID)
237 // Find browser or app window from a given |web_contents|. 194 // Find browser or app window from a given |web_contents|.
238 gfx::NativeWindow FindParentWindowForWebContents( 195 gfx::NativeWindow FindParentWindowForWebContents(
239 content::WebContents* web_contents) { 196 content::WebContents* web_contents) {
240 Browser* browser = chrome::FindBrowserWithWebContents(web_contents); 197 Browser* browser = chrome::FindBrowserWithWebContents(web_contents);
241 if (browser && browser->window()) 198 if (browser && browser->window())
242 return browser->window()->GetNativeWindow(); 199 return browser->window()->GetNativeWindow();
243 200
244 const extensions::AppWindowRegistry::AppWindowList& window_list = 201 const extensions::AppWindowRegistry::AppWindowList& window_list =
245 extensions::AppWindowRegistry::Get( 202 extensions::AppWindowRegistry::Get(
(...skipping 684 matching lines...)
930 content::MediaRequestState state) { 887 content::MediaRequestState state) {
931 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 888 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
932 BrowserThread::PostTask( 889 BrowserThread::PostTask(
933 BrowserThread::UI, FROM_HERE, 890 BrowserThread::UI, FROM_HERE,
934 base::Bind( 891 base::Bind(
935 &MediaCaptureDevicesDispatcher::UpdateMediaRequestStateOnUIThread, 892 &MediaCaptureDevicesDispatcher::UpdateMediaRequestStateOnUIThread,
936 base::Unretained(this), render_process_id, render_frame_id, 893 base::Unretained(this), render_process_id, render_frame_id,
937 page_request_id, security_origin, stream_type, state)); 894 page_request_id, security_origin, stream_type, state));
938 } 895 }
939 896
940 void MediaCaptureDevicesDispatcher::OnAudioStreamPlaying(
941 int render_process_id,
942 int render_frame_id,
943 int stream_id,
944 const ReadPowerAndClipCallback& read_power_callback) {
945 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
946 #if defined(AUDIO_STREAM_MONITORING)
947 BrowserThread::PostTask(
948 BrowserThread::UI,
949 FROM_HERE,
950 base::Bind(&StartAudioStreamMonitoringOnUIThread,
951 render_process_id,
952 render_frame_id,
953 stream_id,
954 read_power_callback));
955 #endif
956 }
957
958 void MediaCaptureDevicesDispatcher::OnAudioStreamStopped(
959 int render_process_id,
960 int render_frame_id,
961 int stream_id) {
962 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
963 #if defined(AUDIO_STREAM_MONITORING)
964 BrowserThread::PostTask(
965 BrowserThread::UI,
966 FROM_HERE,
967 base::Bind(&StopAudioStreamMonitoringOnUIThread,
968 render_process_id,
969 render_frame_id,
970 stream_id));
971 #endif
972 }
973
974 void MediaCaptureDevicesDispatcher::OnCreatingAudioStream( 897 void MediaCaptureDevicesDispatcher::OnCreatingAudioStream(
975 int render_process_id, 898 int render_process_id,
976 int render_frame_id) { 899 int render_frame_id) {
977 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 900 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
978 BrowserThread::PostTask( 901 BrowserThread::PostTask(
979 BrowserThread::UI, FROM_HERE, 902 BrowserThread::UI, FROM_HERE,
980 base::Bind( 903 base::Bind(
981 &MediaCaptureDevicesDispatcher::OnCreatingAudioStreamOnUIThread, 904 &MediaCaptureDevicesDispatcher::OnCreatingAudioStreamOnUIThread,
982 base::Unretained(this), render_process_id, render_frame_id)); 905 base::Unretained(this), render_process_id, render_frame_id));
983 } 906 }
(...skipping 78 matching lines...)
1062 stream_type, 985 stream_type,
1063 state)); 986 state));
1064 } 987 }
1065 988
1066 void MediaCaptureDevicesDispatcher::OnCreatingAudioStreamOnUIThread( 989 void MediaCaptureDevicesDispatcher::OnCreatingAudioStreamOnUIThread(
1067 int render_process_id, 990 int render_process_id,
1068 int render_frame_id) { 991 int render_frame_id) {
1069 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 992 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1070 FOR_EACH_OBSERVER(Observer, observers_, 993 FOR_EACH_OBSERVER(Observer, observers_,
1071 OnCreatingAudioStream(render_process_id, render_frame_id)); 994 OnCreatingAudioStream(render_process_id, render_frame_id));
1072 #if defined(AUDIO_STREAM_MONITORING)
1073 content::WebContents* const web_contents =
1074 content::WebContents::FromRenderFrameHost(
1075 content::RenderFrameHost::FromID(render_process_id, render_frame_id));
1076 if (web_contents) {
1077 // Note: Calling CreateForWebContents() multiple times is valid (see usage
1078 // info for content::WebContentsUserData).
1079 AudioStreamMonitor::CreateForWebContents(web_contents);
1080 }
1081 #endif
1082 } 995 }
1083 996
1084 bool MediaCaptureDevicesDispatcher::IsDesktopCaptureInProgress() { 997 bool MediaCaptureDevicesDispatcher::IsDesktopCaptureInProgress() {
1085 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 998 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1086 return desktop_capture_sessions_.size() > 0; 999 return desktop_capture_sessions_.size() > 0;
1087 } 1000 }
1088 1001
1089
1090 void MediaCaptureDevicesDispatcher::SetTestAudioCaptureDevices( 1002 void MediaCaptureDevicesDispatcher::SetTestAudioCaptureDevices(
1091 const MediaStreamDevices& devices) { 1003 const MediaStreamDevices& devices) {
1092 test_audio_devices_ = devices; 1004 test_audio_devices_ = devices;
1093 } 1005 }
1094 1006
1095 void MediaCaptureDevicesDispatcher::SetTestVideoCaptureDevices( 1007 void MediaCaptureDevicesDispatcher::SetTestVideoCaptureDevices(
1096 const MediaStreamDevices& devices) { 1008 const MediaStreamDevices& devices) {
1097 test_video_devices_ = devices; 1009 test_video_devices_ = devices;
1098 } 1010 }
OLDNEW
« 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