Index: chromecast/browser/media/cast_browser_cdm_factory.cc |
diff --git a/chromecast/browser/media/cast_browser_cdm_factory.cc b/chromecast/browser/media/cast_browser_cdm_factory.cc |
index 6b6dfffb469c89f7c3a48b886106b6897df19e86..2dbb544f86a62a83cbb8beda4a1c5feb81d8ad43 100644 |
--- a/chromecast/browser/media/cast_browser_cdm_factory.cc |
+++ b/chromecast/browser/media/cast_browser_cdm_factory.cc |
@@ -4,6 +4,8 @@ |
#include "chromecast/browser/media/cast_browser_cdm_factory.h" |
+#include "chromecast/media/cdm/browser_cdm_cast.h" |
+ |
namespace chromecast { |
namespace media { |
@@ -16,17 +18,20 @@ scoped_ptr< ::media::BrowserCdm> CastBrowserCdmFactory::CreateBrowserCdm( |
const ::media::SessionExpirationUpdateCB& session_expiration_update_cb) { |
CastKeySystem key_system(GetKeySystemByName(key_system_name)); |
- // TODO(gunsch): handle ClearKey decryption. See crbug.com/441957 |
- |
- scoped_ptr< ::media::BrowserCdm> platform_cdm( |
- CreatePlatformBrowserCdm(key_system, |
- session_message_cb, |
- session_closed_cb, |
- session_error_cb, |
- session_keys_change_cb, |
- session_expiration_update_cb)); |
- if (platform_cdm) { |
- return platform_cdm.Pass(); |
+ scoped_ptr<chromecast::media::BrowserCdmCast> browser_cdm; |
+ if (key_system == chromecast::media::KEY_SYSTEM_CLEAR_KEY) { |
+ // TODO(gunsch): handle ClearKey decryption. See crbug.com/441957 |
+ } else { |
+ browser_cdm = CreatePlatformBrowserCdm(key_system); |
+ } |
+ |
+ if (browser_cdm) { |
+ browser_cdm->SetCallbacks(session_message_cb, |
+ session_closed_cb, |
+ session_error_cb, |
+ session_keys_change_cb, |
+ session_expiration_update_cb); |
+ return browser_cdm.Pass(); |
} |
LOG(INFO) << "No matching key system found."; |