summaryrefslogtreecommitdiffstats
path: root/addon-sdk/source/lib/dev/debuggee.js
diff options
context:
space:
mode:
Diffstat (limited to 'addon-sdk/source/lib/dev/debuggee.js')
-rw-r--r--addon-sdk/source/lib/dev/debuggee.js95
1 files changed, 0 insertions, 95 deletions
diff --git a/addon-sdk/source/lib/dev/debuggee.js b/addon-sdk/source/lib/dev/debuggee.js
deleted file mode 100644
index 0ca0bd37a..000000000
--- a/addon-sdk/source/lib/dev/debuggee.js
+++ /dev/null
@@ -1,95 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-"use strict";
-
-module.metadata = {
- "stability": "experimental"
-};
-
-const { Cu } = require("chrome");
-const { Class } = require("../sdk/core/heritage");
-const { MessagePort, MessageChannel } = require("../sdk/messaging");
-const { require: devtoolsRequire } = Cu.import("resource://devtools/shared/Loader.jsm", {});
-const { DebuggerServer } = devtoolsRequire("devtools/server/main");
-
-const outputs = new WeakMap();
-const inputs = new WeakMap();
-const targets = new WeakMap();
-const transports = new WeakMap();
-
-const inputFor = port => inputs.get(port);
-const outputFor = port => outputs.get(port);
-const transportFor = port => transports.get(port);
-
-const fromTarget = target => {
- const debuggee = new Debuggee();
- const { port1, port2 } = new MessageChannel();
- inputs.set(debuggee, port1);
- outputs.set(debuggee, port2);
- targets.set(debuggee, target);
-
- return debuggee;
-};
-exports.fromTarget = fromTarget;
-
-const Debuggee = Class({
- extends: MessagePort.prototype,
- close: function() {
- const server = transportFor(this);
- if (server) {
- transports.delete(this);
- server.close();
- }
- outputFor(this).close();
- },
- start: function() {
- const target = targets.get(this);
- if (target.isLocalTab) {
- // Since a remote protocol connection will be made, let's start the
- // DebuggerServer here, once and for all tools.
- if (!DebuggerServer.initialized) {
- DebuggerServer.init();
- DebuggerServer.addBrowserActors();
- }
-
- transports.set(this, DebuggerServer.connectPipe());
- }
- // TODO: Implement support for remote connections (See Bug 980421)
- else {
- throw Error("Remote targets are not yet supported");
- }
-
- // pipe messages send to the debuggee to an actual
- // server via remote debugging protocol transport.
- inputFor(this).addEventListener("message", ({data}) =>
- transportFor(this).send(data));
-
- // pipe messages received from the remote debugging
- // server transport onto the this debuggee.
- transportFor(this).hooks = {
- onPacket: packet => inputFor(this).postMessage(packet),
- onClosed: () => inputFor(this).close()
- };
-
- inputFor(this).start();
- outputFor(this).start();
- },
- postMessage: function(data) {
- return outputFor(this).postMessage(data);
- },
- get onmessage() {
- return outputFor(this).onmessage;
- },
- set onmessage(onmessage) {
- outputFor(this).onmessage = onmessage;
- },
- addEventListener: function(...args) {
- return outputFor(this).addEventListener(...args);
- },
- removeEventListener: function(...args) {
- return outputFor(this).removeEventListener(...args);
- }
-});
-exports.Debuggee = Debuggee;