1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file.
4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// IPC messages for access to MIDI hardware.
6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Multiply-included message file, hence no include guard.
7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/basictypes.h"
9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "content/common/content_export.h"
10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ipc/ipc_message_macros.h"
11010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "ipc/param_traits_macros.h"
12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "media/midi/midi_port_info.h"
13010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "media/midi/midi_result.h"
14a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "url/gurl.h"
15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#undef IPC_MESSAGE_EXPORT
17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define IPC_MESSAGE_EXPORT CONTENT_EXPORT
185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define IPC_MESSAGE_START MidiMsgStart
19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(media::MidiPortInfo)
21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  IPC_STRUCT_TRAITS_MEMBER(id)
22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  IPC_STRUCT_TRAITS_MEMBER(manufacturer)
23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  IPC_STRUCT_TRAITS_MEMBER(name)
24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  IPC_STRUCT_TRAITS_MEMBER(version)
25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIPC_STRUCT_TRAITS_END()
26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
27010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)IPC_ENUM_TRAITS_MAX_VALUE(media::MidiResult, media::MIDI_RESULT_LAST)
28010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Messages for IPC between MidiDispatcher and MidiDispatcherHost.
30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
31a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Renderer request to browser for using system exclusive messages.
32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_MESSAGE_ROUTED3(MidiHostMsg_RequestSysExPermission,
33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                    int /* client id */,
34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                    GURL /* origin */,
35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                    bool /* user_gesture */)
36a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// Renderer request to browser for canceling a previous permission request.
38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_MESSAGE_ROUTED2(MidiHostMsg_CancelSysExPermissionRequest,
391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                     int /* bridge_id */,
401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                     GURL /* GURL of the frame */)
411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
42a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Messages sent from the browser to the renderer.
43a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_ROUTED2(MidiMsg_SysExPermissionApproved,
45a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)                    int /* client id */,
46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                    bool /* is_allowed */)
47a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Messages for IPC between MidiMessageFilter and MidiHost.
49a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Renderer request to browser for access to MIDI services.
515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL1(MidiHostMsg_StartSession,
5258e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch                     int /* client id */)
53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL3(MidiHostMsg_SendData,
55424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)                     uint32 /* port */,
56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                     std::vector<uint8> /* data */,
57eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                     double /* timestamp */)
58eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
59eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Messages sent from the browser to the renderer.
60eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL4(MidiMsg_SessionStarted,
62eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                     int /* client id */,
63010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)                     media::MidiResult /* result */,
645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                     media::MidiPortInfoList /* input ports */,
655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                     media::MidiPortInfoList /* output ports */)
66eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL3(MidiMsg_DataReceived,
68424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)                     uint32 /* port */,
69eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                     std::vector<uint8> /* data */,
70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                     double /* timestamp */)
71a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL1(MidiMsg_AcknowledgeSentData,
73424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)                     uint32 /* bytes sent */)
74