Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(249)

Unified Diff: media/base/key_systems.cc

Issue 960793002: Restore L3 support on CrOS when the media permission is denied. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2311
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/renderer/media/chrome_key_systems.cc ('k') | media/blink/webencryptedmediaclient_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/base/key_systems.cc
diff --git a/media/base/key_systems.cc b/media/base/key_systems.cc
index f8500f80b82d9d0fde53691e8980f1c09818a4ca..db12a13919196536d6de8b0dc1ff7ca7deea26ed 100644
--- a/media/base/key_systems.cc
+++ b/media/base/key_systems.cc
@@ -395,14 +395,26 @@ void KeySystems::AddConcreteSupportedKeySystems(
DCHECK_NE(info.persistent_license_support, EME_SESSION_TYPE_INVALID);
DCHECK_NE(info.persistent_release_message_support,
EME_SESSION_TYPE_INVALID);
- // REQUESTABLE and REQUESTABLE_WITH_PERMISSION are not available until we
- // can block access/ per-CDM-instance. http://crbug.com/457482
- // Note: Even once that is fixed, distinctive identifiers should never be
- // REQUESTABLE, since user permission is always required.
+ // TODO(sandersd): Add REQUESTABLE and REQUESTABLE_WITH_PERMISSION for
+ // persistent_state_support once we can block access per-CDM-instance
+ // (http://crbug.com/457482).
DCHECK(info.persistent_state_support == EME_FEATURE_NOT_SUPPORTED ||
info.persistent_state_support == EME_FEATURE_ALWAYS_ENABLED);
+// TODO(sandersd): Allow REQUESTABLE_WITH_PERMISSION for all key systems on
+// all platforms once we have proper enforcement (http://crbug.com/457482).
+// On Chrome OS, an ID will not be used without permission, but we cannot
+// currently prevent the CDM from requesting the permission again when no
+// there was no initial prompt. Thus, we block "not-allowed" below.
+#if defined(OS_CHROMEOS)
DCHECK(info.distinctive_identifier_support == EME_FEATURE_NOT_SUPPORTED ||
+ (info.distinctive_identifier_support ==
+ EME_FEATURE_REQUESTABLE_WITH_PERMISSION &&
+ info.key_system == kWidevineKeySystem) ||
info.distinctive_identifier_support == EME_FEATURE_ALWAYS_ENABLED);
+#else
+ DCHECK(info.distinctive_identifier_support == EME_FEATURE_NOT_SUPPORTED ||
+ info.distinctive_identifier_support == EME_FEATURE_ALWAYS_ENABLED);
+#endif
if (info.persistent_state_support == EME_FEATURE_NOT_SUPPORTED) {
DCHECK_EQ(info.persistent_license_support,
EME_SESSION_TYPE_NOT_SUPPORTED);
@@ -715,6 +727,12 @@ bool KeySystems::IsDistinctiveIdentifierRequirementSupported(
case EME_FEATURE_NOT_SUPPORTED:
return requirement != EME_FEATURE_REQUIRED;
case EME_FEATURE_REQUESTABLE_WITH_PERMISSION:
+ // TODO(sandersd): Remove this hack once crbug.com/457482 and
+ // crbug.com/460616 are addressed.
+ // We cannot currently enforce "not-allowed", so don't allow it.
+ // Note: Removing this check will expose crbug.com/460616.
+ if (requirement == EME_FEATURE_NOT_ALLOWED)
+ return false;
return (requirement != EME_FEATURE_REQUIRED) || is_permission_granted;
case EME_FEATURE_REQUESTABLE:
NOTREACHED();
« no previous file with comments | « chrome/renderer/media/chrome_key_systems.cc ('k') | media/blink/webencryptedmediaclient_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698