OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <string> | 5 #include <string> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 24 matching lines...) Expand all Loading... |
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 Loading... |
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 |
OLD | NEW |