diff --git a/devtools/client/aboutdebugging/components/aboutdebugging.js b/devtools/client/aboutdebugging/components/aboutdebugging.js index 9b93b48f6629..601574dcbae5 100644 --- a/devtools/client/aboutdebugging/components/aboutdebugging.js +++ b/devtools/client/aboutdebugging/components/aboutdebugging.js @@ -6,7 +6,7 @@ "use strict"; -const { createFactory, createClass, DOM: dom } = +const { createFactory, createClass, DOM: dom, PropTypes } = require("devtools/client/shared/vendor/react"); const Services = require("Services"); @@ -19,6 +19,11 @@ loader.lazyGetter(this, "TabsPanel", loader.lazyGetter(this, "WorkersPanel", () => createFactory(require("./workers/panel"))); +loader.lazyRequireGetter(this, "DebuggerClient", + "devtools/shared/client/main", true); +loader.lazyRequireGetter(this, "Telemetry", + "devtools/client/shared/telemetry"); + const Strings = Services.strings.createBundle( "chrome://devtools/locale/aboutdebugging.properties"); @@ -44,6 +49,11 @@ const defaultPanelId = "addons"; module.exports = createClass({ displayName: "AboutDebuggingApp", + propTypes: { + client: PropTypes.instanceOf(DebuggerClient).isRequired, + telemetry: PropTypes.instanceOf(Telemetry).isRequired + }, + getInitialState() { return { selectedPanelId: defaultPanelId diff --git a/devtools/client/aboutdebugging/components/addons/controls.js b/devtools/client/aboutdebugging/components/addons/controls.js index dcfa26696b70..83c4fd23826d 100644 --- a/devtools/client/aboutdebugging/components/addons/controls.js +++ b/devtools/client/aboutdebugging/components/addons/controls.js @@ -11,7 +11,7 @@ loader.lazyImporter(this, "AddonManager", "resource://gre/modules/AddonManager.jsm"); const { Cc, Ci } = require("chrome"); -const { createFactory, createClass, DOM: dom } = +const { createFactory, createClass, DOM: dom, PropTypes } = require("devtools/client/shared/vendor/react"); const Services = require("Services"); const AddonsInstallError = createFactory(require("./install-error")); @@ -25,6 +25,10 @@ const MORE_INFO_URL = "https://developer.mozilla.org/docs/Tools" + module.exports = createClass({ displayName: "AddonsControls", + propTypes: { + debugDisabled: PropTypes.bool + }, + getInitialState() { return { installError: null, diff --git a/devtools/client/aboutdebugging/components/addons/install-error.js b/devtools/client/aboutdebugging/components/addons/install-error.js index a196bbc2524f..aea1c4f09fe4 100644 --- a/devtools/client/aboutdebugging/components/addons/install-error.js +++ b/devtools/client/aboutdebugging/components/addons/install-error.js @@ -5,11 +5,15 @@ /* eslint-env browser */ "use strict"; -const { createClass, DOM: dom } = require("devtools/client/shared/vendor/react"); +const { createClass, DOM: dom, PropTypes } = require("devtools/client/shared/vendor/react"); module.exports = createClass({ displayName: "AddonsInstallError", + propTypes: { + error: PropTypes.string + }, + render() { if (!this.props.error) { return null; diff --git a/devtools/client/aboutdebugging/components/addons/panel.js b/devtools/client/aboutdebugging/components/addons/panel.js index 23ddd94744ad..425a10a8dfb5 100644 --- a/devtools/client/aboutdebugging/components/addons/panel.js +++ b/devtools/client/aboutdebugging/components/addons/panel.js @@ -5,7 +5,7 @@ "use strict"; const { AddonManager } = require("resource://gre/modules/AddonManager.jsm"); -const { createFactory, createClass, DOM: dom } = +const { createFactory, createClass, DOM: dom, PropTypes } = require("devtools/client/shared/vendor/react"); const Services = require("Services"); @@ -14,6 +14,9 @@ const AddonTarget = createFactory(require("./target")); const PanelHeader = createFactory(require("../panel-header")); const TargetList = createFactory(require("../target-list")); +loader.lazyRequireGetter(this, "DebuggerClient", + "devtools/shared/client/main", true); + const Strings = Services.strings.createBundle( "chrome://devtools/locale/aboutdebugging.properties"); @@ -24,6 +27,11 @@ const REMOTE_ENABLED_PREF = "devtools.debugger.remote-enabled"; module.exports = createClass({ displayName: "AddonsPanel", + propTypes: { + client: PropTypes.instanceOf(DebuggerClient).isRequired, + id: PropTypes.string.isRequired + }, + getInitialState() { return { extensions: [], @@ -125,6 +133,7 @@ module.exports = createClass({ AddonsControls({ debugDisabled }), dom.div({ id: "addons" }, TargetList({ + id: "extensions", name, targets, client, diff --git a/devtools/client/aboutdebugging/components/addons/target.js b/devtools/client/aboutdebugging/components/addons/target.js index 540820445bb0..c214996507d4 100644 --- a/devtools/client/aboutdebugging/components/addons/target.js +++ b/devtools/client/aboutdebugging/components/addons/target.js @@ -6,17 +6,35 @@ "use strict"; -const { createClass, DOM: dom } = +const { createClass, DOM: dom, PropTypes } = require("devtools/client/shared/vendor/react"); const { debugAddon } = require("../../modules/addon"); const Services = require("Services"); +loader.lazyImporter(this, "BrowserToolboxProcess", + "resource://devtools/client/framework/ToolboxProcess.jsm"); + +loader.lazyRequireGetter(this, "DebuggerClient", + "devtools/shared/client/main", true); + const Strings = Services.strings.createBundle( "chrome://devtools/locale/aboutdebugging.properties"); module.exports = createClass({ displayName: "AddonTarget", + propTypes: { + client: PropTypes.instanceOf(DebuggerClient).isRequired, + debugDisabled: PropTypes.bool, + target: PropTypes.shape({ + addonActor: PropTypes.string.isRequired, + addonID: PropTypes.string.isRequired, + icon: PropTypes.string, + name: PropTypes.string.isRequired, + temporarilyInstalled: PropTypes.bool + }).isRequired + }, + debug() { let { target } = this.props; debugAddon(target.addonID); diff --git a/devtools/client/aboutdebugging/components/panel-header.js b/devtools/client/aboutdebugging/components/panel-header.js index f2c04d809b60..5629018f74ce 100644 --- a/devtools/client/aboutdebugging/components/panel-header.js +++ b/devtools/client/aboutdebugging/components/panel-header.js @@ -4,12 +4,17 @@ "use strict"; -const { createClass, DOM: dom } = +const { createClass, DOM: dom, PropTypes } = require("devtools/client/shared/vendor/react"); module.exports = createClass({ displayName: "PanelHeader", + propTypes: { + id: PropTypes.string.isRequired, + name: PropTypes.string.isRequired + }, + render() { let { name, id } = this.props; diff --git a/devtools/client/aboutdebugging/components/panel-menu-entry.js b/devtools/client/aboutdebugging/components/panel-menu-entry.js index 5aa15cc404a1..1af02d4356aa 100644 --- a/devtools/client/aboutdebugging/components/panel-menu-entry.js +++ b/devtools/client/aboutdebugging/components/panel-menu-entry.js @@ -4,12 +4,20 @@ "use strict"; -const { createClass, DOM: dom } = +const { createClass, DOM: dom, PropTypes } = require("devtools/client/shared/vendor/react"); module.exports = createClass({ displayName: "PanelMenuEntry", + propTypes: { + icon: PropTypes.string.isRequired, + id: PropTypes.string.isRequired, + name: PropTypes.string.isRequired, + selected: PropTypes.bool, + selectPanel: PropTypes.func.isRequired + }, + onClick() { this.props.selectPanel(this.props.id); }, diff --git a/devtools/client/aboutdebugging/components/panel-menu.js b/devtools/client/aboutdebugging/components/panel-menu.js index 245ce5d02850..b24493d78c5e 100644 --- a/devtools/client/aboutdebugging/components/panel-menu.js +++ b/devtools/client/aboutdebugging/components/panel-menu.js @@ -4,13 +4,24 @@ "use strict"; -const { createClass, createFactory, DOM: dom } = +const { createClass, createFactory, DOM: dom, PropTypes } = require("devtools/client/shared/vendor/react"); const PanelMenuEntry = createFactory(require("./panel-menu-entry")); module.exports = createClass({ displayName: "PanelMenu", + propTypes: { + panels: PropTypes.arrayOf(PropTypes.shape({ + id: PropTypes.string.isRequired, + name: PropTypes.string.isRequired, + icon: PropTypes.string.isRequired, + component: PropTypes.func.isRequired + })).isRequired, + selectPanel: PropTypes.func.isRequired, + selectedPanelId: PropTypes.string + }, + render() { let { panels, selectedPanelId, selectPanel } = this.props; let panelLinks = panels.map(({ id, name, icon }) => { diff --git a/devtools/client/aboutdebugging/components/tabs/panel.js b/devtools/client/aboutdebugging/components/tabs/panel.js index f12116dd0525..e280ce7f10a7 100644 --- a/devtools/client/aboutdebugging/components/tabs/panel.js +++ b/devtools/client/aboutdebugging/components/tabs/panel.js @@ -6,7 +6,7 @@ "use strict"; -const { createClass, createFactory, DOM: dom } = +const { createClass, createFactory, DOM: dom, PropTypes } = require("devtools/client/shared/vendor/react"); const Services = require("Services"); @@ -14,12 +14,20 @@ const PanelHeader = createFactory(require("../panel-header")); const TargetList = createFactory(require("../target-list")); const TabTarget = createFactory(require("./target")); +loader.lazyRequireGetter(this, "DebuggerClient", + "devtools/shared/client/main", true); + const Strings = Services.strings.createBundle( "chrome://devtools/locale/aboutdebugging.properties"); module.exports = createClass({ displayName: "TabsPanel", + propTypes: { + client: PropTypes.instanceOf(DebuggerClient).isRequired, + id: PropTypes.string.isRequired + }, + getInitialState() { return { tabs: [] diff --git a/devtools/client/aboutdebugging/components/tabs/target.js b/devtools/client/aboutdebugging/components/tabs/target.js index eee6fba922cc..d946f8f61c93 100644 --- a/devtools/client/aboutdebugging/components/tabs/target.js +++ b/devtools/client/aboutdebugging/components/tabs/target.js @@ -6,7 +6,7 @@ "use strict"; -const { createClass, DOM: dom } = +const { createClass, DOM: dom, PropTypes } = require("devtools/client/shared/vendor/react"); const Services = require("Services"); @@ -16,6 +16,15 @@ const Strings = Services.strings.createBundle( module.exports = createClass({ displayName: "TabTarget", + propTypes: { + target: PropTypes.shape({ + icon: PropTypes.string, + outerWindowID: PropTypes.number.isRequired, + title: PropTypes.string, + url: PropTypes.string.isRequired + }).isRequired + }, + debug() { let { target } = this.props; window.open("about:devtools-toolbox?type=tab&id=" + target.outerWindowID); diff --git a/devtools/client/aboutdebugging/components/target-list.js b/devtools/client/aboutdebugging/components/target-list.js index b52bde588323..e2d5669e7760 100644 --- a/devtools/client/aboutdebugging/components/target-list.js +++ b/devtools/client/aboutdebugging/components/target-list.js @@ -4,10 +4,13 @@ "use strict"; -const { createClass, DOM: dom } = +const { createClass, DOM: dom, PropTypes } = require("devtools/client/shared/vendor/react"); const Services = require("Services"); +loader.lazyRequireGetter(this, "DebuggerClient", + "devtools/shared/client/main", true); + const Strings = Services.strings.createBundle( "chrome://devtools/locale/aboutdebugging.properties"); @@ -18,6 +21,17 @@ const LocaleCompare = (a, b) => { module.exports = createClass({ displayName: "TargetList", + propTypes: { + client: PropTypes.instanceOf(DebuggerClient).isRequired, + debugDisabled: PropTypes.bool, + error: PropTypes.node, + id: PropTypes.string.isRequired, + name: PropTypes.string, + sort: PropTypes.bool, + targetClass: PropTypes.func.isRequired, + targets: PropTypes.arrayOf(PropTypes.object).isRequired + }, + render() { let { client, debugDisabled, error, targetClass, targets, sort } = this.props; if (sort) { diff --git a/devtools/client/aboutdebugging/components/workers/panel.js b/devtools/client/aboutdebugging/components/workers/panel.js index 52f4444e266d..b1bab2b99643 100644 --- a/devtools/client/aboutdebugging/components/workers/panel.js +++ b/devtools/client/aboutdebugging/components/workers/panel.js @@ -8,7 +8,7 @@ loader.lazyImporter(this, "PrivateBrowsingUtils", "resource://gre/modules/PrivateBrowsingUtils.jsm"); const { Ci } = require("chrome"); -const { createClass, createFactory, DOM: dom } = +const { createClass, createFactory, DOM: dom, PropTypes } = require("devtools/client/shared/vendor/react"); const { getWorkerForms } = require("../../modules/worker"); const Services = require("Services"); @@ -18,6 +18,12 @@ const TargetList = createFactory(require("../target-list")); const WorkerTarget = createFactory(require("./target")); const ServiceWorkerTarget = createFactory(require("./service-worker-target")); +loader.lazyImporter(this, "PrivateBrowsingUtils", + "resource://gre/modules/PrivateBrowsingUtils.jsm"); + +loader.lazyRequireGetter(this, "DebuggerClient", + "devtools/shared/client/main", true); + const Strings = Services.strings.createBundle( "chrome://devtools/locale/aboutdebugging.properties"); @@ -27,6 +33,11 @@ const MORE_INFO_URL = "https://developer.mozilla.org/en-US/docs/Tools/about%3Ade module.exports = createClass({ displayName: "WorkersPanel", + propTypes: { + client: PropTypes.instanceOf(DebuggerClient).isRequired, + id: PropTypes.string.isRequired + }, + getInitialState() { return { workers: { diff --git a/devtools/client/aboutdebugging/components/workers/service-worker-target.js b/devtools/client/aboutdebugging/components/workers/service-worker-target.js index 87fda33bd7cd..d46f6f20fdc0 100644 --- a/devtools/client/aboutdebugging/components/workers/service-worker-target.js +++ b/devtools/client/aboutdebugging/components/workers/service-worker-target.js @@ -6,17 +6,35 @@ "use strict"; -const { createClass, DOM: dom } = +const { createClass, DOM: dom, PropTypes } = require("devtools/client/shared/vendor/react"); const { debugWorker } = require("../../modules/worker"); const Services = require("Services"); +loader.lazyRequireGetter(this, "DebuggerClient", + "devtools/shared/client/main", true); + const Strings = Services.strings.createBundle( "chrome://devtools/locale/aboutdebugging.properties"); module.exports = createClass({ displayName: "ServiceWorkerTarget", + propTypes: { + client: PropTypes.instanceOf(DebuggerClient).isRequired, + debugDisabled: PropTypes.bool, + target: PropTypes.shape({ + active: PropTypes.bool, + icon: PropTypes.string, + name: PropTypes.string.isRequired, + url: PropTypes.string, + scope: PropTypes.string.isRequired, + // registrationActor can be missing in e10s. + registrationActor: PropTypes.string, + workerActor: PropTypes.string + }).isRequired + }, + getInitialState() { return { pushSubscription: null diff --git a/devtools/client/aboutdebugging/components/workers/target.js b/devtools/client/aboutdebugging/components/workers/target.js index 0d83dd9db7d4..c1f6420acca9 100644 --- a/devtools/client/aboutdebugging/components/workers/target.js +++ b/devtools/client/aboutdebugging/components/workers/target.js @@ -6,17 +6,30 @@ "use strict"; -const { createClass, DOM: dom } = +const { createClass, DOM: dom, PropTypes } = require("devtools/client/shared/vendor/react"); const { debugWorker } = require("../../modules/worker"); const Services = require("Services"); +loader.lazyRequireGetter(this, "DebuggerClient", + "devtools/shared/client/main", true); + const Strings = Services.strings.createBundle( "chrome://devtools/locale/aboutdebugging.properties"); module.exports = createClass({ displayName: "WorkerTarget", + propTypes: { + client: PropTypes.instanceOf(DebuggerClient).isRequired, + debugDisabled: PropTypes.bool, + target: PropTypes.shape({ + icon: PropTypes.string, + name: PropTypes.string.isRequired, + workerActor: PropTypes.string + }).isRequired + }, + debug() { let { client, target } = this.props; debugWorker(client, target.workerActor);