File: encrypted_media_utils.h

package info (click to toggle)
chromium 139.0.7258.127-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 6,122,068 kB
  • sloc: cpp: 35,100,771; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (92 lines) | stat: -rw-r--r-- 3,334 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
// 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(
      const String& 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_