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

Side by Side Diff: content/renderer/media/cdm/renderer_cdm_manager.h

Issue 2380743004: media: Remove Browser CDM implementation (Closed)
Patch Set: media: Remove Browser CDM implementation 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
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #ifndef CONTENT_RENDERER_MEDIA_CDM_RENDERER_CDM_MANAGER_H_
6 #define CONTENT_RENDERER_MEDIA_CDM_RENDERER_CDM_MANAGER_H_
7
8 #include <stdint.h>
9
10 #include <map>
11 #include <string>
12 #include <vector>
13
14 #include "base/macros.h"
15 #include "content/common/media/cdm_messages_enums.h"
16 #include "content/public/renderer/render_frame_observer.h"
17 #include "media/base/media_keys.h"
18 #include "url/gurl.h"
19
20 namespace blink {
21 class WebFrame;
22 }
23
24 namespace content {
25
26 class ProxyMediaKeys;
27
28 // Class for managing all the CDM objects in the same RenderFrame.
29 class RendererCdmManager : public RenderFrameObserver {
30 public:
31 // Constructs a RendererCdmManager object for the |render_frame|.
32 explicit RendererCdmManager(RenderFrame* render_frame);
33 ~RendererCdmManager() override;
34
35 // RenderFrameObserver overrides.
36 bool OnMessageReceived(const IPC::Message& msg) override;
37
38 // Encrypted media related methods.
39 void InitializeCdm(int cdm_id,
40 uint32_t promise_id,
41 ProxyMediaKeys* media_keys,
42 const std::string& key_system,
43 const GURL& security_origin,
44 bool use_hw_secure_codecs);
45 void SetServerCertificate(int cdm_id,
46 uint32_t promise_id,
47 const std::vector<uint8_t>& certificate);
48 void CreateSessionAndGenerateRequest(
49 int cdm_id,
50 uint32_t promise_id,
51 media::MediaKeys::SessionType session_type,
52 CdmHostMsg_CreateSession_InitDataType init_data_type,
53 const std::vector<uint8_t>& init_data);
54 void LoadSession(int cdm_id,
55 uint32_t promise_id,
56 media::MediaKeys::SessionType session_type,
57 const std::string& session_id);
58 void UpdateSession(int cdm_id,
59 uint32_t promise_id,
60 const std::string& session_id,
61 const std::vector<uint8_t>& response);
62 void CloseSession(int cdm_id,
63 uint32_t promise_id,
64 const std::string& session_id);
65 void RemoveSession(int cdm_id,
66 uint32_t promise_id,
67 const std::string& session_id);
68 void DestroyCdm(int cdm_id);
69
70 // Registers a ProxyMediaKeys object. Returns allocated CDM ID.
71 int RegisterMediaKeys(ProxyMediaKeys* media_keys);
72
73 // Unregisters a ProxyMediaKeys object identified by |cdm_id|.
74 void UnregisterMediaKeys(int cdm_id);
75
76 private:
77 // RenderFrameObserver implementation.
78 void OnDestruct() override;
79
80 // Gets the pointer to ProxyMediaKeys given the |cdm_id|.
81 ProxyMediaKeys* GetMediaKeys(int cdm_id);
82
83 // Message handlers.
84 void OnSessionMessage(int cdm_id,
85 const std::string& session_id,
86 media::MediaKeys::MessageType message_type,
87 const std::vector<uint8_t>& message);
88 void OnSessionClosed(int cdm_id, const std::string& session_id);
89 void OnSessionKeysChange(
90 int cdm_id,
91 const std::string& session_id,
92 bool has_additional_usable_key,
93 const std::vector<media::CdmKeyInformation>& key_info_vector);
94 void OnSessionExpirationUpdate(int cdm_id,
95 const std::string& session_id,
96 const base::Time& new_expiry_time);
97
98 void OnPromiseResolved(int cdm_id, uint32_t promise_id);
99 void OnPromiseResolvedWithSession(int cdm_id,
100 uint32_t promise_id,
101 const std::string& session_id);
102 void OnPromiseRejected(int cdm_id,
103 uint32_t promise_id,
104 media::MediaKeys::Exception exception,
105 uint32_t system_code,
106 const std::string& error_message);
107
108 // CDM ID should be unique per renderer frame.
109 // TODO(xhwang): Use uint32_t to prevent undefined overflow behavior.
110 int next_cdm_id_;
111
112 // CDM ID to ProxyMediaKeys mapping.
113 std::map<int, ProxyMediaKeys*> proxy_media_keys_map_;
114
115 DISALLOW_COPY_AND_ASSIGN(RendererCdmManager);
116 };
117
118 } // namespace content
119
120 #endif // CONTENT_RENDERER_MEDIA_CDM_RENDERER_CDM_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698