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

Side by Side Diff: content/renderer/media/crypto/key_systems_unittest.cc

Issue 23464005: Explicitly register each key system. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review feedback 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/renderer/media/crypto/key_systems.h" 8 #include "content/renderer/media/crypto/key_systems.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "third_party/WebKit/public/platform/WebString.h" 10 #include "third_party/WebKit/public/platform/WebString.h"
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 // Not yet out from behind the vendor prefix. 201 // Not yet out from behind the vendor prefix.
202 EXPECT_FALSE(IsConcreteSupportedKeySystem("org.w3.clearkey")); 202 EXPECT_FALSE(IsConcreteSupportedKeySystem("org.w3.clearkey"));
203 EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( 203 EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
204 "video/webm", no_codecs(), "org.w3.clearkey")); 204 "video/webm", no_codecs(), "org.w3.clearkey"));
205 205
206 EXPECT_STREQ("ClearKey", 206 EXPECT_STREQ("ClearKey",
207 KeySystemNameForUMA(WebString::fromUTF8(kClearKey)).c_str()); 207 KeySystemNameForUMA(WebString::fromUTF8(kClearKey)).c_str());
208 208
209 EXPECT_TRUE(CanUseAesDecryptor(kClearKey)); 209 EXPECT_TRUE(CanUseAesDecryptor(kClearKey));
210 #if defined(ENABLE_PEPPER_CDMS) 210 #if defined(ENABLE_PEPPER_CDMS)
211 EXPECT_TRUE(GetPepperType(kClearKey).empty()); // Does not use Pepper. 211 std::string type;
212 EXPECT_DCHECK_DEATH(type = GetPepperType(kClearKey),
213 "webkit-org.w3.clearkey is not Pepper-based");
214 EXPECT_TRUE(type.empty());
212 #endif 215 #endif
213 } 216 }
214 217
215 TEST_F(KeySystemsTest, ClearKey_Parent) { 218 TEST_F(KeySystemsTest, ClearKey_Parent) {
216 const char* const kClearKeyParent = "webkit-org.w3"; 219 const char* const kClearKeyParent = "webkit-org.w3";
217 220
218 // The parent should be supported but is not. See http://crbug.com/164303. 221 // The parent should be supported but is not. See http://crbug.com/164303.
219 EXPECT_FALSE( 222 EXPECT_FALSE(
220 IsConcreteSupportedKeySystem(WebString::fromUTF8(kClearKeyParent))); 223 IsConcreteSupportedKeySystem(WebString::fromUTF8(kClearKeyParent)));
221 EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( 224 EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
222 "video/webm", no_codecs(), kClearKeyParent)); 225 "video/webm", no_codecs(), kClearKeyParent));
223 226
224 // The parent is not supported for most things. 227 // The parent is not supported for most things.
225 EXPECT_STREQ("Unknown", 228 EXPECT_STREQ("Unknown",
226 KeySystemNameForUMA(WebString::fromUTF8(kClearKeyParent)).c_str()); 229 KeySystemNameForUMA(WebString::fromUTF8(kClearKeyParent)).c_str());
227 EXPECT_FALSE(CanUseAesDecryptor(kClearKeyParent)); 230 bool result = false;
231 EXPECT_DCHECK_DEATH(result = CanUseAesDecryptor(kClearKeyParent),
232 "webkit-org.w3 is not a known concrete system");
233 EXPECT_FALSE(result);
228 #if defined(ENABLE_PEPPER_CDMS) 234 #if defined(ENABLE_PEPPER_CDMS)
229 std::string type; 235 std::string type;
230 EXPECT_DCHECK_DEATH(type = GetPepperType(kClearKeyParent), 236 EXPECT_DCHECK_DEATH(type = GetPepperType(kClearKeyParent),
231 "webkit-org.w3 is not a concrete system"); 237 "webkit-org.w3 is not a known concrete system");
232 EXPECT_TRUE(type.empty()); 238 EXPECT_TRUE(type.empty());
233 #endif 239 #endif
234 } 240 }
235 241
236 TEST_F(KeySystemsTest, ClearKey_IsSupportedKeySystem_InvalidVariants) { 242 TEST_F(KeySystemsTest, ClearKey_IsSupportedKeySystem_InvalidVariants) {
237 // Case sensitive. 243 // Case sensitive.
238 EXPECT_FALSE(IsConcreteSupportedKeySystem("webkit-org.w3.ClEaRkEy")); 244 EXPECT_FALSE(IsConcreteSupportedKeySystem("webkit-org.w3.ClEaRkEy"));
239 EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( 245 EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
240 "video/webm", no_codecs(), "webkit-org.w3.ClEaRkEy")); 246 "video/webm", no_codecs(), "webkit-org.w3.ClEaRkEy"));
241 247
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 EXPECT_ECK( 392 EXPECT_ECK(
387 IsConcreteSupportedKeySystem(WebString::fromUTF8(kExternalClearKey))); 393 IsConcreteSupportedKeySystem(WebString::fromUTF8(kExternalClearKey)));
388 EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType( 394 EXPECT_ECK(IsSupportedKeySystemWithMediaMimeType(
389 "video/webm", no_codecs(), kExternalClearKey)); 395 "video/webm", no_codecs(), kExternalClearKey));
390 396
391 // External Clear Key does not have a UMA name because it is for testing. 397 // External Clear Key does not have a UMA name because it is for testing.
392 EXPECT_STREQ( 398 EXPECT_STREQ(
393 "Unknown", 399 "Unknown",
394 KeySystemNameForUMA(WebString::fromUTF8(kExternalClearKey)).c_str()); 400 KeySystemNameForUMA(WebString::fromUTF8(kExternalClearKey)).c_str());
395 401
402 #if defined(ENABLE_PEPPER_CDMS)
396 EXPECT_FALSE(CanUseAesDecryptor(kExternalClearKey)); 403 EXPECT_FALSE(CanUseAesDecryptor(kExternalClearKey));
397 #if defined(ENABLE_PEPPER_CDMS)
398 EXPECT_STREQ("application/x-ppapi-clearkey-cdm", 404 EXPECT_STREQ("application/x-ppapi-clearkey-cdm",
399 GetPepperType(kExternalClearKey).c_str()); 405 GetPepperType(kExternalClearKey).c_str());
406 #else
407 bool result = false;
408 EXPECT_DCHECK_DEATH(
409 result = CanUseAesDecryptor(kExternalClearKey),
410 "org.chromium.externalclearkey is not a known concrete system");
411 EXPECT_FALSE(result);
400 #endif 412 #endif
401 } 413 }
402 414
403 TEST_F(KeySystemsTest, ExternalClearKey_Parent) { 415 TEST_F(KeySystemsTest, ExternalClearKey_Parent) {
404 const char* const kExternalClearKeyParent = "org.chromium"; 416 const char* const kExternalClearKeyParent = "org.chromium";
405 417
406 // The parent should be supported but is not. See http://crbug.com/164303. 418 // The parent should be supported but is not. See http://crbug.com/164303.
407 EXPECT_FALSE(IsConcreteSupportedKeySystem( 419 EXPECT_FALSE(IsConcreteSupportedKeySystem(
408 WebString::fromUTF8(kExternalClearKeyParent))); 420 WebString::fromUTF8(kExternalClearKeyParent)));
409 EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( 421 EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
410 "video/webm", no_codecs(), kExternalClearKeyParent)); 422 "video/webm", no_codecs(), kExternalClearKeyParent));
411 423
412 // The parent is not supported for most things. 424 // The parent is not supported for most things.
413 EXPECT_STREQ("Unknown", 425 EXPECT_STREQ("Unknown",
414 KeySystemNameForUMA( 426 KeySystemNameForUMA(
415 WebString::fromUTF8(kExternalClearKeyParent)).c_str()); 427 WebString::fromUTF8(kExternalClearKeyParent)).c_str());
416 EXPECT_FALSE(CanUseAesDecryptor(kExternalClearKeyParent)); 428 bool result = false;
429 EXPECT_DCHECK_DEATH(result = CanUseAesDecryptor(kExternalClearKeyParent),
430 "org.chromium is not a known concrete system");
431 EXPECT_FALSE(result);
417 #if defined(ENABLE_PEPPER_CDMS) 432 #if defined(ENABLE_PEPPER_CDMS)
418 std::string type; 433 std::string type;
419 EXPECT_DCHECK_DEATH(type = GetPepperType(kExternalClearKeyParent), 434 EXPECT_DCHECK_DEATH(type = GetPepperType(kExternalClearKeyParent),
420 "org.chromium is not a concrete system"); 435 "org.chromium is not a known concrete system");
421 EXPECT_TRUE(type.empty()); 436 EXPECT_TRUE(type.empty());
422 #endif 437 #endif
423 } 438 }
424 439
425 TEST_F(KeySystemsTest, ExternalClearKey_IsSupportedKeySystem_InvalidVariants) { 440 TEST_F(KeySystemsTest, ExternalClearKey_IsSupportedKeySystem_InvalidVariants) {
426 // Case sensitive. 441 // Case sensitive.
427 EXPECT_FALSE(IsConcreteSupportedKeySystem("org.chromium.ExTeRnAlClEaRkEy")); 442 EXPECT_FALSE(IsConcreteSupportedKeySystem("org.chromium.ExTeRnAlClEaRkEy"));
428 EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( 443 EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
429 "video/webm", no_codecs(), 444 "video/webm", no_codecs(),
430 "org.chromium.ExTeRnAlClEaRkEy")); 445 "org.chromium.ExTeRnAlClEaRkEy"));
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 602
588 #if defined(WIDEVINE_CDM_AVAILABLE) 603 #if defined(WIDEVINE_CDM_AVAILABLE)
589 const char* const kWidevineUmaName = "Widevine"; 604 const char* const kWidevineUmaName = "Widevine";
590 #else 605 #else
591 const char* const kWidevineUmaName = "Unknown"; 606 const char* const kWidevineUmaName = "Unknown";
592 #endif 607 #endif
593 EXPECT_STREQ( 608 EXPECT_STREQ(
594 kWidevineUmaName, 609 kWidevineUmaName,
595 KeySystemNameForUMA(WebString::fromUTF8(kWidevineAlpha)).c_str()); 610 KeySystemNameForUMA(WebString::fromUTF8(kWidevineAlpha)).c_str());
596 611
612 #if defined(WIDEVINE_CDM_AVAILABLE)
597 EXPECT_FALSE(CanUseAesDecryptor(kWidevineAlpha)); 613 EXPECT_FALSE(CanUseAesDecryptor(kWidevineAlpha));
614 #else
615 bool result = false;
616 EXPECT_DCHECK_DEATH(result = CanUseAesDecryptor(kWidevineAlpha),
617 "com.widevine.alpha is not a known concrete system");
618 EXPECT_FALSE(result);
619 #endif // defined(WIDEVINE_CDM_AVAILABLE)
620
598 #if defined(ENABLE_PEPPER_CDMS) 621 #if defined(ENABLE_PEPPER_CDMS)
599 #if defined(WIDEVINE_CDM_AVAILABLE) 622 #if defined(WIDEVINE_CDM_AVAILABLE)
600 EXPECT_STREQ("application/x-ppapi-widevine-cdm", 623 EXPECT_STREQ("application/x-ppapi-widevine-cdm",
601 GetPepperType(kWidevineAlpha).c_str()); 624 GetPepperType(kWidevineAlpha).c_str());
602 #else 625 #else
603 std::string type; 626 std::string type;
604 EXPECT_DCHECK_DEATH(type = GetPepperType(kWidevineAlpha), 627 EXPECT_DCHECK_DEATH(type = GetPepperType(kWidevineAlpha),
605 "com.widevine.alpha is not a concrete system"); 628 "com.widevine.alpha is not a known concrete system");
606 EXPECT_TRUE(type.empty()); 629 EXPECT_TRUE(type.empty());
607 #endif // defined(WIDEVINE_CDM_AVAILABLE) 630 #endif // defined(WIDEVINE_CDM_AVAILABLE)
608 #endif // defined(ENABLE_PEPPER_CDMS) 631 #endif // defined(ENABLE_PEPPER_CDMS)
609 632
610 } 633 }
611 634
612 TEST_F(KeySystemsTest, Widevine_Parent) { 635 TEST_F(KeySystemsTest, Widevine_Parent) {
613 // The parent system is not a concrete system but is supported. 636 // The parent system is not a concrete system but is supported.
614 EXPECT_FALSE(IsConcreteSupportedKeySystem(WebString::fromUTF8(kWidevine))); 637 EXPECT_FALSE(IsConcreteSupportedKeySystem(WebString::fromUTF8(kWidevine)));
615 EXPECT_WV(IsSupportedKeySystemWithMediaMimeType( 638 EXPECT_WV(IsSupportedKeySystemWithMediaMimeType(
616 "video/webm", no_codecs(), kWidevine)); 639 "video/webm", no_codecs(), kWidevine));
617 640
618 // The parent is not supported for most things. 641 // The parent is not supported for most things.
619 EXPECT_STREQ("Unknown", 642 EXPECT_STREQ("Unknown",
620 KeySystemNameForUMA(WebString::fromUTF8(kWidevine)).c_str()); 643 KeySystemNameForUMA(WebString::fromUTF8(kWidevine)).c_str());
621 EXPECT_FALSE(CanUseAesDecryptor(kWidevine)); 644 bool result = false;
645 EXPECT_DCHECK_DEATH(result = CanUseAesDecryptor(kWidevine),
646 "com.widevine is not a known concrete system");
647 EXPECT_FALSE(result);
622 #if defined(ENABLE_PEPPER_CDMS) 648 #if defined(ENABLE_PEPPER_CDMS)
623 std::string type; 649 std::string type;
624 EXPECT_DCHECK_DEATH(type = GetPepperType(kWidevine), 650 EXPECT_DCHECK_DEATH(type = GetPepperType(kWidevine),
625 "com.widevine is not a concrete system"); 651 "com.widevine is not a known concrete system");
626 EXPECT_TRUE(type.empty()); 652 EXPECT_TRUE(type.empty());
627 #endif 653 #endif
628 } 654 }
629 655
630 TEST_F(KeySystemsTest, Widevine_IsSupportedKeySystem_InvalidVariants) { 656 TEST_F(KeySystemsTest, Widevine_IsSupportedKeySystem_InvalidVariants) {
631 // Case sensitive. 657 // Case sensitive.
632 EXPECT_FALSE(IsConcreteSupportedKeySystem("com.widevine.AlPhA")); 658 EXPECT_FALSE(IsConcreteSupportedKeySystem("com.widevine.AlPhA"));
633 EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType( 659 EXPECT_FALSE(IsSupportedKeySystemWithMediaMimeType(
634 "video/webm", no_codecs(), "com.widevine.AlPhA")); 660 "video/webm", no_codecs(), "com.widevine.AlPhA"));
635 661
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
796 822
797 #if defined(OS_ANDROID) 823 #if defined(OS_ANDROID)
798 TEST_F(KeySystemsTest, GetUUID_Widevine) { 824 TEST_F(KeySystemsTest, GetUUID_Widevine) {
799 #if defined(WIDEVINE_CDM_AVAILABLE) 825 #if defined(WIDEVINE_CDM_AVAILABLE)
800 std::vector<uint8> uuid = GetUUID(kWidevineAlpha); 826 std::vector<uint8> uuid = GetUUID(kWidevineAlpha);
801 EXPECT_EQ(16u, uuid.size()); 827 EXPECT_EQ(16u, uuid.size());
802 EXPECT_EQ(0xED, uuid[15]); 828 EXPECT_EQ(0xED, uuid[15]);
803 #else 829 #else
804 std::vector<uint8> uuid; 830 std::vector<uint8> uuid;
805 EXPECT_DCHECK_DEATH(uuid = GetUUID(kWidevineAlpha), 831 EXPECT_DCHECK_DEATH(uuid = GetUUID(kWidevineAlpha),
806 "com.widevine.alpha is not a concrete system"); 832 "com.widevine.alpha is not a known concrete system");
807 EXPECT_TRUE(uuid.empty()); 833 EXPECT_TRUE(uuid.empty());
808 #endif 834 #endif
809 } 835 }
810 836
811 TEST_F(KeySystemsTest, GetUUID_Unrecognized) { 837 TEST_F(KeySystemsTest, GetUUID_Unrecognized) {
812 std::vector<uint8> uuid; 838 std::vector<uint8> uuid;
813 EXPECT_DCHECK_DEATH(uuid = GetUUID(kWidevine), 839 EXPECT_DCHECK_DEATH(uuid = GetUUID(kWidevine),
814 "com.widevine is not a concrete system"); 840 "com.widevine is not a known concrete system");
815 EXPECT_TRUE(uuid.empty()); 841 EXPECT_TRUE(uuid.empty());
816 842
817 EXPECT_TRUE(GetUUID(kClearKey).empty()); 843 EXPECT_TRUE(GetUUID(kClearKey).empty());
818 844
819 EXPECT_DCHECK_DEATH(uuid = GetUUID(""), " is not a concrete system"); 845 EXPECT_DCHECK_DEATH(uuid = GetUUID(""), " is not a concrete system");
820 EXPECT_TRUE(uuid.empty()); 846 EXPECT_TRUE(uuid.empty());
821 } 847 }
822 #endif // defined(OS_ANDROID) 848 #endif // defined(OS_ANDROID)
823 849
824 } // namespace content 850 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698