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), |