Chromium Code Reviews| Index: content/renderer/media/crypto/encrypted_media_player_support_impl.cc |
| diff --git a/content/renderer/media/crypto/encrypted_media_player_support_impl.cc b/content/renderer/media/crypto/encrypted_media_player_support_impl.cc |
| index e3f70b393d18d6e316057648e99da1f20219f456..49c467baf84c3eda18277ae3bdac39f74dd963cf 100644 |
| --- a/content/renderer/media/crypto/encrypted_media_player_support_impl.cc |
| +++ b/content/renderer/media/crypto/encrypted_media_player_support_impl.cc |
| @@ -14,7 +14,6 @@ |
| #include "base/strings/utf_string_conversions.h" |
| #include "content/renderer/media/crypto/key_systems.h" |
| #include "content/renderer/media/webcontentdecryptionmodule_impl.h" |
| -#include "content/renderer/pepper/pepper_webplugin_impl.h" |
| #include "media/base/bind_to_current_loop.h" |
| #include "media/blink/encrypted_media_player_support.h" |
| #include "third_party/WebKit/public/platform/WebContentDecryptionModule.h" |
| @@ -26,6 +25,9 @@ |
| #if defined(ENABLE_PEPPER_CDMS) |
| #include "content/renderer/media/crypto/pepper_cdm_wrapper_impl.h" |
| +#include "content/renderer/media/crypto/render_cdm_factory.h" |
|
ddorwin
2014/10/16 20:33:20
The factory must always be included.
xhwang
2014/10/17 00:11:49
Done.
|
| +#elif defined(ENABLE_BROWSER_CDMS) |
| +#error Browser side CDM in WMPI for prefixed EME API not supported yet. |
| #endif |
| using blink::WebMediaPlayer; |
| @@ -40,7 +42,6 @@ namespace content { |
| #define BIND_TO_RENDER_LOOP1(function, arg1) \ |
| (media::BindToCurrentLoop(base::Bind(function, AsWeakPtr(), arg1))) |
| - |
| // Prefix for histograms related to Encrypted Media Extensions. |
| static const char* kMediaEme = "Media.EME."; |
| @@ -159,7 +160,6 @@ EncryptedMediaPlayerSupportImpl::GenerateKeyRequest( |
| return e; |
| } |
| - |
| WebMediaPlayer::MediaKeyException |
| EncryptedMediaPlayerSupportImpl::GenerateKeyRequestInternal( |
| blink::WebLocalFrame* frame, |
| @@ -173,21 +173,23 @@ EncryptedMediaPlayerSupportImpl::GenerateKeyRequestInternal( |
| if (current_key_system_.empty()) { |
| if (!proxy_decryptor_) { |
| proxy_decryptor_.reset(new ProxyDecryptor( |
| -#if defined(ENABLE_PEPPER_CDMS) |
| - // Create() must be called synchronously as |frame| may not be |
| - // valid afterwards. |
| - base::Bind(&PepperCdmWrapperImpl::Create, frame), |
| -#elif defined(ENABLE_BROWSER_CDMS) |
| -#error Browser side CDM in WMPI for prefixed EME API not supported yet. |
| -#endif |
| BIND_TO_RENDER_LOOP(&EncryptedMediaPlayerSupportImpl::OnKeyAdded), |
| BIND_TO_RENDER_LOOP(&EncryptedMediaPlayerSupportImpl::OnKeyError), |
| BIND_TO_RENDER_LOOP(&EncryptedMediaPlayerSupportImpl::OnKeyMessage))); |
| } |
| GURL security_origin(frame->document().securityOrigin().toString()); |
| - if (!proxy_decryptor_->InitializeCDM(key_system, security_origin)) |
| + |
| + RenderCdmFactory cdm_factory( |
| +#if defined(ENABLE_PEPPER_CDMS) |
| + base::Bind(&PepperCdmWrapperImpl::Create, frame) |
| +#endif |
| + ); |
| + |
| + if (!proxy_decryptor_->InitializeCDM( |
| + cdm_factory, key_system, security_origin)) { |
| return WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported; |
| + } |
| if (proxy_decryptor_ && !decryptor_ready_cb_.is_null()) { |
| base::ResetAndReturn(&decryptor_ready_cb_) |