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

Unified Diff: content/renderer/media/crypto/key_systems_unittest.cc

Issue 23452025: Move EME key system knowledge from content/ to chrome/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add OWNERS file Created 7 years, 3 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: content/renderer/media/crypto/key_systems_unittest.cc
diff --git a/content/renderer/media/crypto/key_systems_unittest.cc b/content/renderer/media/crypto/key_systems_unittest.cc
index aef3fc5b279c60d9b753d3b77debb8774733923a..82e83589635325f037f821a4ebb9a875619b3758 100644
--- a/content/renderer/media/crypto/key_systems_unittest.cc
+++ b/content/renderer/media/crypto/key_systems_unittest.cc
@@ -7,6 +7,7 @@
#include "content/public/common/content_client.h"
#include "content/public/renderer/content_renderer_client.h"
+#include "content/public/renderer/key_system_info.h"
#include "content/renderer/media/crypto/key_systems.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/WebKit/public/platform/WebString.h"
@@ -31,85 +32,72 @@
#endif // defined(NDEBUG)
#endif // defined(GTEST_HAS_DEATH_TEST) && !defined(OS_ANDROID)
-#if defined(WIDEVINE_CDM_AVAILABLE) && \
- defined(OS_LINUX) && !defined(OS_CHROMEOS)
-#include <gnu/libc-version.h>
-#endif
-
using WebKit::WebString;
-#if defined(USE_PROPRIETARY_CODECS)
-#define EXPECT_PROPRIETARY EXPECT_TRUE
-#else
-#define EXPECT_PROPRIETARY EXPECT_FALSE
-#endif
+static const char* const kClear = "org.example.clear";
+static const char* const kClearParent = "org.example"; // Not registered.
+static const char* const kTest = "com.example.test";
+static const char* const kTestParent = "com.example";
xhwang 2013/09/11 20:38:55 It'll be nice to have better comment and naming. E
ddorwin 2013/09/12 22:35:40 Done. I tried to clarify these things.
-// Expectations for External Clear Key.
-#if defined(ENABLE_PEPPER_CDMS)
-#define EXPECT_ECK EXPECT_TRUE
-#define EXPECT_ECKPROPRIETARY EXPECT_PROPRIETARY
-#else
-#define EXPECT_ECK EXPECT_FALSE
-#define EXPECT_ECKPROPRIETARY EXPECT_FALSE
-#endif // defined(ENABLE_PEPPER_CDMS)
-// Expectations for Widevine.
-#if defined(WIDEVINE_CDM_AVAILABLE)
-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-// TODO(ddorwin): Remove after bots switch to Precise.
-#define EXPECT_WV(a) \
- EXPECT_EQ((std::string(gnu_get_libc_version()) != "2.11.1"), (a))
-#else
-// See http://crbug.com/237627.
-#if defined(DISABLE_WIDEVINE_CDM_CANPLAYTYPE)
-#define EXPECT_WV EXPECT_FALSE
-#else
-#define EXPECT_WV EXPECT_TRUE
-#endif // defined(DISABLE_WIDEVINE_CDM_CANPLAYTYPE)
-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
+static const char* const kClearKey = "webkit-org.w3.clearkey";
+static const char* const kExternalClearKey = "org.chromium.externalclearkey";
xhwang 2013/09/11 20:38:55 use "static const char Foo[]" to be consistent wit
ddorwin 2013/09/12 22:35:40 Done.
-#if defined(WIDEVINE_CDM_CENC_SUPPORT_AVAILABLE)
-#define EXPECT_WVCENC EXPECT_TRUE
+static const char kAudioWebM[] = "audio/webm";
+static const char kVideoWebM[] = "video/webm";
+static const char kVorbis[] = "vorbis";
+static const char kVorbisVP8[] = "vorbis,vp8,vp8.0";
-#if defined(WIDEVINE_CDM_AVC1_SUPPORT_AVAILABLE)
-#define EXPECT_WVAVC1 EXPECT_TRUE
-#if defined(WIDEVINE_CDM_AAC_SUPPORT_AVAILABLE)
-#define EXPECT_WVAVC1AAC EXPECT_TRUE
-#else
-#define EXPECT_WVAVC1AAC EXPECT_FALSE
-#endif // defined(WIDEVINE_CDM_AAC_SUPPORT_AVAILABLE)
-#else // !defined(WIDEVINE_CDM_AVC1_SUPPORT_AVAILABLE)
-#define EXPECT_WVAVC1 EXPECT_FALSE
-#define EXPECT_WVAVC1AAC EXPECT_FALSE
-#endif // defined(WIDEVINE_CDM_AVC1_SUPPORT_AVAILABLE)
-
-#if defined(WIDEVINE_CDM_AAC_SUPPORT_AVAILABLE)
-#define EXPECT_WVAAC EXPECT_TRUE
-#else
-#define EXPECT_WVAAC EXPECT_FALSE
+static const char kAudioFoo[] = "audio/foo";
+static const char kVideoFoo[] = "video/foo";
+static const char kFooAudioCodecs[] = "baraudio";
xhwang 2013/09/11 20:38:55 kBarAudioCodecs?
ddorwin 2013/09/12 22:35:40 It's the codecs for the Foo container. It makes mo
+static const char kFooVideoCodecs[] = "baraudio,barvideo";
xhwang 2013/09/11 20:38:55 ditto
ddorwin 2013/09/12 22:35:40 Same
+
+namespace content {
+
+class TestContentRendererClient : public ContentRendererClient {
+ virtual void AddKeySystems(
+ std::vector<content::KeySystemInfo>* key_systems) OVERRIDE;
+};
+
+void TestContentRendererClient::AddKeySystems(
+ std::vector<content::KeySystemInfo>* key_systems) {
+#if defined(OS_ANDROID)
+ static const uint8 kTestUuid[16] = {
+ 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
+ 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF };
#endif
-#else // !defined(WIDEVINE_CDM_CENC_SUPPORT_AVAILABLE)
-#define EXPECT_WVCENC EXPECT_FALSE
-#define EXPECT_WVAVC1 EXPECT_FALSE
-#define EXPECT_WVAVC1AAC EXPECT_FALSE
-#define EXPECT_WVAAC EXPECT_FALSE
-#endif // defined(WIDEVINE_CDM_CENC_SUPPORT_AVAILABLE)
-
-#else // !defined(WIDEVINE_CDM_AVAILABLE)
-#define EXPECT_WV EXPECT_FALSE
-#define EXPECT_WVCENC EXPECT_FALSE
-#define EXPECT_WVAVC1 EXPECT_FALSE
-#define EXPECT_WVAVC1AAC EXPECT_FALSE
-#define EXPECT_WVAAC EXPECT_FALSE
-#endif // defined(WIDEVINE_CDM_AVAILABLE)
+ KeySystemInfo clear(kClear);
-namespace content {
+ clear.supported_types.push_back(std::make_pair(kAudioWebM, kVorbis));
+ clear.supported_types.push_back(std::make_pair(kVideoWebM, kVorbisVP8));
-static const char* const kClearKey = "webkit-org.w3.clearkey";
-static const char* const kExternalClearKey = "org.chromium.externalclearkey";
-static const char* const kWidevine = "com.widevine";
-static const char* const kWidevineAlpha = "com.widevine.alpha";
+ clear.supported_types.push_back(std::make_pair(kAudioFoo, kFooAudioCodecs));
+ clear.supported_types.push_back(std::make_pair(kVideoFoo, kFooVideoCodecs));
+
+ clear.use_aes_decryptor = true;
+
+ key_systems->push_back(clear);
+
+ KeySystemInfo test(kTest);
+
+ test.supported_types.push_back(std::make_pair(kAudioWebM, kVorbis));
+ test.supported_types.push_back(std::make_pair(kVideoWebM, kVorbisVP8));
+
+ test.supported_types.push_back(std::make_pair(kAudioFoo, kFooAudioCodecs));
+ test.supported_types.push_back(std::make_pair(kVideoFoo, kFooVideoCodecs));
+
+ test.parent_key_system = kTestParent;
+
+#if defined(ENABLE_PEPPER_CDMS)
+ test.pepper_type = "application/x-ppapi-test-cdm";
+#elif defined(OS_ANDROID)
+ test.uuid.assign(kTestUuid, kTestUuid + arraysize(kTestUuid));
+#endif // defined(ENABLE_PEPPER_CDMS)
+
+ key_systems->push_back(test);
+}
class KeySystemsTest : public testing::Test {
protected:
@@ -123,23 +111,21 @@ class KeySystemsTest : public testing::Test {
vp8_and_vorbis_codecs_.push_back("vp8");
vp8_and_vorbis_codecs_.push_back("vorbis");
- avc1_codec_.push_back("avc1");
+ barvideo_codec_.push_back("barvideo");
- avc1_extended_codec_.push_back("avc1.4D400C");
+ barvideo_extended_codec_.push_back("barvideo.4D400C");
- avc1_dot_codec_.push_back("avc1.");
+ barvideo_dot_codec_.push_back("barvideo.");
- avc2_codec_.push_back("avc2");
+ baraudio_codec_.push_back("baraudio");
xhwang 2013/09/11 20:38:55 When should we use baraudio_codec_ and when should
ddorwin 2013/09/12 22:35:40 kFooAudioCodecs is the codecs supported by that co
- aac_codec_.push_back("mp4a");
+ barvideo_and_baraudio_codecs_.push_back("barvideo");
+ barvideo_and_baraudio_codecs_.push_back("baraudio");
- avc1_and_aac_codecs_.push_back("avc1");
- avc1_and_aac_codecs_.push_back("mp4a");
-
- unknown_codec_.push_back("foo");
+ unknown_codec_.push_back("unknown");
mixed_codecs_.push_back("vorbis");
- mixed_codecs_.push_back("avc1");
+ mixed_codecs_.push_back("barvideo");
SetRendererClientForTesting(&content_renderer_client_);
}
@@ -155,15 +141,14 @@ class KeySystemsTest : public testing::Test {
return vp8_and_vorbis_codecs_;
}
- const CodecVector& avc1_codec() const { return avc1_codec_; }
- const CodecVector& avc1_extended_codec() const {
- return avc1_extended_codec_;
+ const CodecVector& barvideo_codec() const { return barvideo_codec_; }
+ const CodecVector& barvideo_extended_codec() const {
+ return barvideo_extended_codec_;
}
- const CodecVector& avc1_dot_codec() const { return avc1_dot_codec_; }
- const CodecVector& avc2_codec() const { return avc2_codec_; }
- const CodecVector& aac_codec() const { return aac_codec_; }
- const CodecVector& avc1_and_aac_codecs() const {
- return avc1_and_aac_codecs_;
+ const CodecVector& barvideo_dot_codec() const { return barvideo_dot_codec_; }
+ const CodecVector& baraudio_codec() const { return baraudio_codec_; }
+ const CodecVector& barvideo_and_baraudio_codecs() const {
+ return barvideo_and_baraudio_codecs_;
}
const CodecVector& unknown_codec() const { return unknown_codec_; }
@@ -178,675 +163,446 @@ class KeySystemsTest : public testing::Test {
CodecVector vorbis_codec_;
CodecVector vp8_and_vorbis_codecs_;
- CodecVector avc1_codec_;
- CodecVector avc1_extended_codec_;
- CodecVector avc1_dot_codec_;
- CodecVector avc2_codec_;
- CodecVector aac_codec_;
- CodecVector avc1_and_aac_codecs_;
+ CodecVector barvideo_codec_;
+ CodecVector barvideo_extended_codec_;
+ CodecVector barvideo_dot_codec_;
+ CodecVector baraudio_codec_;
+ CodecVector barvideo_and_baraudio_codecs_;
CodecVector unknown_codec_;
CodecVector mixed_codecs_;
- ContentRendererClient content_renderer_client_;
+ TestContentRendererClient content_renderer_client_;
};
-TEST_F(KeySystemsTest, ClearKey_Basic) {
- EXPECT_TRUE(IsConcreteSupportedKeySystem(WebString::fromUTF8(kClearKey)));
- EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), kClearKey));
+// TODO(ddorwin): Consider moving GetUUID() into these tests or moving
+// GetPepperType() calls out to their own test.
- // Not yet out from behind the vendor prefix.
- EXPECT_FALSE(IsConcreteSupportedKeySystem("org.w3.clearkey"));
+TEST_F(KeySystemsTest, ClearKeyNotRegistered) {
+ // Not registered in content.
+ EXPECT_FALSE(IsConcreteSupportedKeySystem(WebString::fromUTF8(kClearKey)));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), "org.w3.clearkey"));
+ kVideoWebM, no_codecs(), kClearKey));
EXPECT_STREQ("ClearKey",
KeySystemNameForUMA(WebString::fromUTF8(kClearKey)).c_str());
xhwang 2013/09/11 20:38:55 This pattern is used in a lot of times, worth wrap
ddorwin 2013/09/12 22:35:40 I want to keep the comparison here for failure rea
- EXPECT_TRUE(CanUseAesDecryptor(kClearKey));
-#if defined(ENABLE_PEPPER_CDMS)
- std::string type;
- EXPECT_DEBUG_DEATH(type = GetPepperType(kClearKey),
- "webkit-org.w3.clearkey is not Pepper-based");
- EXPECT_TRUE(type.empty());
-#endif
+ // Not yet out from behind the vendor prefix.
+ EXPECT_FALSE(IsConcreteSupportedKeySystem("org.w3.clearkey"));
xhwang 2013/09/11 20:38:55 I see both IsConcreteSupportedKeySystem("org.w3.
ddorwin 2013/09/12 22:35:40 The difference was unprefixed vs. prefixed. I've n
+ EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoWebM, no_codecs(), "org.w3.clearkey"));
+ EXPECT_STREQ(
+ "Unknown",
+ KeySystemNameForUMA(WebString::fromUTF8("org.w3.clearkey")).c_str());
+
xhwang 2013/09/11 20:38:55 drop empty line.
ddorwin 2013/09/12 22:35:40 Done.
}
-TEST_F(KeySystemsTest, ClearKey_Parent) {
- const char* const kClearKeyParent = "webkit-org.w3";
+TEST_F(KeySystemsTest, Basic_UnrecognizedKeySystem) {
+ static const char* const kUnrecognized = "org.example.unrecognized";
- // The parent should be supported but is not. See http://crbug.com/164303.
EXPECT_FALSE(
- IsConcreteSupportedKeySystem(WebString::fromUTF8(kClearKeyParent)));
+ IsConcreteSupportedKeySystem(WebString::fromUTF8(kUnrecognized)));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), kClearKeyParent));
+ kVideoWebM, no_codecs(), kUnrecognized));
+
+ EXPECT_STREQ(
+ "Unknown",
+ KeySystemNameForUMA(WebString::fromUTF8(kUnrecognized)).c_str());
+
+ bool can_use = false;
+ EXPECT_DEBUG_DEATH(can_use = CanUseAesDecryptor(kUnrecognized),
+ "org.example.unrecognized is not a known concrete system");
+ EXPECT_FALSE(can_use);
- // The parent is not supported for most things.
- EXPECT_STREQ("Unknown",
- KeySystemNameForUMA(WebString::fromUTF8(kClearKeyParent)).c_str());
- bool result = false;
- EXPECT_DEBUG_DEATH_PORTABLE(result = CanUseAesDecryptor(kClearKeyParent),
- "webkit-org.w3 is not a known concrete system");
- EXPECT_FALSE(result);
#if defined(ENABLE_PEPPER_CDMS)
std::string type;
- EXPECT_DEBUG_DEATH(type = GetPepperType(kClearKeyParent),
- "webkit-org.w3 is not a known concrete system");
+ EXPECT_DEBUG_DEATH(type = GetPepperType(kUnrecognized),
+ "org.example.unrecognized is not a known concrete system");
EXPECT_TRUE(type.empty());
#endif
}
-TEST_F(KeySystemsTest, ClearKey_IsSupportedKeySystem_InvalidVariants) {
- // Case sensitive.
- EXPECT_FALSE(IsConcreteSupportedKeySystem("webkit-org.w3.ClEaRkEy"));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), "webkit-org.w3.ClEaRkEy"));
-
- // TLDs are not allowed.
- EXPECT_FALSE(IsConcreteSupportedKeySystem("webkit-org."));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), "webkit-org."));
- EXPECT_FALSE(IsConcreteSupportedKeySystem("webkit-org"));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), "webkit-org"));
- EXPECT_FALSE(IsConcreteSupportedKeySystem("org."));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), "org."));
- EXPECT_FALSE(IsConcreteSupportedKeySystem("org"));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), "org"));
-
- // Extra period.
- EXPECT_FALSE(IsConcreteSupportedKeySystem("webkit-org.w3."));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), "webkit-org.w3."));
-
- // Incomplete.
- EXPECT_FALSE(IsConcreteSupportedKeySystem("webkit-org.w3.clearke"));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), "webkit-org.w3.clearke"));
-
- // Extra character.
- EXPECT_FALSE(IsConcreteSupportedKeySystem("webkit-org.w3.clearkeyz"));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), "webkit-org.w3.clearkeyz"));
-
- // There are no child key systems for Clear Key.
- EXPECT_FALSE(IsConcreteSupportedKeySystem("webkit-org.w3.clearkey.foo"));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), "webkit-org.w3.clearkey.foo"));
-}
+TEST_F(KeySystemsTest, Basic_UsesAesDecryptor) {
+ EXPECT_TRUE(IsConcreteSupportedKeySystem(WebString::fromUTF8(kClear)));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoWebM, no_codecs(), kClear));
-TEST_F(KeySystemsTest, IsSupportedKeySystemWithMediaMimeType_ClearKey_NoType) {
- // These two should be true. See http://crbug.com/164303.
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- std::string(), no_codecs(), kClearKey));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- std::string(), no_codecs(), "webkit-org.w3"));
+ // No UMA value for this test key system.
+ EXPECT_STREQ("Unknown",
+ KeySystemNameForUMA(WebString::fromUTF8(kClear)).c_str());
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- std::string(), no_codecs(), "webkit-org.w3.foo"));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- std::string(), no_codecs(), "webkit-org.w3.clearkey.foo"));
+ EXPECT_TRUE(CanUseAesDecryptor(kClear));
+#if defined(ENABLE_PEPPER_CDMS)
+ std::string type;
+ EXPECT_DEBUG_DEATH(type = GetPepperType(kClear),
+ "org.example.clear is not Pepper-based");
+ EXPECT_TRUE(type.empty());
+#endif
}
-TEST_F(KeySystemsTest, IsSupportedKeySystemWithMediaMimeType_ClearKey_WebM) {
+TEST_F(KeySystemsTest,
+ IsSupportedKeySystemWithMediaMimeType_UsesAesDecryptor_TypesContainer1) {
// Valid video types.
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), kClearKey));
- // The parent should be supported but is not. See http://crbug.com/164303.
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), "webkit-org.w3"));
+ kVideoWebM, vp8_codec(), kClear));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", vp8_codec(), kClearKey));
+ kVideoWebM, vp80_codec(), kClear));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", vp80_codec(), kClearKey));
+ kVideoWebM, vp8_and_vorbis_codecs(), kClear));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", vp8_and_vorbis_codecs(), kClearKey));
- EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", vorbis_codec(), kClearKey));
+ kVideoWebM, vorbis_codec(), kClear));
// Non-Webm codecs.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", avc1_codec(), kClearKey));
+ kVideoWebM, barvideo_codec(), kClear));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", unknown_codec(), kClearKey));
+ kVideoWebM, unknown_codec(), kClear));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", mixed_codecs(), kClearKey));
+ kVideoWebM, mixed_codecs(), kClear));
// Valid audio types.
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
- "audio/webm", no_codecs(), kClearKey));
+ kAudioWebM, no_codecs(), kClear));
EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
- "audio/webm", vorbis_codec(), kClearKey));
+ kAudioWebM, vorbis_codec(), kClear));
// Non-audio codecs.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "audio/webm", vp8_codec(), kClearKey));
+ kAudioWebM, vp8_codec(), kClear));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "audio/webm", vp8_and_vorbis_codecs(), kClearKey));
+ kAudioWebM, vp8_and_vorbis_codecs(), kClear));
// Non-Webm codec.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "audio/webm", aac_codec(), kClearKey));
+ kAudioWebM, baraudio_codec(), kClear));
}
-TEST_F(KeySystemsTest, IsSupportedKeySystemWithMediaMimeType_ClearKey_MP4) {
- // Valid video types.
- EXPECT_PROPRIETARY(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", no_codecs(), kClearKey));
- // The parent should be supported but is not. See http://crbug.com/164303.
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", no_codecs(), "webkit-org.w3"));
- EXPECT_PROPRIETARY(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", avc1_codec(), kClearKey));
- EXPECT_PROPRIETARY(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", avc1_and_aac_codecs(), kClearKey));
- EXPECT_PROPRIETARY(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", aac_codec(), kClearKey));
-
- // Extended codecs fail because this is handled by SimpleWebMimeRegistryImpl.
- // They should really pass canPlayType().
+// No parent is registered for Clear.
+TEST_F(KeySystemsTest, Parent_NoParentRegistered) {
+ EXPECT_FALSE(IsConcreteSupportedKeySystem(WebString::fromUTF8(kClearParent)));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", avc1_extended_codec(), kClearKey));
+ kVideoWebM, no_codecs(), kClearParent));
- // Invalid codec format.
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", avc1_dot_codec(), kClearKey));
-
- // Non-MP4 codecs.
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", avc2_codec(), kClearKey));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", vp8_codec(), kClearKey));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", unknown_codec(), kClearKey));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", mixed_codecs(), kClearKey));
-
- // Valid audio types.
- EXPECT_PROPRIETARY(IsSupportedKeySystemWithMediaMimeType(
- "audio/mp4", no_codecs(), kClearKey));
- EXPECT_PROPRIETARY(IsSupportedKeySystemWithMediaMimeType(
- "audio/mp4", aac_codec(), kClearKey));
-
- // Non-audio codecs.
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "audio/mp4", avc1_codec(), kClearKey));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "audio/mp4", avc1_and_aac_codecs(), kClearKey));
-
- // Non-MP4 codec.
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "audio/mp4", vorbis_codec(), kClearKey));
-}
-
-//
-// External Clear Key
-//
-
-TEST_F(KeySystemsTest, ExternalClearKey_Basic) {
- EXPECT_ECK(
- IsConcreteSupportedKeySystem(WebString::fromUTF8(kExternalClearKey)));
- EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), kExternalClearKey));
-
- // External Clear Key does not have a UMA name because it is for testing.
+ // The parent is not supported for most things.
EXPECT_STREQ(
"Unknown",
- KeySystemNameForUMA(WebString::fromUTF8(kExternalClearKey)).c_str());
-
-#if defined(ENABLE_PEPPER_CDMS)
- EXPECT_FALSE(CanUseAesDecryptor(kExternalClearKey));
- EXPECT_STREQ("application/x-ppapi-clearkey-cdm",
- GetPepperType(kExternalClearKey).c_str());
-#else
- bool result = false;
- EXPECT_DEBUG_DEATH_PORTABLE(
- result = CanUseAesDecryptor(kExternalClearKey),
- "org.chromium.externalclearkey is not a known concrete system");
- EXPECT_FALSE(result);
-#endif
-}
-
-TEST_F(KeySystemsTest, ExternalClearKey_Parent) {
- const char* const kExternalClearKeyParent = "org.chromium";
-
- // The parent should be supported but is not. See http://crbug.com/164303.
- EXPECT_FALSE(IsConcreteSupportedKeySystem(
- WebString::fromUTF8(kExternalClearKeyParent)));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), kExternalClearKeyParent));
-
- // The parent is not supported for most things.
- EXPECT_STREQ("Unknown",
- KeySystemNameForUMA(
- WebString::fromUTF8(kExternalClearKeyParent)).c_str());
+ KeySystemNameForUMA(WebString::fromUTF8(kClearParent)).c_str());
bool result = false;
- EXPECT_DEBUG_DEATH_PORTABLE(
- result = CanUseAesDecryptor(kExternalClearKeyParent),
- "org.chromium is not a known concrete system");
+ EXPECT_DEBUG_DEATH_PORTABLE(result = CanUseAesDecryptor(kClearParent),
+ "org.example is not a known concrete system");
xhwang 2013/09/11 20:38:55 nit: is there a way to use kClearParent in the log
ddorwin 2013/09/12 22:35:40 I think it would require #defining the constant so
EXPECT_FALSE(result);
#if defined(ENABLE_PEPPER_CDMS)
std::string type;
- EXPECT_DEBUG_DEATH(type = GetPepperType(kExternalClearKeyParent),
- "org.chromium is not a known concrete system");
+ EXPECT_DEBUG_DEATH(type = GetPepperType(kClearParent),
+ "org.example is not a known concrete system");
EXPECT_TRUE(type.empty());
#endif
}
-TEST_F(KeySystemsTest, ExternalClearKey_IsSupportedKeySystem_InvalidVariants) {
+TEST_F(KeySystemsTest, IsSupportedKeySystem_InvalidVariants) {
// Case sensitive.
- EXPECT_FALSE(IsConcreteSupportedKeySystem("org.chromium.ExTeRnAlClEaRkEy"));
+ EXPECT_FALSE(
+ IsConcreteSupportedKeySystem(WebString::fromUTF8("org.example.ClEaR")));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(),
- "org.chromium.ExTeRnAlClEaRkEy"));
+ kVideoWebM, no_codecs(), "org.example.ClEaR"));
// TLDs are not allowed.
EXPECT_FALSE(IsConcreteSupportedKeySystem("org."));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), "org."));
- EXPECT_FALSE(IsConcreteSupportedKeySystem("org"));
+ kVideoWebM, no_codecs(), "org."));
+ EXPECT_FALSE(IsConcreteSupportedKeySystem("com"));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), "org"));
+ kVideoWebM, no_codecs(), "com"));
// Extra period.
- EXPECT_FALSE(IsConcreteSupportedKeySystem("org.chromium."));
+ EXPECT_FALSE(IsConcreteSupportedKeySystem("org.example."));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), "org.chromium."));
+ kVideoWebM, no_codecs(), "org.example."));
// Incomplete.
- EXPECT_FALSE(IsConcreteSupportedKeySystem("org.chromium.externalclearke"));
+ EXPECT_FALSE(IsConcreteSupportedKeySystem("org.example.clea"));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(),
- "org.chromium.externalclearke"));
+ kVideoWebM, no_codecs(), "org.example.clea"));
// Extra character.
- EXPECT_FALSE(IsConcreteSupportedKeySystem("org.chromium.externalclearkeyz"));
+ EXPECT_FALSE(IsConcreteSupportedKeySystem("org.example.clearz"));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(),
- "org.chromium.externalclearkeyz"));
+ kVideoWebM, no_codecs(), "org.example.clearz"));
// There are no child key systems for Clear Key.
- EXPECT_FALSE(
- IsConcreteSupportedKeySystem("org.chromium.externalclearkey.foo"));
+ EXPECT_FALSE(IsConcreteSupportedKeySystem("org.example.clear.foo"));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(),
- "org.chromium.externalclearkey.foo"));
+ kVideoWebM, no_codecs(), "org.example.clear.foo"));
}
-TEST_F(KeySystemsTest,
- IsSupportedKeySystemWithMediaMimeType_ExternalClearKey_NoType) {
+TEST_F(KeySystemsTest, IsSupportedKeySystemWithMediaMimeType_NoType) {
// These two should be true. See http://crbug.com/164303.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- std::string(), no_codecs(), kExternalClearKey));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- std::string(), no_codecs(), "org.chromium"));
-
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- std::string(), no_codecs(), "org.chromium.foo"));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- std::string(), no_codecs(), "org.chromium.externalclearkey.foo"));
-}
-
-TEST_F(KeySystemsTest,
- IsSupportedKeySystemWithMediaMimeType_ExternalClearKey_WebM) {
- // Valid video types.
- EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), kExternalClearKey));
- // The parent should be supported but is not. See http://crbug.com/164303.
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), "org.chromium"));
- EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", vp8_codec(), kExternalClearKey));
- EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", vp80_codec(), kExternalClearKey));
- EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", vp8_and_vorbis_codecs(), kExternalClearKey));
- EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", vorbis_codec(), kExternalClearKey));
-
- // Non-Webm codecs.
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", avc1_codec(), kExternalClearKey));
+ std::string(), no_codecs(), kClear));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", unknown_codec(), kExternalClearKey));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", mixed_codecs(), kExternalClearKey));
+ std::string(), no_codecs(), kClearParent));
- // Valid audio types.
- EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
- "audio/webm", no_codecs(), kExternalClearKey));
- EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
- "audio/webm", vorbis_codec(), kExternalClearKey));
-
- // Non-audio codecs.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "audio/webm", vp8_codec(), kExternalClearKey));
+ std::string(), no_codecs(), "org.example.foo"));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "audio/webm", vp8_and_vorbis_codecs(), kExternalClearKey));
-
- // Non-Webm codec.
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "audio/webm", aac_codec(), kExternalClearKey));
+ std::string(), no_codecs(), "org.example.clear.foo"));
}
+// Tests the second registered container type.
+// TODO(ddorwin): Combined with TypesContainer1 in a future CL.
TEST_F(KeySystemsTest,
- IsSupportedKeySystemWithMediaMimeType_ExternalClearKey_MP4) {
+ IsSupportedKeySystemWithMediaMimeType_UsesAesDecryptor_TypesContainer2) {
// Valid video types.
- EXPECT_ECKPROPRIETARY(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", no_codecs(), kExternalClearKey));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoFoo, no_codecs(), kClear));
// The parent should be supported but is not. See http://crbug.com/164303.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", no_codecs(), "org.chromium"));
- EXPECT_ECKPROPRIETARY(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", avc1_codec(), kExternalClearKey));
- EXPECT_ECKPROPRIETARY(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", avc1_and_aac_codecs(), kExternalClearKey));
- EXPECT_ECKPROPRIETARY(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", aac_codec(), kExternalClearKey));
+ kVideoFoo, no_codecs(), kClearParent));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoFoo, barvideo_codec(), kClear));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoFoo, barvideo_and_baraudio_codecs(), kClear));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoFoo, baraudio_codec(), kClear));
// Extended codecs fail because this is handled by SimpleWebMimeRegistryImpl.
// They should really pass canPlayType().
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", avc1_extended_codec(), kExternalClearKey));
+ kVideoFoo, barvideo_extended_codec(), kClear));
// Invalid codec format.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", avc1_dot_codec(), kExternalClearKey));
+ kVideoFoo, barvideo_dot_codec(), kClear));
- // Non-MP4 codecs.
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", avc2_codec(), kExternalClearKey));
+ // Non-container2 codec.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", vp8_codec(), kExternalClearKey));
+ kVideoFoo, vp8_codec(), kClear));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", unknown_codec(), kExternalClearKey));
+ kVideoFoo, unknown_codec(), kClear));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", mixed_codecs(), kExternalClearKey));
+ kVideoFoo, mixed_codecs(), kClear));
// Valid audio types.
- EXPECT_ECKPROPRIETARY(IsSupportedKeySystemWithMediaMimeType(
- "audio/mp4", no_codecs(), kExternalClearKey));
- EXPECT_ECKPROPRIETARY(IsSupportedKeySystemWithMediaMimeType(
- "audio/mp4", aac_codec(), kExternalClearKey));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kAudioFoo, no_codecs(), kClear));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kAudioFoo, baraudio_codec(), kClear));
// Non-audio codecs.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "audio/mp4", avc1_codec(), kExternalClearKey));
+ kAudioFoo, barvideo_codec(), kClear));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "audio/mp4", avc1_and_aac_codecs(), kExternalClearKey));
+ kAudioFoo, barvideo_and_baraudio_codecs(), kClear));
- // Non-MP4 codec.
+ // Non-container2 codec.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "audio/mp4", vorbis_codec(), kExternalClearKey));
+ kAudioFoo, vorbis_codec(), kClear));
}
//
-// Widevine
+// Non-AesDecryptor-based key system.
//
-TEST_F(KeySystemsTest, Widevine_Basic) {
-#if defined(WIDEVINE_CDM_AVAILABLE) && \
- defined(DISABLE_WIDEVINE_CDM_CANPLAYTYPE)
- EXPECT_TRUE(
- IsConcreteSupportedKeySystem(WebString::fromUTF8(kWidevineAlpha)));
-#else
- EXPECT_WV(IsConcreteSupportedKeySystem(WebString::fromUTF8(kWidevineAlpha)));
-#endif
-
- EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), kWidevineAlpha));
-
-#if defined(WIDEVINE_CDM_AVAILABLE)
- const char* const kWidevineUmaName = "Widevine";
-#else
- const char* const kWidevineUmaName = "Unknown";
-#endif
- EXPECT_STREQ(
- kWidevineUmaName,
- KeySystemNameForUMA(WebString::fromUTF8(kWidevineAlpha)).c_str());
-
-#if defined(WIDEVINE_CDM_AVAILABLE)
- EXPECT_FALSE(CanUseAesDecryptor(kWidevineAlpha));
-#else
- bool result = false;
- EXPECT_DEBUG_DEATH_PORTABLE(
- result = CanUseAesDecryptor(kWidevineAlpha),
- "com.widevine.alpha is not a known concrete system");
- EXPECT_FALSE(result);
-#endif // defined(WIDEVINE_CDM_AVAILABLE)
+TEST_F(KeySystemsTest, Basic_ExternalDecryptor) {
+ EXPECT_TRUE(IsConcreteSupportedKeySystem(WebString::fromUTF8(kTest)));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoWebM, no_codecs(), kTest));
+ EXPECT_FALSE(CanUseAesDecryptor(kTest));
#if defined(ENABLE_PEPPER_CDMS)
-#if defined(WIDEVINE_CDM_AVAILABLE)
- EXPECT_STREQ("application/x-ppapi-widevine-cdm",
- GetPepperType(kWidevineAlpha).c_str());
-#else
- std::string type;
- EXPECT_DEBUG_DEATH(type = GetPepperType(kWidevineAlpha),
- "com.widevine.alpha is not a known concrete system");
- EXPECT_TRUE(type.empty());
-#endif // defined(WIDEVINE_CDM_AVAILABLE)
+ EXPECT_STREQ("application/x-ppapi-test-cdm",
+ GetPepperType(kTest).c_str());
#endif // defined(ENABLE_PEPPER_CDMS)
}
-TEST_F(KeySystemsTest, Widevine_Parent) {
+TEST_F(KeySystemsTest, Parent_ParentRegistered) {
// The parent system is not a concrete system but is supported.
- EXPECT_FALSE(IsConcreteSupportedKeySystem(WebString::fromUTF8(kWidevine)));
- EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), kWidevine));
+ EXPECT_FALSE(IsConcreteSupportedKeySystem(WebString::fromUTF8(kTestParent)));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoWebM, no_codecs(), kTestParent));
// The parent is not supported for most things.
- EXPECT_STREQ("Unknown",
- KeySystemNameForUMA(WebString::fromUTF8(kWidevine)).c_str());
+ EXPECT_STREQ(
+ "Unknown",
+ KeySystemNameForUMA(WebString::fromUTF8(kTestParent)).c_str());
bool result = false;
- EXPECT_DEBUG_DEATH_PORTABLE(result = CanUseAesDecryptor(kWidevine),
- "com.widevine is not a known concrete system");
+ EXPECT_DEBUG_DEATH_PORTABLE(result = CanUseAesDecryptor(kTestParent),
+ "com.example is not a known concrete system");
EXPECT_FALSE(result);
#if defined(ENABLE_PEPPER_CDMS)
std::string type;
- EXPECT_DEBUG_DEATH(type = GetPepperType(kWidevine),
- "com.widevine is not a known concrete system");
+ EXPECT_DEBUG_DEATH(type = GetPepperType(kTestParent),
+ "com.example is not a known concrete system");
EXPECT_TRUE(type.empty());
#endif
}
-TEST_F(KeySystemsTest, Widevine_IsSupportedKeySystem_InvalidVariants) {
- // Case sensitive.
- EXPECT_FALSE(IsConcreteSupportedKeySystem("com.widevine.AlPhA"));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), "com.widevine.AlPhA"));
-
- // TLDs are not allowed.
- EXPECT_FALSE(IsConcreteSupportedKeySystem("com."));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), "com."));
- EXPECT_FALSE(IsConcreteSupportedKeySystem("com"));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), "com"));
-
- // Extra period.
- EXPECT_FALSE(IsConcreteSupportedKeySystem("com.widevine."));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), "com.widevine."));
-
- // Incomplete.
- EXPECT_FALSE(IsConcreteSupportedKeySystem("com.widevine.alph"));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), "com.widevine.alph"));
-
- // Extra character.
- EXPECT_FALSE(IsConcreteSupportedKeySystem("com.widevine.alphab"));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), "com.widevine.alphab"));
-
- // There are no child key systems for Widevine Alpha.
- EXPECT_FALSE(IsConcreteSupportedKeySystem("com.widevine.alpha.foo"));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), "com.widevine.alpha.foo"));
-}
-
-TEST_F(KeySystemsTest, IsSupportedKeySystemWithMediaMimeType_Widevine_NoType) {
- // These two should be true. See http://crbug.com/164303.
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- std::string(), no_codecs(), kWidevineAlpha));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- std::string(), no_codecs(), kWidevine));
-
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- std::string(), no_codecs(), "com.widevine.foo"));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- std::string(), no_codecs(), "com.widevine.alpha.foo"));
-}
-
-TEST_F(KeySystemsTest, IsSupportedKeySystemWithMediaMimeType_Widevine_WebM) {
+TEST_F(
+ KeySystemsTest,
+ IsSupportedKeySystemWithMediaMimeType_ExternalDecryptor_TypesContainer1) {
// Valid video types.
- EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), kWidevineAlpha));
- EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", vp8_codec(), kWidevineAlpha));
- EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", vp80_codec(), kWidevineAlpha));
- EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", vp8_and_vorbis_codecs(), kWidevineAlpha));
- EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", vorbis_codec(), kWidevineAlpha));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoWebM, no_codecs(), kTest));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoWebM, vp8_codec(), kTest));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoWebM, vp80_codec(), kTest));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoWebM, vp8_and_vorbis_codecs(), kTest));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoWebM, vorbis_codec(), kTest));
// Valid video types - parent key system.
- EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", no_codecs(), kWidevine));
- EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", vp8_codec(), kWidevine));
- EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", vp80_codec(), kWidevine));
- EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", vp8_and_vorbis_codecs(), kWidevine));
- EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", vorbis_codec(), kWidevine));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoWebM, no_codecs(), kTestParent));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoWebM, vp8_codec(), kTestParent));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoWebM, vp80_codec(), kTestParent));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoWebM, vp8_and_vorbis_codecs(), kTestParent));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoWebM, vorbis_codec(), kTestParent));
// Non-Webm codecs.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", avc1_codec(), kWidevineAlpha));
+ kVideoWebM, barvideo_codec(), kTest));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", unknown_codec(), kWidevineAlpha));
+ kVideoWebM, unknown_codec(), kTest));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/webm", mixed_codecs(), kWidevineAlpha));
+ kVideoWebM, mixed_codecs(), kTest));
// Valid audio types.
- EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
- "audio/webm", no_codecs(), kWidevineAlpha));
- EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
- "audio/webm", vorbis_codec(), kWidevineAlpha));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kAudioWebM, no_codecs(), kTest));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kAudioWebM, vorbis_codec(), kTest));
// Valid audio types - parent key system.
- EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
- "audio/webm", no_codecs(), kWidevine));
- EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
- "audio/webm", vorbis_codec(), kWidevine));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kAudioWebM, no_codecs(), kTestParent));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kAudioWebM, vorbis_codec(), kTestParent));
// Non-audio codecs.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "audio/webm", vp8_codec(), kWidevineAlpha));
+ kAudioWebM, vp8_codec(), kTest));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "audio/webm", vp8_and_vorbis_codecs(), kWidevineAlpha));
+ kAudioWebM, vp8_and_vorbis_codecs(), kTest));
// Non-Webm codec.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "audio/webm", aac_codec(), kWidevineAlpha));
+ kAudioWebM, baraudio_codec(), kTest));
}
-TEST_F(KeySystemsTest, IsSupportedKeySystemWithMediaMimeType_Widevine_MP4) {
+TEST_F(
+ KeySystemsTest,
+ IsSupportedKeySystemWithMediaMimeType_ExternalDecryptor_TypesContainer2) {
// Valid video types.
- EXPECT_WVCENC(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", no_codecs(), kWidevineAlpha));
- EXPECT_WVAVC1(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", avc1_codec(), kWidevineAlpha));
- EXPECT_WVAVC1AAC(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", avc1_and_aac_codecs(), kWidevineAlpha));
- EXPECT_WVAVC1AAC(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", aac_codec(), kWidevineAlpha));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoFoo, no_codecs(), kTest));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoFoo, barvideo_codec(), kTest));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoFoo, barvideo_and_baraudio_codecs(), kTest));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoFoo, baraudio_codec(), kTest));
// Valid video types - parent key system.
- EXPECT_WVCENC(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", no_codecs(), kWidevine));
- EXPECT_WVAVC1(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", avc1_codec(), kWidevine));
- EXPECT_WVAVC1AAC(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", avc1_and_aac_codecs(), kWidevine));
- EXPECT_WVAVC1AAC(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", aac_codec(), kWidevine));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoFoo, no_codecs(), kTestParent));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoFoo, barvideo_codec(), kTestParent));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoFoo, barvideo_and_baraudio_codecs(), kTestParent));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kVideoFoo, baraudio_codec(), kTestParent));
// Extended codecs fail because this is handled by SimpleWebMimeRegistryImpl.
// They should really pass canPlayType().
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", avc1_extended_codec(), kWidevineAlpha));
+ kVideoFoo, barvideo_extended_codec(), kTest));
// Invalid codec format.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", avc1_dot_codec(), kWidevineAlpha));
+ kVideoFoo, barvideo_dot_codec(), kTest));
- // Non-MP4 codecs.
+ // Non-container2 codecs.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", avc2_codec(), kWidevineAlpha));
+ kVideoFoo, vp8_codec(), kTest));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", vp8_codec(), kWidevineAlpha));
+ kVideoFoo, unknown_codec(), kTest));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", unknown_codec(), kWidevineAlpha));
- EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "video/mp4", mixed_codecs(), kWidevineAlpha));
+ kVideoFoo, mixed_codecs(), kTest));
// Valid audio types.
- EXPECT_WVCENC(IsSupportedKeySystemWithMediaMimeType(
- "audio/mp4", no_codecs(), kWidevineAlpha));
- EXPECT_WVAAC(IsSupportedKeySystemWithMediaMimeType(
- "audio/mp4", aac_codec(), kWidevineAlpha));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kAudioFoo, no_codecs(), kTest));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kAudioFoo, baraudio_codec(), kTest));
// Valid audio types - parent key system.
- EXPECT_WVCENC(IsSupportedKeySystemWithMediaMimeType(
- "audio/mp4", no_codecs(), kWidevine));
- EXPECT_WVAAC(IsSupportedKeySystemWithMediaMimeType(
- "audio/mp4", aac_codec(), kWidevine));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kAudioFoo, no_codecs(), kTestParent));
+ EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType(
+ kAudioFoo, baraudio_codec(), kTestParent));
// Non-audio codecs.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "audio/mp4", avc1_codec(), kWidevineAlpha));
+ kAudioFoo, barvideo_codec(), kTest));
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "audio/mp4", avc1_and_aac_codecs(), kWidevineAlpha));
+ kAudioFoo, barvideo_and_baraudio_codecs(), kTest));
- // Non-MP4 codec.
+ // Non-container2 codec.
EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
- "audio/mp4", vorbis_codec(), kWidevineAlpha));
+ kAudioFoo, vorbis_codec(), kTest));
}
#if defined(OS_ANDROID)
-TEST_F(KeySystemsTest, GetUUID_Widevine) {
-#if defined(WIDEVINE_CDM_AVAILABLE)
- std::vector<uint8> uuid = GetUUID(kWidevineAlpha);
+TEST_F(KeySystemsTest, GetUUID_RegisteredExternalDecryptor) {
+ std::vector<uint8> uuid = GetUUID(kTest);
EXPECT_EQ(16u, uuid.size());
- EXPECT_EQ(0xED, uuid[15]);
-#else
- std::vector<uint8> uuid;
- EXPECT_DEBUG_DEATH_PORTABLE(
- uuid = GetUUID(kWidevineAlpha),
- "com.widevine.alpha is not a known concrete system");
- EXPECT_TRUE(uuid.empty());
-#endif
+ EXPECT_EQ(0xef, uuid[15]);
+}
+
+TEST_F(KeySystemsTest, GetUUID_RegisteredAesDecryptor) {
+ EXPECT_TRUE(GetUUID(kClear).empty());
}
TEST_F(KeySystemsTest, GetUUID_Unrecognized) {
std::vector<uint8> uuid;
- EXPECT_DEBUG_DEATH_PORTABLE(uuid = GetUUID(kWidevine),
- "com.widevine is not a known concrete system");
+ EXPECT_DEBUG_DEATH_PORTABLE(uuid = GetUUID(kTestParent),
+ "com.example is not a known concrete system");
EXPECT_TRUE(uuid.empty());
- EXPECT_TRUE(GetUUID(kClearKey).empty());
-
EXPECT_DEBUG_DEATH_PORTABLE(uuid = GetUUID(""), " is not a concrete system");
EXPECT_TRUE(uuid.empty());
}
#endif // defined(OS_ANDROID)
+TEST_F(KeySystemsTest, KeySystemNameForUMA) {
+ EXPECT_STREQ("ClearKey",
+ KeySystemNameForUMA(WebString::fromUTF8(kClearKey)).c_str());
+ // Unprefixed is not yet supported.
+ EXPECT_STREQ(
+ "Unknown",
+ KeySystemNameForUMA(WebString::fromUTF8("org.w3.clearkey")).c_str());
+
+ // External Clear Key never has a UMA name.
+ EXPECT_STREQ(
+ "Unknown",
+ KeySystemNameForUMA(WebString::fromUTF8(kExternalClearKey)).c_str());
+
+#if defined(WIDEVINE_CDM_AVAILABLE)
+ const char* const kTestWidevineUmaName = "Widevine";
+#else
+ const char* const kTestWidevineUmaName = "Unknown";
+#endif
+ EXPECT_STREQ(
+ kTestWidevineUmaName,
+ KeySystemNameForUMA(WebString::fromUTF8("com.widevine.alpha")).c_str());
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698