Index: chrome/renderer/media/chrome_key_systems.cc |
diff --git a/chrome/renderer/media/chrome_key_systems.cc b/chrome/renderer/media/chrome_key_systems.cc |
index db388eacf9e9486919a00ec3dba99be53e3cd5ac..6ab58435e2ec574da1d3255cdc9cd4e1f5a67655 100644 |
--- a/chrome/renderer/media/chrome_key_systems.cc |
+++ b/chrome/renderer/media/chrome_key_systems.cc |
@@ -72,7 +72,8 @@ static void AddExternalClearKey( |
return; |
} |
- KeySystemInfo info(kExternalClearKeyKeySystem); |
+ KeySystemInfo info; |
+ info.key_system = kExternalClearKeyKeySystem; |
info.supported_codecs = media::EME_CODEC_WEBM_ALL; |
info.supported_init_data_types = media::EME_INIT_DATA_TYPE_WEBM; |
@@ -81,6 +82,16 @@ static void AddExternalClearKey( |
info.supported_init_data_types |= media::EME_INIT_DATA_TYPE_CENC; |
#endif // defined(USE_PROPRIETARY_CODECS) |
+ // Persistent sessions are faked. |
+ info.persistent_license_support = media::EME_SESSION_TYPE_SUPPORTED; |
+ info.persistent_release_message_support = |
+ media::EME_SESSION_TYPE_NOT_SUPPORTED; |
+ // TODO(sandersd): Using ALWAYS_ENABLED prevents "not-allowed" from |
+ // succeeding. Change this to REQUESTABLE once the state can be blocked. |
+ // http://crbug.com/457482 |
+ info.persistent_state_support = media::EME_FEATURE_ALWAYS_ENABLED; |
+ info.distinctive_identifier_support = media::EME_FEATURE_NOT_SUPPORTED; |
+ |
info.pepper_type = kExternalClearKeyPepperType; |
concrete_key_systems->push_back(info); |
@@ -178,9 +189,33 @@ static void AddPepperBasedWidevine( |
#endif // defined(USE_PROPRIETARY_CODECS) |
} |
- cdm::AddWidevineWithCodecs(cdm::WIDEVINE, |
- supported_codecs, |
- concrete_key_systems); |
+ cdm::AddWidevineWithCodecs( |
+ cdm::WIDEVINE, |
+ supported_codecs, |
+#if defined(OS_CHROMEOS) |
+ // Persistent licenses are supported if remote attestation succeeds. |
+ media::EME_SESSION_TYPE_SUPPORTED_WITH_PERMISSION, |
+ media::EME_SESSION_TYPE_NOT_SUPPORTED, // Persistent release message. |
+ // TODO(sandersd): Using ALWAYS_ENABLED prevents "not-allowed" from |
+ // succeeding. Change this to REQUESTABLE once the state can be blocked. |
+ // http://crbug.com/457482 |
+ media::EME_FEATURE_ALWAYS_ENABLED, // Persistent state. |
+ // A distinctive identifier will be available if remote attestation |
+ // succeeds. |
+ // TODO(sandersd): Using ALWAYS_ENABLED prevents "not-allowed" from |
+ // succeeding. Change this to REQUESTABLE_WITH_PERMISSION once the |
+ // distinctive identifier can be blocked. http://crbug.com/457482 |
+ media::EME_FEATURE_ALWAYS_ENABLED, |
+#else // (Desktop) |
+ media::EME_SESSION_TYPE_NOT_SUPPORTED, // Persistent license. |
+ media::EME_SESSION_TYPE_NOT_SUPPORTED, // Persistent release message. |
+ // TODO(sandersd): Using ALWAYS_ENABLED prevents "not-allowed" from |
+ // succeeding. Change this to REQUESTABLE once the state can be blocked. |
+ // http://crbug.com/457482 |
+ media::EME_FEATURE_ALWAYS_ENABLED, // Persistent state. |
+ media::EME_FEATURE_NOT_SUPPORTED, // Distinctive identifier. |
+#endif // defined(OS_CHROMEOS) |
+ concrete_key_systems); |
} |
#endif // defined(WIDEVINE_CDM_AVAILABLE) |
#endif // defined(ENABLE_PEPPER_CDMS) |