1// Copyright 2013 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// Defines messages between the browser and NaCl process. 6 7// Multiply-included message file, no traditional include guard. 8#include "base/process/process.h" 9#include "components/nacl/common/nacl_types.h" 10#include "ipc/ipc_channel_handle.h" 11#include "ipc/ipc_message_macros.h" 12#include "ipc/ipc_platform_file.h" 13 14#define IPC_MESSAGE_START NaClMsgStart 15 16IPC_STRUCT_TRAITS_BEGIN(nacl::NaClStartParams) 17 IPC_STRUCT_TRAITS_MEMBER(handles) 18 IPC_STRUCT_TRAITS_MEMBER(debug_stub_server_bound_socket) 19 IPC_STRUCT_TRAITS_MEMBER(validation_cache_enabled) 20 IPC_STRUCT_TRAITS_MEMBER(validation_cache_key) 21 IPC_STRUCT_TRAITS_MEMBER(version) 22 IPC_STRUCT_TRAITS_MEMBER(enable_exception_handling) 23 IPC_STRUCT_TRAITS_MEMBER(enable_debug_stub) 24 IPC_STRUCT_TRAITS_MEMBER(enable_ipc_proxy) 25 IPC_STRUCT_TRAITS_MEMBER(uses_irt) 26 IPC_STRUCT_TRAITS_MEMBER(enable_dyncode_syscalls) 27IPC_STRUCT_TRAITS_END() 28 29//----------------------------------------------------------------------------- 30// NaClProcess messages 31// These are messages sent between the browser and the NaCl process. 32// Tells the NaCl process to start. 33IPC_MESSAGE_CONTROL1(NaClProcessMsg_Start, 34 nacl::NaClStartParams /* params */) 35 36#if defined(OS_WIN) 37// Tells the NaCl broker to launch a NaCl loader process. 38IPC_MESSAGE_CONTROL1(NaClProcessMsg_LaunchLoaderThroughBroker, 39 std::string /* channel ID for the loader */) 40 41// Notify the browser process that the loader was launched successfully. 42IPC_MESSAGE_CONTROL2(NaClProcessMsg_LoaderLaunched, 43 std::string, /* channel ID for the loader */ 44 base::ProcessHandle /* loader process handle */) 45 46// Tells the NaCl broker to attach a debug exception handler to the 47// given NaCl loader process. 48IPC_MESSAGE_CONTROL3(NaClProcessMsg_LaunchDebugExceptionHandler, 49 int32 /* pid of the NaCl process */, 50 base::ProcessHandle /* handle of the NaCl process */, 51 std::string /* NaCl internal process layout info */) 52 53// Notify the browser process that the broker process finished 54// attaching a debug exception handler to the given NaCl loader 55// process. 56IPC_MESSAGE_CONTROL2(NaClProcessMsg_DebugExceptionHandlerLaunched, 57 int32 /* pid */, 58 bool /* success */) 59 60// Notify the broker that all loader processes have been terminated and it 61// should shutdown. 62IPC_MESSAGE_CONTROL0(NaClProcessMsg_StopBroker) 63 64// Used by the NaCl process to request that a Windows debug exception 65// handler be attached to it. 66IPC_SYNC_MESSAGE_CONTROL1_1(NaClProcessMsg_AttachDebugExceptionHandler, 67 std::string, /* Internal process info */ 68 bool /* Result */) 69 70// Notify the browser process that the NaCl process has bound the given 71// TCP port number to use for the GDB debug stub. 72IPC_MESSAGE_CONTROL1(NaClProcessHostMsg_DebugStubPortSelected, 73 uint16_t /* debug_stub_port */) 74#endif 75 76// Used by the NaCl process to query a database in the browser. The database 77// contains the signatures of previously validated code chunks. 78IPC_SYNC_MESSAGE_CONTROL1_1(NaClProcessMsg_QueryKnownToValidate, 79 std::string, /* A validation signature */ 80 bool /* Can validation be skipped? */) 81 82// Used by the NaCl process to add a validation signature to the validation 83// database in the browser. 84IPC_MESSAGE_CONTROL1(NaClProcessMsg_SetKnownToValidate, 85 std::string /* A validation signature */) 86 87// Used by the NaCl process to acquire trusted information about a file directly 88// from the browser, including the file's path as well as a fresh version of the 89// file handle. 90IPC_SYNC_MESSAGE_CONTROL2_2(NaClProcessMsg_ResolveFileToken, 91 uint64, /* file_token_lo */ 92 uint64, /* file_token_hi */ 93 IPC::PlatformFileForTransit, /* fd */ 94 base::FilePath /* Path opened to get fd */) 95 96// Notify the browser process that the server side of the PPAPI channel was 97// created successfully. 98IPC_MESSAGE_CONTROL4(NaClProcessHostMsg_PpapiChannelsCreated, 99 IPC::ChannelHandle, /* browser_channel_handle */ 100 IPC::ChannelHandle, /* ppapi_renderer_channel_handle */ 101 IPC::ChannelHandle, /* trusted_renderer_channel_handle */ 102 IPC::ChannelHandle /* manifest_service_channel_handle */) 103