summaryrefslogtreecommitdiffstats
path: root/webkit/inspector/DebuggerIPC.js
diff options
context:
space:
mode:
authordglazkov@google.com <dglazkov@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-10 19:11:09 +0000
committerdglazkov@google.com <dglazkov@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-10 19:11:09 +0000
commit15afbb51fd02caf9baebd5e406ec88bf59d8f835 (patch)
treeb0e5ce4fb8c334e6e52e94f5d3afcabb45097b8f /webkit/inspector/DebuggerIPC.js
parent2a65160320c17d0c0f370d71fac51d6250b5b1fa (diff)
downloadchromium_src-15afbb51fd02caf9baebd5e406ec88bf59d8f835.zip
chromium_src-15afbb51fd02caf9baebd5e406ec88bf59d8f835.tar.gz
chromium_src-15afbb51fd02caf9baebd5e406ec88bf59d8f835.tar.bz2
Move forked, DevTools-specific JS files out of third_party/WebKit
R=darin BUG=3320 Review URL: http://codereview.chromium.org/44001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11358 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/inspector/DebuggerIPC.js')
-rw-r--r--webkit/inspector/DebuggerIPC.js109
1 files changed, 109 insertions, 0 deletions
diff --git a/webkit/inspector/DebuggerIPC.js b/webkit/inspector/DebuggerIPC.js
new file mode 100644
index 0000000..15835fc
--- /dev/null
+++ b/webkit/inspector/DebuggerIPC.js
@@ -0,0 +1,109 @@
+// Copyright (c) 2006-2008 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.
+
+/**
+ * @fileoverview Implementation of debugger inter-process communication.
+ * Debugger UI can send messages to the DebuggerHost object living in
+ * Chrome browser process. The messages are either processed by DebuggerHost
+ * itself or trigger IPC message(such as break, evaluate script etc) from
+ * browser process to the renderer where the v8 instance being debugged
+ * will process them.
+ */
+
+var DebuggerIPC = {};
+
+/**
+ * Set up default debugger UI.
+ * @param {DebuggerPanel|DebuggerConsole} debuggerUI
+ */
+DebuggerIPC.init = function(debuggerUI) {
+ DebuggerIPC.debuggerUI = debuggerUI;
+}
+
+/**
+ * Sends JSON message to DebuggerHost.
+ * @param {Array.<Object>} nameAndArguments
+ */
+DebuggerIPC.sendMessage = function(nameAndArguments) {
+ //alert("DebuggerIPC.sendMessage " + nameAndArguments);
+ dprint("DebuggerIPC.callMethod([" + nameAndArguments + "])");
+ // convert all arguments to strings
+ // TODO(yurys): extend chrome.send to accept array of any value
+ // objects not only strings
+ for (var i = 0; i < nameAndArguments.length; i++) {
+ if (typeof nameAndArguments[i] != "string") {
+ nameAndArguments[i] = "" + nameAndArguments[i];
+ }
+ }
+
+ chrome.send("DebuggerHostMessage", nameAndArguments);
+};
+
+/**
+ * Handles messages from DebuggerHost.
+ * @param {Object} msg An object representing the message.
+ */
+DebuggerIPC.onMessageReceived = function(msg) {
+ //alert("DebuggerIPC.onMessageReceived " + msg.event);
+ var ui = DebuggerIPC.debuggerUI;
+ dprint("onMessageReceived: " + (msg && msg.event));
+ if (msg.type == "event") {
+ if (msg.event == "setDebuggerBreak") {
+ var val = msg.body.argument;
+ ui.setDebuggerBreak(val);
+ } else if (msg.event == "appendText") {
+ var text = msg.body.text;
+ ui.appendText(text);
+ } else if (msg.event == "focusOnCommandLine") {
+ dprint("focusOnCommandLine event received");
+ // messages to DebugShell
+ } else if (msg.event == "initDebugShell") {
+ // DebugShell.initDebugShell();
+ dprint(msg.event + " done");
+ } else if (msg.event == "on_attach") {
+ if (DebugShell.singleton) {
+ var args = msg.body.arguments;
+ if (!args || args.length != 1) {
+ dprint(msg.event + " failed: invalid arguments");
+ return;
+ }
+ var title = args[0];
+ DebugShell.singleton.on_attach(title);
+ dprint(msg.event + " done");
+ } else {
+ dprint(msg.event + " failed: DebugShell.singleton == null");
+ }
+ } else if (msg.event == "on_disconnect") {
+ if (DebugShell.singleton) {
+ DebugShell.singleton.on_disconnect();
+ dprint(msg.event + " done");
+ } else {
+ dprint(msg.event + " failed: DebugShell.singleton == null");
+ }
+ } else if (msg.event == "exit") {
+ if (DebugShell.singleton) {
+ DebugShell.singleton.exit();
+ dprint(msg.event + " done");
+ } else {
+ dprint(msg.event + " failed: DebugShell.singleton == null");
+ }
+ } else if (msg.event == "response") {
+ if (DebugShell.singleton) {
+ var args = msg.body.arguments;
+ if (!args || args.length != 1) {
+ dprint(msg.event + " failed: invalid argument");
+ return;
+ }
+ DebugShell.singleton.response(args[0]);
+ dprint(msg.event + " done");
+ } else {
+ ui.appendText(msg.event + " failed: DebugShell.singleton == null");
+ }
+ } else {
+ ui.appendText("Unknown event: " + msg.event);
+ }
+ } else {
+ ui.appendText("Unknown message type: " + msg.type);
+ }
+};