fune/devtools/client/webconsole/local-dev/index.js
Brian Grinstead 3a385c46db Bug 1359597 - Set up new console with devtools-launchpad;r=Honza
MozReview-Commit-ID: FxuwGLYef5v

--HG--
extra : rebase_source : e526562574050eba6b77b464f559e2c95d6c8c3a
2017-04-26 08:10:04 -07:00

95 lines
3.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/. */
/* eslint-env browser */
"use strict";
const React = require("react");
const ReactDOM = require("react-dom");
const { EventEmitter } = require("devtools-modules");
const { Services: { appinfo, pref } } = require("devtools-modules");
const { bootstrap } = require("devtools-launchpad");
EventEmitter.decorate(window);
require("../../themes/new-webconsole.css");
require("../../shared/components/reps/reps.css");
pref("devtools.debugger.remote-timeout", 10000);
pref("devtools.hud.loglimit", 1000);
pref("devtools.webconsole.filter.error", true);
pref("devtools.webconsole.filter.warn", true);
pref("devtools.webconsole.filter.info", true);
pref("devtools.webconsole.filter.log", true);
pref("devtools.webconsole.filter.debug", true);
pref("devtools.webconsole.filter.css", false);
pref("devtools.webconsole.filter.net", false);
pref("devtools.webconsole.filter.netxhr", false);
pref("devtools.webconsole.ui.filterbar", false);
pref("devtools.webconsole.inputHistoryCount", 50);
pref("devtools.webconsole.persistlog", false);
pref("devtools.webconsole.timestampMessages", false);
pref("devtools.webconsole.autoMultiline", true);
const NewConsoleOutputWrapper = require("../new-console-output/new-console-output-wrapper");
const NewWebConsoleFrame = require("../new-webconsole").NewWebConsoleFrame;
// Replicate the DOM that the root component lives within
const el = document.createElement("div");
el.style.flex = "1";
el.innerHTML = `
<div id="app-wrapper" class="theme-body">
<div id="output-container" role="document" aria-live="polite" />
</div>
`;
document.querySelector("#mount").appendChild(el);
document.documentElement.classList.add("theme-light");
// Copied from netmonitor/index.js:
window.addEventListener("DOMContentLoaded", () => {
for (let link of document.head.querySelectorAll("link")) {
link.href = link.href.replace(/(resource|chrome)\:\/\//, "/");
}
if (appinfo.OS === "Darwin") {
document.documentElement.setAttribute("platform", "mac");
} else if (appinfo.OS === "Linux") {
document.documentElement.setAttribute("platform", "linux");
} else {
document.documentElement.setAttribute("platform", "win");
}
});
let consoleFrame;
function onConnect(connection) {
// If we are on the main dashboard don't render the component
if (!connection || !connection.tabConnection || !connection.tabConnection.tabTarget) {
return;
}
// Stub out properties that are received from hudservice
const owner = {
iframeWindow: window,
chromeWindow: window,
hudId: "hud_0",
target: connection.tabConnection.tabTarget,
_browserConsole: false,
NewConsoleOutputWrapper,
};
consoleFrame = new NewWebConsoleFrame(owner);
consoleFrame.init().then(function () {
console.log("NewWebConsoleFrame initialized");
});
}
// This is just a hack until the local dev environment includes jsterm
window.evaluateJS = function (input) {
consoleFrame.webConsoleClient.evaluateJSAsync(`${input}`, function (r) {
consoleFrame.newConsoleOutput.dispatchMessageAdd(r);
}, {});
};
bootstrap(React, ReactDOM, el).then(onConnect);