summaryrefslogtreecommitdiffstats
path: root/devtools/client/aboutdebugging/initializer.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/aboutdebugging/initializer.js')
-rw-r--r--devtools/client/aboutdebugging/initializer.js67
1 files changed, 67 insertions, 0 deletions
diff --git a/devtools/client/aboutdebugging/initializer.js b/devtools/client/aboutdebugging/initializer.js
new file mode 100644
index 000000000..f1b91f14d
--- /dev/null
+++ b/devtools/client/aboutdebugging/initializer.js
@@ -0,0 +1,67 @@
+/* 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/. */
+
+/* eslint-env browser */
+/* globals DebuggerClient, DebuggerServer, Telemetry */
+
+"use strict";
+
+const { loader } = Components.utils.import(
+ "resource://devtools/shared/Loader.jsm", {});
+const { BrowserLoader } = Components.utils.import(
+ "resource://devtools/client/shared/browser-loader.js", {});
+
+loader.lazyRequireGetter(this, "DebuggerClient",
+ "devtools/shared/client/main", true);
+loader.lazyRequireGetter(this, "DebuggerServer",
+ "devtools/server/main", true);
+loader.lazyRequireGetter(this, "Telemetry",
+ "devtools/client/shared/telemetry");
+
+const { require } = BrowserLoader({
+ baseURI: "resource://devtools/client/aboutdebugging/",
+ window
+});
+
+const { createFactory } = require("devtools/client/shared/vendor/react");
+const { render, unmountComponentAtNode } = require("devtools/client/shared/vendor/react-dom");
+
+const AboutDebuggingApp = createFactory(require("./components/aboutdebugging"));
+
+var AboutDebugging = {
+ init() {
+ if (!DebuggerServer.initialized) {
+ DebuggerServer.init();
+ DebuggerServer.addBrowserActors();
+ }
+ DebuggerServer.allowChromeProcess = true;
+
+ this.client = new DebuggerClient(DebuggerServer.connectPipe());
+
+ this.client.connect().then(() => {
+ let client = this.client;
+ let telemetry = new Telemetry();
+
+ render(AboutDebuggingApp({ client, telemetry }),
+ document.querySelector("#body"));
+ });
+ },
+
+ destroy() {
+ unmountComponentAtNode(document.querySelector("#body"));
+
+ this.client.close();
+ this.client = null;
+ },
+};
+
+window.addEventListener("DOMContentLoaded", function load() {
+ window.removeEventListener("DOMContentLoaded", load);
+ AboutDebugging.init();
+});
+
+window.addEventListener("unload", function unload() {
+ window.removeEventListener("unload", unload);
+ AboutDebugging.destroy();
+});