| Index: content/renderer/media/media_interface_provider.cc
|
| diff --git a/content/renderer/media/media_interface_provider.cc b/content/renderer/media/media_interface_provider.cc
|
| index 8f779f5bf39dddd7a374c9949ee9788350077769..54681907496b430e1737d78471e03f292e7aebeb 100644
|
| --- a/content/renderer/media/media_interface_provider.cc
|
| +++ b/content/renderer/media/media_interface_provider.cc
|
| @@ -16,7 +16,10 @@ namespace content {
|
|
|
| MediaInterfaceProvider::MediaInterfaceProvider(
|
| service_manager::InterfaceProvider* remote_interfaces)
|
| - : remote_interfaces_(remote_interfaces) {}
|
| + : remote_interfaces_(remote_interfaces), weak_factory_(this) {
|
| + task_runner_ = base::ThreadTaskRunnerHandle::Get();
|
| + weak_this_ = weak_factory_.GetWeakPtr();
|
| +}
|
|
|
| MediaInterfaceProvider::~MediaInterfaceProvider() {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| @@ -25,6 +28,13 @@ MediaInterfaceProvider::~MediaInterfaceProvider() {
|
| void MediaInterfaceProvider::GetInterface(const std::string& interface_name,
|
| mojo::ScopedMessagePipeHandle pipe) {
|
| DVLOG(1) << __func__;
|
| + if (!task_runner_->BelongsToCurrentThread()) {
|
| + task_runner_->PostTask(
|
| + FROM_HERE, base::Bind(&MediaInterfaceProvider::GetInterface, weak_this_,
|
| + interface_name, base::Passed(&pipe)));
|
| + return;
|
| + }
|
| +
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
|
|
| if (interface_name == media::mojom::ContentDecryptionModule::Name_) {
|
|
|