OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <string> | 5 #include <string> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "content/public/common/content_client.h" | 8 #include "content/public/common/content_client.h" |
9 #include "content/public/renderer/content_renderer_client.h" | 9 #include "content/public/renderer/content_renderer_client.h" |
10 #include "content/public/renderer/key_system_info.h" | 10 #include "content/public/renderer/key_system_info.h" |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
59 | 59 |
60 namespace content { | 60 namespace content { |
61 | 61 |
62 class TestContentRendererClient : public ContentRendererClient { | 62 class TestContentRendererClient : public ContentRendererClient { |
63 virtual void AddKeySystems( | 63 virtual void AddKeySystems( |
64 std::vector<content::KeySystemInfo>* key_systems) OVERRIDE; | 64 std::vector<content::KeySystemInfo>* key_systems) OVERRIDE; |
65 }; | 65 }; |
66 | 66 |
67 void TestContentRendererClient::AddKeySystems( | 67 void TestContentRendererClient::AddKeySystems( |
68 std::vector<content::KeySystemInfo>* key_systems) { | 68 std::vector<content::KeySystemInfo>* key_systems) { |
69 #if defined(OS_ANDROID) | |
70 static const uint8 kExternalUuid[16] = { | |
71 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF, | |
72 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF }; | |
73 #endif | |
74 | |
75 KeySystemInfo aes(kUsesAes); | 69 KeySystemInfo aes(kUsesAes); |
76 | 70 |
77 aes.supported_types.push_back(std::make_pair(kAudioWebM, kWebMAudioCodecs)); | 71 aes.supported_types.push_back(std::make_pair(kAudioWebM, kWebMAudioCodecs)); |
78 aes.supported_types.push_back(std::make_pair(kVideoWebM, kWebMVideoCodecs)); | 72 aes.supported_types.push_back(std::make_pair(kVideoWebM, kWebMVideoCodecs)); |
79 | 73 |
80 aes.supported_types.push_back(std::make_pair(kAudioFoo, kFooAudioCodecs)); | 74 aes.supported_types.push_back(std::make_pair(kAudioFoo, kFooAudioCodecs)); |
81 aes.supported_types.push_back(std::make_pair(kVideoFoo, kFooVideoCodecs)); | 75 aes.supported_types.push_back(std::make_pair(kVideoFoo, kFooVideoCodecs)); |
82 | 76 |
83 aes.use_aes_decryptor = true; | 77 aes.use_aes_decryptor = true; |
84 | 78 |
85 key_systems->push_back(aes); | 79 key_systems->push_back(aes); |
86 | 80 |
87 KeySystemInfo ext(kExternal); | 81 KeySystemInfo ext(kExternal); |
88 | 82 |
89 ext.supported_types.push_back(std::make_pair(kAudioWebM, kWebMAudioCodecs)); | 83 ext.supported_types.push_back(std::make_pair(kAudioWebM, kWebMAudioCodecs)); |
90 ext.supported_types.push_back(std::make_pair(kVideoWebM, kWebMVideoCodecs)); | 84 ext.supported_types.push_back(std::make_pair(kVideoWebM, kWebMVideoCodecs)); |
91 | 85 |
92 ext.supported_types.push_back(std::make_pair(kAudioFoo, kFooAudioCodecs)); | 86 ext.supported_types.push_back(std::make_pair(kAudioFoo, kFooAudioCodecs)); |
93 ext.supported_types.push_back(std::make_pair(kVideoFoo, kFooVideoCodecs)); | 87 ext.supported_types.push_back(std::make_pair(kVideoFoo, kFooVideoCodecs)); |
94 | 88 |
95 ext.parent_key_system = kExternalParent; | 89 ext.parent_key_system = kExternalParent; |
96 | 90 |
97 #if defined(ENABLE_PEPPER_CDMS) | 91 #if defined(ENABLE_PEPPER_CDMS) |
98 ext.pepper_type = "application/x-ppapi-external-cdm"; | 92 ext.pepper_type = "application/x-ppapi-external-cdm"; |
99 #elif defined(OS_ANDROID) | |
100 ext.uuid.assign(kExternalUuid, kExternalUuid + arraysize(kExternalUuid)); | |
101 #endif // defined(ENABLE_PEPPER_CDMS) | 93 #endif // defined(ENABLE_PEPPER_CDMS) |
102 | 94 |
103 key_systems->push_back(ext); | 95 key_systems->push_back(ext); |
104 } | 96 } |
105 | 97 |
106 class KeySystemsTest : public testing::Test { | 98 class KeySystemsTest : public testing::Test { |
107 protected: | 99 protected: |
108 KeySystemsTest() { | 100 KeySystemsTest() { |
109 vp8_codec_.push_back("vp8"); | 101 vp8_codec_.push_back("vp8"); |
110 | 102 |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 CodecVector foovideo_and_fooaudio_codecs_; | 179 CodecVector foovideo_and_fooaudio_codecs_; |
188 | 180 |
189 CodecVector unknown_codec_; | 181 CodecVector unknown_codec_; |
190 | 182 |
191 CodecVector mixed_codecs_; | 183 CodecVector mixed_codecs_; |
192 | 184 |
193 TestContentClient test_content_client_; | 185 TestContentClient test_content_client_; |
194 TestContentRendererClient content_renderer_client_; | 186 TestContentRendererClient content_renderer_client_; |
195 }; | 187 }; |
196 | 188 |
197 // TODO(ddorwin): Consider moving GetUUID() into these tests or moving | 189 // TODO(ddorwin): Consider moving GetPepperType() calls out to their own test. |
198 // GetPepperType() calls out to their own test. | |
199 | 190 |
200 TEST_F(KeySystemsTest, EmptyKeySystem) { | 191 TEST_F(KeySystemsTest, EmptyKeySystem) { |
201 EXPECT_FALSE(IsConcreteSupportedKeySystem(std::string())); | 192 EXPECT_FALSE(IsConcreteSupportedKeySystem(std::string())); |
202 EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( | 193 EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( |
203 kVideoWebM, no_codecs(), std::string())); | 194 kVideoWebM, no_codecs(), std::string())); |
204 EXPECT_EQ("Unknown", KeySystemNameForUMA(std::string())); | 195 EXPECT_EQ("Unknown", KeySystemNameForUMA(std::string())); |
205 } | 196 } |
206 | 197 |
207 // Clear Key is the only key system registered in content. | 198 // Clear Key is the only key system registered in content. |
208 TEST_F(KeySystemsTest, ClearKey) { | 199 TEST_F(KeySystemsTest, ClearKey) { |
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
565 EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( | 556 EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( |
566 kAudioFoo, foovideo_codec(), kExternal)); | 557 kAudioFoo, foovideo_codec(), kExternal)); |
567 EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( | 558 EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( |
568 kAudioFoo, foovideo_and_fooaudio_codecs(), kExternal)); | 559 kAudioFoo, foovideo_and_fooaudio_codecs(), kExternal)); |
569 | 560 |
570 // Non-container2 codec. | 561 // Non-container2 codec. |
571 EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( | 562 EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( |
572 kAudioFoo, vorbis_codec(), kExternal)); | 563 kAudioFoo, vorbis_codec(), kExternal)); |
573 } | 564 } |
574 | 565 |
575 #if defined(OS_ANDROID) | |
576 TEST_F(KeySystemsTest, GetUUID_RegisteredExternalDecryptor) { | |
577 std::vector<uint8> uuid = GetUUID(kExternal); | |
578 EXPECT_EQ(16u, uuid.size()); | |
579 EXPECT_EQ(0xef, uuid[15]); | |
580 } | |
581 | |
582 TEST_F(KeySystemsTest, GetUUID_RegisteredAesDecryptor) { | |
583 EXPECT_TRUE(GetUUID(kUsesAes).empty()); | |
584 } | |
585 | |
586 TEST_F(KeySystemsTest, GetUUID_Unrecognized) { | |
587 std::vector<uint8> uuid; | |
588 EXPECT_DEBUG_DEATH_PORTABLE(uuid = GetUUID(kExternalParent), | |
589 "com.example is not a known concrete system"); | |
590 EXPECT_TRUE(uuid.empty()); | |
591 | |
592 EXPECT_DEBUG_DEATH_PORTABLE(uuid = GetUUID(""), " is not a concrete system"); | |
593 EXPECT_TRUE(uuid.empty()); | |
594 } | |
595 #endif // defined(OS_ANDROID) | |
596 | |
597 TEST_F(KeySystemsTest, KeySystemNameForUMA) { | 566 TEST_F(KeySystemsTest, KeySystemNameForUMA) { |
598 EXPECT_EQ("ClearKey", KeySystemNameForUMA(kClearKey)); | 567 EXPECT_EQ("ClearKey", KeySystemNameForUMA(kClearKey)); |
599 // Prefixed is not supported internally. | 568 // Prefixed is not supported internally. |
600 EXPECT_EQ("Unknown", KeySystemNameForUMA(kPrefixedClearKey)); | 569 EXPECT_EQ("Unknown", KeySystemNameForUMA(kPrefixedClearKey)); |
601 | 570 |
602 // External Clear Key never has a UMA name. | 571 // External Clear Key never has a UMA name. |
603 EXPECT_EQ("Unknown", KeySystemNameForUMA(kExternalClearKey)); | 572 EXPECT_EQ("Unknown", KeySystemNameForUMA(kExternalClearKey)); |
604 | 573 |
605 #if defined(WIDEVINE_CDM_AVAILABLE) | 574 #if defined(WIDEVINE_CDM_AVAILABLE) |
606 const char* const kTestWidevineUmaName = "Widevine"; | 575 const char* const kTestWidevineUmaName = "Widevine"; |
607 #else | 576 #else |
608 const char* const kTestWidevineUmaName = "Unknown"; | 577 const char* const kTestWidevineUmaName = "Unknown"; |
609 #endif | 578 #endif |
610 EXPECT_EQ(kTestWidevineUmaName, KeySystemNameForUMA("com.widevine.alpha")); | 579 EXPECT_EQ(kTestWidevineUmaName, KeySystemNameForUMA("com.widevine.alpha")); |
611 } | 580 } |
612 | 581 |
613 } // namespace content | 582 } // namespace content |
OLD | NEW |