summaryrefslogtreecommitdiffstats
path: root/media/blink
diff options
context:
space:
mode:
Diffstat (limited to 'media/blink')
-rw-r--r--media/blink/webencryptedmediaclient_impl.cc16
1 files changed, 14 insertions, 2 deletions
diff --git a/media/blink/webencryptedmediaclient_impl.cc b/media/blink/webencryptedmediaclient_impl.cc
index e687c27..2dd051e 100644
--- a/media/blink/webencryptedmediaclient_impl.cc
+++ b/media/blink/webencryptedmediaclient_impl.cc
@@ -140,6 +140,8 @@ static ConfigurationSupport GetSupportedConfiguration(
blink::WebMediaKeySystemConfiguration* accumulated_configuration,
bool was_permission_requested,
bool is_permission_granted) {
+ DCHECK(was_permission_requested || !is_permission_granted);
+
// It is possible to obtain user permission unless permission was already
// requested and denied.
bool is_permission_possible =
@@ -302,8 +304,18 @@ static ConfigurationSupport GetSupportedConfiguration(
ConvertRequirement(accumulated_configuration->distinctiveIdentifier);
if (!IsDistinctiveIdentifierRequirementSupported(key_system, di_requirement,
is_permission_granted)) {
- DCHECK(!was_permission_requested); // Should have failed at step 3.
- return CONFIGURATION_REQUIRES_PERMISSION;
+ if (was_permission_requested) {
+ // The optional permission was requested and denied.
+ // TODO(sandersd): Avoid the need for this logic - crbug.com/460616.
+ DCHECK(candidate.distinctiveIdentifier ==
+ blink::WebMediaKeySystemConfiguration::Requirement::Optional);
+ DCHECK(di_requirement == EME_FEATURE_REQUIRED);
+ DCHECK(!is_permission_granted);
+ accumulated_configuration->distinctiveIdentifier =
+ blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed;
+ } else {
+ return CONFIGURATION_REQUIRES_PERMISSION;
+ }
}
ps_requirement =