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

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

Issue 2349813002: EME: Update MediaKeySystemConfiguration defaults; require non-empty capabilities (Closed)
Patch Set: fix Android compile Created 4 years, 2 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
« no previous file with comments | « media/blink/key_system_config_selector.cc ('k') | media/test/data/eme_player_js/globals.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 24 matching lines...) Expand all
35 const char kUnsupportedContainer[] = "video/foo"; 35 const char kUnsupportedContainer[] = "video/foo";
36 36
37 // TODO(sandersd): Extended codec variants (requires proprietary codec support). 37 // TODO(sandersd): Extended codec variants (requires proprietary codec support).
38 const char kSupportedCodec[] = "vp8"; 38 const char kSupportedCodec[] = "vp8";
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 kSupportedCodecs[] = "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
46 // create a default object that mimics what would be created if an empty
47 // dictionary was passed in.
48 blink::WebMediaKeySystemConfiguration DefaultConfiguration() {
49 // http://w3c.github.io/encrypted-media/#mediakeysystemconfiguration-dictionar y
50 // If this member (sessionTypes) is not present when the dictionary
51 // is passed to requestMediaKeySystemAccess(), the dictionary will
52 // be treated as if this member is set to [ "temporary" ].
53 std::vector<blink::WebEncryptedMediaSessionType> session_types;
54 session_types.push_back(blink::WebEncryptedMediaSessionType::Temporary);
55
56 blink::WebMediaKeySystemConfiguration config;
57 config.label = "";
58 config.sessionTypes = session_types;
59 return config;
60 }
61
45 class FakeKeySystems : public KeySystems { 62 class FakeKeySystems : public KeySystems {
46 public: 63 public:
47 ~FakeKeySystems() override { 64 ~FakeKeySystems() override {
48 } 65 }
49 66
50 bool IsSupportedKeySystem(const std::string& key_system) const override { 67 bool IsSupportedKeySystem(const std::string& key_system) const override {
51 if (key_system == kSupported) 68 if (key_system == kSupported)
52 return true; 69 return true;
53 return false; 70 return false;
54 } 71 }
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 254
238 DISALLOW_COPY_AND_ASSIGN(KeySystemConfigSelectorTest); 255 DISALLOW_COPY_AND_ASSIGN(KeySystemConfigSelectorTest);
239 }; 256 };
240 257
241 // --- Basics --- 258 // --- Basics ---
242 259
243 TEST_F(KeySystemConfigSelectorTest, NoConfigs) { 260 TEST_F(KeySystemConfigSelectorTest, NoConfigs) {
244 ASSERT_TRUE(SelectConfigReturnsError()); 261 ASSERT_TRUE(SelectConfigReturnsError());
245 } 262 }
246 263
247 // Most of the tests below assume that an empty config is valid. 264 TEST_F(KeySystemConfigSelectorTest, DefaultConfig) {
265 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
266
267 // label = "";
268 ASSERT_EQ("", config.label);
269
270 // initDataTypes = [];
271 ASSERT_EQ(0u, config.initDataTypes.size());
272
273 // audioCapabilities = [];
274 ASSERT_EQ(0u, config.audioCapabilities.size());
275
276 // videoCapabilities = [];
277 ASSERT_EQ(0u, config.videoCapabilities.size());
278
279 // distinctiveIdentifier = "optional";
280 ASSERT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Optional,
281 config.distinctiveIdentifier);
282
283 // persistentState = "optional";
284 ASSERT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Optional,
285 config.persistentState);
286
287 // If this member is not present when the dictionary is passed to
288 // requestMediaKeySystemAccess(), the dictionary will be treated as
289 // if this member is set to [ "temporary" ].
290 ASSERT_EQ(1u, config.sessionTypes.size());
291 ASSERT_EQ(blink::WebEncryptedMediaSessionType::Temporary,
292 config.sessionTypes[0]);
293 }
294
295 // Most of the tests below assume that the default config is valid.
248 TEST_F(KeySystemConfigSelectorTest, EmptyConfig) { 296 TEST_F(KeySystemConfigSelectorTest, EmptyConfig) {
249 configs_.push_back(blink::WebMediaKeySystemConfiguration()); 297 configs_.push_back(DefaultConfiguration());
250 298
251 ASSERT_TRUE(SelectConfigReturnsConfig()); 299 ASSERT_TRUE(SelectConfigReturnsConfig());
252 EXPECT_TRUE(config_.label.isNull()); 300 EXPECT_EQ("", config_.label);
253 EXPECT_TRUE(config_.initDataTypes.isEmpty()); 301 EXPECT_TRUE(config_.initDataTypes.isEmpty());
254 EXPECT_TRUE(config_.audioCapabilities.isEmpty()); 302 EXPECT_TRUE(config_.audioCapabilities.isEmpty());
255 EXPECT_TRUE(config_.videoCapabilities.isEmpty()); 303 EXPECT_TRUE(config_.videoCapabilities.isEmpty());
256 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed, 304 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed,
257 config_.distinctiveIdentifier); 305 config_.distinctiveIdentifier);
258 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed, 306 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed,
259 config_.persistentState); 307 config_.persistentState);
260 ASSERT_EQ(1u, config_.sessionTypes.size()); 308 ASSERT_EQ(1u, config_.sessionTypes.size());
261 EXPECT_EQ(blink::WebEncryptedMediaSessionType::Temporary, 309 EXPECT_EQ(blink::WebEncryptedMediaSessionType::Temporary,
262 config_.sessionTypes[0]); 310 config_.sessionTypes[0]);
263 } 311 }
264 312
265 TEST_F(KeySystemConfigSelectorTest, Label) { 313 TEST_F(KeySystemConfigSelectorTest, Label) {
266 blink::WebMediaKeySystemConfiguration config; 314 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
267 config.label = "foo"; 315 config.label = "foo";
268 configs_.push_back(config); 316 configs_.push_back(config);
269 317
270 ASSERT_TRUE(SelectConfigReturnsConfig()); 318 ASSERT_TRUE(SelectConfigReturnsConfig());
271 EXPECT_EQ("foo", config_.label); 319 EXPECT_EQ("foo", config_.label);
272 } 320 }
273 321
274 // --- keySystem --- 322 // --- keySystem ---
275 // Empty is not tested because the empty check is in Blink. 323 // Empty is not tested because the empty check is in Blink.
276 324
277 TEST_F(KeySystemConfigSelectorTest, KeySystem_NonAscii) { 325 TEST_F(KeySystemConfigSelectorTest, KeySystem_NonAscii) {
278 key_system_ = "\xde\xad\xbe\xef"; 326 key_system_ = "\xde\xad\xbe\xef";
279 configs_.push_back(blink::WebMediaKeySystemConfiguration()); 327 configs_.push_back(DefaultConfiguration());
280 ASSERT_TRUE(SelectConfigReturnsError()); 328 ASSERT_TRUE(SelectConfigReturnsError());
281 } 329 }
282 330
283 TEST_F(KeySystemConfigSelectorTest, KeySystem_Unsupported) { 331 TEST_F(KeySystemConfigSelectorTest, KeySystem_Unsupported) {
284 key_system_ = kUnsupported; 332 key_system_ = kUnsupported;
285 configs_.push_back(blink::WebMediaKeySystemConfiguration()); 333 configs_.push_back(DefaultConfiguration());
286 ASSERT_TRUE(SelectConfigReturnsError()); 334 ASSERT_TRUE(SelectConfigReturnsError());
287 } 335 }
288 336
289 // --- initDataTypes --- 337 // --- initDataTypes ---
290 338
291 TEST_F(KeySystemConfigSelectorTest, InitDataTypes_Empty) { 339 TEST_F(KeySystemConfigSelectorTest, InitDataTypes_Empty) {
292 blink::WebMediaKeySystemConfiguration config; 340 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
293 config.hasInitDataTypes = true;
294 configs_.push_back(config); 341 configs_.push_back(config);
295 342
296 ASSERT_TRUE(SelectConfigReturnsError()); 343 ASSERT_TRUE(SelectConfigReturnsConfig());
297 } 344 }
298 345
299 TEST_F(KeySystemConfigSelectorTest, InitDataTypes_NoneSupported) { 346 TEST_F(KeySystemConfigSelectorTest, InitDataTypes_NoneSupported) {
300 key_systems_->init_data_type_webm_supported_ = true; 347 key_systems_->init_data_type_webm_supported_ = true;
301 348
302 std::vector<blink::WebEncryptedMediaInitDataType> init_data_types; 349 std::vector<blink::WebEncryptedMediaInitDataType> init_data_types;
303 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Unknown); 350 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Unknown);
304 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Cenc); 351 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Cenc);
305 352
306 blink::WebMediaKeySystemConfiguration config; 353 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
307 config.hasInitDataTypes = true;
308 config.initDataTypes = init_data_types; 354 config.initDataTypes = init_data_types;
309 configs_.push_back(config); 355 configs_.push_back(config);
310 356
311 ASSERT_TRUE(SelectConfigReturnsError()); 357 ASSERT_TRUE(SelectConfigReturnsError());
312 } 358 }
313 359
314 TEST_F(KeySystemConfigSelectorTest, InitDataTypes_SubsetSupported) { 360 TEST_F(KeySystemConfigSelectorTest, InitDataTypes_SubsetSupported) {
315 key_systems_->init_data_type_webm_supported_ = true; 361 key_systems_->init_data_type_webm_supported_ = true;
316 362
317 std::vector<blink::WebEncryptedMediaInitDataType> init_data_types; 363 std::vector<blink::WebEncryptedMediaInitDataType> init_data_types;
318 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Unknown); 364 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Unknown);
319 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Cenc); 365 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Cenc);
320 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Webm); 366 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Webm);
321 367
322 blink::WebMediaKeySystemConfiguration config; 368 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
323 config.hasInitDataTypes = true;
324 config.initDataTypes = init_data_types; 369 config.initDataTypes = init_data_types;
325 configs_.push_back(config); 370 configs_.push_back(config);
326 371
327 ASSERT_TRUE(SelectConfigReturnsConfig()); 372 ASSERT_TRUE(SelectConfigReturnsConfig());
328 ASSERT_EQ(1u, config_.initDataTypes.size()); 373 ASSERT_EQ(1u, config_.initDataTypes.size());
329 EXPECT_EQ(blink::WebEncryptedMediaInitDataType::Webm, 374 EXPECT_EQ(blink::WebEncryptedMediaInitDataType::Webm,
330 config_.initDataTypes[0]); 375 config_.initDataTypes[0]);
331 } 376 }
332 377
333 // --- distinctiveIdentifier --- 378 // --- distinctiveIdentifier ---
334 379
335 TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_Default) { 380 TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_Default) {
336 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE; 381 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
337 382
338 blink::WebMediaKeySystemConfiguration config; 383 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
339 config.distinctiveIdentifier = 384 config.distinctiveIdentifier =
340 blink::WebMediaKeySystemConfiguration::Requirement::Optional; 385 blink::WebMediaKeySystemConfiguration::Requirement::Optional;
341 configs_.push_back(config); 386 configs_.push_back(config);
342 387
343 ASSERT_TRUE(SelectConfigReturnsConfig()); 388 ASSERT_TRUE(SelectConfigReturnsConfig());
344 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed, 389 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed,
345 config_.distinctiveIdentifier); 390 config_.distinctiveIdentifier);
346 } 391 }
347 392
348 TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_Forced) { 393 TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_Forced) {
349 media_permission_->is_granted = true; 394 media_permission_->is_granted = true;
350 key_systems_->distinctive_identifier = EmeFeatureSupport::ALWAYS_ENABLED; 395 key_systems_->distinctive_identifier = EmeFeatureSupport::ALWAYS_ENABLED;
351 396
352 blink::WebMediaKeySystemConfiguration config; 397 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
353 config.distinctiveIdentifier = 398 config.distinctiveIdentifier =
354 blink::WebMediaKeySystemConfiguration::Requirement::Optional; 399 blink::WebMediaKeySystemConfiguration::Requirement::Optional;
355 configs_.push_back(config); 400 configs_.push_back(config);
356 401
357 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig()); 402 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig());
358 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required, 403 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required,
359 config_.distinctiveIdentifier); 404 config_.distinctiveIdentifier);
360 } 405 }
361 406
362 TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_Blocked) { 407 TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_Blocked) {
363 key_systems_->distinctive_identifier = EmeFeatureSupport::NOT_SUPPORTED; 408 key_systems_->distinctive_identifier = EmeFeatureSupport::NOT_SUPPORTED;
364 409
365 blink::WebMediaKeySystemConfiguration config; 410 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
366 config.distinctiveIdentifier = 411 config.distinctiveIdentifier =
367 blink::WebMediaKeySystemConfiguration::Requirement::Required; 412 blink::WebMediaKeySystemConfiguration::Requirement::Required;
368 configs_.push_back(config); 413 configs_.push_back(config);
369 414
370 ASSERT_TRUE(SelectConfigReturnsError()); 415 ASSERT_TRUE(SelectConfigReturnsError());
371 } 416 }
372 417
373 TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_RequestsPermission) { 418 TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_RequestsPermission) {
374 media_permission_->is_granted = true; 419 media_permission_->is_granted = true;
375 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE; 420 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
376 421
377 blink::WebMediaKeySystemConfiguration config; 422 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
378 config.distinctiveIdentifier = 423 config.distinctiveIdentifier =
379 blink::WebMediaKeySystemConfiguration::Requirement::Required; 424 blink::WebMediaKeySystemConfiguration::Requirement::Required;
380 configs_.push_back(config); 425 configs_.push_back(config);
381 426
382 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig()); 427 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig());
383 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required, 428 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required,
384 config_.distinctiveIdentifier); 429 config_.distinctiveIdentifier);
385 } 430 }
386 431
387 TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_RespectsPermission) { 432 TEST_F(KeySystemConfigSelectorTest, DistinctiveIdentifier_RespectsPermission) {
388 media_permission_->is_granted = false; 433 media_permission_->is_granted = false;
389 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE; 434 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
390 435
391 blink::WebMediaKeySystemConfiguration config; 436 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
392 config.distinctiveIdentifier = 437 config.distinctiveIdentifier =
393 blink::WebMediaKeySystemConfiguration::Requirement::Required; 438 blink::WebMediaKeySystemConfiguration::Requirement::Required;
394 configs_.push_back(config); 439 configs_.push_back(config);
395 440
396 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsError()); 441 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsError());
397 } 442 }
398 443
399 // --- persistentState --- 444 // --- persistentState ---
400 445
401 TEST_F(KeySystemConfigSelectorTest, PersistentState_Default) { 446 TEST_F(KeySystemConfigSelectorTest, PersistentState_Default) {
402 key_systems_->persistent_state = EmeFeatureSupport::REQUESTABLE; 447 key_systems_->persistent_state = EmeFeatureSupport::REQUESTABLE;
403 448
404 blink::WebMediaKeySystemConfiguration config; 449 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
405 config.persistentState = 450 config.persistentState =
406 blink::WebMediaKeySystemConfiguration::Requirement::Optional; 451 blink::WebMediaKeySystemConfiguration::Requirement::Optional;
407 configs_.push_back(config); 452 configs_.push_back(config);
408 453
409 ASSERT_TRUE(SelectConfigReturnsConfig()); 454 ASSERT_TRUE(SelectConfigReturnsConfig());
410 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed, 455 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed,
411 config_.persistentState); 456 config_.persistentState);
412 } 457 }
413 458
414 TEST_F(KeySystemConfigSelectorTest, PersistentState_Forced) { 459 TEST_F(KeySystemConfigSelectorTest, PersistentState_Forced) {
415 key_systems_->persistent_state = EmeFeatureSupport::ALWAYS_ENABLED; 460 key_systems_->persistent_state = EmeFeatureSupport::ALWAYS_ENABLED;
416 461
417 blink::WebMediaKeySystemConfiguration config; 462 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
418 config.persistentState = 463 config.persistentState =
419 blink::WebMediaKeySystemConfiguration::Requirement::Optional; 464 blink::WebMediaKeySystemConfiguration::Requirement::Optional;
420 configs_.push_back(config); 465 configs_.push_back(config);
421 466
422 ASSERT_TRUE(SelectConfigReturnsConfig()); 467 ASSERT_TRUE(SelectConfigReturnsConfig());
423 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required, 468 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required,
424 config_.persistentState); 469 config_.persistentState);
425 } 470 }
426 471
427 TEST_F(KeySystemConfigSelectorTest, PersistentState_Blocked) { 472 TEST_F(KeySystemConfigSelectorTest, PersistentState_Blocked) {
428 key_systems_->persistent_state = EmeFeatureSupport::ALWAYS_ENABLED; 473 key_systems_->persistent_state = EmeFeatureSupport::ALWAYS_ENABLED;
429 474
430 blink::WebMediaKeySystemConfiguration config; 475 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
431 config.persistentState = 476 config.persistentState =
432 blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed; 477 blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed;
433 configs_.push_back(config); 478 configs_.push_back(config);
434 479
435 ASSERT_TRUE(SelectConfigReturnsError()); 480 ASSERT_TRUE(SelectConfigReturnsError());
436 } 481 }
437 482
438 // --- sessionTypes --- 483 // --- sessionTypes ---
439 484
440 TEST_F(KeySystemConfigSelectorTest, SessionTypes_Empty) { 485 TEST_F(KeySystemConfigSelectorTest, SessionTypes_Empty) {
441 blink::WebMediaKeySystemConfiguration config; 486 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
442 config.hasSessionTypes = true; 487
488 // Default configuration has [ "temporary" ].
489 std::vector<blink::WebEncryptedMediaSessionType> session_types;
490 config.sessionTypes = session_types;
491
443 configs_.push_back(config); 492 configs_.push_back(config);
444 493
445 ASSERT_TRUE(SelectConfigReturnsConfig()); 494 ASSERT_TRUE(SelectConfigReturnsConfig());
446 EXPECT_TRUE(config_.sessionTypes.isEmpty()); 495 EXPECT_TRUE(config_.sessionTypes.isEmpty());
447 } 496 }
448 497
449 TEST_F(KeySystemConfigSelectorTest, SessionTypes_SubsetSupported) { 498 TEST_F(KeySystemConfigSelectorTest, SessionTypes_SubsetSupported) {
450 // Allow persistent state, as it would be required to be successful. 499 // Allow persistent state, as it would be required to be successful.
451 key_systems_->persistent_state = EmeFeatureSupport::REQUESTABLE; 500 key_systems_->persistent_state = EmeFeatureSupport::REQUESTABLE;
452 key_systems_->persistent_license = EmeSessionTypeSupport::NOT_SUPPORTED; 501 key_systems_->persistent_license = EmeSessionTypeSupport::NOT_SUPPORTED;
453 502
454 std::vector<blink::WebEncryptedMediaSessionType> session_types; 503 std::vector<blink::WebEncryptedMediaSessionType> session_types;
455 session_types.push_back(blink::WebEncryptedMediaSessionType::Temporary); 504 session_types.push_back(blink::WebEncryptedMediaSessionType::Temporary);
456 session_types.push_back( 505 session_types.push_back(
457 blink::WebEncryptedMediaSessionType::PersistentLicense); 506 blink::WebEncryptedMediaSessionType::PersistentLicense);
458 507
459 blink::WebMediaKeySystemConfiguration config; 508 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
460 config.hasSessionTypes = true;
461 config.sessionTypes = session_types; 509 config.sessionTypes = session_types;
462 configs_.push_back(config); 510 configs_.push_back(config);
463 511
464 ASSERT_TRUE(SelectConfigReturnsError()); 512 ASSERT_TRUE(SelectConfigReturnsError());
465 } 513 }
466 514
467 TEST_F(KeySystemConfigSelectorTest, SessionTypes_AllSupported) { 515 TEST_F(KeySystemConfigSelectorTest, SessionTypes_AllSupported) {
468 // Allow persistent state, and expect it to be required. 516 // Allow persistent state, and expect it to be required.
469 key_systems_->persistent_state = EmeFeatureSupport::REQUESTABLE; 517 key_systems_->persistent_state = EmeFeatureSupport::REQUESTABLE;
470 key_systems_->persistent_license = EmeSessionTypeSupport::SUPPORTED; 518 key_systems_->persistent_license = EmeSessionTypeSupport::SUPPORTED;
471 519
472 std::vector<blink::WebEncryptedMediaSessionType> session_types; 520 std::vector<blink::WebEncryptedMediaSessionType> session_types;
473 session_types.push_back(blink::WebEncryptedMediaSessionType::Temporary); 521 session_types.push_back(blink::WebEncryptedMediaSessionType::Temporary);
474 session_types.push_back( 522 session_types.push_back(
475 blink::WebEncryptedMediaSessionType::PersistentLicense); 523 blink::WebEncryptedMediaSessionType::PersistentLicense);
476 524
477 blink::WebMediaKeySystemConfiguration config; 525 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
478 config.persistentState = 526 config.persistentState =
479 blink::WebMediaKeySystemConfiguration::Requirement::Optional; 527 blink::WebMediaKeySystemConfiguration::Requirement::Optional;
480 config.hasSessionTypes = true;
481 config.sessionTypes = session_types; 528 config.sessionTypes = session_types;
482 configs_.push_back(config); 529 configs_.push_back(config);
483 530
484 ASSERT_TRUE(SelectConfigReturnsConfig()); 531 ASSERT_TRUE(SelectConfigReturnsConfig());
485 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required, 532 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required,
486 config_.persistentState); 533 config_.persistentState);
487 ASSERT_EQ(2u, config_.sessionTypes.size()); 534 ASSERT_EQ(2u, config_.sessionTypes.size());
488 EXPECT_EQ(blink::WebEncryptedMediaSessionType::Temporary, 535 EXPECT_EQ(blink::WebEncryptedMediaSessionType::Temporary,
489 config_.sessionTypes[0]); 536 config_.sessionTypes[0]);
490 EXPECT_EQ(blink::WebEncryptedMediaSessionType::PersistentLicense, 537 EXPECT_EQ(blink::WebEncryptedMediaSessionType::PersistentLicense,
491 config_.sessionTypes[1]); 538 config_.sessionTypes[1]);
492 } 539 }
493 540
494 TEST_F(KeySystemConfigSelectorTest, SessionTypes_PermissionCanBeRequired) { 541 TEST_F(KeySystemConfigSelectorTest, SessionTypes_PermissionCanBeRequired) {
495 media_permission_->is_granted = true; 542 media_permission_->is_granted = true;
496 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE; 543 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
497 key_systems_->persistent_state = EmeFeatureSupport::REQUESTABLE; 544 key_systems_->persistent_state = EmeFeatureSupport::REQUESTABLE;
498 key_systems_->persistent_license = 545 key_systems_->persistent_license =
499 EmeSessionTypeSupport::SUPPORTED_WITH_IDENTIFIER; 546 EmeSessionTypeSupport::SUPPORTED_WITH_IDENTIFIER;
500 547
501 std::vector<blink::WebEncryptedMediaSessionType> session_types; 548 std::vector<blink::WebEncryptedMediaSessionType> session_types;
502 session_types.push_back( 549 session_types.push_back(
503 blink::WebEncryptedMediaSessionType::PersistentLicense); 550 blink::WebEncryptedMediaSessionType::PersistentLicense);
504 551
505 blink::WebMediaKeySystemConfiguration config; 552 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
506 config.distinctiveIdentifier = 553 config.distinctiveIdentifier =
507 blink::WebMediaKeySystemConfiguration::Requirement::Optional; 554 blink::WebMediaKeySystemConfiguration::Requirement::Optional;
508 config.persistentState = 555 config.persistentState =
509 blink::WebMediaKeySystemConfiguration::Requirement::Optional; 556 blink::WebMediaKeySystemConfiguration::Requirement::Optional;
510 config.hasSessionTypes = true;
511 config.sessionTypes = session_types; 557 config.sessionTypes = session_types;
512 configs_.push_back(config); 558 configs_.push_back(config);
513 559
514 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig()); 560 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig());
515 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required, 561 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required,
516 config_.distinctiveIdentifier); 562 config_.distinctiveIdentifier);
517 } 563 }
518 564
519 // --- videoCapabilities --- 565 // --- videoCapabilities ---
520 566
521 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Empty) { 567 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Empty) {
522 blink::WebMediaKeySystemConfiguration config; 568 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
523 config.hasVideoCapabilities = true;
524 configs_.push_back(config); 569 configs_.push_back(config);
525 570
526 ASSERT_TRUE(SelectConfigReturnsError()); 571 ASSERT_TRUE(SelectConfigReturnsConfig());
527 } 572 }
528 573
529 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_NoneSupported) { 574 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_NoneSupported) {
530 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(2); 575 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(2);
531 video_capabilities[0].contentType = "a"; 576 video_capabilities[0].contentType = "a";
532 video_capabilities[0].mimeType = kUnsupportedContainer; 577 video_capabilities[0].mimeType = kUnsupportedContainer;
533 video_capabilities[1].contentType = "b"; 578 video_capabilities[1].contentType = "b";
534 video_capabilities[1].mimeType = kSupportedContainer; 579 video_capabilities[1].mimeType = kSupportedContainer;
535 video_capabilities[1].codecs = kUnsupportedCodec; 580 video_capabilities[1].codecs = kUnsupportedCodec;
536 581
537 blink::WebMediaKeySystemConfiguration config; 582 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
538 config.hasVideoCapabilities = true;
539 config.videoCapabilities = video_capabilities; 583 config.videoCapabilities = video_capabilities;
540 configs_.push_back(config); 584 configs_.push_back(config);
541 585
542 ASSERT_TRUE(SelectConfigReturnsError()); 586 ASSERT_TRUE(SelectConfigReturnsError());
543 } 587 }
544 588
545 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_SubsetSupported) { 589 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_SubsetSupported) {
546 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(2); 590 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(2);
547 video_capabilities[0].contentType = "a"; 591 video_capabilities[0].contentType = "a";
548 video_capabilities[0].mimeType = kUnsupportedContainer; 592 video_capabilities[0].mimeType = kUnsupportedContainer;
549 video_capabilities[1].contentType = "b"; 593 video_capabilities[1].contentType = "b";
550 video_capabilities[1].mimeType = kSupportedContainer; 594 video_capabilities[1].mimeType = kSupportedContainer;
551 595
552 blink::WebMediaKeySystemConfiguration config; 596 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
553 config.hasVideoCapabilities = true;
554 config.videoCapabilities = video_capabilities; 597 config.videoCapabilities = video_capabilities;
555 configs_.push_back(config); 598 configs_.push_back(config);
556 599
557 ASSERT_TRUE(SelectConfigReturnsConfig()); 600 ASSERT_TRUE(SelectConfigReturnsConfig());
558 ASSERT_EQ(1u, config_.videoCapabilities.size()); 601 ASSERT_EQ(1u, config_.videoCapabilities.size());
559 EXPECT_EQ("b", config_.videoCapabilities[0].contentType); 602 EXPECT_EQ("b", config_.videoCapabilities[0].contentType);
560 EXPECT_EQ(kSupportedContainer, config_.videoCapabilities[0].mimeType); 603 EXPECT_EQ(kSupportedContainer, config_.videoCapabilities[0].mimeType);
561 } 604 }
562 605
563 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_AllSupported) { 606 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_AllSupported) {
564 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(2); 607 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(2);
565 video_capabilities[0].contentType = "a"; 608 video_capabilities[0].contentType = "a";
566 video_capabilities[0].mimeType = kSupportedContainer; 609 video_capabilities[0].mimeType = kSupportedContainer;
567 video_capabilities[1].contentType = "b"; 610 video_capabilities[1].contentType = "b";
568 video_capabilities[1].mimeType = kSupportedContainer; 611 video_capabilities[1].mimeType = kSupportedContainer;
569 video_capabilities[1].codecs = kSupportedCodecs; 612 video_capabilities[1].codecs = kSupportedCodecs;
570 613
571 blink::WebMediaKeySystemConfiguration config; 614 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
572 config.hasVideoCapabilities = true;
573 config.videoCapabilities = video_capabilities; 615 config.videoCapabilities = video_capabilities;
574 configs_.push_back(config); 616 configs_.push_back(config);
575 617
576 ASSERT_TRUE(SelectConfigReturnsConfig()); 618 ASSERT_TRUE(SelectConfigReturnsConfig());
577 ASSERT_EQ(2u, config_.videoCapabilities.size()); 619 ASSERT_EQ(2u, config_.videoCapabilities.size());
578 EXPECT_EQ("a", config_.videoCapabilities[0].contentType); 620 EXPECT_EQ("a", config_.videoCapabilities[0].contentType);
579 EXPECT_EQ("b", config_.videoCapabilities[1].contentType); 621 EXPECT_EQ("b", config_.videoCapabilities[1].contentType);
580 } 622 }
581 623
582 TEST_F(KeySystemConfigSelectorTest, 624 TEST_F(KeySystemConfigSelectorTest,
583 VideoCapabilities_Codecs_SubsetSupported) { 625 VideoCapabilities_Codecs_SubsetSupported) {
584 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1); 626 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
585 video_capabilities[0].contentType = "a"; 627 video_capabilities[0].contentType = "a";
586 video_capabilities[0].mimeType = kSupportedContainer; 628 video_capabilities[0].mimeType = kSupportedContainer;
587 video_capabilities[0].codecs = kUnsupportedCodecs; 629 video_capabilities[0].codecs = kUnsupportedCodecs;
588 630
589 blink::WebMediaKeySystemConfiguration config; 631 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
590 config.hasVideoCapabilities = true;
591 config.videoCapabilities = video_capabilities; 632 config.videoCapabilities = video_capabilities;
592 configs_.push_back(config); 633 configs_.push_back(config);
593 634
594 ASSERT_TRUE(SelectConfigReturnsError()); 635 ASSERT_TRUE(SelectConfigReturnsError());
595 } 636 }
596 637
597 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Codecs_AllSupported) { 638 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Codecs_AllSupported) {
598 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1); 639 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
599 video_capabilities[0].contentType = "a"; 640 video_capabilities[0].contentType = "a";
600 video_capabilities[0].mimeType = kSupportedContainer; 641 video_capabilities[0].mimeType = kSupportedContainer;
601 video_capabilities[0].codecs = kSupportedCodecs; 642 video_capabilities[0].codecs = kSupportedCodecs;
602 643
603 blink::WebMediaKeySystemConfiguration config; 644 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
604 config.hasVideoCapabilities = true;
605 config.videoCapabilities = video_capabilities; 645 config.videoCapabilities = video_capabilities;
606 configs_.push_back(config); 646 configs_.push_back(config);
607 647
608 ASSERT_TRUE(SelectConfigReturnsConfig()); 648 ASSERT_TRUE(SelectConfigReturnsConfig());
609 ASSERT_EQ(1u, config_.videoCapabilities.size()); 649 ASSERT_EQ(1u, config_.videoCapabilities.size());
610 EXPECT_EQ(kSupportedCodecs, config_.videoCapabilities[0].codecs); 650 EXPECT_EQ(kSupportedCodecs, config_.videoCapabilities[0].codecs);
611 } 651 }
612 652
613 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Supported) { 653 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Supported) {
614 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1); 654 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
615 video_capabilities[0].contentType = "a"; 655 video_capabilities[0].contentType = "a";
616 video_capabilities[0].mimeType = kSupportedContainer; 656 video_capabilities[0].mimeType = kSupportedContainer;
617 video_capabilities[0].robustness = kSupported; 657 video_capabilities[0].robustness = kSupported;
618 658
619 blink::WebMediaKeySystemConfiguration config; 659 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
620 config.hasVideoCapabilities = true;
621 config.videoCapabilities = video_capabilities; 660 config.videoCapabilities = video_capabilities;
622 configs_.push_back(config); 661 configs_.push_back(config);
623 662
624 ASSERT_TRUE(SelectConfigReturnsConfig()); 663 ASSERT_TRUE(SelectConfigReturnsConfig());
625 ASSERT_EQ(1u, config_.videoCapabilities.size()); 664 ASSERT_EQ(1u, config_.videoCapabilities.size());
626 EXPECT_EQ(kSupported, config_.videoCapabilities[0].robustness); 665 EXPECT_EQ(kSupported, config_.videoCapabilities[0].robustness);
627 } 666 }
628 667
629 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Unsupported) { 668 TEST_F(KeySystemConfigSelectorTest, VideoCapabilities_Robustness_Unsupported) {
630 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1); 669 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
631 video_capabilities[0].contentType = "a"; 670 video_capabilities[0].contentType = "a";
632 video_capabilities[0].mimeType = kSupportedContainer; 671 video_capabilities[0].mimeType = kSupportedContainer;
633 video_capabilities[0].robustness = kUnsupported; 672 video_capabilities[0].robustness = kUnsupported;
634 673
635 blink::WebMediaKeySystemConfiguration config; 674 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
636 config.hasVideoCapabilities = true;
637 config.videoCapabilities = video_capabilities; 675 config.videoCapabilities = video_capabilities;
638 configs_.push_back(config); 676 configs_.push_back(config);
639 677
640 ASSERT_TRUE(SelectConfigReturnsError()); 678 ASSERT_TRUE(SelectConfigReturnsError());
641 } 679 }
642 680
643 TEST_F(KeySystemConfigSelectorTest, 681 TEST_F(KeySystemConfigSelectorTest,
644 VideoCapabilities_Robustness_PermissionCanBeRequired) { 682 VideoCapabilities_Robustness_PermissionCanBeRequired) {
645 media_permission_->is_granted = true; 683 media_permission_->is_granted = true;
646 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE; 684 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
647 685
648 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1); 686 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
649 video_capabilities[0].contentType = "a"; 687 video_capabilities[0].contentType = "a";
650 video_capabilities[0].mimeType = kSupportedContainer; 688 video_capabilities[0].mimeType = kSupportedContainer;
651 video_capabilities[0].robustness = kRequireIdentifier; 689 video_capabilities[0].robustness = kRequireIdentifier;
652 690
653 blink::WebMediaKeySystemConfiguration config; 691 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
654 config.hasVideoCapabilities = true;
655 config.videoCapabilities = video_capabilities; 692 config.videoCapabilities = video_capabilities;
656 configs_.push_back(config); 693 configs_.push_back(config);
657 694
658 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig()); 695 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig());
659 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required, 696 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::Required,
660 config_.distinctiveIdentifier); 697 config_.distinctiveIdentifier);
661 } 698 }
662 699
663 TEST_F(KeySystemConfigSelectorTest, 700 TEST_F(KeySystemConfigSelectorTest,
664 VideoCapabilities_Robustness_PermissionCanBeRecommended) { 701 VideoCapabilities_Robustness_PermissionCanBeRecommended) {
665 media_permission_->is_granted = false; 702 media_permission_->is_granted = false;
666 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE; 703 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
667 704
668 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1); 705 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities(1);
669 video_capabilities[0].contentType = "a"; 706 video_capabilities[0].contentType = "a";
670 video_capabilities[0].mimeType = kSupportedContainer; 707 video_capabilities[0].mimeType = kSupportedContainer;
671 video_capabilities[0].robustness = kRecommendIdentifier; 708 video_capabilities[0].robustness = kRecommendIdentifier;
672 709
673 blink::WebMediaKeySystemConfiguration config; 710 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
674 config.hasVideoCapabilities = true;
675 config.videoCapabilities = video_capabilities; 711 config.videoCapabilities = video_capabilities;
676 configs_.push_back(config); 712 configs_.push_back(config);
677 713
678 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig()); 714 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig());
679 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed, 715 EXPECT_EQ(blink::WebMediaKeySystemConfiguration::Requirement::NotAllowed,
680 config_.distinctiveIdentifier); 716 config_.distinctiveIdentifier);
681 } 717 }
682 718
683 // --- audioCapabilities --- 719 // --- audioCapabilities ---
684 // These are handled by the same code as |videoCapabilities|, so only minimal 720 // These are handled by the same code as |videoCapabilities|, so only minimal
685 // additional testing is done. 721 // additional testing is done.
686 722
687 TEST_F(KeySystemConfigSelectorTest, AudioCapabilities_SubsetSupported) { 723 TEST_F(KeySystemConfigSelectorTest, AudioCapabilities_SubsetSupported) {
688 std::vector<blink::WebMediaKeySystemMediaCapability> audio_capabilities(2); 724 std::vector<blink::WebMediaKeySystemMediaCapability> audio_capabilities(2);
689 audio_capabilities[0].contentType = "a"; 725 audio_capabilities[0].contentType = "a";
690 audio_capabilities[0].mimeType = kUnsupportedContainer; 726 audio_capabilities[0].mimeType = kUnsupportedContainer;
691 audio_capabilities[1].contentType = "b"; 727 audio_capabilities[1].contentType = "b";
692 audio_capabilities[1].mimeType = kSupportedContainer; 728 audio_capabilities[1].mimeType = kSupportedContainer;
693 729
694 blink::WebMediaKeySystemConfiguration config; 730 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
695 config.hasAudioCapabilities = true;
696 config.audioCapabilities = audio_capabilities; 731 config.audioCapabilities = audio_capabilities;
697 configs_.push_back(config); 732 configs_.push_back(config);
698 733
699 ASSERT_TRUE(SelectConfigReturnsConfig()); 734 ASSERT_TRUE(SelectConfigReturnsConfig());
700 ASSERT_EQ(1u, config_.audioCapabilities.size()); 735 ASSERT_EQ(1u, config_.audioCapabilities.size());
701 EXPECT_EQ("b", config_.audioCapabilities[0].contentType); 736 EXPECT_EQ("b", config_.audioCapabilities[0].contentType);
702 EXPECT_EQ(kSupportedContainer, config_.audioCapabilities[0].mimeType); 737 EXPECT_EQ(kSupportedContainer, config_.audioCapabilities[0].mimeType);
703 } 738 }
704 739
705 // --- Multiple configurations --- 740 // --- Multiple configurations ---
706 741
707 TEST_F(KeySystemConfigSelectorTest, Configurations_AllSupported) { 742 TEST_F(KeySystemConfigSelectorTest, Configurations_AllSupported) {
708 blink::WebMediaKeySystemConfiguration config; 743 blink::WebMediaKeySystemConfiguration config = DefaultConfiguration();
709 config.label = "a"; 744 config.label = "a";
710 configs_.push_back(config); 745 configs_.push_back(config);
711 config.label = "b"; 746 config.label = "b";
712 configs_.push_back(config); 747 configs_.push_back(config);
713 748
714 ASSERT_TRUE(SelectConfigReturnsConfig()); 749 ASSERT_TRUE(SelectConfigReturnsConfig());
715 ASSERT_EQ("a", config_.label); 750 ASSERT_EQ("a", config_.label);
716 } 751 }
717 752
718 TEST_F(KeySystemConfigSelectorTest, Configurations_SubsetSupported) { 753 TEST_F(KeySystemConfigSelectorTest, Configurations_SubsetSupported) {
719 blink::WebMediaKeySystemConfiguration config1; 754 blink::WebMediaKeySystemConfiguration config1 = DefaultConfiguration();
720 config1.label = "a"; 755 config1.label = "a";
721 config1.hasInitDataTypes = true; 756 std::vector<blink::WebEncryptedMediaInitDataType> init_data_types;
757 init_data_types.push_back(blink::WebEncryptedMediaInitDataType::Unknown);
758 config1.initDataTypes = init_data_types;
722 configs_.push_back(config1); 759 configs_.push_back(config1);
723 760
724 blink::WebMediaKeySystemConfiguration config2; 761 blink::WebMediaKeySystemConfiguration config2 = DefaultConfiguration();
725 config2.label = "b"; 762 config2.label = "b";
726 configs_.push_back(config2); 763 configs_.push_back(config2);
727 764
728 ASSERT_TRUE(SelectConfigReturnsConfig()); 765 ASSERT_TRUE(SelectConfigReturnsConfig());
729 ASSERT_EQ("b", config_.label); 766 ASSERT_EQ("b", config_.label);
730 } 767 }
731 768
732 TEST_F(KeySystemConfigSelectorTest, 769 TEST_F(KeySystemConfigSelectorTest,
733 Configurations_FirstRequiresPermission_Allowed) { 770 Configurations_FirstRequiresPermission_Allowed) {
734 media_permission_->is_granted = true; 771 media_permission_->is_granted = true;
735 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE; 772 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
736 773
737 blink::WebMediaKeySystemConfiguration config1; 774 blink::WebMediaKeySystemConfiguration config1 = DefaultConfiguration();
738 config1.label = "a"; 775 config1.label = "a";
739 config1.distinctiveIdentifier = 776 config1.distinctiveIdentifier =
740 blink::WebMediaKeySystemConfiguration::Requirement::Required; 777 blink::WebMediaKeySystemConfiguration::Requirement::Required;
741 configs_.push_back(config1); 778 configs_.push_back(config1);
742 779
743 blink::WebMediaKeySystemConfiguration config2; 780 blink::WebMediaKeySystemConfiguration config2 = DefaultConfiguration();
744 config2.label = "b"; 781 config2.label = "b";
745 configs_.push_back(config2); 782 configs_.push_back(config2);
746 783
747 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig()); 784 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig());
748 ASSERT_EQ("a", config_.label); 785 ASSERT_EQ("a", config_.label);
749 } 786 }
750 787
751 TEST_F(KeySystemConfigSelectorTest, 788 TEST_F(KeySystemConfigSelectorTest,
752 Configurations_FirstRequiresPermission_Rejected) { 789 Configurations_FirstRequiresPermission_Rejected) {
753 media_permission_->is_granted = false; 790 media_permission_->is_granted = false;
754 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE; 791 key_systems_->distinctive_identifier = EmeFeatureSupport::REQUESTABLE;
755 792
756 blink::WebMediaKeySystemConfiguration config1; 793 blink::WebMediaKeySystemConfiguration config1 = DefaultConfiguration();
757 config1.label = "a"; 794 config1.label = "a";
758 config1.distinctiveIdentifier = 795 config1.distinctiveIdentifier =
759 blink::WebMediaKeySystemConfiguration::Requirement::Required; 796 blink::WebMediaKeySystemConfiguration::Requirement::Required;
760 configs_.push_back(config1); 797 configs_.push_back(config1);
761 798
762 blink::WebMediaKeySystemConfiguration config2; 799 blink::WebMediaKeySystemConfiguration config2 = DefaultConfiguration();
763 config2.label = "b"; 800 config2.label = "b";
764 configs_.push_back(config2); 801 configs_.push_back(config2);
765 802
766 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig()); 803 ASSERT_TRUE(SelectConfigRequestsPermissionAndReturnsConfig());
767 ASSERT_EQ("b", config_.label); 804 ASSERT_EQ("b", config_.label);
768 } 805 }
769 806
770 } // namespace media 807 } // namespace media
OLDNEW
« no previous file with comments | « media/blink/key_system_config_selector.cc ('k') | media/test/data/eme_player_js/globals.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698