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

Side by Side Diff: media/blink/key_system_config_selector_unittest.cc

Issue 2652373002: EME: Fail requestMediaKeySystemAccess if no capabilities specified (Closed)
Patch Set: changes 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.
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 blink::WebMediaKeySystemConfiguration config; 56 blink::WebMediaKeySystemConfiguration config;
57 config.label = ""; 57 config.label = "";
58 config.sessionTypes = session_types; 58 config.sessionTypes = session_types;
59 return config; 59 return config;
60 } 60 }
61 61
62 // EME spec requires that at least one of |video_capabilities| and
63 // |audio_capabilities| be specified. Add a single valid audio capability
64 // to the DefaultConfiguration().
65 blink::WebMediaKeySystemConfiguration UsableConfiguration() {
66 // blink code parses the contentType into mimeType and codecs, so mimic
xhwang 2017/02/02 23:12:49 nit: Blink
jrummell 2017/02/03 22:30:24 Done.
67 // that here.
68 std::vector<blink::WebMediaKeySystemMediaCapability> audio_capabilities(1);
69 audio_capabilities[0].mimeType = kSupportedAudioContainer;
70 audio_capabilities[0].codecs = kSupportedAudioCodec;
71
72 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
73 config.audioCapabilities = audio_capabilities;
74 return config;
75 }
76
62 class FakeKeySystems : public KeySystems { 77 class FakeKeySystems : public KeySystems {
63 public: 78 public:
64 ~FakeKeySystems() override { 79 ~FakeKeySystems() override {
65 } 80 }
66 81
67 bool IsSupportedKeySystem(const std::string& key_system) const override { 82 bool IsSupportedKeySystem(const std::string& key_system) const override {
68 if (key_system == kSupported) 83 if (key_system == kSupported)
69 return true; 84 return true;
70 return false; 85 return false;
71 } 86 }
(...skipping 16 matching lines...) Expand all
88 } 103 }
89 104
90 // TODO(sandersd): Secure codec simulation. 105 // TODO(sandersd): Secure codec simulation.
91 EmeConfigRule GetContentTypeConfigRule( 106 EmeConfigRule GetContentTypeConfigRule(
92 const std::string& key_system, 107 const std::string& key_system,
93 EmeMediaType media_type, 108 EmeMediaType media_type,
94 const std::string& container_mime_type, 109 const std::string& container_mime_type,
95 const std::vector<std::string>& codecs) const override { 110 const std::vector<std::string>& codecs) const override {
96 if (container_mime_type == kUnsupportedContainer) 111 if (container_mime_type == kUnsupportedContainer)
97 return EmeConfigRule::NOT_SUPPORTED; 112 return EmeConfigRule::NOT_SUPPORTED;
98 DCHECK_EQ(kSupportedContainer, container_mime_type); 113 switch (media_type) {
114 case EmeMediaType::AUDIO:
115 DCHECK_EQ(kSupportedAudioContainer, container_mime_type);
116 break;
117 case EmeMediaType::VIDEO:
118 DCHECK_EQ(kSupportedVideoContainer, container_mime_type);
119 break;
120 }
99 for (const std::string& codec : codecs) { 121 for (const std::string& codec : codecs) {
100 if (codec == kUnsupportedCodec) 122 if (codec == kUnsupportedCodec)
101 return EmeConfigRule::NOT_SUPPORTED; 123 return EmeConfigRule::NOT_SUPPORTED;
102 DCHECK_EQ(kSupportedCodec, codec); 124 switch (media_type) {
125 case EmeMediaType::AUDIO:
126 DCHECK_EQ(kSupportedAudioCodec, codec);
127 break;
128 case EmeMediaType::VIDEO:
129 DCHECK_EQ(kSupportedVideoCodec, codec);
130 break;
131 }
103 } 132 }
104 return EmeConfigRule::SUPPORTED; 133 return EmeConfigRule::SUPPORTED;
105 } 134 }
106 135
107 EmeConfigRule GetRobustnessConfigRule( 136 EmeConfigRule GetRobustnessConfigRule(
108 const std::string& key_system, 137 const std::string& key_system,
109 EmeMediaType media_type, 138 EmeMediaType media_type,
110 const std::string& requested_robustness) const override { 139 const std::string& requested_robustness) const override {
111 if (requested_robustness.empty()) 140 if (requested_robustness.empty())
112 return EmeConfigRule::SUPPORTED; 141 return EmeConfigRule::SUPPORTED;
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 config.persistentState); 316 config.persistentState);
288 317
289 // If this member is not present when the dictionary is passed to 318 // If this member is not present when the dictionary is passed to
290 // requestMediaKeySystemAccess(), the dictionary will be treated as 319 // requestMediaKeySystemAccess(), the dictionary will be treated as
291 // if this member is set to [ "temporary" ]. 320 // if this member is set to [ "temporary" ].
292 ASSERT_EQ(1u, config.sessionTypes.size()); 321 ASSERT_EQ(1u, config.sessionTypes.size());
293 ASSERT_EQ(blink::WebEncryptedMediaSessionType::Temporary, 322 ASSERT_EQ(blink::WebEncryptedMediaSessionType::Temporary,
294 config.sessionTypes[0]); 323 config.sessionTypes[0]);
295 } 324 }
296 325
297 // Most of the tests below assume that the default config is valid.
298 TEST_F(KeySystemConfigSelectorTest, EmptyConfig) { 326 TEST_F(KeySystemConfigSelectorTest, EmptyConfig) {
327 // EME spec requires that at least one of |video_capabilities| and
328 // |audio_capabilities| be specified, so the default config is invalid.
299 configs_.push_back(DefaultConfiguration()); 329 configs_.push_back(DefaultConfiguration());
xhwang 2017/02/02 23:12:49 Looking at this, maybe EmptyConfiguration() would
jrummell 2017/02/03 22:30:24 Done.
330 ASSERT_TRUE(SelectConfigReturnsError());
331 }
332
333 // Most of the tests below assume that the the usable config is valid.
334 // Tests that touch |video_capabilities| and/or |audio_capabilities| can
335 // modify the default config.
336
337 TEST_F(KeySystemConfigSelectorTest, UsableConfig) {
338 configs_.push_back(UsableConfiguration());
300 339
301 ASSERT_TRUE(SelectConfigReturnsConfig()); 340 ASSERT_TRUE(SelectConfigReturnsConfig());
302 EXPECT_EQ("", config_.label); 341 EXPECT_EQ("", config_.label);
303 EXPECT_TRUE(config_.initDataTypes.isEmpty()); 342 EXPECT_TRUE(config_.initDataTypes.isEmpty());
304 EXPECT_TRUE(config_.audioCapabilities.isEmpty()); 343 EXPECT_EQ(1u, config_.audioCapabilities.size());
305 EXPECT_TRUE(config_.videoCapabilities.isEmpty()); 344 EXPECT_TRUE(config_.videoCapabilities.isEmpty());
306 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed, 345 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed,
307 config_.distinctiveIdentifier); 346 config_.distinctiveIdentifier);
308 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed, 347 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed,
309 config_.persistentState); 348 config_.persistentState);
310 ASSERT_EQ(1u, config_.sessionTypes.size()); 349 ASSERT_EQ(1u, config_.sessionTypes.size());
311 EXPECT_EQ(blink::WebEncryptedMediaSessionType::Temporary, 350 EXPECT_EQ(blink::WebEncryptedMediaSessionType::Temporary,
312 config_.sessionTypes[0]); 351 config_.sessionTypes[0]);
313 } 352 }
314 353
315 TEST_F(KeySystemConfigSelectorTest, Label) { 354 TEST_F(KeySystemConfigSelectorTest, Label) {
316 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 355 blink::WebMediaKeySystemConfiguration config = UsableConfiguration();
317 config.label = "foo"; 356 config.label = "foo";
318 configs_.push_back(config); 357 configs_.push_back(config);
319 358
320 ASSERT_TRUE(SelectConfigReturnsConfig()); 359 ASSERT_TRUE(SelectConfigReturnsConfig());
321 EXPECT_EQ("foo", config_.label); 360 EXPECT_EQ("foo", config_.label);
322 } 361 }
323 362
324 // --- keySystem --- 363 // --- keySystem ---
325 // Empty is not tested because the empty check is in Blink. 364 // Empty is not tested because the empty check is in Blink.
326 365
327 TEST_F(KeySystemConfigSelectorTest, KeySystem_NonAscii) { 366 TEST_F(KeySystemConfigSelectorTest, KeySystem_NonAscii) {
328 key_system_ = "\xde\xad\xbe\xef"; 367 key_system_ = "\xde\xad\xbe\xef";
329 configs_.push_back(DefaultConfiguration()); 368 configs_.push_back(UsableConfiguration());
330 ASSERT_TRUE(SelectConfigReturnsError()); 369 ASSERT_TRUE(SelectConfigReturnsError());
331 } 370 }
332 371
333 TEST_F(KeySystemConfigSelectorTest, KeySystem_Unsupported) { 372 TEST_F(KeySystemConfigSelectorTest, KeySystem_Unsupported) {
334 key_system_ = kUnsupported; 373 key_system_ = kUnsupported;
335 configs_.push_back(DefaultConfiguration()); 374 configs_.push_back(UsableConfiguration());
336 ASSERT_TRUE(SelectConfigReturnsError()); 375 ASSERT_TRUE(SelectConfigReturnsError());
337 } 376 }
338 377
339 // --- initDataTypes --- 378 // --- initDataTypes ---
340 379
341 TEST_F(KeySystemConfigSelectorTest, InitDataTypes_Empty) { 380 TEST_F(KeySystemConfigSelectorTest, InitDataTypes_Empty) {
342 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 381 blink::WebMediaKeySystemConfiguration config = UsableConfiguration();
343 configs_.push_back(config); 382 configs_.push_back(config);
344 383
345 ASSERT_TRUE(SelectConfigReturnsConfig()); 384 ASSERT_TRUE(SelectConfigReturnsConfig());
346 } 385 }
347 386
348 TEST_F(KeySystemConfigSelectorTest, InitDataTypes_NoneSupported) { 387 TEST_F(KeySystemConfigSelectorTest, InitDataTypes_NoneSupported) {
349 key_systems_->init_data_type_webm_supported_ = true; 388 key_systems_->init_data_type_webm_supported_ = true;
350 389
351 std::vector<blink::WebEncryptedMediaInitDataType> init_data_types; 390 std::vector<blink::WebEncryptedMediaInitDataType> init_data_types;
352 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Unknown); 391 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Unknown);
353 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Cenc); 392 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Cenc);
354 393
355 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 394 blink::WebMediaKeySystemConfiguration config = UsableConfiguration();
356 config.initDataTypes = init_data_types; 395 config.initDataTypes = init_data_types;
357 configs_.push_back(config); 396 configs_.push_back(config);
358 397
359 ASSERT_TRUE(SelectConfigReturnsError()); 398 ASSERT_TRUE(SelectConfigReturnsError());
360 } 399 }
361 400
362 TEST_F(KeySystemConfigSelectorTest, InitDataTypes_SubsetSupported) { 401 TEST_F(KeySystemConfigSelectorTest, InitDataTypes_SubsetSupported) {
363 key_systems_->init_data_type_webm_supported_ = true; 402 key_systems_->init_data_type_webm_supported_ = true;
364 403
365 std::vector<blink::WebEncryptedMediaInitDataType> init_data_types; 404 std::vector<blink::WebEncryptedMediaInitDataType> init_data_types;
366 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Unknown); 405 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Unknown);
367 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Cenc); 406 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Cenc);
368 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Webm); 407 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Webm);
369 408
370 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 409 blink::WebMediaKeySystemConfiguration config = UsableConfiguration();
371 config.initDataTypes = init_data_types; 410 config.initDataTypes = init_data_types;
372 configs_.push_back(config); 411 configs_.push_back(config);
373 412
374 ASSERT_TRUE(SelectConfigReturnsConfig()); 413 ASSERT_TRUE(SelectConfigReturnsConfig());
375 ASSERT_EQ(1u, config_.initDataTypes.size()); 414 ASSERT_EQ(1u, config_.initDataTypes.size());
376 EXPECT_EQ(blink::WebEncryptedMediaInitDataType::Webm, 415 EXPECT_EQ(blink::WebEncryptedMediaInitDataType::Webm,
377 config_.initDataTypes[0]); 416 config_.initDataTypes[0]);
378 } 417 }
379 418
380 // --- distinctiveIdentifier --- 419 // --- distinctiveIdentifier ---
381 420
382 TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_Default) { 421 TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_Default) {
383 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE; 422 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
384 423
385 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 424 blink::WebMediaKeySystemConfiguration config = UsableConfiguration();
386 config.distinctiveIdentifier = 425 config.distinctiveIdentifier =
387 blink::WebMediaKeySystemConfiguration::Requirement::Optional; 426 blink::WebMediaKeySystemConfiguration::Requirement::Optional;
388 configs_.push_back(config); 427 configs_.push_back(config);
389 428
390 ASSERT_TRUE(SelectConfigReturnsConfig()); 429 ASSERT_TRUE(SelectConfigReturnsConfig());
391 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed, 430 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed,
392 config_.distinctiveIdentifier); 431 config_.distinctiveIdentifier);
393 } 432 }
394 433
395 TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_Forced) { 434 TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_Forced) {
396 media_permission_->is_granted = true; 435 media_permission_->is_granted = true;
397 key_systems_->distinctive_identifier = EmeFeatureSupport::ALWAYS_ENABLED; 436 key_systems_->distinctive_identifier = EmeFeatureSupport::ALWAYS_ENABLED;
398 437
399 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 438 blink::WebMediaKeySystemConfiguration config = UsableConfiguration();
400 config.distinctiveIdentifier = 439 config.distinctiveIdentifier =
401 blink::WebMediaKeySystemConfiguration::Requirement::Optional; 440 blink::WebMediaKeySystemConfiguration::Requirement::Optional;
402 configs_.push_back(config); 441 configs_.push_back(config);
403 442
404 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig()); 443 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig());
405 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required, 444 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required,
406 config_.distinctiveIdentifier); 445 config_.distinctiveIdentifier);
407 } 446 }
408 447
409 TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_Blocked) { 448 TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_Blocked) {
410 key_systems_->distinctive_identifier = EmeFeatureSupport::NOT_SUPPORTED; 449 key_systems_->distinctive_identifier = EmeFeatureSupport::NOT_SUPPORTED;
411 450
412 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 451 blink::WebMediaKeySystemConfiguration config = UsableConfiguration();
413 config.distinctiveIdentifier = 452 config.distinctiveIdentifier =
414 blink::WebMediaKeySystemConfiguration::Requirement::Required; 453 blink::WebMediaKeySystemConfiguration::Requirement::Required;
415 configs_.push_back(config); 454 configs_.push_back(config);
416 455
417 ASSERT_TRUE(SelectConfigReturnsError()); 456 ASSERT_TRUE(SelectConfigReturnsError());
418 } 457 }
419 458
420 TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_RequestsPermission) { 459 TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_RequestsPermission) {
421 media_permission_->is_granted = true; 460 media_permission_->is_granted = true;
422 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE; 461 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
423 462
424 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 463 blink::WebMediaKeySystemConfiguration config = UsableConfiguration();
425 config.distinctiveIdentifier = 464 config.distinctiveIdentifier =
426 blink::WebMediaKeySystemConfiguration::Requirement::Required; 465 blink::WebMediaKeySystemConfiguration::Requirement::Required;
427 configs_.push_back(config); 466 configs_.push_back(config);
428 467
429 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig()); 468 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig());
430 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required, 469 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required,
431 config_.distinctiveIdentifier); 470 config_.distinctiveIdentifier);
432 } 471 }
433 472
434 TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_RespectsPermission) { 473 TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_RespectsPermission) {
435 media_permission_->is_granted = false; 474 media_permission_->is_granted = false;
436 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE; 475 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
437 476
438 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 477 blink::WebMediaKeySystemConfiguration config = UsableConfiguration();
439 config.distinctiveIdentifier = 478 config.distinctiveIdentifier =
440 blink::WebMediaKeySystemConfiguration::Requirement::Required; 479 blink::WebMediaKeySystemConfiguration::Requirement::Required;
441 configs_.push_back(config); 480 configs_.push_back(config);
442 481
443 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsError()); 482 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsError());
444 } 483 }
445 484
446 // --- persistentState --- 485 // --- persistentState ---
447 486
448 TEST_F(KeySystemConfigSelectorTest, PersistentState_Default) { 487 TEST_F(KeySystemConfigSelectorTest, PersistentState_Default) {
449 key_systems_->persistent_state = EmeFeatureSupport::REQUESTABLE; 488 key_systems_->persistent_state = EmeFeatureSupport::REQUESTABLE;
450 489
451 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 490 blink::WebMediaKeySystemConfiguration config = UsableConfiguration();
452 config.persistentState = 491 config.persistentState =
453 blink::WebMediaKeySystemConfiguration::Requirement::Optional; 492 blink::WebMediaKeySystemConfiguration::Requirement::Optional;
454 configs_.push_back(config); 493 configs_.push_back(config);
455 494
456 ASSERT_TRUE(SelectConfigReturnsConfig()); 495 ASSERT_TRUE(SelectConfigReturnsConfig());
457 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed, 496 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed,
458 config_.persistentState); 497 config_.persistentState);
459 } 498 }
460 499
461 TEST_F(KeySystemConfigSelectorTest, PersistentState_Forced) { 500 TEST_F(KeySystemConfigSelectorTest, PersistentState_Forced) {
462 key_systems_->persistent_state = EmeFeatureSupport::ALWAYS_ENABLED; 501 key_systems_->persistent_state = EmeFeatureSupport::ALWAYS_ENABLED;
463 502
464 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 503 blink::WebMediaKeySystemConfiguration config = UsableConfiguration();
465 config.persistentState = 504 config.persistentState =
466 blink::WebMediaKeySystemConfiguration::Requirement::Optional; 505 blink::WebMediaKeySystemConfiguration::Requirement::Optional;
467 configs_.push_back(config); 506 configs_.push_back(config);
468 507
469 ASSERT_TRUE(SelectConfigReturnsConfig()); 508 ASSERT_TRUE(SelectConfigReturnsConfig());
470 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required, 509 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required,
471 config_.persistentState); 510 config_.persistentState);
472 } 511 }
473 512
474 TEST_F(KeySystemConfigSelectorTest, PersistentState_Blocked) { 513 TEST_F(KeySystemConfigSelectorTest, PersistentState_Blocked) {
475 key_systems_->persistent_state = EmeFeatureSupport::ALWAYS_ENABLED; 514 key_systems_->persistent_state = EmeFeatureSupport::ALWAYS_ENABLED;
476 515
477 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 516 blink::WebMediaKeySystemConfiguration config = UsableConfiguration();
478 config.persistentState = 517 config.persistentState =
479 blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed; 518 blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed;
480 configs_.push_back(config); 519 configs_.push_back(config);
481 520
482 ASSERT_TRUE(SelectConfigReturnsError()); 521 ASSERT_TRUE(SelectConfigReturnsError());
483 } 522 }
484 523
485 // --- sessionTypes --- 524 // --- sessionTypes ---
486 525
487 TEST_F(KeySystemConfigSelectorTest, SessionTypes_Empty) { 526 TEST_F(KeySystemConfigSelectorTest, SessionTypes_Empty) {
488 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 527 blink::WebMediaKeySystemConfiguration config = UsableConfiguration();
489 528
490 // Default configuration has [ "temporary" ]. 529 // Default configuration has [ "temporary" ].
491 std::vector<blink::WebEncryptedMediaSessionType> session_types; 530 std::vector<blink::WebEncryptedMediaSessionType> session_types;
492 config.sessionTypes = session_types; 531 config.sessionTypes = session_types;
493 532
494 configs_.push_back(config); 533 configs_.push_back(config);
495 534
496 ASSERT_TRUE(SelectConfigReturnsConfig()); 535 ASSERT_TRUE(SelectConfigReturnsConfig());
497 EXPECT_TRUE(config_.sessionTypes.isEmpty()); 536 EXPECT_TRUE(config_.sessionTypes.isEmpty());
498 } 537 }
499 538
500 TEST_F(KeySystemConfigSelectorTest, SessionTypes_SubsetSupported) { 539 TEST_F(KeySystemConfigSelectorTest, SessionTypes_SubsetSupported) {
501 // Allow persistent state, as it would be required to be successful. 540 // Allow persistent state, as it would be required to be successful.
502 key_systems_->persistent_state = EmeFeatureSupport::REQUESTABLE; 541 key_systems_->persistent_state = EmeFeatureSupport::REQUESTABLE;
503 key_systems_->persistent_license = EmeSessionTypeSupport::NOT_SUPPORTED; 542 key_systems_->persistent_license = EmeSessionTypeSupport::NOT_SUPPORTED;
504 543
505 std::vector<blink::WebEncryptedMediaSessionType> session_types; 544 std::vector<blink::WebEncryptedMediaSessionType> session_types;
506 session_types.push_back(blink::WebEncryptedMediaSessionType::Temporary); 545 session_types.push_back(blink::WebEncryptedMediaSessionType::Temporary);
507 session_types.push_back( 546 session_types.push_back(
508 blink::WebEncryptedMediaSessionType::PersistentLicense); 547 blink::WebEncryptedMediaSessionType::PersistentLicense);
509 548
510 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 549 blink::WebMediaKeySystemConfiguration config = UsableConfiguration();
511 config.sessionTypes = session_types; 550 config.sessionTypes = session_types;
512 configs_.push_back(config); 551 configs_.push_back(config);
513 552
514 ASSERT_TRUE(SelectConfigReturnsError()); 553 ASSERT_TRUE(SelectConfigReturnsError());
515 } 554 }
516 555
517 TEST_F(KeySystemConfigSelectorTest, SessionTypes_AllSupported) { 556 TEST_F(KeySystemConfigSelectorTest, SessionTypes_AllSupported) {
518 // Allow persistent state, and expect it to be required. 557 // Allow persistent state, and expect it to be required.
519 key_systems_->persistent_state = EmeFeatureSupport::REQUESTABLE; 558 key_systems_->persistent_state = EmeFeatureSupport::REQUESTABLE;
520 key_systems_->persistent_license = EmeSessionTypeSupport::SUPPORTED; 559 key_systems_->persistent_license = EmeSessionTypeSupport::SUPPORTED;
521 560
522 std::vector<blink::WebEncryptedMediaSessionType> session_types; 561 std::vector<blink::WebEncryptedMediaSessionType> session_types;
523 session_types.push_back(blink::WebEncryptedMediaSessionType::Temporary); 562 session_types.push_back(blink::WebEncryptedMediaSessionType::Temporary);
524 session_types.push_back( 563 session_types.push_back(
525 blink::WebEncryptedMediaSessionType::PersistentLicense); 564 blink::WebEncryptedMediaSessionType::PersistentLicense);
526 565
527 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 566 blink::WebMediaKeySystemConfiguration config = UsableConfiguration();
528 config.persistentState = 567 config.persistentState =
529 blink::WebMediaKeySystemConfiguration::Requirement::Optional; 568 blink::WebMediaKeySystemConfiguration::Requirement::Optional;
530 config.sessionTypes = session_types; 569 config.sessionTypes = session_types;
531 configs_.push_back(config); 570 configs_.push_back(config);
532 571
533 ASSERT_TRUE(SelectConfigReturnsConfig()); 572 ASSERT_TRUE(SelectConfigReturnsConfig());
534 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required, 573 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required,
535 config_.persistentState); 574 config_.persistentState);
536 ASSERT_EQ(2u, config_.sessionTypes.size()); 575 ASSERT_EQ(2u, config_.sessionTypes.size());
537 EXPECT_EQ(blink::WebEncryptedMediaSessionType::Temporary, 576 EXPECT_EQ(blink::WebEncryptedMediaSessionType::Temporary,
538 config_.sessionTypes[0]); 577 config_.sessionTypes[0]);
539 EXPECT_EQ(blink::WebEncryptedMediaSessionType::PersistentLicense, 578 EXPECT_EQ(blink::WebEncryptedMediaSessionType::PersistentLicense,
540 config_.sessionTypes[1]); 579 config_.sessionTypes[1]);
541 } 580 }
542 581
543 TEST_F(KeySystemConfigSelectorTest, SessionTypes_PermissionCanBeRequired) { 582 TEST_F(KeySystemConfigSelectorTest, SessionTypes_PermissionCanBeRequired) {
544 media_permission_->is_granted = true; 583 media_permission_->is_granted = true;
545 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE; 584 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
546 key_systems_->persistent_state = EmeFeatureSupport::REQUESTABLE; 585 key_systems_->persistent_state = EmeFeatureSupport::REQUESTABLE;
547 key_systems_->persistent_license = 586 key_systems_->persistent_license =
548 EmeSessionTypeSupport::SUPPORTED_WITH_IDENTIFIER; 587 EmeSessionTypeSupport::SUPPORTED_WITH_IDENTIFIER;
549 588
550 std::vector<blink::WebEncryptedMediaSessionType> session_types; 589 std::vector<blink::WebEncryptedMediaSessionType> session_types;
551 session_types.push_back( 590 session_types.push_back(
552 blink::WebEncryptedMediaSessionType::PersistentLicense); 591 blink::WebEncryptedMediaSessionType::PersistentLicense);
553 592
554 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 593 blink::WebMediaKeySystemConfiguration config = UsableConfiguration();
555 config.distinctiveIdentifier = 594 config.distinctiveIdentifier =
556 blink::WebMediaKeySystemConfiguration::Requirement::Optional; 595 blink::WebMediaKeySystemConfiguration::Requirement::Optional;
557 config.persistentState = 596 config.persistentState =
558 blink::WebMediaKeySystemConfiguration::Requirement::Optional; 597 blink::WebMediaKeySystemConfiguration::Requirement::Optional;
559 config.sessionTypes = session_types; 598 config.sessionTypes = session_types;
560 configs_.push_back(config); 599 configs_.push_back(config);
561 600
562 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig()); 601 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig());
563 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required, 602 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required,
564 config_.distinctiveIdentifier); 603 config_.distinctiveIdentifier);
565 } 604 }
566 605
567 // --- videoCapabilities --- 606 // --- videoCapabilities ---
568 607
569 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Empty) { 608 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Empty) {
570 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 609 blink::WebMediaKeySystemConfiguration config = UsableConfiguration();
571 configs_.push_back(config); 610 configs_.push_back(config);
572 611
573 ASSERT_TRUE(SelectConfigReturnsConfig()); 612 ASSERT_TRUE(SelectConfigReturnsConfig());
574 } 613 }
575 614
576 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_NoneSupported) { 615 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_NoneSupported) {
577 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(2); 616 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(2);
578 video_capabilities[0].contentType = "a"; 617 video_capabilities[0].contentType = "a";
579 video_capabilities[0].mimeType = kUnsupportedContainer; 618 video_capabilities[0].mimeType = kUnsupportedContainer;
580 video_capabilities[1].contentType = "b"; 619 video_capabilities[1].contentType = "b";
581 video_capabilities[1].mimeType = kSupportedContainer; 620 video_capabilities[1].mimeType = kSupportedVideoContainer;
582 video_capabilities[1].codecs = kUnsupportedCodec; 621 video_capabilities[1].codecs = kUnsupportedCodec;
583 622
584 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 623 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
585 config.videoCapabilities = video_capabilities; 624 config.videoCapabilities = video_capabilities;
586 configs_.push_back(config); 625 configs_.push_back(config);
587 626
588 ASSERT_TRUE(SelectConfigReturnsError()); 627 ASSERT_TRUE(SelectConfigReturnsError());
589 } 628 }
590 629
591 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_SubsetSupported) { 630 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_SubsetSupported) {
592 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(2); 631 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(2);
593 video_capabilities[0].contentType = "a"; 632 video_capabilities[0].contentType = "a";
594 video_capabilities[0].mimeType = kUnsupportedContainer; 633 video_capabilities[0].mimeType = kUnsupportedContainer;
595 video_capabilities[1].contentType = "b"; 634 video_capabilities[1].contentType = "b";
596 video_capabilities[1].mimeType = kSupportedContainer; 635 video_capabilities[1].mimeType = kSupportedVideoContainer;
597 636
598 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 637 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
599 config.videoCapabilities = video_capabilities; 638 config.videoCapabilities = video_capabilities;
600 configs_.push_back(config); 639 configs_.push_back(config);
601 640
602 ASSERT_TRUE(SelectConfigReturnsConfig()); 641 ASSERT_TRUE(SelectConfigReturnsConfig());
603 ASSERT_EQ(1u, config_.videoCapabilities.size()); 642 ASSERT_EQ(1u, config_.videoCapabilities.size());
604 EXPECT_EQ("b", config_.videoCapabilities[0].contentType); 643 EXPECT_EQ("b", config_.videoCapabilities[0].contentType);
605 EXPECT_EQ(kSupportedContainer, config_.videoCapabilities[0].mimeType); 644 EXPECT_EQ(kSupportedVideoContainer, config_.videoCapabilities[0].mimeType);
606 } 645 }
607 646
608 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_AllSupported) { 647 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_AllSupported) {
609 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(2); 648 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(2);
610 video_capabilities[0].contentType = "a"; 649 video_capabilities[0].contentType = "a";
611 video_capabilities[0].mimeType = kSupportedContainer; 650 video_capabilities[0].mimeType = kSupportedVideoContainer;
612 video_capabilities[1].contentType = "b"; 651 video_capabilities[1].contentType = "b";
613 video_capabilities[1].mimeType = kSupportedContainer; 652 video_capabilities[1].mimeType = kSupportedVideoContainer;
614 video_capabilities[1].codecs = kSupportedCodecs; 653 video_capabilities[1].codecs = kSupportedVideoCodecs;
615 654
616 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 655 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
617 config.videoCapabilities = video_capabilities; 656 config.videoCapabilities = video_capabilities;
618 configs_.push_back(config); 657 configs_.push_back(config);
619 658
620 ASSERT_TRUE(SelectConfigReturnsConfig()); 659 ASSERT_TRUE(SelectConfigReturnsConfig());
621 ASSERT_EQ(2u, config_.videoCapabilities.size()); 660 ASSERT_EQ(2u, config_.videoCapabilities.size());
622 EXPECT_EQ("a", config_.videoCapabilities[0].contentType); 661 EXPECT_EQ("a", config_.videoCapabilities[0].contentType);
623 EXPECT_EQ("b", config_.videoCapabilities[1].contentType); 662 EXPECT_EQ("b", config_.videoCapabilities[1].contentType);
624 } 663 }
625 664
626 TEST_F(KeySystemConfigSelectorTest, 665 TEST_F(KeySystemConfigSelectorTest,
627 VideoCapabilities_Codecs_SubsetSupported) { 666 VideoCapabilities_Codecs_SubsetSupported) {
628 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1); 667 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
629 video_capabilities[0].contentType = "a"; 668 video_capabilities[0].contentType = "a";
630 video_capabilities[0].mimeType = kSupportedContainer; 669 video_capabilities[0].mimeType = kSupportedVideoContainer;
631 video_capabilities[0].codecs = kUnsupportedCodecs; 670 video_capabilities[0].codecs = kUnsupportedCodecs;
632 671
633 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 672 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
634 config.videoCapabilities = video_capabilities; 673 config.videoCapabilities = video_capabilities;
635 configs_.push_back(config); 674 configs_.push_back(config);
636 675
637 ASSERT_TRUE(SelectConfigReturnsError()); 676 ASSERT_TRUE(SelectConfigReturnsError());
638 } 677 }
639 678
640 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Codecs_AllSupported) { 679 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Codecs_AllSupported) {
641 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1); 680 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
642 video_capabilities[0].contentType = "a"; 681 video_capabilities[0].contentType = "a";
643 video_capabilities[0].mimeType = kSupportedContainer; 682 video_capabilities[0].mimeType = kSupportedVideoContainer;
644 video_capabilities[0].codecs = kSupportedCodecs; 683 video_capabilities[0].codecs = kSupportedVideoCodecs;
645 684
646 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 685 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
647 config.videoCapabilities = video_capabilities; 686 config.videoCapabilities = video_capabilities;
648 configs_.push_back(config); 687 configs_.push_back(config);
649 688
650 ASSERT_TRUE(SelectConfigReturnsConfig()); 689 ASSERT_TRUE(SelectConfigReturnsConfig());
651 ASSERT_EQ(1u, config_.videoCapabilities.size()); 690 ASSERT_EQ(1u, config_.videoCapabilities.size());
652 EXPECT_EQ(kSupportedCodecs, config_.videoCapabilities[0].codecs); 691 EXPECT_EQ(kSupportedVideoCodecs, config_.videoCapabilities[0].codecs);
653 } 692 }
654 693
655 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Empty) { 694 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Empty) {
656 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1); 695 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
657 video_capabilities[0].contentType = "a"; 696 video_capabilities[0].contentType = "a";
658 video_capabilities[0].mimeType = kSupportedContainer; 697 video_capabilities[0].mimeType = kSupportedVideoContainer;
659 ASSERT_TRUE(video_capabilities[0].robustness.isEmpty()); 698 ASSERT_TRUE(video_capabilities[0].robustness.isEmpty());
660 699
661 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 700 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
662 config.videoCapabilities = video_capabilities; 701 config.videoCapabilities = video_capabilities;
663 configs_.push_back(config); 702 configs_.push_back(config);
664 703
665 ASSERT_TRUE(SelectConfigReturnsConfig()); 704 ASSERT_TRUE(SelectConfigReturnsConfig());
666 ASSERT_EQ(1u, config_.videoCapabilities.size()); 705 ASSERT_EQ(1u, config_.videoCapabilities.size());
667 EXPECT_TRUE(config_.videoCapabilities[0].robustness.isEmpty()); 706 EXPECT_TRUE(config_.videoCapabilities[0].robustness.isEmpty());
668 } 707 }
669 708
670 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Supported) { 709 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Supported) {
671 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1); 710 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
672 video_capabilities[0].contentType = "a"; 711 video_capabilities[0].contentType = "a";
673 video_capabilities[0].mimeType = kSupportedContainer; 712 video_capabilities[0].mimeType = kSupportedVideoContainer;
674 video_capabilities[0].robustness = kSupported; 713 video_capabilities[0].robustness = kSupported;
675 714
676 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 715 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
677 config.videoCapabilities = video_capabilities; 716 config.videoCapabilities = video_capabilities;
678 configs_.push_back(config); 717 configs_.push_back(config);
679 718
680 ASSERT_TRUE(SelectConfigReturnsConfig()); 719 ASSERT_TRUE(SelectConfigReturnsConfig());
681 ASSERT_EQ(1u, config_.videoCapabilities.size()); 720 ASSERT_EQ(1u, config_.videoCapabilities.size());
682 EXPECT_EQ(kSupported, config_.videoCapabilities[0].robustness); 721 EXPECT_EQ(kSupported, config_.videoCapabilities[0].robustness);
683 } 722 }
684 723
685 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Unsupported) { 724 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Unsupported) {
686 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1); 725 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
687 video_capabilities[0].contentType = "a"; 726 video_capabilities[0].contentType = "a";
688 video_capabilities[0].mimeType = kSupportedContainer; 727 video_capabilities[0].mimeType = kSupportedVideoContainer;
689 video_capabilities[0].robustness = kUnsupported; 728 video_capabilities[0].robustness = kUnsupported;
690 729
691 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 730 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
692 config.videoCapabilities = video_capabilities; 731 config.videoCapabilities = video_capabilities;
693 configs_.push_back(config); 732 configs_.push_back(config);
694 733
695 ASSERT_TRUE(SelectConfigReturnsError()); 734 ASSERT_TRUE(SelectConfigReturnsError());
696 } 735 }
697 736
698 TEST_F(KeySystemConfigSelectorTest, 737 TEST_F(KeySystemConfigSelectorTest,
699 VideoCapabilities_Robustness_PermissionCanBeRequired) { 738 VideoCapabilities_Robustness_PermissionCanBeRequired) {
700 media_permission_->is_granted = true; 739 media_permission_->is_granted = true;
701 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE; 740 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
702 741
703 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1); 742 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
704 video_capabilities[0].contentType = "a"; 743 video_capabilities[0].contentType = "a";
705 video_capabilities[0].mimeType = kSupportedContainer; 744 video_capabilities[0].mimeType = kSupportedVideoContainer;
706 video_capabilities[0].robustness = kRequireIdentifier; 745 video_capabilities[0].robustness = kRequireIdentifier;
707 746
708 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 747 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
709 config.videoCapabilities = video_capabilities; 748 config.videoCapabilities = video_capabilities;
710 configs_.push_back(config); 749 configs_.push_back(config);
711 750
712 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig()); 751 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig());
713 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required, 752 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required,
714 config_.distinctiveIdentifier); 753 config_.distinctiveIdentifier);
715 } 754 }
716 755
717 TEST_F(KeySystemConfigSelectorTest, 756 TEST_F(KeySystemConfigSelectorTest,
718 VideoCapabilities_Robustness_PermissionCanBeRecommended) { 757 VideoCapabilities_Robustness_PermissionCanBeRecommended) {
719 media_permission_->is_granted = false; 758 media_permission_->is_granted = false;
720 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE; 759 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
721 760
722 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1); 761 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
723 video_capabilities[0].contentType = "a"; 762 video_capabilities[0].contentType = "a";
724 video_capabilities[0].mimeType = kSupportedContainer; 763 video_capabilities[0].mimeType = kSupportedVideoContainer;
725 video_capabilities[0].robustness = kRecommendIdentifier; 764 video_capabilities[0].robustness = kRecommendIdentifier;
726 765
727 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 766 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
728 config.videoCapabilities = video_capabilities; 767 config.videoCapabilities = video_capabilities;
729 configs_.push_back(config); 768 configs_.push_back(config);
730 769
731 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig()); 770 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig());
732 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed, 771 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed,
733 config_.distinctiveIdentifier); 772 config_.distinctiveIdentifier);
734 } 773 }
735 774
736 // --- audioCapabilities --- 775 // --- audioCapabilities ---
737 // These are handled by the same code as |videoCapabilities|, so only minimal 776 // These are handled by the same code as |videoCapabilities|, so only minimal
738 // additional testing is done. 777 // additional testing is done.
739 778
740 TEST_F(KeySystemConfigSelectorTest, AudioCapabilities_SubsetSupported) { 779 TEST_F(KeySystemConfigSelectorTest, AudioCapabilities_SubsetSupported) {
741 std::vector<blink::WebMediaKeySystemMediaCapability> audio_capabilities(2); 780 std::vector<blink::WebMediaKeySystemMediaCapability> audio_capabilities(2);
742 audio_capabilities[0].contentType = "a"; 781 audio_capabilities[0].contentType = "a";
743 audio_capabilities[0].mimeType = kUnsupportedContainer; 782 audio_capabilities[0].mimeType = kUnsupportedContainer;
744 audio_capabilities[1].contentType = "b"; 783 audio_capabilities[1].contentType = "b";
745 audio_capabilities[1].mimeType = kSupportedContainer; 784 audio_capabilities[1].mimeType = kSupportedAudioContainer;
746 785
747 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 786 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
748 config.audioCapabilities = audio_capabilities; 787 config.audioCapabilities = audio_capabilities;
749 configs_.push_back(config); 788 configs_.push_back(config);
750 789
751 ASSERT_TRUE(SelectConfigReturnsConfig()); 790 ASSERT_TRUE(SelectConfigReturnsConfig());
752 ASSERT_EQ(1u, config_.audioCapabilities.size()); 791 ASSERT_EQ(1u, config_.audioCapabilities.size());
753 EXPECT_EQ("b", config_.audioCapabilities[0].contentType); 792 EXPECT_EQ("b", config_.audioCapabilities[0].contentType);
754 EXPECT_EQ(kSupportedContainer, config_.audioCapabilities[0].mimeType); 793 EXPECT_EQ(kSupportedAudioContainer, config_.audioCapabilities[0].mimeType);
755 } 794 }
756 795
757 // --- Multiple configurations --- 796 // --- Multiple configurations ---
758 797
759 TEST_F(KeySystemConfigSelectorTest, Configurations_AllSupported) { 798 TEST_F(KeySystemConfigSelectorTest, Configurations_AllSupported) {
760 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration(); 799 blink::WebMediaKeySystemConfiguration config = UsableConfiguration();
761 config.label = "a"; 800 config.label = "a";
762 configs_.push_back(config); 801 configs_.push_back(config);
763 config.label = "b"; 802 config.label = "b";
764 configs_.push_back(config); 803 configs_.push_back(config);
765 804
766 ASSERT_TRUE(SelectConfigReturnsConfig()); 805 ASSERT_TRUE(SelectConfigReturnsConfig());
767 ASSERT_EQ("a", config_.label); 806 ASSERT_EQ("a", config_.label);
768 } 807 }
769 808
770 TEST_F(KeySystemConfigSelectorTest, Configurations_SubsetSupported) { 809 TEST_F(KeySystemConfigSelectorTest, Configurations_SubsetSupported) {
771 blink::WebMediaKeySystemConfiguration config1 = DefaultConfiguration(); 810 blink::WebMediaKeySystemConfiguration config1 = UsableConfiguration();
772 config1.label = "a"; 811 config1.label = "a";
773 std::vector<blink::WebEncryptedMediaInitDataType> init_data_types; 812 std::vector<blink::WebEncryptedMediaInitDataType> init_data_types;
774 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Unknown); 813 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Unknown);
775 config1.initDataTypes = init_data_types; 814 config1.initDataTypes = init_data_types;
776 configs_.push_back(config1); 815 configs_.push_back(config1);
777 816
778 blink::WebMediaKeySystemConfiguration config2 = DefaultConfiguration(); 817 blink::WebMediaKeySystemConfiguration config2 = UsableConfiguration();
779 config2.label = "b"; 818 config2.label = "b";
780 configs_.push_back(config2); 819 configs_.push_back(config2);
781 820
782 ASSERT_TRUE(SelectConfigReturnsConfig()); 821 ASSERT_TRUE(SelectConfigReturnsConfig());
783 ASSERT_EQ("b", config_.label); 822 ASSERT_EQ("b", config_.label);
784 } 823 }
785 824
786 TEST_F(KeySystemConfigSelectorTest, 825 TEST_F(KeySystemConfigSelectorTest,
787 Configurations_FirstRequiresPermission_Allowed) { 826 Configurations_FirstRequiresPermission_Allowed) {
788 media_permission_->is_granted = true; 827 media_permission_->is_granted = true;
789 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE; 828 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
790 829
791 blink::WebMediaKeySystemConfiguration config1 = DefaultConfiguration(); 830 blink::WebMediaKeySystemConfiguration config1 = UsableConfiguration();
792 config1.label = "a"; 831 config1.label = "a";
793 config1.distinctiveIdentifier = 832 config1.distinctiveIdentifier =
794 blink::WebMediaKeySystemConfiguration::Requirement::Required; 833 blink::WebMediaKeySystemConfiguration::Requirement::Required;
795 configs_.push_back(config1); 834 configs_.push_back(config1);
796 835
797 blink::WebMediaKeySystemConfiguration config2 = DefaultConfiguration(); 836 blink::WebMediaKeySystemConfiguration config2 = UsableConfiguration();
798 config2.label = "b"; 837 config2.label = "b";
799 configs_.push_back(config2); 838 configs_.push_back(config2);
800 839
801 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig()); 840 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig());
802 ASSERT_EQ("a", config_.label); 841 ASSERT_EQ("a", config_.label);
803 } 842 }
804 843
805 TEST_F(KeySystemConfigSelectorTest, 844 TEST_F(KeySystemConfigSelectorTest,
806 Configurations_FirstRequiresPermission_Rejected) { 845 Configurations_FirstRequiresPermission_Rejected) {
807 media_permission_->is_granted = false; 846 media_permission_->is_granted = false;
808 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE; 847 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
809 848
810 blink::WebMediaKeySystemConfiguration config1 = DefaultConfiguration(); 849 blink::WebMediaKeySystemConfiguration config1 = UsableConfiguration();
811 config1.label = "a"; 850 config1.label = "a";
812 config1.distinctiveIdentifier = 851 config1.distinctiveIdentifier =
813 blink::WebMediaKeySystemConfiguration::Requirement::Required; 852 blink::WebMediaKeySystemConfiguration::Requirement::Required;
814 configs_.push_back(config1); 853 configs_.push_back(config1);
815 854
816 blink::WebMediaKeySystemConfiguration config2 = DefaultConfiguration(); 855 blink::WebMediaKeySystemConfiguration config2 = UsableConfiguration();
817 config2.label = "b"; 856 config2.label = "b";
818 configs_.push_back(config2); 857 configs_.push_back(config2);
819 858
820 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig()); 859 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig());
821 ASSERT_EQ("b", config_.label); 860 ASSERT_EQ("b", config_.label);
822 } 861 }
823 862
824 } // namespace media 863 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698