Index: media/blink/webcontentdecryptionmoduleaccess_impl.cc |
diff --git a/media/blink/webcontentdecryptionmoduleaccess_impl.cc b/media/blink/webcontentdecryptionmoduleaccess_impl.cc |
index 01f14ed4c14b88335434ea5488df68fb81903848..a72cbff3c991ed0521dc85b8eea2bc4d0b5c0fb7 100644 |
--- a/media/blink/webcontentdecryptionmoduleaccess_impl.cc |
+++ b/media/blink/webcontentdecryptionmoduleaccess_impl.cc |
@@ -15,8 +15,9 @@ |
// The caller owns the created cdm (passed back using |result|). |
static void CreateCdm(const base::WeakPtr<WebEncryptedMediaClientImpl>& client, |
const blink::WebString& key_system, |
+ bool allow_distinctive_identifier, |
+ bool allow_persistent_state, |
const blink::WebSecurityOrigin& security_origin, |
- const CdmConfig& cdm_config, |
blink::WebContentDecryptionModuleResult result) { |
// If |client| is gone (due to the frame getting destroyed), it is |
// impossible to create the CDM, so fail. |
@@ -27,30 +28,28 @@ |
return; |
} |
- client->CreateCdm(key_system, security_origin, cdm_config, result); |
+ client->CreateCdm(key_system, allow_distinctive_identifier, |
+ allow_persistent_state, security_origin, result); |
} |
WebContentDecryptionModuleAccessImpl* |
WebContentDecryptionModuleAccessImpl::Create( |
const blink::WebString& key_system, |
+ const blink::WebMediaKeySystemConfiguration& configuration, |
const blink::WebSecurityOrigin& security_origin, |
- const blink::WebMediaKeySystemConfiguration& configuration, |
- const CdmConfig& cdm_config, |
const base::WeakPtr<WebEncryptedMediaClientImpl>& client) { |
- return new WebContentDecryptionModuleAccessImpl( |
- key_system, security_origin, configuration, cdm_config, client); |
+ return new WebContentDecryptionModuleAccessImpl(key_system, configuration, |
+ security_origin, client); |
} |
WebContentDecryptionModuleAccessImpl::WebContentDecryptionModuleAccessImpl( |
const blink::WebString& key_system, |
+ const blink::WebMediaKeySystemConfiguration& configuration, |
const blink::WebSecurityOrigin& security_origin, |
- const blink::WebMediaKeySystemConfiguration& configuration, |
- const CdmConfig& cdm_config, |
const base::WeakPtr<WebEncryptedMediaClientImpl>& client) |
: key_system_(key_system), |
+ configuration_(configuration), |
security_origin_(security_origin), |
- configuration_(configuration), |
- cdm_config_(cdm_config), |
client_(client) { |
} |
@@ -64,14 +63,27 @@ |
void WebContentDecryptionModuleAccessImpl::createContentDecryptionModule( |
blink::WebContentDecryptionModuleResult result) { |
+ // Convert the accumulated configuration requirements to bools. Accumulated |
+ // configurations never have optional requirements. |
+ DCHECK(configuration_.distinctiveIdentifier != |
+ blink::WebMediaKeySystemConfiguration::Requirement::Optional); |
+ DCHECK(configuration_.persistentState != |
+ blink::WebMediaKeySystemConfiguration::Requirement::Optional); |
+ bool allow_distinctive_identifier = |
+ (configuration_.distinctiveIdentifier == |
+ blink::WebMediaKeySystemConfiguration::Requirement::Required); |
+ bool allow_persistent_state = |
+ (configuration_.persistentState == |
+ blink::WebMediaKeySystemConfiguration::Requirement::Required); |
+ |
// This method needs to run asynchronously, as it may need to load the CDM. |
// As this object's lifetime is controlled by MediaKeySystemAccess on the |
// blink side, copy all values needed by CreateCdm() in case the blink object |
// gets garbage-collected. |
base::ThreadTaskRunnerHandle::Get()->PostTask( |
FROM_HERE, |
- base::Bind(&CreateCdm, client_, key_system_, security_origin_, |
- cdm_config_, result)); |
+ base::Bind(&CreateCdm, client_, key_system_, allow_distinctive_identifier, |
+ allow_persistent_state, security_origin_, result)); |
} |
} // namespace media |