| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "media/blink/key_system_config_selector.h" | 5 #include "media/blink/key_system_config_selector.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 454 // From | 454 // From |
| 455 // http://w3c.github.io/encrypted-media/#get-supported-configuration-and-conse
nt | 455 // http://w3c.github.io/encrypted-media/#get-supported-configuration-and-conse
nt |
| 456 // 1. Let accumulated configuration be a new MediaKeySystemConfiguration | 456 // 1. Let accumulated configuration be a new MediaKeySystemConfiguration |
| 457 // dictionary. (Done by caller.) | 457 // dictionary. (Done by caller.) |
| 458 // 2. Set the label member of accumulated configuration to equal the label | 458 // 2. Set the label member of accumulated configuration to equal the label |
| 459 // member of candidate configuration. | 459 // member of candidate configuration. |
| 460 accumulated_configuration->label = candidate.label; | 460 accumulated_configuration->label = candidate.label; |
| 461 | 461 |
| 462 // 3. If the initDataTypes member of candidate configuration is non-empty, | 462 // 3. If the initDataTypes member of candidate configuration is non-empty, |
| 463 // run the following steps: | 463 // run the following steps: |
| 464 if (!candidate.initDataTypes.isEmpty()) { | 464 if (!candidate.initDataTypes.empty()) { |
| 465 // 3.1. Let supported types be an empty sequence of DOMStrings. | 465 // 3.1. Let supported types be an empty sequence of DOMStrings. |
| 466 std::vector<blink::WebEncryptedMediaInitDataType> supported_types; | 466 std::vector<blink::WebEncryptedMediaInitDataType> supported_types; |
| 467 | 467 |
| 468 // 3.2. For each value in candidate configuration's initDataTypes member: | 468 // 3.2. For each value in candidate configuration's initDataTypes member: |
| 469 for (size_t i = 0; i < candidate.initDataTypes.size(); i++) { | 469 for (size_t i = 0; i < candidate.initDataTypes.size(); i++) { |
| 470 // 3.2.1. Let initDataType be the value. | 470 // 3.2.1. Let initDataType be the value. |
| 471 blink::WebEncryptedMediaInitDataType init_data_type = | 471 blink::WebEncryptedMediaInitDataType init_data_type = |
| 472 candidate.initDataTypes[i]; | 472 candidate.initDataTypes[i]; |
| 473 | 473 |
| 474 // 3.2.2. If the implementation supports generating requests based on | 474 // 3.2.2. If the implementation supports generating requests based on |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 643 EmeFeatureRequirement::Required; | 643 EmeFeatureRequirement::Required; |
| 644 } | 644 } |
| 645 } | 645 } |
| 646 | 646 |
| 647 // 14. Set the sessionTypes member of accumulated configuration to | 647 // 14. Set the sessionTypes member of accumulated configuration to |
| 648 // session types. | 648 // session types. |
| 649 accumulated_configuration->sessionTypes = session_types; | 649 accumulated_configuration->sessionTypes = session_types; |
| 650 | 650 |
| 651 // 15. If the videoCapabilities and audioCapabilities members in candidate | 651 // 15. If the videoCapabilities and audioCapabilities members in candidate |
| 652 // configuration are both empty, return NotSupported. | 652 // configuration are both empty, return NotSupported. |
| 653 if (candidate.videoCapabilities.isEmpty() && | 653 if (candidate.videoCapabilities.empty() && |
| 654 candidate.audioCapabilities.isEmpty()) { | 654 candidate.audioCapabilities.empty()) { |
| 655 DVLOG(2) << "Rejecting requested configuration because " | 655 DVLOG(2) << "Rejecting requested configuration because " |
| 656 << "neither audioCapabilities nor videoCapabilities is specified"; | 656 << "neither audioCapabilities nor videoCapabilities is specified"; |
| 657 return CONFIGURATION_NOT_SUPPORTED; | 657 return CONFIGURATION_NOT_SUPPORTED; |
| 658 } | 658 } |
| 659 | 659 |
| 660 // 16. If the videoCapabilities member in candidate configuration is | 660 // 16. If the videoCapabilities member in candidate configuration is |
| 661 // non-empty: | 661 // non-empty: |
| 662 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities; | 662 std::vector<blink::WebMediaKeySystemMediaCapability> video_capabilities; |
| 663 if (!candidate.videoCapabilities.isEmpty()) { | 663 if (!candidate.videoCapabilities.empty()) { |
| 664 // 16.1. Let video capabilities be the result of executing the Get | 664 // 16.1. Let video capabilities be the result of executing the Get |
| 665 // Supported Capabilities for Audio/Video Type algorithm on Video, | 665 // Supported Capabilities for Audio/Video Type algorithm on Video, |
| 666 // candidate configuration's videoCapabilities member, accumulated | 666 // candidate configuration's videoCapabilities member, accumulated |
| 667 // configuration, and restrictions. | 667 // configuration, and restrictions. |
| 668 // 16.2. If video capabilities is null, return NotSupported. | 668 // 16.2. If video capabilities is null, return NotSupported. |
| 669 if (!GetSupportedCapabilities(key_system, EmeMediaType::VIDEO, | 669 if (!GetSupportedCapabilities(key_system, EmeMediaType::VIDEO, |
| 670 candidate.videoCapabilities, config_state, | 670 candidate.videoCapabilities, config_state, |
| 671 &video_capabilities)) { | 671 &video_capabilities)) { |
| 672 return CONFIGURATION_NOT_SUPPORTED; | 672 return CONFIGURATION_NOT_SUPPORTED; |
| 673 } | 673 } |
| 674 | 674 |
| 675 // 16.3. Set the videoCapabilities member of accumulated configuration | 675 // 16.3. Set the videoCapabilities member of accumulated configuration |
| 676 // to video capabilities. | 676 // to video capabilities. |
| 677 accumulated_configuration->videoCapabilities = video_capabilities; | 677 accumulated_configuration->videoCapabilities = video_capabilities; |
| 678 } else { | 678 } else { |
| 679 // Otherwise set the videoCapabilities member of accumulated configuration | 679 // Otherwise set the videoCapabilities member of accumulated configuration |
| 680 // to an empty sequence. | 680 // to an empty sequence. |
| 681 accumulated_configuration->videoCapabilities = video_capabilities; | 681 accumulated_configuration->videoCapabilities = video_capabilities; |
| 682 } | 682 } |
| 683 | 683 |
| 684 // 17. If the audioCapabilities member in candidate configuration is | 684 // 17. If the audioCapabilities member in candidate configuration is |
| 685 // non-empty: | 685 // non-empty: |
| 686 std::vector<blink::WebMediaKeySystemMediaCapability> audio_capabilities; | 686 std::vector<blink::WebMediaKeySystemMediaCapability> audio_capabilities; |
| 687 if (!candidate.audioCapabilities.isEmpty()) { | 687 if (!candidate.audioCapabilities.empty()) { |
| 688 // 17.1. Let audio capabilities be the result of executing the Get | 688 // 17.1. Let audio capabilities be the result of executing the Get |
| 689 // Supported Capabilities for Audio/Video Type algorithm on Audio, | 689 // Supported Capabilities for Audio/Video Type algorithm on Audio, |
| 690 // candidate configuration's audioCapabilities member, accumulated | 690 // candidate configuration's audioCapabilities member, accumulated |
| 691 // configuration, and restrictions. | 691 // configuration, and restrictions. |
| 692 // 17.2. If audio capabilities is null, return NotSupported. | 692 // 17.2. If audio capabilities is null, return NotSupported. |
| 693 if (!GetSupportedCapabilities(key_system, EmeMediaType::AUDIO, | 693 if (!GetSupportedCapabilities(key_system, EmeMediaType::AUDIO, |
| 694 candidate.audioCapabilities, config_state, | 694 candidate.audioCapabilities, config_state, |
| 695 &audio_capabilities)) { | 695 &audio_capabilities)) { |
| 696 return CONFIGURATION_NOT_SUPPORTED; | 696 return CONFIGURATION_NOT_SUPPORTED; |
| 697 } | 697 } |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 930 | 930 |
| 931 void KeySystemConfigSelector::OnPermissionResult( | 931 void KeySystemConfigSelector::OnPermissionResult( |
| 932 std::unique_ptr<SelectionRequest> request, | 932 std::unique_ptr<SelectionRequest> request, |
| 933 bool is_permission_granted) { | 933 bool is_permission_granted) { |
| 934 request->was_permission_requested = true; | 934 request->was_permission_requested = true; |
| 935 request->is_permission_granted = is_permission_granted; | 935 request->is_permission_granted = is_permission_granted; |
| 936 SelectConfigInternal(std::move(request)); | 936 SelectConfigInternal(std::move(request)); |
| 937 } | 937 } |
| 938 | 938 |
| 939 } // namespace media | 939 } // namespace media |
| OLD | NEW |