Commit 112c4ff7 authored by Guido Urdaneta's avatar Guido Urdaneta Committed by Commit Bot

Run constraints processing for screen capture on the main thread.

Some code paths require access to Blink strings that can only be
 accessed on the main thread.
A test that triggers the bug is coming up on crrev.com/c/738040.

Bug: 791992
Change-Id: I55ae617ae623766d4bd975a19070bde410d8af1d
Reviewed-on: https://chromium-review.googlesource.com/809005Reviewed-by: default avatarHenrik Boström <hbos@chromium.org>
Commit-Queue: Guido Urdaneta <guidou@chromium.org>
Cr-Commit-Position: refs/heads/master@{#521708}
parent a63c391c
...@@ -458,14 +458,7 @@ void UserMediaProcessor::SetupVideoInput() { ...@@ -458,14 +458,7 @@ void UserMediaProcessor::SetupVideoInput() {
GetUserMediaRequestFailed(result, failed_constraint_name); GetUserMediaRequestFailed(result, failed_constraint_name);
return; return;
} }
base::PostTaskAndReplyWithResult( SelectVideoContentSettings();
worker_task_runner_.get(), FROM_HERE,
base::Bind(&SelectSettingsVideoContentCapture,
current_request_info_->web_request().VideoConstraints(),
video_controls.stream_source),
base::Bind(&UserMediaProcessor::FinalizeSelectVideoContentSettings,
weak_factory_.GetWeakPtr(),
current_request_info_->web_request()));
} }
} }
...@@ -528,13 +521,12 @@ void UserMediaProcessor::FinalizeSelectVideoDeviceSettings( ...@@ -528,13 +521,12 @@ void UserMediaProcessor::FinalizeSelectVideoDeviceSettings(
GenerateStreamForCurrentRequestInfo(); GenerateStreamForCurrentRequestInfo();
} }
void UserMediaProcessor::FinalizeSelectVideoContentSettings( void UserMediaProcessor::SelectVideoContentSettings() {
const blink::WebUserMediaRequest& web_request,
const VideoCaptureSettings& settings) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
if (!IsCurrentRequestInfo(web_request)) DCHECK(current_request_info_);
return; VideoCaptureSettings settings = SelectSettingsVideoContentCapture(
current_request_info_->web_request().VideoConstraints(),
current_request_info_->stream_controls()->video.stream_source);
if (!settings.HasValue()) { if (!settings.HasValue()) {
blink::WebString failed_constraint_name = blink::WebString failed_constraint_name =
blink::WebString::FromASCII(settings.failed_constraint_name()); blink::WebString::FromASCII(settings.failed_constraint_name());
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <memory> #include <memory>
#include <string> #include <string>
#include <utility>
#include <vector> #include <vector>
#include "base/callback_forward.h" #include "base/callback_forward.h"
...@@ -260,9 +261,7 @@ class CONTENT_EXPORT UserMediaProcessor ...@@ -260,9 +261,7 @@ class CONTENT_EXPORT UserMediaProcessor
void FinalizeSelectVideoDeviceSettings( void FinalizeSelectVideoDeviceSettings(
const blink::WebUserMediaRequest& web_request, const blink::WebUserMediaRequest& web_request,
const VideoCaptureSettings& settings); const VideoCaptureSettings& settings);
void FinalizeSelectVideoContentSettings( void SelectVideoContentSettings();
const blink::WebUserMediaRequest& web_request,
const VideoCaptureSettings& settings);
void GenerateStreamForCurrentRequestInfo(); void GenerateStreamForCurrentRequestInfo();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment