Index: media/blink/webcontentdecryptionmodule_impl.cc |
diff --git a/media/blink/webcontentdecryptionmodule_impl.cc b/media/blink/webcontentdecryptionmodule_impl.cc |
index 9d6022017736d6a6c9fe5d5a9e35964aa7e892a3..7bdd9c9ee3082e929491d714fd113827bd90fb4e 100644 |
--- a/media/blink/webcontentdecryptionmodule_impl.cc |
+++ b/media/blink/webcontentdecryptionmodule_impl.cc |
@@ -62,21 +62,15 @@ void WebContentDecryptionModuleImpl::Create( |
} |
GURL security_origin_as_gurl(security_origin.toString()); |
- scoped_refptr<CdmSessionAdapter> adapter(new CdmSessionAdapter()); |
- // TODO(jrummell): Pass WebContentDecryptionModuleResult (or similar) to |
- // Initialize() so that more specific errors can be reported. |
- if (!adapter->Initialize(cdm_factory, key_system_ascii, |
- allow_distinctive_identifier, |
- allow_persistent_state, security_origin_as_gurl)) { |
- result.completeWithError( |
- blink::WebContentDecryptionModuleExceptionNotSupportedError, 0, |
- "Failed to initialize CDM."); |
- return; |
- } |
- |
- result.completeWithContentDecryptionModule( |
- new WebContentDecryptionModuleImpl(adapter)); |
+ // CdmSessionAdapter::CreateCdm() will keep a reference to |adapter|. Then |
+ // if WebContentDecryptionModuleImpl is successfully created (returned in |
+ // |result|), it will keep a reference to |adapter|. Otherwise, |adapter| will |
+ // be destructed. |
+ scoped_refptr<CdmSessionAdapter> adapter(new CdmSessionAdapter()); |
+ adapter->CreateCdm(cdm_factory, key_system_ascii, |
+ allow_distinctive_identifier, allow_persistent_state, |
+ security_origin_as_gurl, result); |
} |
WebContentDecryptionModuleImpl::WebContentDecryptionModuleImpl( |