67 lines
2.2 KiB
JavaScript
67 lines
2.2 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/. */
|
|
|
|
/* global alert, BrowserToolboxProcess, gDevTools, React, TargetFactory,
|
|
Toolbox */
|
|
|
|
"use strict";
|
|
|
|
loader.lazyRequireGetter(this, "React",
|
|
"devtools/client/shared/vendor/react");
|
|
loader.lazyRequireGetter(this, "TargetFactory",
|
|
"devtools/client/framework/target", true);
|
|
loader.lazyRequireGetter(this, "Toolbox",
|
|
"devtools/client/framework/toolbox", true);
|
|
loader.lazyRequireGetter(this, "Services");
|
|
|
|
loader.lazyImporter(this, "BrowserToolboxProcess",
|
|
"resource://devtools/client/framework/ToolboxProcess.jsm");
|
|
loader.lazyImporter(this, "gDevTools",
|
|
"resource://devtools/client/framework/gDevTools.jsm");
|
|
|
|
const Strings = Services.strings.createBundle(
|
|
"chrome://devtools/locale/aboutdebugging.properties");
|
|
|
|
exports.TargetComponent = React.createClass({
|
|
displayName: "TargetComponent",
|
|
|
|
debug() {
|
|
let client = this.props.client;
|
|
let target = this.props.target;
|
|
switch (target.type) {
|
|
case "extension":
|
|
BrowserToolboxProcess.init({ addonID: target.addonID });
|
|
break;
|
|
case "serviceworker":
|
|
// Fall through.
|
|
case "sharedworker":
|
|
// Fall through.
|
|
case "worker":
|
|
let workerActor = this.props.target.actorID;
|
|
client.attachWorker(workerActor, (response, workerClient) => {
|
|
gDevTools.showToolbox(TargetFactory.forWorker(workerClient),
|
|
"jsdebugger", Toolbox.HostType.WINDOW);
|
|
});
|
|
break;
|
|
default:
|
|
alert("Not implemented yet!");
|
|
}
|
|
},
|
|
|
|
render() {
|
|
let target = this.props.target;
|
|
return React.createElement("div", { className: "target" },
|
|
React.createElement("img", {
|
|
className: "target-icon",
|
|
src: target.icon }),
|
|
React.createElement("div", { className: "target-details" },
|
|
React.createElement("div", { className: "target-name" }, target.name),
|
|
React.createElement("div", { className: "target-url" }, target.url)
|
|
),
|
|
React.createElement("button", { onClick: this.debug },
|
|
Strings.GetStringFromName("debug"))
|
|
);
|
|
},
|
|
});
|