diff options
Diffstat (limited to 'chromium/content/browser/renderer_host/media/media_stream_manager.cc')
-rw-r--r-- | chromium/content/browser/renderer_host/media/media_stream_manager.cc | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/chromium/content/browser/renderer_host/media/media_stream_manager.cc b/chromium/content/browser/renderer_host/media/media_stream_manager.cc index afb3978a94b..c0473e4fca4 100644 --- a/chromium/content/browser/renderer_host/media/media_stream_manager.cc +++ b/chromium/content/browser/renderer_host/media/media_stream_manager.cc @@ -810,8 +810,8 @@ class MediaStreamManager::DeviceRequest { } void RunMojoCallbacks() { - if (generate_stream_cb) { - std::move(generate_stream_cb) + if (generate_streams_cb_) { + std::move(generate_streams_cb_) .Run(MediaStreamRequestResult::FAILED_DUE_TO_SHUTDOWN, std::string(), MediaStreamDevices(), MediaStreamDevices(), /*pan_tilt_zoom_allowed=*/false); @@ -823,6 +823,18 @@ class MediaStreamManager::DeviceRequest { } } + void SetGenerateStreamsCallback(GenerateStreamCallback callback) { + generate_streams_cb_ = std::move(callback); + } + + GenerateStreamCallback&& MoveGenerateStreamsCallback() { + return std::move(generate_streams_cb_); + } + + bool HasGenerateStreamsCallback() const { + return !generate_streams_cb_.is_null(); + } + // The render process id that requested this stream to be generated and that // will receive a handle to the MediaStream. This may be different from // MediaStreamRequest::render_process_id which in the tab capture case @@ -863,8 +875,6 @@ class MediaStreamManager::DeviceRequest { // Currently it is only used by |DEVICE_ACCESS| type. MediaAccessRequestCallback media_access_request_cb; - GenerateStreamCallback generate_stream_cb; - // This callback is used by transferred MediaStreamTracks to access and clone // an existing open MediaStreamDevice (identified by its session_id). If the // device is found, it is returned to this callback along with a @@ -902,6 +912,7 @@ class MediaStreamManager::DeviceRequest { MediaStreamType video_type_; int target_process_id_; int target_frame_id_; + GenerateStreamCallback generate_streams_cb_; }; // static @@ -1113,7 +1124,7 @@ void MediaStreamManager::GenerateStream( MediaDeviceSaltAndOrigin salt_and_origin, bool user_gesture, StreamSelectionInfoPtr audio_stream_selection_info_ptr, - GenerateStreamCallback generate_stream_cb, + GenerateStreamCallback generate_streams_cb, DeviceStoppedCallback device_stopped_cb, DeviceChangedCallback device_changed_cb, DeviceRequestStateChangeCallback device_request_state_change_cb, @@ -1128,7 +1139,7 @@ void MediaStreamManager::GenerateStream( std::move(device_stopped_cb), std::move(device_changed_cb), std::move(device_request_state_change_cb), std::move(device_capture_handle_change_cb)); - request->generate_stream_cb = std::move(generate_stream_cb); + request->SetGenerateStreamsCallback(std::move(generate_streams_cb)); DeviceRequest* const request_ptr = request.get(); const std::string label = AddRequest(std::move(request)); @@ -2165,7 +2176,7 @@ void MediaStreamManager::FinalizeGenerateStream(const std::string& label, DeviceRequest* request) { DCHECK_CURRENTLY_ON(BrowserThread::IO); DCHECK(request); - DCHECK(request->generate_stream_cb); + DCHECK(request->HasGenerateStreamsCallback()); SendLogMessage( base::StringPrintf("FinalizeGenerateStream({label=%s}, {requester_id=" "%d}, {request_type=%s})", @@ -2199,7 +2210,7 @@ void MediaStreamManager::FinalizeGenerateStream(const std::string& label, request->requesting_frame_id), base::BindOnce(&MediaStreamManager::PanTiltZoomPermissionChecked, base::Unretained(this), label, video_devices, - base::BindOnce(std::move(request->generate_stream_cb), + base::BindOnce(request->MoveGenerateStreamsCallback(), MediaStreamRequestResult::OK, label, audio_devices, video_devices))); } @@ -2315,10 +2326,10 @@ void MediaStreamManager::FinalizeRequestFailed( switch (request->request_type()) { case blink::MEDIA_GENERATE_STREAM: { - DCHECK(request->generate_stream_cb); - std::move(request->generate_stream_cb) - .Run(result, std::string(), MediaStreamDevices(), - MediaStreamDevices(), /*pan_tilt_zoom_allowed=*/false); + DCHECK(request->HasGenerateStreamsCallback()); + request->MoveGenerateStreamsCallback().Run( + result, std::string(), MediaStreamDevices(), + MediaStreamDevices(), /*pan_tilt_zoom_allowed=*/false); break; } case blink::MEDIA_GET_OPEN_DEVICE: { @@ -2540,6 +2551,10 @@ void MediaStreamManager::HandleRequestDone(const std::string& label, break; case blink::MEDIA_GENERATE_STREAM: { FinalizeGenerateStream(label, request); + if (base::FeatureList::IsEnabled( + blink::features::kStartMediaStreamCaptureIndicatorInBrowser)) { + OnStreamStarted(label); + } break; } case blink::MEDIA_GET_OPEN_DEVICE: { |