| Index: content/renderer/media/user_media_client_impl.cc
|
| diff --git a/content/renderer/media/user_media_client_impl.cc b/content/renderer/media/user_media_client_impl.cc
|
| index f5b4b4c59c9755393f8e233ee9f001733ba92ff4..aa65b672c2c2739f4888c8d83bda46257dc38d0e 100644
|
| --- a/content/renderer/media/user_media_client_impl.cc
|
| +++ b/content/renderer/media/user_media_client_impl.cc
|
| @@ -336,6 +336,7 @@ UserMediaClientImpl::UserMediaClientImpl(
|
| }
|
|
|
| UserMediaClientImpl::~UserMediaClientImpl() {
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| // Force-close all outstanding user media requests and local sources here,
|
| // before the outstanding WeakPtrs are invalidated, to ensure a clean
|
| // shutdown.
|
| @@ -348,7 +349,7 @@ void UserMediaClientImpl::RequestUserMedia(
|
| // The histogram counts the number of calls to the JS API
|
| // webGetUserMedia.
|
| UpdateWebRTCMethodCount(WEBKIT_GET_USER_MEDIA);
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| DCHECK(!user_media_request.IsNull());
|
| DCHECK(user_media_request.Audio() || user_media_request.Video());
|
| // ownerDocument may be null if we are in a test.
|
| @@ -382,7 +383,7 @@ void UserMediaClientImpl::RequestUserMedia(
|
| }
|
|
|
| void UserMediaClientImpl::MaybeProcessNextRequestInfo() {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| if (current_request_info_ || pending_request_infos_.empty())
|
| return;
|
|
|
| @@ -428,7 +429,7 @@ void UserMediaClientImpl::MaybeProcessNextRequestInfo() {
|
| void UserMediaClientImpl::SelectAudioInputDevice(
|
| const blink::WebUserMediaRequest& user_media_request,
|
| const EnumerationResult& device_enumeration) {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| if (!IsCurrentRequestInfo(user_media_request))
|
| return;
|
|
|
| @@ -448,7 +449,7 @@ void UserMediaClientImpl::SelectAudioInputDevice(
|
|
|
| void UserMediaClientImpl::SetupVideoInput(
|
| const blink::WebUserMediaRequest& user_media_request) {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| if (!IsCurrentRequestInfo(user_media_request))
|
| return;
|
|
|
| @@ -478,7 +479,7 @@ void UserMediaClientImpl::SelectVideoDeviceSettings(
|
| const blink::WebUserMediaRequest& user_media_request,
|
| std::vector<::mojom::VideoInputDeviceCapabilitiesPtr>
|
| video_input_capabilities) {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| if (!IsCurrentRequestInfo(user_media_request))
|
| return;
|
|
|
| @@ -506,7 +507,7 @@ void UserMediaClientImpl::SelectVideoDeviceSettings(
|
| void UserMediaClientImpl::FinalizeSelectVideoDeviceSettings(
|
| const blink::WebUserMediaRequest& user_media_request,
|
| const VideoCaptureSettings& settings) {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| if (!IsCurrentRequestInfo(user_media_request))
|
| return;
|
|
|
| @@ -531,7 +532,7 @@ void UserMediaClientImpl::FinalizeSelectVideoDeviceSettings(
|
| void UserMediaClientImpl::FinalizeSelectVideoContentSettings(
|
| const blink::WebUserMediaRequest& user_media_request,
|
| const VideoCaptureSettings& settings) {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| if (!IsCurrentRequestInfo(user_media_request))
|
| return;
|
|
|
| @@ -554,7 +555,7 @@ void UserMediaClientImpl::FinalizeSelectVideoContentSettings(
|
| }
|
|
|
| void UserMediaClientImpl::GenerateStreamForCurrentRequestInfo() {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| DCHECK(current_request_info_);
|
|
|
| WebRtcLogMessage(base::StringPrintf(
|
| @@ -576,7 +577,7 @@ void UserMediaClientImpl::GenerateStreamForCurrentRequestInfo() {
|
|
|
| void UserMediaClientImpl::CancelUserMediaRequest(
|
| const blink::WebUserMediaRequest& user_media_request) {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| if (DeleteRequestInfo(user_media_request)) {
|
| // We can't abort the stream generation process.
|
| // Instead, erase the request. Once the stream is generated we will stop the
|
| @@ -588,7 +589,7 @@ void UserMediaClientImpl::CancelUserMediaRequest(
|
| void UserMediaClientImpl::RequestMediaDevices(
|
| const blink::WebMediaDevicesRequest& media_devices_request) {
|
| UpdateWebRTCMethodCount(WEBKIT_GET_MEDIA_DEVICES);
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| GetMediaDevicesDispatcher()->EnumerateDevices(
|
| true /* audio input */, true /* video input */, true /* audio output */,
|
| base::Bind(&UserMediaClientImpl::FinalizeEnumerateDevices,
|
| @@ -626,7 +627,7 @@ void UserMediaClientImpl::OnStreamGenerated(
|
| const std::string& label,
|
| const StreamDeviceInfoArray& audio_array,
|
| const StreamDeviceInfoArray& video_array) {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| if (!IsCurrentRequestInfo(request_id)) {
|
| // This can happen if the request is cancelled or the frame reloads while
|
| // MediaStreamDispatcher is processing the request.
|
| @@ -699,7 +700,7 @@ void UserMediaClientImpl::OnAudioSourceStarted(
|
| MediaStreamSource* source,
|
| MediaStreamRequestResult result,
|
| const blink::WebString& result_name) {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
|
|
| for (auto it = pending_local_sources_.begin();
|
| it != pending_local_sources_.end(); ++it) {
|
| @@ -755,7 +756,7 @@ void UserMediaClientImpl::FinalizeEnumerateDevices(
|
| void UserMediaClientImpl::OnStreamGenerationFailed(
|
| int request_id,
|
| MediaStreamRequestResult result) {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| if (!IsCurrentRequestInfo(request_id)) {
|
| // This can happen if the request is cancelled or the frame reloads while
|
| // MediaStreamDispatcher is processing the request.
|
| @@ -771,7 +772,7 @@ void UserMediaClientImpl::OnStreamGenerationFailed(
|
| void UserMediaClientImpl::OnDeviceStopped(
|
| const std::string& label,
|
| const StreamDeviceInfo& device_info) {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| DVLOG(1) << "UserMediaClientImpl::OnDeviceStopped("
|
| << "{device_id = " << device_info.device.id << "})";
|
|
|
| @@ -791,7 +792,7 @@ void UserMediaClientImpl::OnDeviceStopped(
|
|
|
| blink::WebMediaStreamSource UserMediaClientImpl::InitializeVideoSourceObject(
|
| const StreamDeviceInfo& device) {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| DCHECK(current_request_info_);
|
|
|
| blink::WebMediaStreamSource source = FindOrInitializeSourceObject(device);
|
| @@ -808,7 +809,7 @@ blink::WebMediaStreamSource UserMediaClientImpl::InitializeAudioSourceObject(
|
| const StreamDeviceInfo& device,
|
| const blink::WebMediaConstraints& constraints,
|
| bool* is_pending) {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
|
|
| *is_pending = true;
|
|
|
| @@ -845,7 +846,7 @@ MediaStreamAudioSource* UserMediaClientImpl::CreateAudioSource(
|
| const StreamDeviceInfo& device,
|
| const blink::WebMediaConstraints& constraints,
|
| const MediaStreamSource::ConstraintsCallback& source_ready) {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| // If the audio device is a loopback device (for screen capture), or if the
|
| // constraints/effects parameters indicate no audio processing is needed,
|
| // create an efficient, direct-path MediaStreamAudioSource instance.
|
| @@ -867,7 +868,7 @@ MediaStreamAudioSource* UserMediaClientImpl::CreateAudioSource(
|
| MediaStreamVideoSource* UserMediaClientImpl::CreateVideoSource(
|
| const StreamDeviceInfo& device,
|
| const MediaStreamSource::SourceStoppedCallback& stop_callback) {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| DCHECK(current_request_info_);
|
| if (IsOldVideoConstraints()) {
|
| return new MediaStreamVideoCapturerSource(stop_callback, device,
|
| @@ -884,7 +885,7 @@ MediaStreamVideoSource* UserMediaClientImpl::CreateVideoSource(
|
| void UserMediaClientImpl::CreateVideoTracks(
|
| const StreamDeviceInfoArray& devices,
|
| blink::WebVector<blink::WebMediaStreamTrack>* webkit_tracks) {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| DCHECK(current_request_info_);
|
| DCHECK_EQ(devices.size(), webkit_tracks->size());
|
|
|
| @@ -900,7 +901,7 @@ void UserMediaClientImpl::CreateAudioTracks(
|
| const StreamDeviceInfoArray& devices,
|
| const blink::WebMediaConstraints& constraints,
|
| blink::WebVector<blink::WebMediaStreamTrack>* webkit_tracks) {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| DCHECK(current_request_info_);
|
| DCHECK_EQ(devices.size(), webkit_tracks->size());
|
|
|
| @@ -930,7 +931,7 @@ void UserMediaClientImpl::OnCreateNativeTracksCompleted(
|
| UserMediaRequestInfo* request_info,
|
| MediaStreamRequestResult result,
|
| const blink::WebString& result_name) {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| if (result == content::MEDIA_DEVICE_OK) {
|
| GetUserMediaRequestSucceeded(*request_info->web_stream(),
|
| request_info->request());
|
| @@ -1115,7 +1116,7 @@ blink::WebMediaStreamSource UserMediaClientImpl::FindOrInitializeSourceObject(
|
|
|
| bool UserMediaClientImpl::RemoveLocalSource(
|
| const blink::WebMediaStreamSource& source) {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
|
|
| for (LocalStreamSources::iterator device_it = local_sources_.begin();
|
| device_it != local_sources_.end(); ++device_it) {
|
| @@ -1143,20 +1144,20 @@ bool UserMediaClientImpl::RemoveLocalSource(
|
| }
|
|
|
| bool UserMediaClientImpl::IsCurrentRequestInfo(int request_id) const {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| return current_request_info_ &&
|
| current_request_info_->request_id() == request_id;
|
| }
|
|
|
| bool UserMediaClientImpl::IsCurrentRequestInfo(
|
| const blink::WebUserMediaRequest& request) const {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| return current_request_info_ && current_request_info_->request() == request;
|
| }
|
|
|
| bool UserMediaClientImpl::DeleteRequestInfo(
|
| const blink::WebUserMediaRequest& user_media_request) {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| if (current_request_info_ &&
|
| current_request_info_->request() == user_media_request) {
|
| current_request_info_.reset();
|
| @@ -1224,7 +1225,7 @@ void UserMediaClientImpl::SetMediaDevicesDispatcherForTesting(
|
|
|
| void UserMediaClientImpl::OnLocalSourceStopped(
|
| const blink::WebMediaStreamSource& source) {
|
| - DCHECK(CalledOnValidThread());
|
| + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
| DVLOG(1) << "UserMediaClientImpl::OnLocalSourceStopped";
|
|
|
| const bool some_source_removed = RemoveLocalSource(source);
|
|
|