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.
5 // IPC messages for content decryption module (CDM) implementation.
6 // Multiply-included message file, hence no include guard.
11 #include "base/basictypes.h"
12 #include "content/common/content_export.h"
13 #include "content/common/media/cdm_messages_enums.h"
14 #include "ipc/ipc_message_macros.h"
15 #include "media/base/cdm_key_information.h"
16 #include "media/base/media_keys.h"
19 #undef IPC_MESSAGE_EXPORT
20 #define IPC_MESSAGE_EXPORT CONTENT_EXPORT
21 #define IPC_MESSAGE_START CdmMsgStart
23 IPC_ENUM_TRAITS_MAX_VALUE(media::CdmKeyInformation::KeyStatus
,
24 media::CdmKeyInformation::KEY_STATUS_MAX
)
25 IPC_ENUM_TRAITS_MAX_VALUE(media::MediaKeys::Exception
,
26 media::MediaKeys::EXCEPTION_MAX
)
27 IPC_ENUM_TRAITS_MAX_VALUE(media::MediaKeys::MessageType
,
28 media::MediaKeys::MESSAGE_TYPE_MAX
)
29 IPC_ENUM_TRAITS_MAX_VALUE(CdmHostMsg_CreateSession_InitDataType
,
32 IPC_STRUCT_TRAITS_BEGIN(media::CdmKeyInformation
)
33 IPC_STRUCT_TRAITS_MEMBER(key_id
)
34 IPC_STRUCT_TRAITS_MEMBER(status
)
35 IPC_STRUCT_TRAITS_MEMBER(system_code
)
36 IPC_STRUCT_TRAITS_END()
38 // Messages from render to browser.
40 IPC_MESSAGE_CONTROL4(CdmHostMsg_InitializeCdm
,
41 int /* render_frame_id */,
43 std::string
/* key_system */,
44 GURL
/* security_origin */)
46 IPC_MESSAGE_CONTROL4(CdmHostMsg_SetServerCertificate
,
47 int /* render_frame_id */,
49 uint32_t /* promise_id */,
50 std::vector
<uint8_t> /* certificate */)
52 IPC_MESSAGE_CONTROL5(CdmHostMsg_CreateSessionAndGenerateRequest
,
53 int /* render_frame_id */,
55 uint32_t /* promise_id */,
56 CdmHostMsg_CreateSession_InitDataType
/* init_data_type */,
57 std::vector
<uint8_t> /* init_data */)
59 IPC_MESSAGE_CONTROL5(CdmHostMsg_UpdateSession
,
60 int /* render_frame_id */,
62 uint32_t /* promise_id */,
63 std::string
/* session_id */,
64 std::vector
<uint8_t> /* response */)
66 IPC_MESSAGE_CONTROL4(CdmHostMsg_CloseSession
,
67 int /* render_frame_id */,
69 uint32_t /* promise_id */,
70 std::string
/* session_id */)
72 IPC_MESSAGE_CONTROL2(CdmHostMsg_DestroyCdm
,
73 int /* render_frame_id */,
76 // Messages from browser to render.
78 IPC_MESSAGE_ROUTED5(CdmMsg_SessionMessage
,
80 std::string
/* session_id */,
81 media::MediaKeys::MessageType
/* message_type */,
82 std::vector
<uint8_t> /* message */,
83 GURL
/* legacy_destination_url */)
85 IPC_MESSAGE_ROUTED2(CdmMsg_SessionClosed
,
87 std::string
/* session_id */)
89 IPC_MESSAGE_ROUTED5(CdmMsg_LegacySessionError
,
91 std::string
/* session_id */,
92 media::MediaKeys::Exception
/* exception_code */,
93 uint32_t /* system_code */,
94 std::string
/* error_message */)
96 IPC_MESSAGE_ROUTED4(CdmMsg_SessionKeysChange
,
98 std::string
/* session_id */,
99 bool /* has_additional_usable_key */,
100 std::vector
<media::CdmKeyInformation
> /* keys_info */)
102 IPC_MESSAGE_ROUTED3(CdmMsg_SessionExpirationUpdate
,
104 std::string
/* session_id */,
105 base::Time
/* new_expiry_time */)
107 IPC_MESSAGE_ROUTED2(CdmMsg_ResolvePromise
,
109 uint32_t /* promise_id */)
111 IPC_MESSAGE_ROUTED3(CdmMsg_ResolvePromiseWithSession
,
113 uint32_t /* promise_id */,
114 std::string
/* session_id */)
116 IPC_MESSAGE_ROUTED5(CdmMsg_RejectPromise
,
118 uint32_t /* promise_id */,
119 media::MediaKeys::Exception
/* exception */,
120 uint32_t /* system_code */,
121 std::string
/* error_message */)