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

Side by Side 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, 10 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "base/bind.h" 8 #include "base/bind.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 11 matching lines...) Expand all
22 22
23 namespace media { 23 namespace media {
24 24
25 namespace { 25 namespace {
26 26
27 const char kSupported[] = "supported"; 27 const char kSupported[] = "supported";
28 const char kRecommendIdentifier[] = "recommend_identifier"; 28 const char kRecommendIdentifier[] = "recommend_identifier";
29 const char kRequireIdentifier[] = "require_identifier"; 29 const char kRequireIdentifier[] = "require_identifier";
30 const char kUnsupported[] = "unsupported"; 30 const char kUnsupported[] = "unsupported";
31 31
32 // TODO(sandersd): Audio and video variants (doesn't matter for now because the 32 const char kSupportedVideoContainer[] = "video/webm";
33 // checks are in KeySystems). 33 const char kSupportedAudioContainer[] = "audio/webm";
34 const char kSupportedContainer[] = "video/webm";
35 const char kUnsupportedContainer[] = "video/foo"; 34 const char kUnsupportedContainer[] = "video/foo";
36 35
37 // TODO(sandersd): Extended codec variants (requires proprietary codec support). 36 // TODO(sandersd): Extended codec variants (requires proprietary codec support).
38 const char kSupportedCodec[] = "vp8"; 37 const char kSupportedVideoCodec[] = "vp8";
38 const char kSupportedAudioCodec[] = "opus";
39 const char kUnsupportedCodec[] = "foo"; 39 const char kUnsupportedCodec[] = "foo";
40 const char kUnsupportedCodecs[] = "vp8,foo"; 40 const char kUnsupportedCodecs[] = "vp8,foo";
41 const char kSupportedCodecs[] = "vp8,vp8"; 41 const char kSupportedVideoCodecs[] = "vp8,vp8";
42 42
43 const char kDefaultSecurityOrigin[] = "https://example.com/"; 43 const char kDefaultSecurityOrigin[] = "https://example.com/";
44 44
45 // The IDL for MediaKeySystemConfiguration specifies some defaults, so 45 // The IDL for MediaKeySystemConfiguration specifies some defaults, so
46 // create a default object that mimics what would be created if an empty 46 // create a default object that mimics what would be created if an empty
47 // dictionary was passed in. 47 // dictionary was passed in.
xhwang 2017/02/02 18:31:20 Is this still accurate with the new changes?
jrummell 2017/02/02 20:03:24 Nope. Added UsableConfiguration().
48 blink::WebMediaKeySystemConfiguration DefaultConfiguration() { 48 blink::WebMediaKeySystemConfiguration DefaultConfiguration() {
49 // http://w3c.github.io/encrypted-media/#mediakeysystemconfiguration-dictionar y 49 // http://w3c.github.io/encrypted-media/#mediakeysystemconfiguration-dictionar y
50 // If this member (sessionTypes) is not present when the dictionary 50 // If this member (sessionTypes) is not present when the dictionary
51 // is passed to requestMediaKeySystemAccess(), the dictionary will 51 // is passed to requestMediaKeySystemAccess(), the dictionary will
52 // be treated as if this member is set to [ "temporary" ]. 52 // be treated as if this member is set to [ "temporary" ].
53 std::vector<blink::WebEncryptedMediaSessionType> session_types; 53 std::vector<blink::WebEncryptedMediaSessionType> session_types;
54 session_types.push_back(blink::WebEncryptedMediaSessionType::Temporary); 54 session_types.push_back(blink::WebEncryptedMediaSessionType::Temporary);
55 55
56 // EME spec requires that at least one of |video_capabilities| and
57 // |audio_capabilities| be specified. Add a single valid audio capability
58 // here. blink code parses the contentType into mimeType and codecs, so
59 // mimic that here.
60 std::vector<blink::WebMediaKeySystemMediaCapability> audio_capabilities(1);
61 audio_capabilities[0].mimeType = kSupportedAudioContainer;
62 audio_capabilities[0].codecs = kSupportedAudioCodec;
63
56 blink::WebMediaKeySystemConfiguration config; 64 blink::WebMediaKeySystemConfiguration config;
57 config.label = ""; 65 config.label = "";
58 config.sessionTypes = session_types; 66 config.sessionTypes = session_types;
67 config.audioCapabilities = audio_capabilities;
59 return config; 68 return config;
60 } 69 }
61 70
62 class FakeKeySystems : public KeySystems { 71 class FakeKeySystems : public KeySystems {
63 public: 72 public:
64 ~FakeKeySystems() override { 73 ~FakeKeySystems() override {
65 } 74 }
66 75
67 bool IsSupportedKeySystem(const std::string& key_system) const override { 76 bool IsSupportedKeySystem(const std::string& key_system) const override {
68 if (key_system == kSupported) 77 if (key_system == kSupported)
(...skipping 19 matching lines...) Expand all
88 } 97 }
89 98
90 // TODO(sandersd): Secure codec simulation. 99 // TODO(sandersd): Secure codec simulation.
91 EmeConfigRule GetContentTypeConfigRule( 100 EmeConfigRule GetContentTypeConfigRule(
92 const std::string& key_system, 101 const std::string& key_system,
93 EmeMediaType media_type, 102 EmeMediaType media_type,
94 const std::string& container_mime_type, 103 const std::string& container_mime_type,
95 const std::vector<std::string>& codecs) const override { 104 const std::vector<std::string>& codecs) const override {
96 if (container_mime_type == kUnsupportedContainer) 105 if (container_mime_type == kUnsupportedContainer)
97 return EmeConfigRule::NOT_SUPPORTED; 106 return EmeConfigRule::NOT_SUPPORTED;
98 DCHECK_EQ(kSupportedContainer, container_mime_type); 107 switch (media_type) {
108 case EmeMediaType::AUDIO:
109 DCHECK_EQ(kSupportedAudioContainer, container_mime_type);
110 break;
111 case EmeMediaType::VIDEO:
112 DCHECK_EQ(kSupportedVideoContainer, container_mime_type);
113 break;
114 }
99 for (const std::string& codec : codecs) { 115 for (const std::string& codec : codecs) {
100 if (codec == kUnsupportedCodec) 116 if (codec == kUnsupportedCodec)
101 return EmeConfigRule::NOT_SUPPORTED; 117 return EmeConfigRule::NOT_SUPPORTED;
102 DCHECK_EQ(kSupportedCodec, codec); 118 switch (media_type) {
119 case EmeMediaType::AUDIO:
120 DCHECK_EQ(kSupportedAudioCodec, codec);
121 break;
122 case EmeMediaType::VIDEO:
123 DCHECK_EQ(kSupportedVideoCodec, codec);
124 break;
125 }
103 } 126 }
104 return EmeConfigRule::SUPPORTED; 127 return EmeConfigRule::SUPPORTED;
105 } 128 }
106 129
107 EmeConfigRule GetRobustnessConfigRule( 130 EmeConfigRule GetRobustnessConfigRule(
108 const std::string& key_system, 131 const std::string& key_system,
109 EmeMediaType media_type, 132 EmeMediaType media_type,
110 const std::string& requested_robustness) const override { 133 const std::string& requested_robustness) const override {
111 if (requested_robustness.empty()) 134 if (requested_robustness.empty())
112 return EmeConfigRule::SUPPORTED; 135 return EmeConfigRule::SUPPORTED;
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 TEST_F(KeySystemConfigSelectorTest, DefaultConfig) { 289 TEST_F(KeySystemConfigSelectorTest, DefaultConfig) {
267 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 290 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
268 291
269 // label = ""; 292 // label = "";
270 ASSERT_EQ("", config.label); 293 ASSERT_EQ("", config.label);
271 294
272 // initDataTypes = []; 295 // initDataTypes = [];
273 ASSERT_EQ(0u, config.initDataTypes.size()); 296 ASSERT_EQ(0u, config.initDataTypes.size());
274 297
275 // audioCapabilities = []; 298 // audioCapabilities = [];
276 ASSERT_EQ(0u, config.audioCapabilities.size()); 299 ASSERT_EQ(1u, config.audioCapabilities.size());
277 300
278 // videoCapabilities = []; 301 // videoCapabilities = [];
279 ASSERT_EQ(0u, config.videoCapabilities.size()); 302 ASSERT_EQ(0u, config.videoCapabilities.size());
280 303
281 // distinctiveIdentifier = "optional"; 304 // distinctiveIdentifier = "optional";
282 ASSERT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Optional, 305 ASSERT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Optional,
283 config.distinctiveIdentifier); 306 config.distinctiveIdentifier);
284 307
285 // persistentState = "optional"; 308 // persistentState = "optional";
286 ASSERT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Optional, 309 ASSERT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Optional,
287 config.persistentState); 310 config.persistentState);
288 311
289 // If this member is not present when the dictionary is passed to 312 // If this member is not present when the dictionary is passed to
290 // requestMediaKeySystemAccess(), the dictionary will be treated as 313 // requestMediaKeySystemAccess(), the dictionary will be treated as
291 // if this member is set to [ "temporary" ]. 314 // if this member is set to [ "temporary" ].
292 ASSERT_EQ(1u, config.sessionTypes.size()); 315 ASSERT_EQ(1u, config.sessionTypes.size());
293 ASSERT_EQ(blink::WebEncryptedMediaSessionType::Temporary, 316 ASSERT_EQ(blink::WebEncryptedMediaSessionType::Temporary,
294 config.sessionTypes[0]); 317 config.sessionTypes[0]);
295 } 318 }
296 319
297 // Most of the tests below assume that the default config is valid. 320 // Most of the tests below assume that the default config is valid.
298 TEST_F(KeySystemConfigSelectorTest, EmptyConfig) { 321 TEST_F(KeySystemConfigSelectorTest, EmptyConfig) {
299 configs_.push_back(DefaultConfiguration()); 322 configs_.push_back(DefaultConfiguration());
300 323
301 ASSERT_TRUE(SelectConfigReturnsConfig()); 324 ASSERT_TRUE(SelectConfigReturnsConfig());
302 EXPECT_EQ("", config_.label); 325 EXPECT_EQ("", config_.label);
303 EXPECT_TRUE(config_.initDataTypes.isEmpty()); 326 EXPECT_TRUE(config_.initDataTypes.isEmpty());
304 EXPECT_TRUE(config_.audioCapabilities.isEmpty()); 327 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
305 EXPECT_TRUE(config_.videoCapabilities.isEmpty()); 328 EXPECT_TRUE(config_.videoCapabilities.isEmpty());
306 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed, 329 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed,
307 config_.distinctiveIdentifier); 330 config_.distinctiveIdentifier);
308 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed, 331 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed,
309 config_.persistentState); 332 config_.persistentState);
310 ASSERT_EQ(1u, config_.sessionTypes.size()); 333 ASSERT_EQ(1u, config_.sessionTypes.size());
311 EXPECT_EQ(blink::WebEncryptedMediaSessionType::Temporary, 334 EXPECT_EQ(blink::WebEncryptedMediaSessionType::Temporary,
312 config_.sessionTypes[0]); 335 config_.sessionTypes[0]);
313 } 336 }
314 337
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
571 configs_.push_back(config); 594 configs_.push_back(config);
572 595
573 ASSERT_TRUE(SelectConfigReturnsConfig()); 596 ASSERT_TRUE(SelectConfigReturnsConfig());
574 } 597 }
575 598
576 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_NoneSupported) { 599 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_NoneSupported) {
577 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(2); 600 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(2);
578 video_capabilities[0].contentType = "a"; 601 video_capabilities[0].contentType = "a";
579 video_capabilities[0].mimeType = kUnsupportedContainer; 602 video_capabilities[0].mimeType = kUnsupportedContainer;
580 video_capabilities[1].contentType = "b"; 603 video_capabilities[1].contentType = "b";
581 video_capabilities[1].mimeType = kSupportedContainer; 604 video_capabilities[1].mimeType = kSupportedVideoContainer;
582 video_capabilities[1].codecs = kUnsupportedCodec; 605 video_capabilities[1].codecs = kUnsupportedCodec;
583 606
584 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 607 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
585 config.videoCapabilities = video_capabilities; 608 config.videoCapabilities = video_capabilities;
586 configs_.push_back(config); 609 configs_.push_back(config);
587 610
588 ASSERT_TRUE(SelectConfigReturnsError()); 611 ASSERT_TRUE(SelectConfigReturnsError());
589 } 612 }
590 613
591 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_SubsetSupported) { 614 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_SubsetSupported) {
592 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(2); 615 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(2);
593 video_capabilities[0].contentType = "a"; 616 video_capabilities[0].contentType = "a";
594 video_capabilities[0].mimeType = kUnsupportedContainer; 617 video_capabilities[0].mimeType = kUnsupportedContainer;
595 video_capabilities[1].contentType = "b"; 618 video_capabilities[1].contentType = "b";
596 video_capabilities[1].mimeType = kSupportedContainer; 619 video_capabilities[1].mimeType = kSupportedVideoContainer;
597 620
598 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 621 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
599 config.videoCapabilities = video_capabilities; 622 config.videoCapabilities = video_capabilities;
600 configs_.push_back(config); 623 configs_.push_back(config);
601 624
602 ASSERT_TRUE(SelectConfigReturnsConfig()); 625 ASSERT_TRUE(SelectConfigReturnsConfig());
603 ASSERT_EQ(1u, config_.videoCapabilities.size()); 626 ASSERT_EQ(1u, config_.videoCapabilities.size());
604 EXPECT_EQ("b", config_.videoCapabilities[0].contentType); 627 EXPECT_EQ("b", config_.videoCapabilities[0].contentType);
605 EXPECT_EQ(kSupportedContainer, config_.videoCapabilities[0].mimeType); 628 EXPECT_EQ(kSupportedVideoContainer, config_.videoCapabilities[0].mimeType);
606 } 629 }
607 630
608 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_AllSupported) { 631 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_AllSupported) {
609 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(2); 632 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(2);
610 video_capabilities[0].contentType = "a"; 633 video_capabilities[0].contentType = "a";
611 video_capabilities[0].mimeType = kSupportedContainer; 634 video_capabilities[0].mimeType = kSupportedVideoContainer;
612 video_capabilities[1].contentType = "b"; 635 video_capabilities[1].contentType = "b";
613 video_capabilities[1].mimeType = kSupportedContainer; 636 video_capabilities[1].mimeType = kSupportedVideoContainer;
614 video_capabilities[1].codecs = kSupportedCodecs; 637 video_capabilities[1].codecs = kSupportedVideoCodecs;
615 638
616 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 639 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
617 config.videoCapabilities = video_capabilities; 640 config.videoCapabilities = video_capabilities;
618 configs_.push_back(config); 641 configs_.push_back(config);
619 642
620 ASSERT_TRUE(SelectConfigReturnsConfig()); 643 ASSERT_TRUE(SelectConfigReturnsConfig());
621 ASSERT_EQ(2u, config_.videoCapabilities.size()); 644 ASSERT_EQ(2u, config_.videoCapabilities.size());
622 EXPECT_EQ("a", config_.videoCapabilities[0].contentType); 645 EXPECT_EQ("a", config_.videoCapabilities[0].contentType);
623 EXPECT_EQ("b", config_.videoCapabilities[1].contentType); 646 EXPECT_EQ("b", config_.videoCapabilities[1].contentType);
624 } 647 }
625 648
626 TEST_F(KeySystemConfigSelectorTest, 649 TEST_F(KeySystemConfigSelectorTest,
627 VideoCapabilities_Codecs_SubsetSupported) { 650 VideoCapabilities_Codecs_SubsetSupported) {
628 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1); 651 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
629 video_capabilities[0].contentType = "a"; 652 video_capabilities[0].contentType = "a";
630 video_capabilities[0].mimeType = kSupportedContainer; 653 video_capabilities[0].mimeType = kSupportedVideoContainer;
631 video_capabilities[0].codecs = kUnsupportedCodecs; 654 video_capabilities[0].codecs = kUnsupportedCodecs;
632 655
633 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 656 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
634 config.videoCapabilities = video_capabilities; 657 config.videoCapabilities = video_capabilities;
635 configs_.push_back(config); 658 configs_.push_back(config);
636 659
637 ASSERT_TRUE(SelectConfigReturnsError()); 660 ASSERT_TRUE(SelectConfigReturnsError());
638 } 661 }
639 662
640 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Codecs_AllSupported) { 663 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Codecs_AllSupported) {
641 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1); 664 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
642 video_capabilities[0].contentType = "a"; 665 video_capabilities[0].contentType = "a";
643 video_capabilities[0].mimeType = kSupportedContainer; 666 video_capabilities[0].mimeType = kSupportedVideoContainer;
644 video_capabilities[0].codecs = kSupportedCodecs; 667 video_capabilities[0].codecs = kSupportedVideoCodecs;
645 668
646 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 669 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
647 config.videoCapabilities = video_capabilities; 670 config.videoCapabilities = video_capabilities;
648 configs_.push_back(config); 671 configs_.push_back(config);
649 672
650 ASSERT_TRUE(SelectConfigReturnsConfig()); 673 ASSERT_TRUE(SelectConfigReturnsConfig());
651 ASSERT_EQ(1u, config_.videoCapabilities.size()); 674 ASSERT_EQ(1u, config_.videoCapabilities.size());
652 EXPECT_EQ(kSupportedCodecs, config_.videoCapabilities[0].codecs); 675 EXPECT_EQ(kSupportedVideoCodecs, config_.videoCapabilities[0].codecs);
653 } 676 }
654 677
655 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Empty) { 678 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Empty) {
656 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1); 679 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
657 video_capabilities[0].contentType = "a"; 680 video_capabilities[0].contentType = "a";
658 video_capabilities[0].mimeType = kSupportedContainer; 681 video_capabilities[0].mimeType = kSupportedVideoContainer;
659 ASSERT_TRUE(video_capabilities[0].robustness.isEmpty()); 682 ASSERT_TRUE(video_capabilities[0].robustness.isEmpty());
660 683
661 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 684 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
662 config.videoCapabilities = video_capabilities; 685 config.videoCapabilities = video_capabilities;
663 configs_.push_back(config); 686 configs_.push_back(config);
664 687
665 ASSERT_TRUE(SelectConfigReturnsConfig()); 688 ASSERT_TRUE(SelectConfigReturnsConfig());
666 ASSERT_EQ(1u, config_.videoCapabilities.size()); 689 ASSERT_EQ(1u, config_.videoCapabilities.size());
667 EXPECT_TRUE(config_.videoCapabilities[0].robustness.isEmpty()); 690 EXPECT_TRUE(config_.videoCapabilities[0].robustness.isEmpty());
668 } 691 }
669 692
670 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Supported) { 693 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Supported) {
671 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1); 694 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
672 video_capabilities[0].contentType = "a"; 695 video_capabilities[0].contentType = "a";
673 video_capabilities[0].mimeType = kSupportedContainer; 696 video_capabilities[0].mimeType = kSupportedVideoContainer;
674 video_capabilities[0].robustness = kSupported; 697 video_capabilities[0].robustness = kSupported;
675 698
676 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 699 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
677 config.videoCapabilities = video_capabilities; 700 config.videoCapabilities = video_capabilities;
678 configs_.push_back(config); 701 configs_.push_back(config);
679 702
680 ASSERT_TRUE(SelectConfigReturnsConfig()); 703 ASSERT_TRUE(SelectConfigReturnsConfig());
681 ASSERT_EQ(1u, config_.videoCapabilities.size()); 704 ASSERT_EQ(1u, config_.videoCapabilities.size());
682 EXPECT_EQ(kSupported, config_.videoCapabilities[0].robustness); 705 EXPECT_EQ(kSupported, config_.videoCapabilities[0].robustness);
683 } 706 }
684 707
685 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Unsupported) { 708 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Unsupported) {
686 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1); 709 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
687 video_capabilities[0].contentType = "a"; 710 video_capabilities[0].contentType = "a";
688 video_capabilities[0].mimeType = kSupportedContainer; 711 video_capabilities[0].mimeType = kSupportedVideoContainer;
689 video_capabilities[0].robustness = kUnsupported; 712 video_capabilities[0].robustness = kUnsupported;
690 713
691 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 714 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
692 config.videoCapabilities = video_capabilities; 715 config.videoCapabilities = video_capabilities;
693 configs_.push_back(config); 716 configs_.push_back(config);
694 717
695 ASSERT_TRUE(SelectConfigReturnsError()); 718 ASSERT_TRUE(SelectConfigReturnsError());
696 } 719 }
697 720
698 TEST_F(KeySystemConfigSelectorTest, 721 TEST_F(KeySystemConfigSelectorTest,
699 VideoCapabilities_Robustness_PermissionCanBeRequired) { 722 VideoCapabilities_Robustness_PermissionCanBeRequired) {
700 media_permission_->is_granted = true; 723 media_permission_->is_granted = true;
701 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE; 724 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
702 725
703 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1); 726 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
704 video_capabilities[0].contentType = "a"; 727 video_capabilities[0].contentType = "a";
705 video_capabilities[0].mimeType = kSupportedContainer; 728 video_capabilities[0].mimeType = kSupportedVideoContainer;
706 video_capabilities[0].robustness = kRequireIdentifier; 729 video_capabilities[0].robustness = kRequireIdentifier;
707 730
708 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 731 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
709 config.videoCapabilities = video_capabilities; 732 config.videoCapabilities = video_capabilities;
710 configs_.push_back(config); 733 configs_.push_back(config);
711 734
712 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig()); 735 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig());
713 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required, 736 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required,
714 config_.distinctiveIdentifier); 737 config_.distinctiveIdentifier);
715 } 738 }
716 739
717 TEST_F(KeySystemConfigSelectorTest, 740 TEST_F(KeySystemConfigSelectorTest,
718 VideoCapabilities_Robustness_PermissionCanBeRecommended) { 741 VideoCapabilities_Robustness_PermissionCanBeRecommended) {
719 media_permission_->is_granted = false; 742 media_permission_->is_granted = false;
720 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE; 743 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
721 744
722 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1); 745 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
723 video_capabilities[0].contentType = "a"; 746 video_capabilities[0].contentType = "a";
724 video_capabilities[0].mimeType = kSupportedContainer; 747 video_capabilities[0].mimeType = kSupportedVideoContainer;
725 video_capabilities[0].robustness = kRecommendIdentifier; 748 video_capabilities[0].robustness = kRecommendIdentifier;
726 749
727 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 750 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
728 config.videoCapabilities = video_capabilities; 751 config.videoCapabilities = video_capabilities;
729 configs_.push_back(config); 752 configs_.push_back(config);
730 753
731 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig()); 754 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig());
732 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed, 755 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed,
733 config_.distinctiveIdentifier); 756 config_.distinctiveIdentifier);
734 } 757 }
735 758
736 // --- audioCapabilities --- 759 // --- audioCapabilities ---
737 // These are handled by the same code as |videoCapabilities|, so only minimal 760 // These are handled by the same code as |videoCapabilities|, so only minimal
738 // additional testing is done. 761 // additional testing is done.
739 762
740 TEST_F(KeySystemConfigSelectorTest, AudioCapabilities_SubsetSupported) { 763 TEST_F(KeySystemConfigSelectorTest, AudioCapabilities_SubsetSupported) {
741 std::vector<blink::WebMediaKeySystemMediaCapability> audio_capabilities(2); 764 std::vector<blink::WebMediaKeySystemMediaCapability> audio_capabilities(2);
742 audio_capabilities[0].contentType = "a"; 765 audio_capabilities[0].contentType = "a";
743 audio_capabilities[0].mimeType = kUnsupportedContainer; 766 audio_capabilities[0].mimeType = kUnsupportedContainer;
744 audio_capabilities[1].contentType = "b"; 767 audio_capabilities[1].contentType = "b";
745 audio_capabilities[1].mimeType = kSupportedContainer; 768 audio_capabilities[1].mimeType = kSupportedAudioContainer;
746 769
747 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 770 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
748 config.audioCapabilities = audio_capabilities; 771 config.audioCapabilities = audio_capabilities;
749 configs_.push_back(config); 772 configs_.push_back(config);
750 773
751 ASSERT_TRUE(SelectConfigReturnsConfig()); 774 ASSERT_TRUE(SelectConfigReturnsConfig());
752 ASSERT_EQ(1u, config_.audioCapabilities.size()); 775 ASSERT_EQ(1u, config_.audioCapabilities.size());
753 EXPECT_EQ("b", config_.audioCapabilities[0].contentType); 776 EXPECT_EQ("b", config_.audioCapabilities[0].contentType);
754 EXPECT_EQ(kSupportedContainer, config_.audioCapabilities[0].mimeType); 777 EXPECT_EQ(kSupportedAudioContainer, config_.audioCapabilities[0].mimeType);
755 } 778 }
756 779
757 // --- Multiple configurations --- 780 // --- Multiple configurations ---
758 781
759 TEST_F(KeySystemConfigSelectorTest, Configurations_AllSupported) { 782 TEST_F(KeySystemConfigSelectorTest, Configurations_AllSupported) {
760 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 783 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
761 config.label = "a"; 784 config.label = "a";
762 configs_.push_back(config); 785 configs_.push_back(config);
763 config.label = "b"; 786 config.label = "b";
764 configs_.push_back(config); 787 configs_.push_back(config);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
815 838
816 blink::WebMediaKeySystemConfiguration config2 = DefaultConfiguration(); 839 blink::WebMediaKeySystemConfiguration config2 = DefaultConfiguration();
817 config2.label = "b"; 840 config2.label = "b";
818 configs_.push_back(config2); 841 configs_.push_back(config2);
819 842
820 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig()); 843 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig());
821 ASSERT_EQ("b", config_.label); 844 ASSERT_EQ("b", config_.label);
822 } 845 }
823 846
824 } // namespace media 847 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698