| // Copyright 2015 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_ENCRYPTEDMEDIA_ENCRYPTED_MEDIA_UTILS_H_ |
| #define THIRD_PARTY_BLINK_RENDERER_MODULES_ENCRYPTEDMEDIA_ENCRYPTED_MEDIA_UTILS_H_ |
| |
| #include "third_party/blink/public/platform/web_encrypted_media_key_information.h" |
| #include "third_party/blink/public/platform/web_encrypted_media_types.h" |
| #include "third_party/blink/public/platform/web_media_key_system_configuration.h" |
| #include "third_party/blink/renderer/bindings/modules/v8/v8_media_key_status.h" |
| #include "third_party/blink/renderer/bindings/modules/v8/v8_media_keys_requirement.h" |
| #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" |
| #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" |
| |
| namespace media { |
| enum class EmeInitDataType; |
| } |
| |
| namespace blink { |
| |
| // Deprecated: This was used on some older UKMs. For new UKMs please use |
| // media::GetKeySystemIntForUKM() instead. Reported to UKM. Existing values must |
| // not change and new values must be added at the end of the list. |
| enum KeySystemForUkmLegacy { |
| kClearKey = 0, |
| kWidevine = 1, |
| }; |
| |
| // Enum for EME MediaKeySystemAccess, MediaKeys and MediaKeySession APIs. |
| // Reported to UKM. Existing values should NEVER be changed. |
| enum class EmeApiType { |
| // Value 0 is reserved to detect errors. |
| kCreateMediaKeys = 1, |
| kSetServerCertificate = 2, |
| kGetStatusForPolicy = 3, |
| kGenerateRequest = 4, |
| kLoad = 5, |
| kUpdate = 6, |
| kClose = 7, |
| kRemove = 8, |
| }; |
| |
| // Config associated with a MediaKeys and its sessions. |
| struct MediaKeysConfig { |
| String key_system; |
| bool use_hardware_secure_codecs = false; |
| }; |
| |
| constexpr const char* kEncryptedMediaPermissionsPolicyConsoleWarning = |
| "Encrypted Media access has been blocked because of a Feature Policy " |
| "applied to the current document. See https://crbug.com/414348233 for more " |
| "details."; |
| |
| class ExecutionContext; |
| class LocalDOMWindow; |
| class V8MediaKeyStatus; |
| class WebEncryptedMediaClient; |
| |
| class EncryptedMediaUtils { |
| STATIC_ONLY(EncryptedMediaUtils); |
| |
| public: |
| static media::EmeInitDataType ConvertToInitDataType( |
| const String& init_data_type); |
| static String ConvertFromInitDataType(media::EmeInitDataType init_data_type); |
| |
| static WebEncryptedMediaSessionType ConvertToSessionType( |
| StringView session_type); |
| static String ConvertFromSessionType(WebEncryptedMediaSessionType); |
| |
| static V8MediaKeyStatus ConvertKeyStatusToEnum( |
| const WebEncryptedMediaKeyInformation::KeyStatus); |
| |
| static WebMediaKeySystemConfiguration::Requirement |
| ConvertToMediaKeysRequirement(V8MediaKeysRequirement::Enum); |
| static V8MediaKeysRequirement::Enum ConvertMediaKeysRequirementToEnum( |
| WebMediaKeySystemConfiguration::Requirement); |
| |
| static WebEncryptedMediaClient* GetEncryptedMediaClientFromLocalDOMWindow( |
| LocalDOMWindow*); |
| |
| static void ReportUsage(EmeApiType api_type, |
| ExecutionContext* execution_context, |
| const String& key_system, |
| bool use_hardware_secure_codecs, |
| bool is_persistent_session); |
| }; |
| |
| } // namespace blink |
| |
| #endif // THIRD_PARTY_BLINK_RENDERER_MODULES_ENCRYPTEDMEDIA_ENCRYPTED_MEDIA_UTILS_H_ |