diff --git a/plugins/c9.ide.run.debug.ikpdb/lib/MessageReader.js b/plugins/c9.ide.run.debug.ikpdb/lib/MessageReader.js index 5d3fa92e..aca833c6 100644 --- a/plugins/c9.ide.run.debug.ikpdb/lib/MessageReader.js +++ b/plugins/c9.ide.run.debug.ikpdb/lib/MessageReader.js @@ -86,10 +86,6 @@ define(function(require, exports, module) { if (responseLength <= received.length) { fullResponse = received.substring(0, responseLength); this._receivedData = received.substring(responseLength); - this._socket.setMinReceiveSize(0); - } - else { - this._socket.setMinReceiveSize(responseLength - received.length); } } return fullResponse; diff --git a/plugins/c9.ide.run.debug/callstack.js b/plugins/c9.ide.run.debug/callstack.js index beced677..8398ecfd 100644 --- a/plugins/c9.ide.run.debug/callstack.js +++ b/plugins/c9.ide.run.debug/callstack.js @@ -1,7 +1,7 @@ define(function(require, exports, module) { main.consumes = [ "DebugPanel", "util", "ui", "tabManager", "debugger", "save", "panels", - "Menu", "MenuItem", "dialog.error", "layout" + "Menu", "MenuItem", "dialog.error", "layout", "clipboard" ]; main.provides = ["callstack"]; return main; @@ -12,11 +12,12 @@ define(function(require, exports, module) { var ui = imports.ui; var save = imports.save; var layout = imports.layout; + var panels = imports.panels; var debug = imports.debugger; var tabs = imports.tabManager; - var panels = imports.panels; var Menu = imports.Menu; var MenuItem = imports.MenuItem; + var clipboard = imports.clipboard; var showError = imports["dialog.error"].show; var Range = require("ace/range").Range; @@ -229,12 +230,19 @@ define(function(require, exports, module) { var contextMenu = new Menu({ items: [ new MenuItem({ value: "restart", caption: "Restart Frame" }), - // new MenuItem({ value: "edit2", caption: "Edit Watch Value" }) + new MenuItem({ value: "copy", caption: "Copy Stack Trace" }), ] }, plugin); contextMenu.on("itemclick", function(e) { if (e.value == "restart") dbg.restartFrame(activeFrame, function() {}); + if (e.value == "copy") { + var text = frames.map(function(f) { + return f.name + " (" + f.path + ":" + f.line + + (f.column != null ? ":" + f.column : "") + ")"; + }).join("\n"); + clipboard.clipboardData.setData("text/plain", text); + } }); contextMenu.on("show", function(e) { var selected = datagrid.selection.getCursor(); diff --git a/plugins/c9.ide.run.debug/debuggers/chrome/lib/README.md b/plugins/c9.ide.run.debug/debuggers/chrome/lib/README.md deleted file mode 100644 index 9194775d..00000000 --- a/plugins/c9.ide.run.debug/debuggers/chrome/lib/README.md +++ /dev/null @@ -1,148 +0,0 @@ -chrome-remote-interface -======================= - -[Remote Debugging Protocol][1] interface that helps to instrument Chrome by -providing a simple abstraction of the two main objects exposed by the protocol -in a Node.js fashion: commands and notifications. - -Installation ------------- - - npm install chrome-remote-interface - -Chrome setup ------------- - -Chrome needs to be started with the `--remote-debugging-port=` option to -enable the [Remote Debugging Protocol][1], for example: - - google-chrome --remote-debugging-port=9222 - -Sample usage ------------- - -The following snippet loads `https://github.com` and dumps every request made. - -```javascript -var Chrome = require('chrome-remote-interface'); -Chrome(function (chrome) { - with (chrome) { - on('Network.requestWillBeSent', function (message) { - console.log(message.request.url); - }); - on('Page.loadEventFired', close); - Network.enable(); - Page.enable(); - Page.navigate({'url': 'https://github.com'}); - } -}).on('error', function () { - console.error('Cannot connect to Chrome'); -}); -``` - -API ---- - -### module([options], [callback]) - -Connects to a remote instance of Chrome using the [Remote Debugging -Protocol][1]. - -`options` is an object with the following optional properties: - -- `host`: [Remote Debugging Protocol][1] host. Defaults to `localhost`; -- `port`: [Remote Debugging Protocol][1] port. Defaults to `9222`; -- `chooseTab`: callback used to determine which remote tab attach to. Takes the - JSON array returned by `http://host:port/json` containing the tab list and - must return the numeric index of a tab. Defaults to a function that returns - the active one (`function (tabs) { return 0; }`). - -`callback` is a listener automatically added to the `connect` event of the -returned `EventEmitter`. - -Returns an `EventEmitter` that supports the following events: - -#### Event: 'connect' - - function (chrome) {} - -Emitted when the connection to Chrome is established. - -`chrome` is an instance of the `Chrome` class. - -#### Event: 'error' - - function (error) {} - -Emitted if `http://host:port/json` can't be reached or if it's not possible to -connect to Chrome's remote debugging WebSocket. - -`error` is an instance of `Error`. - -### Class: Chrome - -#### Event: 'event' - - function (message) {} - -Emitted when Chrome sends a notification through the WebSocket. - -`message` is the object received, it has the following properties: - -- `method`: a string describing the message. -- `params`: an object containing the payload. - -Refer to the [Remote Debugging Protocol specifications][1] for more information. - -#### Event: method - - function (params) {} - -Emitted when Chrome sends a notification classified as `method` through the -WebSocket. - -`params` is an object containing the payload. - -This is just a utility event that allows to easily filter out specific -notifications (see the documentation of `event`), for example: - - chrome.on('Network.requestWillBeSent', console.log); - -#### chrome.send(method, [params], [callback]) - -Issue a command to Chrome. - -`method` is a string describing the message. - -`params` is an object containing the payload. - -`callback` is executed when Chrome sends a response to this command, it gets the -following arguments: - -- `error`: a boolean value indicating the success status; -- `response`: an object containing either the response sent from Chrome or the - indication of the error. - -Note that the field `id` mentioned in the [Remote Debugging Protocol -specifications][1] is managed internally and it's not exposed to the user. - -#### chrome.Domain.method([params], [callback]) - -Just a shorthand for: - - chrome.send('Domain.method', params, callback) - -For example: - - chrome.Page.navigate({'url': 'https://github.com'}) - -#### chrome.close() - -Close the connection to Chrome. - -Resources ---------- - -- [Chrome Developer Tools: Remote Debugging Protocol v1.0][1] - -[1]: https://developers.google.com/chrome-developer-tools/docs/protocol/1.0/ diff --git a/plugins/c9.ide.run.debug/debuggers/chrome/lib/chrome.js b/plugins/c9.ide.run.debug/debuggers/chrome/lib/chrome.js deleted file mode 100644 index 20dfb8da..00000000 --- a/plugins/c9.ide.run.debug/debuggers/chrome/lib/chrome.js +++ /dev/null @@ -1,174 +0,0 @@ -/* -Copyright (c) 2013 Andrea Cardaci -I.S.T.I. - C.N.R. Pisa - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ - -define(function(require, exports, module) { - var protocol = require('./protocol.js'); - var util = require("ace/lib/oop"); - var events = require('events'); - var http = require('http'); - var WebSocket = require('ws'); - - var Chrome = function (options, callback) { - if (!(this instanceof Chrome)) - return new Chrome(options, callback); - - if (typeof options === 'function') { - callback = options; - options = undefined; - } - options = options || {}; - options.host = options.host || 'localhost'; - options.port = options.port || 9222; - options.chooseTab = options.chooseTab || function () { return 0; }; - - var notifier = new events.EventEmitter(); - if (typeof callback === 'function') - notifier.on('connect', callback); - - setTimeout(function() { - // the default listener just disconnects from Chrome, this can be used - // to simply check the connection - if (notifier.listeners('connect').length === 0) { - notifier.on('connect', function(chrome) { - chrome.close(); - }); - } - }); - - var self = this; - addCommandShorthands.call(self); - self.notifier = notifier; - self.callbacks = {}; - self.nextCommandId = 1; - connectToChrome.call(self, options.host, options.port, options.chooseTab); - - return notifier; - }; - - util.inherits(Chrome, events.EventEmitter); - - Chrome.prototype.send = function (method, params, callback) { - var self = this; - var id = self.nextCommandId++; - if (typeof params === 'function') { - callback = params; - params = undefined; - } - var message = { 'id': id, 'method': method, 'params': params }; - self.ws.send(JSON.stringify(message)); - // register command response callback - if (typeof callback === 'function') { - self.callbacks[id] = callback; - } - }; - - Chrome.prototype.close = function () { - var self = this; - self.ws.removeAllListeners(); - self.ws.close(); - }; - - function addCommand(domain, command) { - var self = this; - Chrome.prototype[domain][command] = function (params, callback) { - self.send(domain + '.' + command, params, callback); - }; - } - - function addCommandShorthands() { - var self = this; - for (var domain in protocol.commands) { - Chrome.prototype[domain] = {}; - var commands = protocol.commands[domain]; - for (var i = 0; i < commands.length; i++) { - var command = commands[i]; - addCommand.call(self, domain, command); - } - } - } - - function connectToChrome(host, port, chooseTab) { - var self = this; - var options = { 'host': host, 'port': port, 'path': '/json' }; - var request = http.get(options, function (response) { - var data = ''; - response.on('data', function (chunk) { - data += chunk; - }); - response.on('end', function () { - var error; - var tabs = JSON.parse(data); - var tab = tabs[chooseTab(tabs)]; - if (tab) { - var tabDebuggerUrl = tab.webSocketDebuggerUrl; - if (tabDebuggerUrl) { - connectToWebSocket.call(self, tabDebuggerUrl); - } else { - // a WebSocket is already connected to this tab? - error = new Error('Unable to connect to the WebSocket'); - self.notifier.emit('error', error); - } - } else { - error = new Error('Invalid tab index'); - self.notifier.emit('error', error); - } - }); - }); - request.on('error', function (error) { - self.notifier.emit('error', error); - }); - } - - function connectToWebSocket(url) { - var self = this; - self.ws = new WebSocket(url); - self.ws.on('open', function() { - self.notifier.emit('connect', self); - }); - self.ws.on('message', function (data) { - var message = JSON.parse(data); - // command response - if (message.id) { - var callback = self.callbacks[message.id]; - if (callback) { - if (message.result) { - callback(false, message.result); - } else if (message.error) { - callback(true, message.error); - } - // unregister command response callback - delete self.callbacks[message.id]; - } - } - // event - else if (message.method) { - self.emit('event', message); - self.emit(message.method, message.params); - } - }); - self.ws.on('error', function (error) { - self.notifier.emit('error', error); - }); - } - - return Chrome; -}); \ No newline at end of file diff --git a/plugins/c9.ide.run.debug/debuggers/chrome/lib/chrome_test.js b/plugins/c9.ide.run.debug/debuggers/chrome/lib/chrome_test.js deleted file mode 100644 index 0f4abc63..00000000 --- a/plugins/c9.ide.run.debug/debuggers/chrome/lib/chrome_test.js +++ /dev/null @@ -1,209 +0,0 @@ -/*global describe it before */ - -"use client"; - - -require([ - "plugins/c9.ide.run.debug/debuggers/chrome/lib/chrome", - "lib/chai/chai" -], function (Chrome, chai) { - var assert = chai.assert; - - describe('connecting to Chrome', function () { - describe('with default parameters', function () { - it('should succeed with "connect" callback passed as an argument', function (done) { - Chrome(function(chrome) { - chrome.close(); - done(); - }).on('error', function () { - assert(false); - }); - }); - it('should succeed with "connect" callback registered later', function (done) { - Chrome().on('connect', function(chrome) { - chrome.close(); - done(); - }).on('error', function () { - assert(false); - }); - }); - }); - describe('with custom parameters', function () { - it('should succeed with "connect" callback passed as an argument', function (done) { - Chrome({ 'host': 'localhost', 'port': 9222 }, function(chrome) { - chrome.close(); - done(); - }).on('error', function () { - assert(false); - }); - }); - it('should succeed with "connect" callback registered later', function (done) { - Chrome({ 'host': 'localhost', 'port': 9222 }).on('connect', function(chrome) { - chrome.close(); - done(); - }).on('error', function () { - assert(false); - }); - }); - }); - describe('with custom (wrong) parameters', function () { - it('should fail (wrong port)', function (done) { - Chrome({ 'port': 1 }, function () { - assert(false); - }).on('error', function (error) { - assert(error instanceof Error); - done(); - }); - }); - it('should fail (wrong host)', function (done) { - Chrome({ 'host': '255.255.255.255' }, function () { - assert(false); - }).on('error', function (error) { - assert(error instanceof Error); - done(); - }); - }); - it('should fail (wrong tab)', function (done) { - Chrome({ 'chooseTab': function () { return -1; } }, function () { - assert(false); - }).on('error', function (error) { - assert(error instanceof Error); - done(); - }); - }); - }); - describe('two times', function () { - it('should fail', function (done) { - Chrome(function (chrome) { - Chrome(function () { - assert(false); - }).on('error', function (error) { - chrome.close(); - assert(error instanceof Error); - done(); - }); - }).on('error', function () { - assert(false); - }); - }); - }); - }); - - describe('closing a connection', function () { - it('should allow a subsequent new connection', function (done) { - Chrome(function (chrome) { - chrome.close(); - Chrome(function (chrome) { - chrome.close(); - done(); - }).on('error', function (error) { - assert(false); - }); - }).on('error', function () { - assert(false); - }); - }); - }); - - describe('registering event', function () { - describe('"event"', function () { - it('should give the raw message', function (done) { - Chrome(function(chrome) { - chrome.once('event', function(message) { - chrome.close(); - assert(message.method); - done(); - }); - chrome.send('Network.enable'); - chrome.send('Tab.reload'); - }); - }); - }); - describe('"Console.messagesCleared"', function () { - it('should give the payload ony', function (done) { - Chrome(function(chrome) { - chrome.once('Network.requestWillBeSent', function(message) { - chrome.close(); - assert(!message.method); - done(); - }); - chrome.send('Network.enable'); - chrome.send('Tab.reload'); - }); - }); - }); - }); - - describe('sending a command', function () { - describe('without checking the result and without specifyng parameters', function () { - it('should succeed', function (done) { - Chrome(function(chrome) { - chrome.once('Network.requestWillBeSent', function() { - chrome.close(); - done(); - }); - chrome.send('Network.enable'); - chrome.send('Tab.reload'); - }); - }); - }); - describe('checking the result and without specifyng parameters', function () { - it('should succeed', function (done) { - Chrome(function(chrome) { - chrome.send('Tab.enable', function (error, response) { - chrome.close(); - assert(!error); - done(); - }); - }); - }); - }); - describe('checking the result and specifyng parameters', function () { - it('should succeed', function (done) { - Chrome(function(chrome) { - chrome.send('Network.setCacheDisabled', { 'cacheDisabled': true }, function (error, response) { - chrome.close(); - assert(!error); - done(); - }); - }); - }); - }); - describe('without checking the result and without specifyng parameters (shorthand)', function () { - it('should succeed', function (done) { - Chrome(function(chrome) { - chrome.once('Network.requestWillBeSent', function() { - chrome.close(); - done(); - }); - chrome.Network.enable(); - chrome.Tab.reload(); - }); - }); - }); - describe('checking the result and without specifyng parameters (shorthand)', function () { - it('should succeed', function (done) { - Chrome(function(chrome) { - chrome.Tab.enable(function (error, response) { - chrome.close(); - assert(!error); - done(); - }); - }); - }); - }); - describe('checking the result and specifyng parameters (shorthand)', function () { - it('should succeed', function (done) { - Chrome(function(chrome) { - chrome.Network.setCacheDisabled({ 'cacheDisabled': true }, function (error, response) { - chrome.close(); - assert(!error); - done(); - }); - }); - }); - }); - }); - - onload && onload(); -}); diff --git a/plugins/c9.ide.run.debug/debuggers/chrome/lib/protocol.js b/plugins/c9.ide.run.debug/debuggers/chrome/lib/protocol.js deleted file mode 100644 index 9de4225c..00000000 --- a/plugins/c9.ide.run.debug/debuggers/chrome/lib/protocol.js +++ /dev/null @@ -1,109 +0,0 @@ -/* -Copyright (c) 2013 Andrea Cardaci -I.S.T.I. - C.N.R. Pisa - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ - -define(function(require, exports, module) { - exports.commands = { - 'Console': [ - 'clearMessages', - 'disable', - 'enable' - ], - 'Debugger': [ - 'canSetScriptSource', - 'continueToLocation', - 'disable', - 'enable', - 'evaluateOnCallFrame', - 'getScriptSource', - 'pause', - 'removeBreakpoint', - 'resume', - 'searchInContent', - 'setBreakpoint', - 'setBreakpointByUrl', - 'setBreakpointsActive', - 'setPauseOnExceptions', - 'setScriptSource', - 'stepInto', - 'stepOut', - 'stepOver' - ], - 'DOM': [ - 'getAttributes', - 'getDocument', - 'getOuterHTML', - 'hideHighlight', - 'highlightNode', - 'highlightRect', - 'moveTo', - 'querySelector', - 'querySelectorAll', - 'removeAttribute', - 'removeNode', - 'requestChildNodes', - 'requestNode', - 'resolveNode', - 'setAttributeValue', - 'setAttributesAsText', - 'setNodeName', - 'setNodeValue', - 'setOuterHTML' - ], - 'DOMDebugger': [ - 'removeDOMBreakpoint', - 'removeEventListenerBreakpoint', - 'removeXHRBreakpoint', - 'setDOMBreakpoint', - 'setEventListenerBreakpoint', - 'setXHRBreakpoint' - ], - 'Network': [ - 'canClearBrowserCache', - 'canClearBrowserCookies', - 'clearBrowserCache', - 'clearBrowserCookies', - 'disable', - 'enable', - 'getResponseBody', - 'setCacheDisabled', - 'setExtraHTTPHeaders', - 'setUserAgentOverride' - ], - 'Tab': [ - 'disable', - 'enable', - 'navigate', - 'reload' - ], - 'Runtime': [ - 'callFunctionOn', - 'evaluate', - 'getProperties', - 'releaseObject', - 'releaseObjectGroup' - ], - 'Timeline': [ - 'start', - 'stop' - ] - }; -}); \ No newline at end of file diff --git a/plugins/c9.ide.run.debug/debuggers/gdb/lib/MessageReader.js b/plugins/c9.ide.run.debug/debuggers/gdb/lib/MessageReader.js index ec3cc5de..1cb6203e 100755 --- a/plugins/c9.ide.run.debug/debuggers/gdb/lib/MessageReader.js +++ b/plugins/c9.ide.run.debug/debuggers/gdb/lib/MessageReader.js @@ -43,10 +43,6 @@ var MessageReader = module.exports = function(socket, callback) { if (responseLength <= received.length) { fullResponse = received.substring(0, responseLength); this.$received = received.substring(responseLength); - this.$socket.setMinReceiveSize(0); - } - else { - this.$socket.setMinReceiveSize(responseLength - received.length); } } } diff --git a/plugins/c9.ide.run.debug/debuggers/v8/lib/Breakpoint.js b/plugins/c9.ide.run.debug/debuggers/v8/lib/Breakpoint.js deleted file mode 100644 index a73d6451..00000000 --- a/plugins/c9.ide.run.debug/debuggers/v8/lib/Breakpoint.js +++ /dev/null @@ -1,130 +0,0 @@ -/** - * V8Debugger - * - * Copyright (c) 2010 Ajax.org B.V. - * - * The MIT License (MIT) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -define(function(require, exports, module) { -"use strict"; - -var Breakpoint = module.exports = function(source, line, column, dbg) { - this.source = source; - this.line = line; - this.column = column || 0; - - this.enabled = true; - this.condition = ""; - this.ignoreCount = 0; - - if (dbg) { - this.$dbg = dbg; - this.state = "connected"; - this.$listen(); - } - else - this.state = "initialized"; -}; - -(function() { - - this.attach = function(dbg, callback) { - var self = this; - - if (this.state !== "initialized") - throw new Error("Already attached"); - - this.$dbg = dbg; - this.state = "connecting"; - - this.$listen(); - dbg.setbreakpoint("script", self.source, self.line, self.column, self.enabled, self.condition, self.ignoreCount, function(body) { - self.state = "connected"; - self.$id = body.breakpoint; - self.line = body.line; - callback(self); - }); - }; - - this.$listen = function() { - var self = this; - this.$onbreak = function(e) { - if (self.state !== "connected") - return; - - // TODO: how will this ever work?? - //if (e.data.breakpoints.indexOf(self.$id) !== -1) - // self.$dbg.emit("break"); - }; - this.$dbg.on("break", this.$onbreak); - }; - - this.clear = function(callback) { - if (this.state !== "connected") - throw new Error("Not connected!"); - - var self = this; - this.$dbg.clearbreakpoint(this.$id, function() { - this.$id = null; - this.$dbg = null; - this.state = "initialized"; - callback && callback(self); - }); - }; - - this.setEnabled = function(enabled) { - this.enabled = enabled; - }; - - this.setCondition = function(condition) { - this.condition = condition; - }; - - this.setIgnoreCount = function(ignoreCount) { - this.ignoreCount = ignoreCount; - }; - - this.flush = function(callback) { - if (this.state !== "connected") - throw new Error("Not connected"); - - this.$dbg.changeBreakpoint(this.$id, this.enabled, this.condition, this.ignoreCount, callback); - }; - - this.destroy = function() { - dbg.removeListener("break", this.$onbreak); - }; - -}).call(Breakpoint.prototype); - -Breakpoint.fromJson = function(breakpoint, dbg) { - if (breakpoint.type != "scriptName") - throw new Error("unsupported breakpoint type: " + breakpoint.type); - - var bp = new Breakpoint(breakpoint.script_name, breakpoint.line, breakpoint.column, dbg); - bp.condition = breakpoint.condition || ""; - bp.ignoreCount = breakpoint.ignoreCount || 0; - bp.enabled = breakpoint.active; - bp.$id = breakpoint.number; - return bp; -}; - -}); \ No newline at end of file diff --git a/plugins/c9.ide.run.debug/debuggers/v8/lib/ChromeDebugMessageStream.js b/plugins/c9.ide.run.debug/debuggers/v8/lib/ChromeDebugMessageStream.js deleted file mode 100644 index 7cac959d..00000000 --- a/plugins/c9.ide.run.debug/debuggers/v8/lib/ChromeDebugMessageStream.js +++ /dev/null @@ -1,99 +0,0 @@ -/** - * V8Debugger - * - * Copyright (c) 2010 Ajax.org B.V. - * - * The MIT License (MIT) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -define(function(require, exports, module) { -"use strict"; - -var Util = require("./util"); -var EventEmitter = Util.EventEmitter; - -var ChromeDebugMessageStream = module.exports = function(socket) { - this.$socket = socket; -}; - -(function() { - - Util.implement(this, EventEmitter); - - this.$received = ""; - - this.connect = function() { - var socket = this.$socket; - var self = this; - socket.on("connect", function() { - self.$onconnect(); - }); - socket.on("data", function(data) { - self.$onhandshake(data); - }); - socket.connect(); - }; - - this.sendRequest = function(message) { - //console.log("> Sent to Chrome:\n", message.stringify()); - this.$socket.send(message.stringify()); - }; - - this.$onconnect = function() { - this.$socket.send(this.MSG_HANDSHAKE); - }; - - this.$onhandshake = function(data) { - this.$received += data; - //this.$socket.clearBuffer(); - - if (this.$received.length < this.MSG_HANDSHAKE.length) - return; - - if (this.$received.indexOf(this.MSG_HANDSHAKE) !== 0) { - this.$socket.removeAllListeners("data"); - return this.$onerror(); - } - - this.$received = this.$received.substring(this.MSG_HANDSHAKE.length); - this.$socket.removeAllListeners("data"); - this.$reader = new MessageReader(this.$socket, this.$onMessage.bind(this)); - - this.emit("connect"); - }; - - this.$onMessage = function(messageText) { - var self = this; - setTimeout(function() { - //console.log("> Received from Chrome:\n", messageText); - var response = new DevToolsMessage.fromString(messageText); - self.emit("message", { data: response }); - }, 0); - }; - - this.$onerror = function() { - this.emit("error"); - }; - - this.MSG_HANDSHAKE = "ChromeDevToolsHandshake\r\n"; - -}).call(ChromeDebugMessageStream.prototype); - -}); \ No newline at end of file diff --git a/plugins/c9.ide.run.debug/debuggers/v8/lib/DevToolsService.js b/plugins/c9.ide.run.debug/debuggers/v8/lib/DevToolsService.js deleted file mode 100644 index d38a59ea..00000000 --- a/plugins/c9.ide.run.debug/debuggers/v8/lib/DevToolsService.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * V8Debugger - * - * Copyright (c) 2010 Ajax.org B.V. - * - * The MIT License (MIT) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -define(function(require, exports, module) { -"use strict"; - -var DevToolsMessage = require("./DevToolsMessage"); - -var DevToolsService = module.exports = function(msgStream) { - this.$msgStream = msgStream; - this.$pending = []; - - var self = this; - this.$msgStream.on("message", function(e) { - var response = e.data; - if (response.getHeaders()["Tool"] !== "DevToolsService") - return; - - if (self.$pending.length) - self.$pending.shift()(JSON.parse(response.getContent()).data); - }); -}; - -(function() { - - this.ping = function(callback) { - this.$send("ping", callback); - }; - - this.getVersion = function(callback) { - this.$send("version", callback); - }; - - this.listTabs = function(callback) { - this.$send("list_tabs", callback); - }; - - this.$send = function(command, callback) { - var msg = new DevToolsMessage(null, '{"command":"' + command + '"}'); - this.$msgStream.sendRequest(msg); - this.$pending.push(callback); - }; - -}).call(DevToolsService.prototype); - -}); \ No newline at end of file diff --git a/plugins/c9.ide.run.debug/debuggers/v8/lib/DevToolsServiceTest.js b/plugins/c9.ide.run.debug/debuggers/v8/lib/DevToolsServiceTest.js deleted file mode 100644 index 1c97ec9b..00000000 --- a/plugins/c9.ide.run.debug/debuggers/v8/lib/DevToolsServiceTest.js +++ /dev/null @@ -1,88 +0,0 @@ -/** - * V8Debugger - * - * Copyright (c) 2010 Ajax.org B.V. - * - * The MIT License (MIT) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -if (typeof process !== "undefined") - require("amd-loader"); - -define(function(require, exports, module) { -"use strict"; - -var assert = require("assert"); -var MsgStreamMock = require("./MsgStreamMock"); -var DevToolsService = require("./DevToolsService"); - -module.exports = { - - name: "DevToolsService", - - setUp: function() { - this.$msgStream = new MsgStreamMock(); - this.$service = new DevToolsService(this.$msgStream); - }, - - sendMessage: function(content) { - this.$msgStream.$send(null, content); - }, - - "test: ping": function() { - var called = false; - this.$service.ping(function() { - called = true; - }); - this.sendMessage('{"command":"ping", "result":0, "data":"ok"}'); - - assert.ok(called); - }, - - "test: getVersion": function() { - var called = false; - this.$service.getVersion(function(version) { - called = true; - assert.equal("0.1", version); - }); - this.sendMessage('{"command":"version","data":"0.1","result":0}'); - - assert.ok(called); - }, - - "test: listTabs": function() { - var called = false; - this.$service.listTabs(function(tabs) { - called = true; - assert.equal(1, tabs.length); - assert.equal(2, tabs[0].length); - assert.equal(2, tabs[0][0]); - assert.equal("file:///index.html", tabs[0][1]); - }); - this.sendMessage('{"command":"list_tabs","data":[[2,"file:///index.html"]],"result":0}'); - - assert.ok(called); - } -}; - -if (typeof module !== "undefined" && !module.parent) - require("asyncjs").test.testcase(module.exports).exec(); - -}); \ No newline at end of file diff --git a/plugins/c9.ide.run.debug/debuggers/v8/lib/NodeSocket.js b/plugins/c9.ide.run.debug/debuggers/v8/lib/NodeSocket.js deleted file mode 100644 index 22f35fe7..00000000 --- a/plugins/c9.ide.run.debug/debuggers/v8/lib/NodeSocket.js +++ /dev/null @@ -1,132 +0,0 @@ -/** - * V8Debugger - * - * Copyright (c) 2010 Ajax.org B.V. - * - * The MIT License (MIT) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -define(function(require, exports, module) { -"use strict"; - -var net = require("net"); -var EventEmitter = require("events").EventEmitter; - -var NodeSocket = module.exports = function(ip, port) { - EventEmitter.call(this); - var _self = this; - // connection status flag - var connected = false; - // the number of left connect retries - // TODO: retrieve retry count from configuration - var connectRetryCount = 30; - // the amount of interval in msec between each retry - // TODO: retrieve retry count from configuration - var connectRetryInterval = 50; // 50 msec - // note: total time for retry: 50msc * 30 = 1.5 sec - - function initStream() { - _self.$stream = new net.Stream(); - _self.$stream.setEncoding("utf8"); - - _self.$stream.addListener("data", function(data) { - _self.$onData(data); - }); - - _self.$stream.addListener("end", onEnd); - _self.$stream.addListener("error", onError); - - _self.$stream.addListener("connect", function () { - // set connection flag to true (connected) - connected = true; - _self.emit("connect"); - }); - } - - // create the initial connection object - initStream(); - - function onEnd(errorInfo) { - // set connection flag to false (not connected) - connected = false; - _self.$stream.end(); - _self.state = "initialized"; - _self.emit("end", errorInfo); - } - - function onError() { - // if currently not connected and there re-tries left to perform - if (!connected && connectRetryCount > 0) { - // decrease number of re-tries - connectRetryCount--; - // since the connection has failed the entire connection object is dead. - // close the existing connection object - _self.$stream.end(); - // create a new connection object. - initStream(); - // sleep and afterward try to connect again - setTimeout(function() { - //console.log("retrying. " + ( connectRetryCount + 1 ) + " attempts left"); - _self.connect(); - }, connectRetryInterval); - } - else { - // TODO: replace error message with exception instance. - onEnd("Could not connect to the debugger"); - } - } - - this.$ip = ip; - this.$port = port; -}; - -require("./util").inherits(NodeSocket, EventEmitter); - -(function() { - - this.receivedText = ""; - - this.close = function() { - this.$stream.end(); - }; - - this.clearBuffer = function() { }; - - this.send = function(msg) { - //console.log("> sent to socket:\n", msg) - this.$stream.write(msg, "utf8"); - }; - - this.setMinReceiveSize = function(minSize) { }; - - this.$onData = function(data) { - this.receivedText = data; - //console.log("> received from socket:\n", this.receivedText, this.receivedText.length) - this.emit("data", this.receivedText); - }; - - this.connect = function() { - //console.log("Connecting to: " + this.$ip + ":" + this.$port); - this.$stream.connect(this.$port, this.$ip); - }; - -}).call(NodeSocket.prototype); - -}); \ No newline at end of file diff --git a/plugins/c9.ide.run.debug/debuggers/v8/lib/V8DebuggerService.js b/plugins/c9.ide.run.debug/debuggers/v8/lib/V8DebuggerService.js deleted file mode 100644 index 53070dcb..00000000 --- a/plugins/c9.ide.run.debug/debuggers/v8/lib/V8DebuggerService.js +++ /dev/null @@ -1,107 +0,0 @@ -/** - * V8Debugger - * - * Copyright (c) 2010 Ajax.org B.V. - * - * The MIT License (MIT) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -define(function(require, exports, module) { -"use strict"; - -var Util = require("./util"); -var EventEmitter = Util.EventEmitter; -var DevToolsMessage = require("./DevToolsMessage"); - -var V8DebuggerService = module.exports = function(msgStream) { - this.$msgStream = msgStream; - this.$pending = {}; - - var self = this; - this.$msgStream.addEventListener("message", function(e) { - var response = e.data; - if (response.getHeaders()["Tool"] !== "V8Debugger") - return; - - var content = JSON.parse(response.getContent()); - var command = content.command; - - var queue = self.$pending[command]; - if (queue && queue.length) - queue.shift()(content.data); - - var event = command; - var tabId = response.getHeaders()["Destination"]; - if (tabId) - event += "_" + tabId; - - self.emit(event, { data: content.data }); - }); -}; - -(function() { - - Util.implement(this, EventEmitter); - - this.attach = function(tabId, callback) { - this.$send(tabId, "attach", null, callback); - }; - - this.detach = function(tabId, callback) { - this.$send(tabId, "detach", null, callback); - }; - - this.evaluateJavaScript = function(tabId, jsCode) { - this.$send(tabId, "evaluate_javascript", '"' + jsCode + '"', null); - }; - - this.debuggerCommand = function(tabId, v8Command) { - this.$send(tabId, "debugger_command", v8Command); - var self = this; - setTimeout(function() { - self.$send(tabId, "evaluate_javascript", '"javascript:void(0);"', null); - }, 100); - }; - - this.$send = function(destination, command, data, callback) { - var headers = { - "Tool": "V8Debugger", - "Destination": destination - }; - - var commandJson = ['{"command":"', command, '"']; - data && commandJson.push(',"data":', data); - commandJson.push("}"); - - var msg = new DevToolsMessage(headers, commandJson.join("")); - this.$msgStream.sendRequest(msg); - - if (callback) { - if (!this.$pending[command]) - this.$pending[command] = []; - - this.$pending[command].push(callback); - } - }; - - -}).call(V8DebuggerService.prototype); - -}); \ No newline at end of file diff --git a/plugins/c9.ide.run.debug/debuggers/v8/lib/V8DebuggerServiceTest.js b/plugins/c9.ide.run.debug/debuggers/v8/lib/V8DebuggerServiceTest.js deleted file mode 100644 index 20b1dad5..00000000 --- a/plugins/c9.ide.run.debug/debuggers/v8/lib/V8DebuggerServiceTest.js +++ /dev/null @@ -1,91 +0,0 @@ -/** - * V8Debugger - * - * Copyright (c) 2010 Ajax.org B.V. - * - * The MIT License (MIT) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -if (typeof process !== "undefined") - require("amd-loader"); - -define(function(require, exports, module) { -"use strict"; - -var assert = require("assert"); -var MsgStreamMock = require("./MsgStreamMock"); -var V8DebuggerService = require("./V8DebuggerService"); - -module.exports = { - - name: "V8DebuggerService", - - setUp: function(next) { - this.$msgStream = new MsgStreamMock(); - this.$service = new V8DebuggerService(this.$msgStream); - next(); - }, - - sendMessage: function(destination, content) { - var headers = { - Tool: "V8Debugger", - Destination: destination - }; - this.$msgStream.$send(headers, content); - }, - - "test: attach": function() { - var called = false; - this.$service.attach(2, function() { - called = true; - }); - this.sendMessage(2, '{"command":"attach","result":0}'); - - assert.ok(called); - }, - - "test: detach": function() { - var called = false; - this.$service.detach(2, function() { - called = true; - }); - this.sendMessage(2, '{"command":"detach", "result":0}'); - - assert.ok(called); - }, - - "test: debugger command": function() { - var called = false; - var data = '{"seq":1,"type":"request","command":"version"}'; - this.$service.debuggerCommand(2, data); - this.sendMessage(2, '{"command":"debugger_command","result":0,"data":{"seq":1,"request_seq":1,"type":"response","command":"version","success":true,"body":{"V8Version":"2.1.10.5"},"refs":[],"running":true}}'); - assert.equal('{"command":"debugger_command","data":{"seq":1,"type":"request","command":"version"}}', this.$msgStream.requests[0].getContent()); - }, - - "test: evaluate javascript": function() { - this.$service.evaluateJavaScript(2, "javascript:void(0);"); - assert.equal('{"command":"evaluate_javascript","data":"javascript:void(0);"}', this.$msgStream.requests[0].getContent()); - } -}; - -if (typeof module !== "undefined" && !module.parent) - require("asyncjs").test.testcase(module.exports).exec(); - -}); \ No newline at end of file diff --git a/plugins/c9.ide.run.debug/debuggers/v8/lib/WSChromeDebugMessageStream.js b/plugins/c9.ide.run.debug/debuggers/v8/lib/WSChromeDebugMessageStream.js deleted file mode 100644 index 4066d983..00000000 --- a/plugins/c9.ide.run.debug/debuggers/v8/lib/WSChromeDebugMessageStream.js +++ /dev/null @@ -1,83 +0,0 @@ -/** - * V8Debugger - * - * Copyright (c) 2010 Ajax.org B.V. - * - * The MIT License (MIT) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -define(function(require, exports, module) { -"use strict"; - -var Util = require("./util"); -var EventEmitter = Util.EventEmitter; - -var WSChromeDebugMessageStream = module.exports = function(socket) { - this.$socket = socket; - this.$attached = false; -}; - -(function() { - - Util.implement(this, EventEmitter); - - this.$received = ""; - - this.connect = function() { - if (this.$attached) - return; - - var self = this; - - this.$socket.on("message", function(e) { - var message; - try { - message = JSON.parse(data); - } - catch (e) { - return _self.$onerror(); - } - - if (message.type == "chrome-debug-ready") { - self._dispatchEvent("connect"); - } - else { - var response = new DevToolsMessage.fromString(e.body); - self._dispatchEvent("message", { data: response }); - } - }); - }; - - this.sendRequest = function(message) { - //console.log("> Sent to Chrome:\n", message.stringify()); - var command = { - command: "debugChrome", - message: message.stringify() - }; - this.$socket.send(JSON.stringify(message)); - }; - - this.$onerror = function() { - this.$dispatchEvent("error"); - }; - -}).call(WSChromeDebugMessageStream.prototype); - -}); \ No newline at end of file diff --git a/plugins/c9.ide.run.debug/debuggers/v8/lib/WSV8DebuggerService.js b/plugins/c9.ide.run.debug/debuggers/v8/lib/WSV8DebuggerService.js deleted file mode 100644 index 93396cc1..00000000 --- a/plugins/c9.ide.run.debug/debuggers/v8/lib/WSV8DebuggerService.js +++ /dev/null @@ -1,93 +0,0 @@ -/** - * V8Debugger - * - * Copyright (c) 2010 Ajax.org B.V. - * - * The MIT License (MIT) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -define(function(require, exports, module) { -"use strict"; - -var Util = require("./util"); -var EventEmitter = Util.EventEmitter; - -var WSV8DebuggerService = module.exports = function(socket) { - this.$socket = socket; - this.$state = "initialized"; - this.$onAttach = []; -}; - -(function() { - - Util.implement(this, EventEmitter); - - this.attach = function(tabId, callback) { - if (this.$state == "connected") - return callback(new Error("already attached!")); - - this.$onAttach.push(callback); - if (this.$state == "initialized") { - this.$socket.send(JSON.stringify({ command: "DebugAttachNode", runner: "node" })); - this.$onMessageHandler = this.$onMessage.bind(this); - this.$socket.on("message", this.$onMessageHandler); - this.$state = "connecting"; - } - }; - - this.$onMessage = function(data) { - var message; - //console.log("INCOMING: ", data); - try { - message = JSON.parse(data); - } - catch (ex) { - return; - } - if (message.type == "node-debug-ready") { - this.pid = message.pid; - this.$state = "connected"; - for (var i = 0, l = this.$onAttach.length; i < l; i++) - this.$onAttach[i](); - this.$onAttach = []; - } - else if (message.type == "node-debug") { - this.emit("debugger_command_0", { data: message.body }); - } - }; - - this.detach = function(tabId, callback) { - this.$state = "initialized"; - this.$socket.removeListener("message", this.$onMessageHandler); - callback(); - }; - - this.debuggerCommand = function(tabId, v8Command) { - this.$socket.send(JSON.stringify({ - command: "debugNode", - pid: this.pid, - runner: "node", - body: JSON.parse(v8Command) - })); - }; - -}).call(WSV8DebuggerService.prototype); - -}); \ No newline at end of file diff --git a/plugins/c9.ide.run.debug/debuggers/v8/lib/index.js b/plugins/c9.ide.run.debug/debuggers/v8/lib/index.js deleted file mode 100644 index c3124ecb..00000000 --- a/plugins/c9.ide.run.debug/debuggers/v8/lib/index.js +++ /dev/null @@ -1,38 +0,0 @@ -/** - * V8Debugger - * - * Copyright (c) 2010 Ajax.org B.V. - * - * The MIT License (MIT) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -require("amd-loader"); -var fs = require("fs"); - -fs.readdirSync(__dirname).forEach(function(filename) { - var m = filename.match(/^([A-Z].*)(Test)?\.js$/); - - if (m && !m[2]) { - var name = m[1]; - exports.__defineGetter__(name, function() { - return require("./" + name); - }); - } -}); \ No newline at end of file diff --git a/plugins/c9.ide.run.debug/debuggers/v8/v8debugger.js b/plugins/c9.ide.run.debug/debuggers/v8/v8debugger.js index 37ba3608..f2e73174 100644 --- a/plugins/c9.ide.run.debug/debuggers/v8/v8debugger.js +++ b/plugins/c9.ide.run.debug/debuggers/v8/v8debugger.js @@ -954,6 +954,8 @@ define(function(require, exports, module) { callback(null, data.breakpoints.map(function(bp) { return createBreakpoint(bp); + }).filter(function(bp) { + return bp.path; })); }); } diff --git a/test/setup_paths.js b/test/setup_paths.js index 35f7a6fc..e3b51281 100644 --- a/test/setup_paths.js +++ b/test/setup_paths.js @@ -2,7 +2,6 @@ var modules = require("module"); var oldResolve = modules._resolveFilename; var extraPaths = [ __dirname + "/../plugins/node_modules/ace/lib", - __dirname + "/../node_modules/v8debug/lib", __dirname + "/../" ]; var extraPathOverrides = [