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