1// Copyright (c) 2011 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// Developer tools consist of the following parts: 6// 7// DevToolsAgent lives in the renderer of an inspected page and provides access 8// to the pages resources, DOM, v8 etc. by means of IPC messages. 9// 10// DevToolsClient is a thin delegate that lives in the tools front-end 11// renderer and converts IPC messages to frontend method calls and allows the 12// frontend to send messages to the DevToolsAgent. 13// 14// All the messages are routed through browser process. There is a 15// DevToolsManager living in the browser process that is responsible for 16// routing logistics. It is also capable of sending direct messages to the 17// agent rather than forwarding messages between agents and clients only. 18// 19// Chain of communication between the components may be described by the 20// following diagram: 21// ---------------------------- 22// | (tools frontend | 23// | renderer process) | 24// | | -------------------- 25// |tools <--> DevToolsClient+<-- IPC -->+ (browser process) | 26// |frontend | | | 27// ---------------------------- ---------+---------- 28// ^ 29// | 30// IPC 31// | 32// v 33// --------------------------+-------- 34// | inspected page <--> DevToolsAgent | 35// | | 36// | (inspected page renderer process) | 37// ----------------------------------- 38// 39// This file describes developer tools message types. 40 41// Multiply-included message file, no standard include guard. 42#include <map> 43#include <string> 44 45#include "ipc/ipc_message_macros.h" 46 47// Singly-included section. 48#ifndef CHROME_COMMON_DEVTOOLS_MESSAGES_H_ 49#define CHROME_COMMON_DEVTOOLS_MESSAGES_H_ 50 51typedef std::map<std::string, std::string> DevToolsRuntimeProperties; 52 53#endif // CHROME_COMMON_DEVTOOLS_MESSAGES_H_ 54 55#define IPC_MESSAGE_START DevToolsMsgStart 56 57// These are messages sent from DevToolsAgent to DevToolsClient through the 58// browser. 59// WebKit-level transport. 60IPC_MESSAGE_CONTROL1(DevToolsClientMsg_DispatchOnInspectorFrontend, 61 std::string /* message */) 62 63// Legacy debugger output message. 64IPC_MESSAGE_CONTROL1(DevToolsClientMsg_DebuggerOutput, 65 std::string /* message */) 66 67 68//----------------------------------------------------------------------------- 69// These are messages sent from DevToolsClient to DevToolsAgent through the 70// browser. 71// Tells agent that there is a client host connected to it. 72IPC_MESSAGE_CONTROL1(DevToolsAgentMsg_Attach, 73 DevToolsRuntimeProperties /* properties */) 74 75// Tells agent that there is no longer a client host connected to it. 76IPC_MESSAGE_CONTROL0(DevToolsAgentMsg_Detach) 77 78// Tells agent that the front-end has been loaded 79IPC_MESSAGE_CONTROL0(DevToolsAgentMsg_FrontendLoaded) 80 81// WebKit-level transport. 82IPC_MESSAGE_CONTROL1(DevToolsAgentMsg_DispatchOnInspectorBackend, 83 std::string /* message */) 84 85// Send debugger command to the debugger agent. Debugger commands should 86// be handled on IO thread(while all other devtools messages are handled in 87// the render thread) to allow executing the commands when v8 is on a 88// breakpoint. 89IPC_MESSAGE_CONTROL1(DevToolsAgentMsg_DebuggerCommand, 90 std::string /* command */) 91 92// Inspect element with the given coordinates. 93IPC_MESSAGE_CONTROL2(DevToolsAgentMsg_InspectElement, 94 int /* x */, 95 int /* y */) 96 97 98//----------------------------------------------------------------------------- 99// These are messages sent from the browser to the renderer. 100 101// RenderViewHostDelegate::RenderViewCreated method sends this message to a 102// new renderer to notify it that it will host developer tools UI and should 103// set up all neccessary bindings and create DevToolsClient instance that 104// will handle communication with inspected page DevToolsAgent. 105IPC_MESSAGE_ROUTED0(DevToolsMsg_SetupDevToolsClient) 106 107 108//----------------------------------------------------------------------------- 109// These are messages sent from the renderer to the browser. 110 111// Wraps an IPC message that's destined to the DevToolsClient on 112// DevToolsAgent->browser hop. 113IPC_MESSAGE_ROUTED1(DevToolsHostMsg_ForwardToClient, 114 IPC::Message /* one of DevToolsClientMsg_XXX types */) 115 116// Wraps an IPC message that's destined to the DevToolsAgent on 117// DevToolsClient->browser hop. 118IPC_MESSAGE_ROUTED1(DevToolsHostMsg_ForwardToAgent, 119 IPC::Message /* one of DevToolsAgentMsg_XXX types */) 120 121// Activates (brings to the front) corresponding dev tools window. 122IPC_MESSAGE_ROUTED0(DevToolsHostMsg_ActivateWindow) 123 124// Closes dev tools window that is inspecting current render_view_host. 125IPC_MESSAGE_ROUTED0(DevToolsHostMsg_CloseWindow) 126 127// Attaches dev tools window that is inspecting current render_view_host. 128IPC_MESSAGE_ROUTED0(DevToolsHostMsg_RequestDockWindow) 129 130// Detaches dev tools window that is inspecting current render_view_host. 131IPC_MESSAGE_ROUTED0(DevToolsHostMsg_RequestUndockWindow) 132 133// Updates runtime features store in devtools manager in order to support 134// cross-navigation instrumentation. 135IPC_MESSAGE_ROUTED2(DevToolsHostMsg_RuntimePropertyChanged, 136 std::string /* name */, 137 std::string /* value */) 138