Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |