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 // TODO(sandersd): Refactor to remove recomputed codec arrays, and generally | 5 // TODO(sandersd): Refactor to remove recomputed codec arrays, and generally |
6 // shorten and improve coverage. | 6 // shorten and improve coverage. |
7 // - http://crbug.com/417444 | 7 // - http://crbug.com/417444 |
8 // - http://crbug.com/457438 | 8 // - http://crbug.com/457438 |
9 // TODO(sandersd): Add tests to cover codec vectors with empty items. | 9 // TODO(sandersd): Add tests to cover codec vectors with empty items. |
10 // http://crbug.com/417461 | 10 // http://crbug.com/417461 |
11 | 11 |
12 #include <string> | 12 #include <string> |
13 #include <vector> | 13 #include <vector> |
14 | 14 |
15 #include "base/logging.h" | 15 #include "base/logging.h" |
16 #include "media/base/eme_constants.h" | 16 #include "media/base/eme_constants.h" |
17 #include "media/base/key_systems.h" | 17 #include "media/base/key_systems.h" |
18 #include "media/base/media.h" | 18 #include "media/base/media.h" |
19 #include "media/base/media_client.h" | 19 #include "media/base/media_client.h" |
20 #include "ppapi/features/features.h" | |
21 #include "testing/gtest/include/gtest/gtest.h" | 20 #include "testing/gtest/include/gtest/gtest.h" |
22 | 21 |
23 namespace media { | 22 namespace media { |
24 | 23 |
25 // These are the (fake) key systems that are registered for these tests. | 24 // These are the (fake) key systems that are registered for these tests. |
26 // kUsesAes uses the AesDecryptor like Clear Key. | 25 // kUsesAes uses the AesDecryptor like Clear Key. |
27 // kExternal uses an external CDM, such as Pepper-based or Android platform CDM. | 26 // kExternal uses an external CDM, such as Pepper-based or Android platform CDM. |
28 const char kUsesAes[] = "x-org.example.clear"; | 27 const char kUsesAes[] = "x-org.example.clear"; |
29 const char kUseAesNameForUMA[] = "UseAes"; | 28 const char kUseAesNameForUMA[] = "UseAes"; |
30 const char kExternal[] = "x-com.example.test"; | 29 const char kExternal[] = "x-com.example.test"; |
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
417 | 416 |
418 // The key system is not registered and therefore is unrecognized. | 417 // The key system is not registered and therefore is unrecognized. |
419 TEST_F(KeySystemsTest, Basic_UnrecognizedKeySystem) { | 418 TEST_F(KeySystemsTest, Basic_UnrecognizedKeySystem) { |
420 static const char* const kUnrecognized = "x-org.example.unrecognized"; | 419 static const char* const kUnrecognized = "x-org.example.unrecognized"; |
421 | 420 |
422 EXPECT_FALSE(IsSupportedKeySystem(kUnrecognized)); | 421 EXPECT_FALSE(IsSupportedKeySystem(kUnrecognized)); |
423 | 422 |
424 EXPECT_EQ("Unknown", GetKeySystemNameForUMA(kUnrecognized)); | 423 EXPECT_EQ("Unknown", GetKeySystemNameForUMA(kUnrecognized)); |
425 EXPECT_FALSE(CanUseAesDecryptor(kUnrecognized)); | 424 EXPECT_FALSE(CanUseAesDecryptor(kUnrecognized)); |
426 | 425 |
427 #if BUILDFLAG(ENABLE_PEPPER_CDMS) | 426 #if defined(ENABLE_PEPPER_CDMS) |
428 std::string type; | 427 std::string type; |
429 #if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON) | 428 #if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON) |
430 EXPECT_DEATH(type = GetPepperType(kUnrecognized), | 429 EXPECT_DEATH(type = GetPepperType(kUnrecognized), |
431 "x-org.example.unrecognized is not a known system"); | 430 "x-org.example.unrecognized is not a known system"); |
432 #endif | 431 #endif |
433 EXPECT_TRUE(type.empty()); | 432 EXPECT_TRUE(type.empty()); |
434 #endif | 433 #endif |
435 } | 434 } |
436 | 435 |
437 TEST_F(KeySystemsTest, Basic_UsesAesDecryptor) { | 436 TEST_F(KeySystemsTest, Basic_UsesAesDecryptor) { |
438 EXPECT_TRUE(IsSupportedKeySystem(kUsesAes)); | 437 EXPECT_TRUE(IsSupportedKeySystem(kUsesAes)); |
439 EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType( | 438 EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType( |
440 kVideoWebM, no_codecs(), kUsesAes)); | 439 kVideoWebM, no_codecs(), kUsesAes)); |
441 | 440 |
442 // No UMA value for this test key system. | 441 // No UMA value for this test key system. |
443 EXPECT_EQ("UseAes", GetKeySystemNameForUMA(kUsesAes)); | 442 EXPECT_EQ("UseAes", GetKeySystemNameForUMA(kUsesAes)); |
444 | 443 |
445 EXPECT_TRUE(CanUseAesDecryptor(kUsesAes)); | 444 EXPECT_TRUE(CanUseAesDecryptor(kUsesAes)); |
446 #if BUILDFLAG(ENABLE_PEPPER_CDMS) | 445 #if defined(ENABLE_PEPPER_CDMS) |
447 std::string type; | 446 std::string type; |
448 #if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON) | 447 #if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON) |
449 EXPECT_DEATH(type = GetPepperType(kUsesAes), | 448 EXPECT_DEATH(type = GetPepperType(kUsesAes), |
450 "x-org.example.clear is not Pepper-based"); | 449 "x-org.example.clear is not Pepper-based"); |
451 #endif | 450 #endif |
452 EXPECT_TRUE(type.empty()); | 451 EXPECT_TRUE(type.empty()); |
453 #endif | 452 #endif |
454 } | 453 } |
455 | 454 |
456 TEST_F(KeySystemsTest, | 455 TEST_F(KeySystemsTest, |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
593 | 592 |
594 TEST_F(KeySystemsTest, Basic_ExternalDecryptor) { | 593 TEST_F(KeySystemsTest, Basic_ExternalDecryptor) { |
595 if (!CanRunExternalKeySystemTests()) | 594 if (!CanRunExternalKeySystemTests()) |
596 return; | 595 return; |
597 | 596 |
598 EXPECT_TRUE(IsSupportedKeySystem(kExternal)); | 597 EXPECT_TRUE(IsSupportedKeySystem(kExternal)); |
599 EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType( | 598 EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType( |
600 kVideoWebM, no_codecs(), kExternal)); | 599 kVideoWebM, no_codecs(), kExternal)); |
601 | 600 |
602 EXPECT_FALSE(CanUseAesDecryptor(kExternal)); | 601 EXPECT_FALSE(CanUseAesDecryptor(kExternal)); |
603 #if BUILDFLAG(ENABLE_PEPPER_CDMS) | 602 #if defined(ENABLE_PEPPER_CDMS) |
604 EXPECT_EQ("application/x-ppapi-external-cdm", GetPepperType(kExternal)); | 603 EXPECT_EQ("application/x-ppapi-external-cdm", GetPepperType(kExternal)); |
605 #endif // BUILDFLAG(ENABLE_PEPPER_CDMS) | 604 #endif // defined(ENABLE_PEPPER_CDMS) |
606 } | 605 } |
607 | 606 |
608 TEST_F( | 607 TEST_F( |
609 KeySystemsTest, | 608 KeySystemsTest, |
610 IsSupportedKeySystemWithMediaMimeType_ExternalDecryptor_TypesContainer1) { | 609 IsSupportedKeySystemWithMediaMimeType_ExternalDecryptor_TypesContainer1) { |
611 if (!CanRunExternalKeySystemTests()) | 610 if (!CanRunExternalKeySystemTests()) |
612 return; | 611 return; |
613 | 612 |
614 // Valid video types. | 613 // Valid video types. |
615 EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType( | 614 EXPECT_TRUE(IsSupportedKeySystemWithMediaMimeType( |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
773 EXPECT_FALSE(IsSupportedKeySystem("com.chromecast.something.else")); | 772 EXPECT_FALSE(IsSupportedKeySystem("com.chromecast.something.else")); |
774 EXPECT_FALSE(IsSupportedKeySystem("com.chromecast.other")); | 773 EXPECT_FALSE(IsSupportedKeySystem("com.chromecast.other")); |
775 | 774 |
776 EXPECT_FALSE(IsSupportedKeySystem("x-")); | 775 EXPECT_FALSE(IsSupportedKeySystem("x-")); |
777 EXPECT_TRUE(IsSupportedKeySystem("x-something")); | 776 EXPECT_TRUE(IsSupportedKeySystem("x-something")); |
778 EXPECT_FALSE(IsSupportedKeySystem("x-something.else")); | 777 EXPECT_FALSE(IsSupportedKeySystem("x-something.else")); |
779 EXPECT_FALSE(IsSupportedKeySystem("x-other")); | 778 EXPECT_FALSE(IsSupportedKeySystem("x-other")); |
780 } | 779 } |
781 | 780 |
782 } // namespace media | 781 } // namespace media |
OLD | NEW |