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

Unified Diff: media/blink/key_system_config_selector_unittest.cc

Issue 2349813002: EME: Update MediaKeySystemConfiguration defaults; require non-empty capabilities (Closed)
Patch Set: fix Android compile Created 4 years, 2 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 | « media/blink/key_system_config_selector.cc ('k') | media/test/data/eme_player_js/globals.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/blink/key_system_config_selector_unittest.cc
diff --git a/media/blink/key_system_config_selector_unittest.cc b/media/blink/key_system_config_selector_unittest.cc
index 90035836fecf0c7ee7fba46e56e647b0a11c2f0d..9e66ce16834654c130f0f4288e898fd30ad348d6 100644
--- a/media/blink/key_system_config_selector_unittest.cc
+++ b/media/blink/key_system_config_selector_unittest.cc
@@ -42,6 +42,23 @@ const char kSupportedCodecs[] = "vp8,vp8";
const char kDefaultSecurityOrigin[] = "https://example.com/";
+// The IDL for MediaKeySystemConfiguration specifies some defaults, so
+// create a default object that mimics what would be created if an empty
+// dictionary was passed in.
+blink::WebMediaKeySystemConfiguration DefaultConfiguration() {
+ // http://w3c.github.io/encrypted-media/#mediakeysystemconfiguration-dictionary
+ // If this member (sessionTypes) is not present when the dictionary
+ // is passed to requestMediaKeySystemAccess(), the dictionary will
+ // be treated as if this member is set to [ "temporary" ].
+ std::vector<blink::WebEncryptedMediaSessionType> session_types;
+ session_types.push_back(blink::WebEncryptedMediaSessionType::Temporary);
+
+ blink::WebMediaKeySystemConfiguration config;
+ config.label = "";
+ config.sessionTypes = session_types;
+ return config;
+}
+
class FakeKeySystems : public KeySystems {
public:
~FakeKeySystems() override {
@@ -244,12 +261,43 @@ TEST_F(KeySystemConfigSelectorTest, NoConfigs) {
ASSERT_TRUE(SelectConfigReturnsError());
}
-// Most of the tests below assume that an empty config is valid.
+TEST_F(KeySystemConfigSelectorTest, DefaultConfig) {
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
+
+ // label = "";
+ ASSERT_EQ("", config.label);
+
+ // initDataTypes = [];
+ ASSERT_EQ(0u, config.initDataTypes.size());
+
+ // audioCapabilities = [];
+ ASSERT_EQ(0u, config.audioCapabilities.size());
+
+ // videoCapabilities = [];
+ ASSERT_EQ(0u, config.videoCapabilities.size());
+
+ // distinctiveIdentifier = "optional";
+ ASSERT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Optional,
+ config.distinctiveIdentifier);
+
+ // persistentState = "optional";
+ ASSERT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Optional,
+ config.persistentState);
+
+ // If this member is not present when the dictionary is passed to
+ // requestMediaKeySystemAccess(), the dictionary will be treated as
+ // if this member is set to [ "temporary" ].
+ ASSERT_EQ(1u, config.sessionTypes.size());
+ ASSERT_EQ(blink::WebEncryptedMediaSessionType::Temporary,
+ config.sessionTypes[0]);
+}
+
+// Most of the tests below assume that the default config is valid.
TEST_F(KeySystemConfigSelectorTest, EmptyConfig) {
- configs_.push_back(blink::WebMediaKeySystemConfiguration());
+ configs_.push_back(DefaultConfiguration());
ASSERT_TRUE(SelectConfigReturnsConfig());
- EXPECT_TRUE(config_.label.isNull());
+ EXPECT_EQ("", config_.label);
EXPECT_TRUE(config_.initDataTypes.isEmpty());
EXPECT_TRUE(config_.audioCapabilities.isEmpty());
EXPECT_TRUE(config_.videoCapabilities.isEmpty());
@@ -263,7 +311,7 @@ TEST_F(KeySystemConfigSelectorTest, EmptyConfig) {
}
TEST_F(KeySystemConfigSelectorTest, Label) {
- blink::WebMediaKeySystemConfiguration config;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.label = "foo";
configs_.push_back(config);
@@ -276,24 +324,23 @@ TEST_F(KeySystemConfigSelectorTest, Label) {
TEST_F(KeySystemConfigSelectorTest, KeySystem_NonAscii) {
key_system_ = "\xde\xad\xbe\xef";
- configs_.push_back(blink::WebMediaKeySystemConfiguration());
+ configs_.push_back(DefaultConfiguration());
ASSERT_TRUE(SelectConfigReturnsError());
}
TEST_F(KeySystemConfigSelectorTest, KeySystem_Unsupported) {
key_system_ = kUnsupported;
- configs_.push_back(blink::WebMediaKeySystemConfiguration());
+ configs_.push_back(DefaultConfiguration());
ASSERT_TRUE(SelectConfigReturnsError());
}
// --- initDataTypes ---
TEST_F(KeySystemConfigSelectorTest, InitDataTypes_Empty) {
- blink::WebMediaKeySystemConfiguration config;
- config.hasInitDataTypes = true;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
configs_.push_back(config);
- ASSERT_TRUE(SelectConfigReturnsError());
+ ASSERT_TRUE(SelectConfigReturnsConfig());
}
TEST_F(KeySystemConfigSelectorTest, InitDataTypes_NoneSupported) {
@@ -303,8 +350,7 @@ TEST_F(KeySystemConfigSelectorTest, InitDataTypes_NoneSupported) {
init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Unknown);
init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Cenc);
- blink::WebMediaKeySystemConfiguration config;
- config.hasInitDataTypes = true;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.initDataTypes = init_data_types;
configs_.push_back(config);
@@ -319,8 +365,7 @@ TEST_F(KeySystemConfigSelectorTest, InitDataTypes_SubsetSupported) {
init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Cenc);
init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Webm);
- blink::WebMediaKeySystemConfiguration config;
- config.hasInitDataTypes = true;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.initDataTypes = init_data_types;
configs_.push_back(config);
@@ -335,7 +380,7 @@ TEST_F(KeySystemConfigSelectorTest, InitDataTypes_SubsetSupported) {
TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_Default) {
key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
- blink::WebMediaKeySystemConfiguration config;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.distinctiveIdentifier =
blink::WebMediaKeySystemConfiguration::Requirement::Optional;
configs_.push_back(config);
@@ -349,7 +394,7 @@ TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_Forced) {
media_permission_->is_granted = true;
key_systems_->distinctive_identifier = EmeFeatureSupport::ALWAYS_ENABLED;
- blink::WebMediaKeySystemConfiguration config;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.distinctiveIdentifier =
blink::WebMediaKeySystemConfiguration::Requirement::Optional;
configs_.push_back(config);
@@ -362,7 +407,7 @@ TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_Forced) {
TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_Blocked) {
key_systems_->distinctive_identifier = EmeFeatureSupport::NOT_SUPPORTED;
- blink::WebMediaKeySystemConfiguration config;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.distinctiveIdentifier =
blink::WebMediaKeySystemConfiguration::Requirement::Required;
configs_.push_back(config);
@@ -374,7 +419,7 @@ TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_RequestsPermission) {
media_permission_->is_granted = true;
key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
- blink::WebMediaKeySystemConfiguration config;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.distinctiveIdentifier =
blink::WebMediaKeySystemConfiguration::Requirement::Required;
configs_.push_back(config);
@@ -388,7 +433,7 @@ TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_RespectsPermission) {
media_permission_->is_granted = false;
key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
- blink::WebMediaKeySystemConfiguration config;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.distinctiveIdentifier =
blink::WebMediaKeySystemConfiguration::Requirement::Required;
configs_.push_back(config);
@@ -401,7 +446,7 @@ TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_RespectsPermission) {
TEST_F(KeySystemConfigSelectorTest, PersistentState_Default) {
key_systems_->persistent_state = EmeFeatureSupport::REQUESTABLE;
- blink::WebMediaKeySystemConfiguration config;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.persistentState =
blink::WebMediaKeySystemConfiguration::Requirement::Optional;
configs_.push_back(config);
@@ -414,7 +459,7 @@ TEST_F(KeySystemConfigSelectorTest, PersistentState_Default) {
TEST_F(KeySystemConfigSelectorTest, PersistentState_Forced) {
key_systems_->persistent_state = EmeFeatureSupport::ALWAYS_ENABLED;
- blink::WebMediaKeySystemConfiguration config;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.persistentState =
blink::WebMediaKeySystemConfiguration::Requirement::Optional;
configs_.push_back(config);
@@ -427,7 +472,7 @@ TEST_F(KeySystemConfigSelectorTest, PersistentState_Forced) {
TEST_F(KeySystemConfigSelectorTest, PersistentState_Blocked) {
key_systems_->persistent_state = EmeFeatureSupport::ALWAYS_ENABLED;
- blink::WebMediaKeySystemConfiguration config;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.persistentState =
blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed;
configs_.push_back(config);
@@ -438,8 +483,12 @@ TEST_F(KeySystemConfigSelectorTest, PersistentState_Blocked) {
// --- sessionTypes ---
TEST_F(KeySystemConfigSelectorTest, SessionTypes_Empty) {
- blink::WebMediaKeySystemConfiguration config;
- config.hasSessionTypes = true;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
+
+ // Default configuration has [ "temporary" ].
+ std::vector<blink::WebEncryptedMediaSessionType> session_types;
+ config.sessionTypes = session_types;
+
configs_.push_back(config);
ASSERT_TRUE(SelectConfigReturnsConfig());
@@ -456,8 +505,7 @@ TEST_F(KeySystemConfigSelectorTest, SessionTypes_SubsetSupported) {
session_types.push_back(
blink::WebEncryptedMediaSessionType::PersistentLicense);
- blink::WebMediaKeySystemConfiguration config;
- config.hasSessionTypes = true;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.sessionTypes = session_types;
configs_.push_back(config);
@@ -474,10 +522,9 @@ TEST_F(KeySystemConfigSelectorTest, SessionTypes_AllSupported) {
session_types.push_back(
blink::WebEncryptedMediaSessionType::PersistentLicense);
- blink::WebMediaKeySystemConfiguration config;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.persistentState =
blink::WebMediaKeySystemConfiguration::Requirement::Optional;
- config.hasSessionTypes = true;
config.sessionTypes = session_types;
configs_.push_back(config);
@@ -502,12 +549,11 @@ TEST_F(KeySystemConfigSelectorTest, SessionTypes_PermissionCanBeRequired) {
session_types.push_back(
blink::WebEncryptedMediaSessionType::PersistentLicense);
- blink::WebMediaKeySystemConfiguration config;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.distinctiveIdentifier =
blink::WebMediaKeySystemConfiguration::Requirement::Optional;
config.persistentState =
blink::WebMediaKeySystemConfiguration::Requirement::Optional;
- config.hasSessionTypes = true;
config.sessionTypes = session_types;
configs_.push_back(config);
@@ -519,11 +565,10 @@ TEST_F(KeySystemConfigSelectorTest, SessionTypes_PermissionCanBeRequired) {
// --- videoCapabilities ---
TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Empty) {
- blink::WebMediaKeySystemConfiguration config;
- config.hasVideoCapabilities = true;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
configs_.push_back(config);
- ASSERT_TRUE(SelectConfigReturnsError());
+ ASSERT_TRUE(SelectConfigReturnsConfig());
}
TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_NoneSupported) {
@@ -534,8 +579,7 @@ TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_NoneSupported) {
video_capabilities[1].mimeType = kSupportedContainer;
video_capabilities[1].codecs = kUnsupportedCodec;
- blink::WebMediaKeySystemConfiguration config;
- config.hasVideoCapabilities = true;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.videoCapabilities = video_capabilities;
configs_.push_back(config);
@@ -549,8 +593,7 @@ TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_SubsetSupported) {
video_capabilities[1].contentType = "b";
video_capabilities[1].mimeType = kSupportedContainer;
- blink::WebMediaKeySystemConfiguration config;
- config.hasVideoCapabilities = true;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.videoCapabilities = video_capabilities;
configs_.push_back(config);
@@ -568,8 +611,7 @@ TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_AllSupported) {
video_capabilities[1].mimeType = kSupportedContainer;
video_capabilities[1].codecs = kSupportedCodecs;
- blink::WebMediaKeySystemConfiguration config;
- config.hasVideoCapabilities = true;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.videoCapabilities = video_capabilities;
configs_.push_back(config);
@@ -586,8 +628,7 @@ TEST_F(KeySystemConfigSelectorTest,
video_capabilities[0].mimeType = kSupportedContainer;
video_capabilities[0].codecs = kUnsupportedCodecs;
- blink::WebMediaKeySystemConfiguration config;
- config.hasVideoCapabilities = true;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.videoCapabilities = video_capabilities;
configs_.push_back(config);
@@ -600,8 +641,7 @@ TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Codecs_AllSupported) {
video_capabilities[0].mimeType = kSupportedContainer;
video_capabilities[0].codecs = kSupportedCodecs;
- blink::WebMediaKeySystemConfiguration config;
- config.hasVideoCapabilities = true;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.videoCapabilities = video_capabilities;
configs_.push_back(config);
@@ -616,8 +656,7 @@ TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Supported) {
video_capabilities[0].mimeType = kSupportedContainer;
video_capabilities[0].robustness = kSupported;
- blink::WebMediaKeySystemConfiguration config;
- config.hasVideoCapabilities = true;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.videoCapabilities = video_capabilities;
configs_.push_back(config);
@@ -632,8 +671,7 @@ TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Unsupported) {
video_capabilities[0].mimeType = kSupportedContainer;
video_capabilities[0].robustness = kUnsupported;
- blink::WebMediaKeySystemConfiguration config;
- config.hasVideoCapabilities = true;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.videoCapabilities = video_capabilities;
configs_.push_back(config);
@@ -650,8 +688,7 @@ TEST_F(KeySystemConfigSelectorTest,
video_capabilities[0].mimeType = kSupportedContainer;
video_capabilities[0].robustness = kRequireIdentifier;
- blink::WebMediaKeySystemConfiguration config;
- config.hasVideoCapabilities = true;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.videoCapabilities = video_capabilities;
configs_.push_back(config);
@@ -670,8 +707,7 @@ TEST_F(KeySystemConfigSelectorTest,
video_capabilities[0].mimeType = kSupportedContainer;
video_capabilities[0].robustness = kRecommendIdentifier;
- blink::WebMediaKeySystemConfiguration config;
- config.hasVideoCapabilities = true;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.videoCapabilities = video_capabilities;
configs_.push_back(config);
@@ -691,8 +727,7 @@ TEST_F(KeySystemConfigSelectorTest, AudioCapabilities_SubsetSupported) {
audio_capabilities[1].contentType = "b";
audio_capabilities[1].mimeType = kSupportedContainer;
- blink::WebMediaKeySystemConfiguration config;
- config.hasAudioCapabilities = true;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.audioCapabilities = audio_capabilities;
configs_.push_back(config);
@@ -705,7 +740,7 @@ TEST_F(KeySystemConfigSelectorTest, AudioCapabilities_SubsetSupported) {
// --- Multiple configurations ---
TEST_F(KeySystemConfigSelectorTest, Configurations_AllSupported) {
- blink::WebMediaKeySystemConfiguration config;
+ blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.label = "a";
configs_.push_back(config);
config.label = "b";
@@ -716,12 +751,14 @@ TEST_F(KeySystemConfigSelectorTest, Configurations_AllSupported) {
}
TEST_F(KeySystemConfigSelectorTest, Configurations_SubsetSupported) {
- blink::WebMediaKeySystemConfiguration config1;
+ blink::WebMediaKeySystemConfiguration config1 = DefaultConfiguration();
config1.label = "a";
- config1.hasInitDataTypes = true;
+ std::vector<blink::WebEncryptedMediaInitDataType> init_data_types;
+ init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Unknown);
+ config1.initDataTypes = init_data_types;
configs_.push_back(config1);
- blink::WebMediaKeySystemConfiguration config2;
+ blink::WebMediaKeySystemConfiguration config2 = DefaultConfiguration();
config2.label = "b";
configs_.push_back(config2);
@@ -734,13 +771,13 @@ TEST_F(KeySystemConfigSelectorTest,
media_permission_->is_granted = true;
key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
- blink::WebMediaKeySystemConfiguration config1;
+ blink::WebMediaKeySystemConfiguration config1 = DefaultConfiguration();
config1.label = "a";
config1.distinctiveIdentifier =
blink::WebMediaKeySystemConfiguration::Requirement::Required;
configs_.push_back(config1);
- blink::WebMediaKeySystemConfiguration config2;
+ blink::WebMediaKeySystemConfiguration config2 = DefaultConfiguration();
config2.label = "b";
configs_.push_back(config2);
@@ -753,13 +790,13 @@ TEST_F(KeySystemConfigSelectorTest,
media_permission_->is_granted = false;
key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
- blink::WebMediaKeySystemConfiguration config1;
+ blink::WebMediaKeySystemConfiguration config1 = DefaultConfiguration();
config1.label = "a";
config1.distinctiveIdentifier =
blink::WebMediaKeySystemConfiguration::Requirement::Required;
configs_.push_back(config1);
- blink::WebMediaKeySystemConfiguration config2;
+ blink::WebMediaKeySystemConfiguration config2 = DefaultConfiguration();
config2.label = "b";
configs_.push_back(config2);
« no previous file with comments | « media/blink/key_system_config_selector.cc ('k') | media/test/data/eme_player_js/globals.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698