зеркало из https://github.com/mozilla/gecko-dev.git
62 строки
1.6 KiB
JavaScript
62 строки
1.6 KiB
JavaScript
/* 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";
|
|
|
|
/**
|
|
* DevTools transport relying on JS Window Actors. This is an experimental
|
|
* transport. It is only used when using the JS Window Actor based frame
|
|
* connector. In that case this transport will be used to communicate between
|
|
* the DevToolsServer living in the parent process and the DevToolsServer
|
|
* living in the process of the target frame.
|
|
*
|
|
* This is intended to be a replacement for child-transport.js which is a
|
|
* message-manager based transport.
|
|
*/
|
|
class JsWindowActorTransport {
|
|
constructor(jsWindowActor, prefix) {
|
|
this.hooks = null;
|
|
this._jsWindowActor = jsWindowActor;
|
|
this._prefix = prefix;
|
|
|
|
this._onPacketReceived = this._onPacketReceived.bind(this);
|
|
}
|
|
|
|
_addListener() {
|
|
this._jsWindowActor.on("packet-received", this._onPacketReceived);
|
|
}
|
|
|
|
_removeListener() {
|
|
this._jsWindowActor.off("packet-received", this._onPacketReceived);
|
|
}
|
|
|
|
ready() {
|
|
this._addListener();
|
|
}
|
|
|
|
close() {
|
|
this._removeListener();
|
|
if (this.hooks.onClosed) {
|
|
this.hooks.onClosed();
|
|
}
|
|
}
|
|
|
|
_onPacketReceived(eventName, { data }) {
|
|
const { prefix, packet } = data;
|
|
if (prefix === this._prefix) {
|
|
this.hooks.onPacket(packet);
|
|
}
|
|
}
|
|
|
|
send(packet) {
|
|
this._jsWindowActor.sendPacket(packet, this._prefix);
|
|
}
|
|
|
|
startBulkSend() {
|
|
throw new Error("startBulkSend not implemented for JsWindowActorTransport");
|
|
}
|
|
}
|
|
|
|
exports.JsWindowActorTransport = JsWindowActorTransport;
|