Chromium Code Reviews| Index: content/browser/renderer_host/media/media_stream_manager.cc |
| diff --git a/content/browser/renderer_host/media/media_stream_manager.cc b/content/browser/renderer_host/media/media_stream_manager.cc |
| index 66f0eb7e001439028fb9bcbe06db2df69e40c2b2..04ecb90e22e9cae9b29576c5676823a0160b3977 100644 |
| --- a/content/browser/renderer_host/media/media_stream_manager.cc |
| +++ b/content/browser/renderer_host/media/media_stream_manager.cc |
| @@ -258,7 +258,7 @@ class MediaStreamManager::DeviceRequest { |
| requesting_process_id, requesting_frame_id, page_request_id, |
| ConvertToGURL(security_origin), user_gesture, request_type, |
| requested_audio_device_id, requested_video_device_id, audio_type_, |
| - video_type_)); |
| + video_type_, mute_source)); |
| } |
| // Creates a tab capture specific MediaStreamRequest object that is used by |
| @@ -271,7 +271,7 @@ class MediaStreamManager::DeviceRequest { |
| ui_request_.reset(new MediaStreamRequest( |
| target_render_process_id, target_render_frame_id, page_request_id, |
| ConvertToGURL(security_origin), user_gesture, request_type, "", "", |
| - audio_type_, video_type_)); |
| + audio_type_, video_type_, mute_source)); |
| } |
| bool HasUIRequest() const { return ui_request_.get() != nullptr; } |
| @@ -354,6 +354,8 @@ class MediaStreamManager::DeviceRequest { |
| std::string tab_capture_device_id; |
| + bool mute_source; |
|
miu
2016/09/12 23:13:12
naming nit: We're not really muting the source, we
qiangchen
2016/09/13 21:46:57
Done.
|
| + |
| private: |
| std::vector<MediaRequestState> state_; |
| std::unique_ptr<MediaStreamRequest> ui_request_; |
| @@ -1308,11 +1310,9 @@ bool MediaStreamManager::SetupTabCaptureRequest(DeviceRequest* request) { |
| } |
| // Customize controls for a WebContents based capture. |
| - int target_render_process_id = 0; |
| - int target_render_frame_id = 0; |
| - |
| - bool has_valid_device_id = WebContentsMediaCaptureId::ExtractTabCaptureTarget( |
| - capture_device_id, &target_render_process_id, &target_render_frame_id); |
| + content::WebContentsMediaCaptureId web_id; |
| + bool has_valid_device_id = |
| + WebContentsMediaCaptureId::TryParse(capture_device_id, &web_id); |
| if (!has_valid_device_id || |
| (request->audio_type() != MEDIA_TAB_AUDIO_CAPTURE && |
| request->audio_type() != MEDIA_NO_SERVICE) || |
| @@ -1320,16 +1320,20 @@ bool MediaStreamManager::SetupTabCaptureRequest(DeviceRequest* request) { |
| request->video_type() != MEDIA_NO_SERVICE)) { |
| return false; |
| } |
| - request->tab_capture_device_id = capture_device_id; |
| + request->mute_source = request->controls.mute_source_audio; |
| + web_id.mute_source = request->mute_source; |
| + |
| + request->tab_capture_device_id = web_id.ToString(); |
| - request->CreateTabCaptureUIRequest(target_render_process_id, |
| - target_render_frame_id); |
| + request->CreateTabCaptureUIRequest(web_id.render_process_id, |
| + web_id.main_render_frame_id); |
| DVLOG(3) << "SetupTabCaptureRequest " |
| - << ", {capture_device_id = " << capture_device_id << "}" |
| - << ", {target_render_process_id = " << target_render_process_id |
| + << ", {capture_device_id = " << capture_device_id << "}" |
| + << ", {target_render_process_id = " << web_id.render_process_id |
| << "}" |
| - << ", {target_render_frame_id = " << target_render_frame_id << "}"; |
| + << ", {target_render_frame_id = " << web_id.main_render_frame_id |
| + << "}"; |
| return true; |
| } |
| @@ -1356,6 +1360,7 @@ bool MediaStreamManager::SetupScreenCaptureRequest(DeviceRequest* request) { |
| !request->controls.video.device_ids.empty()) { |
| video_device_id = request->controls.video.device_ids[0]; |
| } |
| + request->mute_source = request->controls.mute_source_audio; |
| } |
| const std::string audio_device_id = |