Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / content / renderer / media / android / proxy_media_keys.cc
index 9734e81..68175c8 100644 (file)
 
 namespace content {
 
-ProxyMediaKeys::ProxyMediaKeys(
+int ProxyMediaKeys::next_cdm_id_ =
+    RendererMediaPlayerManager::kInvalidCdmId + 1;
+
+scoped_ptr<ProxyMediaKeys> ProxyMediaKeys::Create(
+    const std::string& key_system,
+    const GURL& security_origin,
     RendererMediaPlayerManager* manager,
-    int cdm_id,
     const media::SessionCreatedCB& session_created_cb,
     const media::SessionMessageCB& session_message_cb,
     const media::SessionReadyCB& session_ready_cb,
     const media::SessionClosedCB& session_closed_cb,
-    const media::SessionErrorCB& session_error_cb)
-    : manager_(manager),
-      cdm_id_(cdm_id),
-      session_created_cb_(session_created_cb),
-      session_message_cb_(session_message_cb),
-      session_ready_cb_(session_ready_cb),
-      session_closed_cb_(session_closed_cb),
-      session_error_cb_(session_error_cb) {
-  DCHECK(manager_);
+    const media::SessionErrorCB& session_error_cb) {
+  DCHECK(manager);
+  scoped_ptr<ProxyMediaKeys> proxy_media_keys(
+      new ProxyMediaKeys(manager,
+                         session_created_cb,
+                         session_message_cb,
+                         session_ready_cb,
+                         session_closed_cb,
+                         session_error_cb));
+  proxy_media_keys->InitializeCdm(key_system, security_origin);
+  return proxy_media_keys.Pass();
 }
 
 ProxyMediaKeys::~ProxyMediaKeys() {
   manager_->DestroyCdm(cdm_id_);
 }
 
-void ProxyMediaKeys::InitializeCdm(const std::string& key_system,
-                                   const GURL& frame_url) {
-  manager_->InitializeCdm(cdm_id_, this, key_system, frame_url);
-}
-
 bool ProxyMediaKeys::CreateSession(uint32 session_id,
                                    const std::string& content_type,
                                    const uint8* init_data,
@@ -111,4 +112,29 @@ void ProxyMediaKeys::OnSessionError(uint32 session_id,
   session_error_cb_.Run(session_id, error_code, system_code);
 }
 
+int ProxyMediaKeys::GetCdmId() const {
+  return cdm_id_;
+}
+
+ProxyMediaKeys::ProxyMediaKeys(
+    RendererMediaPlayerManager* manager,
+    const media::SessionCreatedCB& session_created_cb,
+    const media::SessionMessageCB& session_message_cb,
+    const media::SessionReadyCB& session_ready_cb,
+    const media::SessionClosedCB& session_closed_cb,
+    const media::SessionErrorCB& session_error_cb)
+    : manager_(manager),
+      cdm_id_(next_cdm_id_++),
+      session_created_cb_(session_created_cb),
+      session_message_cb_(session_message_cb),
+      session_ready_cb_(session_ready_cb),
+      session_closed_cb_(session_closed_cb),
+      session_error_cb_(session_error_cb) {
+}
+
+void ProxyMediaKeys::InitializeCdm(const std::string& key_system,
+                                   const GURL& security_origin) {
+  manager_->InitializeCdm(cdm_id_, this, key_system, security_origin);
+}
+
 }  // namespace content