diff options
author | yurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-27 08:26:06 +0000 |
---|---|---|
committer | yurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-27 08:26:06 +0000 |
commit | bf7cc538f3e6f04f043fb5c56457597e2702fda7 (patch) | |
tree | 31745bc501a32190b9eedde0b9783a5395405bbb /content/common/devtools_messages.h | |
parent | 69b5cc1cd49d108cdb7ced431f8caf56e8d3bd43 (diff) | |
download | chromium_src-bf7cc538f3e6f04f043fb5c56457597e2702fda7.zip chromium_src-bf7cc538f3e6f04f043fb5c56457597e2702fda7.tar.gz chromium_src-bf7cc538f3e6f04f043fb5c56457597e2702fda7.tar.bz2 |
This change provides initial support for sending DevTools messages between Worker and Page processes.
On the Page side devtools messages are handled by WorkerDevtoolsAgentProxy. It implements WebWorkerBase::DevToolsDelegate interface which isolates worker stuff under content/ from DevTools specifics.
In the worker process it's WorkerDevtoolsAgent that is responsible for sending/receiving devtools messages. It implements WebWorkerStub::DevToolsDelegate and WebWorkerClientProxy::DevToolsDelegate which insulate worker stuff under content/ from the devtools implementation details.
WorkerDevtoolsAgentProxy and WorkerDevtoolsAgent are counterparts of WebWorkerProxy and WebWorkerStub. Since devtools is not a part of HTML5 the new classes live under chrome/
ContentWorkerClient is introduced for notifying embedder about certain events when worker clients can be installed.
BUG=13684
TEST=None
Review URL: http://codereview.chromium.org/6990059
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@86991 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/common/devtools_messages.h')
-rw-r--r-- | content/common/devtools_messages.h | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/content/common/devtools_messages.h b/content/common/devtools_messages.h new file mode 100644 index 0000000..d0178bc --- /dev/null +++ b/content/common/devtools_messages.h @@ -0,0 +1,157 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Developer tools consist of the following parts: +// +// DevToolsAgent lives in the renderer of an inspected page and provides access +// to the pages resources, DOM, v8 etc. by means of IPC messages. +// +// DevToolsClient is a thin delegate that lives in the tools front-end +// renderer and converts IPC messages to frontend method calls and allows the +// frontend to send messages to the DevToolsAgent. +// +// All the messages are routed through browser process. There is a +// DevToolsManager living in the browser process that is responsible for +// routing logistics. It is also capable of sending direct messages to the +// agent rather than forwarding messages between agents and clients only. +// +// Chain of communication between the components may be described by the +// following diagram: +// ---------------------------- +// | (tools frontend | +// | renderer process) | +// | | -------------------- +// |tools <--> DevToolsClient+<-- IPC -->+ (browser process) | +// |frontend | | | +// ---------------------------- ---------+---------- +// ^ +// | +// IPC +// | +// v +// --------------------------+-------- +// | inspected page <--> DevToolsAgent | +// | | +// | (inspected page renderer process) | +// ----------------------------------- +// +// This file describes developer tools message types. + +// Multiply-included message file, no standard include guard. +#include <map> +#include <string> + +#include "ipc/ipc_message_macros.h" + +// Singly-included section. +#ifndef CONTENT_COMMON_DEVTOOLS_MESSAGES_H_ +#define CONTENT_COMMON_DEVTOOLS_MESSAGES_H_ + +typedef std::map<std::string, std::string> DevToolsRuntimeProperties; + +#endif // CONTENT_COMMON_DEVTOOLS_MESSAGES_H_ + +#define IPC_MESSAGE_START DevToolsMsgStart + +// These are messages sent from DevToolsAgent to DevToolsClient through the +// browser. +// WebKit-level transport. +IPC_MESSAGE_CONTROL1(DevToolsClientMsg_DispatchOnInspectorFrontend, + std::string /* message */) + +// Legacy debugger output message. +IPC_MESSAGE_CONTROL1(DevToolsClientMsg_DebuggerOutput, + std::string /* message */) + + +//----------------------------------------------------------------------------- +// These are messages sent from DevToolsClient to DevToolsAgent through the +// browser. +// Tells agent that there is a client host connected to it. +IPC_MESSAGE_CONTROL1(DevToolsAgentMsg_Attach, + DevToolsRuntimeProperties /* properties */) + +// Tells agent that there is no longer a client host connected to it. +IPC_MESSAGE_CONTROL0(DevToolsAgentMsg_Detach) + +// Tells agent that the front-end has been loaded +IPC_MESSAGE_CONTROL0(DevToolsAgentMsg_FrontendLoaded) + +// WebKit-level transport. +IPC_MESSAGE_CONTROL1(DevToolsAgentMsg_DispatchOnInspectorBackend, + std::string /* message */) + +// WebKit-level transport for messages from WorkerInspectorController to +// InspectorController. +IPC_MESSAGE_ROUTED1(DevToolsAgentMsg_DispatchMessageFromWorker, + std::string /* message */) + +// Send debugger command to the debugger agent. Debugger commands should +// be handled on IO thread(while all other devtools messages are handled in +// the render thread) to allow executing the commands when v8 is on a +// breakpoint. +IPC_MESSAGE_CONTROL1(DevToolsAgentMsg_DebuggerCommand, + std::string /* command */) + +// Inspect element with the given coordinates. +IPC_MESSAGE_CONTROL2(DevToolsAgentMsg_InspectElement, + int /* x */, + int /* y */) + + +//----------------------------------------------------------------------------- +// These are messages sent from the browser to the renderer. + +// RenderViewHostDelegate::RenderViewCreated method sends this message to a +// new renderer to notify it that it will host developer tools UI and should +// set up all neccessary bindings and create DevToolsClient instance that +// will handle communication with inspected page DevToolsAgent. +IPC_MESSAGE_ROUTED0(DevToolsMsg_SetupDevToolsClient) + + +//----------------------------------------------------------------------------- +// These are messages sent from the renderer to the browser. + +// Wraps an IPC message that's destined to the DevToolsClient on +// DevToolsAgent->browser hop. +IPC_MESSAGE_ROUTED1(DevToolsHostMsg_ForwardToClient, + IPC::Message /* one of DevToolsClientMsg_XXX types */) + +// Wraps an IPC message that's destined to the DevToolsAgent on +// DevToolsClient->browser hop. +IPC_MESSAGE_ROUTED1(DevToolsHostMsg_ForwardToAgent, + IPC::Message /* one of DevToolsAgentMsg_XXX types */) + +// Activates (brings to the front) corresponding dev tools window. +IPC_MESSAGE_ROUTED0(DevToolsHostMsg_ActivateWindow) + +// Closes dev tools window that is inspecting current render_view_host. +IPC_MESSAGE_ROUTED0(DevToolsHostMsg_CloseWindow) + +// Attaches dev tools window that is inspecting current render_view_host. +IPC_MESSAGE_ROUTED0(DevToolsHostMsg_RequestDockWindow) + +// Detaches dev tools window that is inspecting current render_view_host. +IPC_MESSAGE_ROUTED0(DevToolsHostMsg_RequestUndockWindow) + +// Shows Save As dialog for content. +IPC_MESSAGE_ROUTED2(DevToolsHostMsg_SaveAs, + std::string /* file_name */, + std::string /* content */) + +// Updates runtime features store in devtools manager in order to support +// cross-navigation instrumentation. +IPC_MESSAGE_ROUTED2(DevToolsHostMsg_RuntimePropertyChanged, + std::string /* name */, + std::string /* value */) + + +//----------------------------------------------------------------------------- +// These are messages sent from the inspected page renderer to the worker +// renderer. + +IPC_MESSAGE_ROUTED0(WorkerDevToolsAgentMsg_Attach) +IPC_MESSAGE_ROUTED0(WorkerDevToolsAgentMsg_Detach) +IPC_MESSAGE_ROUTED1(WorkerDevToolsAgentMsg_DispatchOnInspectorBackend, + std::string /* message */) |