| 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);
|
|
|
|
|