Chromium Code Reviews| Index: content/browser/media/cdm/browser_cdm_manager.cc |
| diff --git a/content/browser/media/cdm/browser_cdm_manager.cc b/content/browser/media/cdm/browser_cdm_manager.cc |
| index 1b7f55225f580935b0518d242ed9cfd0f1ddd4f1..256016dd4af8ba19b8641d2e144dbcfbdf432ce6 100644 |
| --- a/content/browser/media/cdm/browser_cdm_manager.cc |
| +++ b/content/browser/media/cdm/browser_cdm_manager.cc |
| @@ -26,6 +26,7 @@ |
| #include "media/base/limits.h" |
| #if defined(OS_ANDROID) |
| +#include "content/browser/media/android/url_provision_fetcher.h" |
| #include "content/public/common/renderer_preferences.h" |
| #include "media/base/android/android_cdm_factory.h" |
| #endif |
| @@ -275,11 +276,10 @@ void BrowserCdmManager::RejectPromise(int render_frame_id, |
| media::CdmFactory* BrowserCdmManager::GetCdmFactory() { |
| if (!cdm_factory_) { |
| // Create a new CdmFactory. |
| - cdm_factory_ = GetContentClient()->browser()->CreateCdmFactory(); |
| - |
| #if defined(OS_ANDROID) |
| - if (!cdm_factory_) |
| - cdm_factory_.reset(new media::AndroidCdmFactory()); |
| + cdm_factory_.reset(new media::AndroidCdmFactory()); |
| +#else |
|
xhwang
2015/11/11 09:53:21
Why making this change? Different embedders could
Tima Vaisburd
2015/11/11 23:26:35
Restored your original code and passed ProvisionFe
|
| + cdm_factory_ = GetContentClient()->browser()->CreateCdmFactory(); |
| #endif |
| } |
| @@ -372,6 +372,25 @@ void BrowserCdmManager::OnInitializeCdm( |
| return; |
| } |
| + media::CdmFactory* cdm_factory = GetCdmFactory(); |
| + DCHECK(cdm_factory); |
| + |
| +#if defined(OS_ANDROID) |
| + // Create ProvisionFetcher based on render process context. |
| + net::URLRequestContextGetter* context = |
| + RenderProcessHost::FromID(render_process_id_) |
| + ->GetBrowserContext() |
| + ->GetRequestContext(); |
| + DCHECK(context); |
| + scoped_ptr<media::ProvisionFetcher> provision_fetcher( |
| + new URLProvisionFetcher(context)); |
| + |
| + // Attach |provision_fetcher| to Android CDM factory. |
| + media::AndroidCdmFactory* android_cdm_factory = |
| + static_cast<media::AndroidCdmFactory*>(cdm_factory); |
| + android_cdm_factory->SetProvisionFetcher(provision_fetcher.Pass()); |
| +#endif // OS_ANDROID |
| + |
| // The render process makes sure |allow_distinctive_identifier| and |
| // |allow_persistent_state| are true. See RenderCdmFactory::Create(). |
| // TODO(xhwang): Pass |allow_distinctive_identifier| and |
| @@ -381,7 +400,7 @@ void BrowserCdmManager::OnInitializeCdm( |
| cdm_config.allow_persistent_state = true; |
| cdm_config.use_hw_secure_codecs = params.use_hw_secure_codecs; |
| - GetCdmFactory()->Create( |
| + cdm_factory->Create( |
| params.key_system, params.security_origin, cdm_config, |
| BROWSER_CDM_MANAGER_CB(OnSessionMessage), |
| BROWSER_CDM_MANAGER_CB(OnSessionClosed), |