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

Unified Diff: media/blink/key_system_config_selector_unittest.cc

Issue 2652373002: EME: Fail requestMediaKeySystemAccess if no capabilities specified (Closed)
Patch Set: multiple Android codecs Created 3 years, 11 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
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 0ca129571a52937dbfc77eb2da42198cc2b5ff24..6d561cd7ca957777c0cde6447e49234a574288da 100644
--- a/media/blink/key_system_config_selector_unittest.cc
+++ b/media/blink/key_system_config_selector_unittest.cc
@@ -29,16 +29,16 @@ const char kRecommendIdentifier[] = "recommend_identifier";
const char kRequireIdentifier[] = "require_identifier";
const char kUnsupported[] = "unsupported";
-// TODO(sandersd): Audio and video variants (doesn't matter for now because the
-// checks are in KeySystems).
-const char kSupportedContainer[] = "video/webm";
+const char kSupportedVideoContainer[] = "video/webm";
+const char kSupportedAudioContainer[] = "audio/webm";
const char kUnsupportedContainer[] = "video/foo";
// TODO(sandersd): Extended codec variants (requires proprietary codec support).
-const char kSupportedCodec[] = "vp8";
+const char kSupportedVideoCodec[] = "vp8";
+const char kSupportedAudioCodec[] = "opus";
const char kUnsupportedCodec[] = "foo";
const char kUnsupportedCodecs[] = "vp8,foo";
-const char kSupportedCodecs[] = "vp8,vp8";
+const char kSupportedVideoCodecs[] = "vp8,vp8";
const char kDefaultSecurityOrigin[] = "https://example.com/";
@@ -53,9 +53,18 @@ blink::WebMediaKeySystemConfiguration DefaultConfiguration() {
std::vector<blink::WebEncryptedMediaSessionType> session_types;
session_types.push_back(blink::WebEncryptedMediaSessionType::Temporary);
+ // EME spec requires that at least one of |video_capabilities| and
+ // |audio_capabilities| be specified. Add a single valid audio capability
+ // here. blink code parses the contentType into mimeType and codecs, so
+ // mimic that here.
+ std::vector<blink::WebMediaKeySystemMediaCapability> audio_capabilities(1);
+ audio_capabilities[0].mimeType = kSupportedAudioContainer;
+ audio_capabilities[0].codecs = kSupportedAudioCodec;
+
blink::WebMediaKeySystemConfiguration config;
config.label = "";
config.sessionTypes = session_types;
+ config.audioCapabilities = audio_capabilities;
return config;
}
@@ -95,11 +104,25 @@ class FakeKeySystems : public KeySystems {
const std::vector<std::string>& codecs) const override {
if (container_mime_type == kUnsupportedContainer)
return EmeConfigRule::NOT_SUPPORTED;
- DCHECK_EQ(kSupportedContainer, container_mime_type);
+ switch (media_type) {
+ case EmeMediaType::AUDIO:
+ DCHECK_EQ(kSupportedAudioContainer, container_mime_type);
+ break;
+ case EmeMediaType::VIDEO:
+ DCHECK_EQ(kSupportedVideoContainer, container_mime_type);
+ break;
+ }
for (const std::string& codec : codecs) {
if (codec == kUnsupportedCodec)
return EmeConfigRule::NOT_SUPPORTED;
- DCHECK_EQ(kSupportedCodec, codec);
+ switch (media_type) {
+ case EmeMediaType::AUDIO:
+ DCHECK_EQ(kSupportedAudioCodec, codec);
+ break;
+ case EmeMediaType::VIDEO:
+ DCHECK_EQ(kSupportedVideoCodec, codec);
+ break;
+ }
}
return EmeConfigRule::SUPPORTED;
}
@@ -273,7 +296,7 @@ TEST_F(KeySystemConfigSelectorTest, DefaultConfig) {
ASSERT_EQ(0u, config.initDataTypes.size());
// audioCapabilities = [];
- ASSERT_EQ(0u, config.audioCapabilities.size());
+ ASSERT_EQ(1u, config.audioCapabilities.size());
// videoCapabilities = [];
ASSERT_EQ(0u, config.videoCapabilities.size());
@@ -301,7 +324,7 @@ TEST_F(KeySystemConfigSelectorTest, EmptyConfig) {
ASSERT_TRUE(SelectConfigReturnsConfig());
EXPECT_EQ("", config_.label);
EXPECT_TRUE(config_.initDataTypes.isEmpty());
- EXPECT_TRUE(config_.audioCapabilities.isEmpty());
+ EXPECT_EQ(1u, config_.audioCapabilities.size());
xhwang 2017/02/02 18:31:20 The test is called EmptyConfig. Is it still accura
jrummell 2017/02/02 20:03:24 Updated the test to make sure EmptyConfig fails, a
EXPECT_TRUE(config_.videoCapabilities.isEmpty());
EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed,
config_.distinctiveIdentifier);
@@ -578,7 +601,7 @@ TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_NoneSupported) {
video_capabilities[0].contentType = "a";
video_capabilities[0].mimeType = kUnsupportedContainer;
video_capabilities[1].contentType = "b";
- video_capabilities[1].mimeType = kSupportedContainer;
+ video_capabilities[1].mimeType = kSupportedVideoContainer;
video_capabilities[1].codecs = kUnsupportedCodec;
blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
@@ -593,7 +616,7 @@ TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_SubsetSupported) {
video_capabilities[0].contentType = "a";
video_capabilities[0].mimeType = kUnsupportedContainer;
video_capabilities[1].contentType = "b";
- video_capabilities[1].mimeType = kSupportedContainer;
+ video_capabilities[1].mimeType = kSupportedVideoContainer;
blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.videoCapabilities = video_capabilities;
@@ -602,16 +625,16 @@ TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_SubsetSupported) {
ASSERT_TRUE(SelectConfigReturnsConfig());
ASSERT_EQ(1u, config_.videoCapabilities.size());
EXPECT_EQ("b", config_.videoCapabilities[0].contentType);
- EXPECT_EQ(kSupportedContainer, config_.videoCapabilities[0].mimeType);
+ EXPECT_EQ(kSupportedVideoContainer, config_.videoCapabilities[0].mimeType);
}
TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_AllSupported) {
std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(2);
video_capabilities[0].contentType = "a";
- video_capabilities[0].mimeType = kSupportedContainer;
+ video_capabilities[0].mimeType = kSupportedVideoContainer;
video_capabilities[1].contentType = "b";
- video_capabilities[1].mimeType = kSupportedContainer;
- video_capabilities[1].codecs = kSupportedCodecs;
+ video_capabilities[1].mimeType = kSupportedVideoContainer;
+ video_capabilities[1].codecs = kSupportedVideoCodecs;
blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.videoCapabilities = video_capabilities;
@@ -627,7 +650,7 @@ TEST_F(KeySystemConfigSelectorTest,
VideoCapabilities_Codecs_SubsetSupported) {
std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
video_capabilities[0].contentType = "a";
- video_capabilities[0].mimeType = kSupportedContainer;
+ video_capabilities[0].mimeType = kSupportedVideoContainer;
video_capabilities[0].codecs = kUnsupportedCodecs;
blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
@@ -640,8 +663,8 @@ TEST_F(KeySystemConfigSelectorTest,
TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Codecs_AllSupported) {
std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
video_capabilities[0].contentType = "a";
- video_capabilities[0].mimeType = kSupportedContainer;
- video_capabilities[0].codecs = kSupportedCodecs;
+ video_capabilities[0].mimeType = kSupportedVideoContainer;
+ video_capabilities[0].codecs = kSupportedVideoCodecs;
blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.videoCapabilities = video_capabilities;
@@ -649,13 +672,13 @@ TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Codecs_AllSupported) {
ASSERT_TRUE(SelectConfigReturnsConfig());
ASSERT_EQ(1u, config_.videoCapabilities.size());
- EXPECT_EQ(kSupportedCodecs, config_.videoCapabilities[0].codecs);
+ EXPECT_EQ(kSupportedVideoCodecs, config_.videoCapabilities[0].codecs);
}
TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Empty) {
std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
video_capabilities[0].contentType = "a";
- video_capabilities[0].mimeType = kSupportedContainer;
+ video_capabilities[0].mimeType = kSupportedVideoContainer;
ASSERT_TRUE(video_capabilities[0].robustness.isEmpty());
blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
@@ -670,7 +693,7 @@ TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Empty) {
TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Supported) {
std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
video_capabilities[0].contentType = "a";
- video_capabilities[0].mimeType = kSupportedContainer;
+ video_capabilities[0].mimeType = kSupportedVideoContainer;
video_capabilities[0].robustness = kSupported;
blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
@@ -685,7 +708,7 @@ TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Supported) {
TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Unsupported) {
std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
video_capabilities[0].contentType = "a";
- video_capabilities[0].mimeType = kSupportedContainer;
+ video_capabilities[0].mimeType = kSupportedVideoContainer;
video_capabilities[0].robustness = kUnsupported;
blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
@@ -702,7 +725,7 @@ TEST_F(KeySystemConfigSelectorTest,
std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
video_capabilities[0].contentType = "a";
- video_capabilities[0].mimeType = kSupportedContainer;
+ video_capabilities[0].mimeType = kSupportedVideoContainer;
video_capabilities[0].robustness = kRequireIdentifier;
blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
@@ -721,7 +744,7 @@ TEST_F(KeySystemConfigSelectorTest,
std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
video_capabilities[0].contentType = "a";
- video_capabilities[0].mimeType = kSupportedContainer;
+ video_capabilities[0].mimeType = kSupportedVideoContainer;
video_capabilities[0].robustness = kRecommendIdentifier;
blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
@@ -742,7 +765,7 @@ TEST_F(KeySystemConfigSelectorTest, AudioCapabilities_SubsetSupported) {
audio_capabilities[0].contentType = "a";
audio_capabilities[0].mimeType = kUnsupportedContainer;
audio_capabilities[1].contentType = "b";
- audio_capabilities[1].mimeType = kSupportedContainer;
+ audio_capabilities[1].mimeType = kSupportedAudioContainer;
blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
config.audioCapabilities = audio_capabilities;
@@ -751,7 +774,7 @@ TEST_F(KeySystemConfigSelectorTest, AudioCapabilities_SubsetSupported) {
ASSERT_TRUE(SelectConfigReturnsConfig());
ASSERT_EQ(1u, config_.audioCapabilities.size());
EXPECT_EQ("b", config_.audioCapabilities[0].contentType);
- EXPECT_EQ(kSupportedContainer, config_.audioCapabilities[0].mimeType);
+ EXPECT_EQ(kSupportedAudioContainer, config_.audioCapabilities[0].mimeType);
}
// --- Multiple configurations ---

Powered by Google App Engine
This is Rietveld 408576698