summaryrefslogtreecommitdiffstats
path: root/components/cdm
diff options
context:
space:
mode:
authorsandersd <sandersd@chromium.org>2015-02-19 22:08:01 -0800
committerCommit bot <commit-bot@chromium.org>2015-02-20 06:08:43 +0000
commitf629e579c00a93751c75883d48c600d3df4d1ed6 (patch)
tree329beac97727e472bae498486f0207e6864be59f /components/cdm
parent501da0af4e357859485bab20f37dec6d8dc34d18 (diff)
downloadchromium_src-f629e579c00a93751c75883d48c600d3df4d1ed6.zip
chromium_src-f629e579c00a93751c75883d48c600d3df4d1ed6.tar.gz
chromium_src-f629e579c00a93751c75883d48c600d3df4d1ed6.tar.bz2
Implement checks for distinctiveIdentifier and persistentState in requestMediaKeySystemAccess().
Also includes additional metadata in KeySystemInfo to support those checks. BUG=4484922 Review URL: https://codereview.chromium.org/923283002 Cr-Commit-Position: refs/heads/master@{#317257}
Diffstat (limited to 'components/cdm')
-rw-r--r--components/cdm/renderer/android_key_systems.cc18
-rw-r--r--components/cdm/renderer/widevine_key_systems.cc19
-rw-r--r--components/cdm/renderer/widevine_key_systems.h4
3 files changed, 36 insertions, 5 deletions
diff --git a/components/cdm/renderer/android_key_systems.cc b/components/cdm/renderer/android_key_systems.cc
index 83a0d04..d1e0f2a 100644
--- a/components/cdm/renderer/android_key_systems.cc
+++ b/components/cdm/renderer/android_key_systems.cc
@@ -43,13 +43,22 @@ void AddAndroidWidevine(std::vector<KeySystemInfo>* concrete_key_systems) {
AddWidevineWithCodecs(
WIDEVINE,
static_cast<SupportedCodecs>(response.compositing_codecs),
+ media::EME_SESSION_TYPE_NOT_SUPPORTED, // Persistent license.
+ media::EME_SESSION_TYPE_NOT_SUPPORTED, // Persistent release message.
+ media::EME_FEATURE_NOT_SUPPORTED, // Persistent state.
+ media::EME_FEATURE_ALWAYS_ENABLED, // Distinctive identifier.
concrete_key_systems);
}
if (response.non_compositing_codecs != media::EME_CODEC_NONE) {
+ // TODO(ddorwin): Remove with unprefixed. http://crbug.com/249976
AddWidevineWithCodecs(
WIDEVINE_HR_NON_COMPOSITING,
static_cast<SupportedCodecs>(response.non_compositing_codecs),
+ media::EME_SESSION_TYPE_NOT_SUPPORTED, // Persistent license.
+ media::EME_SESSION_TYPE_NOT_SUPPORTED, // Persistent release message.
+ media::EME_FEATURE_NOT_SUPPORTED, // Persistent state.
+ media::EME_FEATURE_ALWAYS_ENABLED, // Distinctive identifier.
concrete_key_systems);
}
}
@@ -64,7 +73,8 @@ void AddAndroidPlatformKeySystems(
it != key_system_names.end(); ++it) {
SupportedKeySystemResponse response = QueryKeySystemSupport(*it);
if (response.compositing_codecs != media::EME_CODEC_NONE) {
- KeySystemInfo info(*it);
+ KeySystemInfo info;
+ info.key_system = *it;
info.supported_codecs = response.compositing_codecs;
// Here we assume that support for a container implies support for the
// associated initialization data type. KeySystems handles validating
@@ -75,6 +85,12 @@ void AddAndroidPlatformKeySystems(
if (response.compositing_codecs & media::EME_CODEC_MP4_ALL)
info.supported_init_data_types |= media::EME_INIT_DATA_TYPE_CENC;
#endif // defined(USE_PROPRIETARY_CODECS)
+ // Assume the worst case (from a user point of view).
+ info.persistent_license_support = media::EME_SESSION_TYPE_NOT_SUPPORTED;
+ info.persistent_release_message_support =
+ media::EME_SESSION_TYPE_NOT_SUPPORTED;
+ info.persistent_state_support = media::EME_FEATURE_ALWAYS_ENABLED;
+ info.distinctive_identifier_support = media::EME_FEATURE_ALWAYS_ENABLED;
concrete_key_systems->push_back(info);
}
}
diff --git a/components/cdm/renderer/widevine_key_systems.cc b/components/cdm/renderer/widevine_key_systems.cc
index f803e8e..037df1b 100644
--- a/components/cdm/renderer/widevine_key_systems.cc
+++ b/components/cdm/renderer/widevine_key_systems.cc
@@ -26,10 +26,16 @@ static std::string GetDirectParentName(std::string name) {
return name.substr(0u, last_period);
}
-void AddWidevineWithCodecs(WidevineCdmType widevine_cdm_type,
- SupportedCodecs supported_codecs,
- std::vector<KeySystemInfo>* concrete_key_systems) {
- KeySystemInfo info(kWidevineKeySystem);
+void AddWidevineWithCodecs(
+ WidevineCdmType widevine_cdm_type,
+ SupportedCodecs supported_codecs,
+ media::EmeSessionTypeSupport persistent_license_support,
+ media::EmeSessionTypeSupport persistent_release_message_support,
+ media::EmeFeatureSupport persistent_state_support,
+ media::EmeFeatureSupport distinctive_identifier_support,
+ std::vector<KeySystemInfo>* concrete_key_systems) {
+ KeySystemInfo info;
+ info.key_system = kWidevineKeySystem;
switch (widevine_cdm_type) {
case WIDEVINE:
@@ -60,6 +66,11 @@ void AddWidevineWithCodecs(WidevineCdmType widevine_cdm_type,
info.supported_init_data_types |= media::EME_INIT_DATA_TYPE_CENC;
#endif // defined(USE_PROPRIETARY_CODECS)
+ info.persistent_license_support = persistent_license_support;
+ info.persistent_release_message_support = persistent_release_message_support;
+ info.persistent_state_support = persistent_state_support;
+ info.distinctive_identifier_support = distinctive_identifier_support;
+
#if defined(ENABLE_PEPPER_CDMS)
info.pepper_type = kWidevineCdmPluginMimeType;
#endif // defined(ENABLE_PEPPER_CDMS)
diff --git a/components/cdm/renderer/widevine_key_systems.h b/components/cdm/renderer/widevine_key_systems.h
index 1d42b3b..15c55da 100644
--- a/components/cdm/renderer/widevine_key_systems.h
+++ b/components/cdm/renderer/widevine_key_systems.h
@@ -22,6 +22,10 @@ enum WidevineCdmType {
void AddWidevineWithCodecs(
WidevineCdmType widevine_cdm_type,
media::SupportedCodecs supported_codecs,
+ media::EmeSessionTypeSupport persistent_license_support,
+ media::EmeSessionTypeSupport persistent_release_message_support,
+ media::EmeFeatureSupport persistent_state_support,
+ media::EmeFeatureSupport distinctive_identifier_support,
std::vector<media::KeySystemInfo>* concrete_key_systems);
} // namespace cdm