initializer.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /* This Source Code Form is subject to the terms of the Mozilla Public
  2. * License, v. 2.0. If a copy of the MPL was not distributed with this
  3. * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
  4. /* eslint-env browser */
  5. /* globals DebuggerClient, DebuggerServer, Telemetry */
  6. "use strict";
  7. const { loader } = Components.utils.import(
  8. "resource://devtools/shared/Loader.jsm", {});
  9. const { BrowserLoader } = Components.utils.import(
  10. "resource://devtools/client/shared/browser-loader.js", {});
  11. loader.lazyRequireGetter(this, "DebuggerClient",
  12. "devtools/shared/client/main", true);
  13. loader.lazyRequireGetter(this, "DebuggerServer",
  14. "devtools/server/main", true);
  15. loader.lazyRequireGetter(this, "Telemetry",
  16. "devtools/client/shared/telemetry");
  17. const { require } = BrowserLoader({
  18. baseURI: "resource://devtools/client/aboutdebugging/",
  19. window
  20. });
  21. const { createFactory } = require("devtools/client/shared/vendor/react");
  22. const { render, unmountComponentAtNode } = require("devtools/client/shared/vendor/react-dom");
  23. const AboutDebuggingApp = createFactory(require("./components/aboutdebugging"));
  24. var AboutDebugging = {
  25. init() {
  26. if (!DebuggerServer.initialized) {
  27. DebuggerServer.init();
  28. DebuggerServer.addBrowserActors();
  29. }
  30. DebuggerServer.allowChromeProcess = true;
  31. this.client = new DebuggerClient(DebuggerServer.connectPipe());
  32. this.client.connect().then(() => {
  33. let client = this.client;
  34. let telemetry = new Telemetry();
  35. render(AboutDebuggingApp({ client, telemetry }),
  36. document.querySelector("#body"));
  37. });
  38. },
  39. destroy() {
  40. unmountComponentAtNode(document.querySelector("#body"));
  41. this.client.close();
  42. this.client = null;
  43. },
  44. };
  45. window.addEventListener("DOMContentLoaded", function load() {
  46. window.removeEventListener("DOMContentLoaded", load);
  47. AboutDebugging.init();
  48. });
  49. window.addEventListener("unload", function unload() {
  50. window.removeEventListener("unload", unload);
  51. AboutDebugging.destroy();
  52. });