Bug 1307940 - Add toolbox-dependent method to serviceContainer only if toolbox is available. r=bgrins
MozReview-Commit-ID: CjRXKemaJ4f
--- a/devtools/client/webconsole/new-console-output/components/grip-message-body.js
+++ b/devtools/client/webconsole/new-console-output/components/grip-message-body.js
@@ -58,19 +58,23 @@ function GripMessageBody(props) {
if (userProvidedStyle && userProvidedStyle !== "") {
styleObject = cleanupStyle(userProvidedStyle, serviceContainer.createElement);
}
let onDOMNodeMouseOver;
let onDOMNodeMouseOut;
let onInspectIconClick;
if (serviceContainer) {
- onDOMNodeMouseOver = (object) => serviceContainer.highlightDomElement(object);
+ onDOMNodeMouseOver = serviceContainer.highlightDomElement
+ ? (object) => serviceContainer.highlightDomElement(object)
+ : null;
onDOMNodeMouseOut = serviceContainer.unHighlightDomElement;
- onInspectIconClick = (object) => serviceContainer.openNodeInInspector(object);
+ onInspectIconClick = serviceContainer.openNodeInInspector
+ ? (object) => serviceContainer.openNodeInInspector(object)
+ : null;
}
return (
// @TODO once there is a longString rep, also turn off quotes for those.
typeof grip === "string"
? StringRep({
object: grip,
useQuotes: useQuotes,
--- a/devtools/client/webconsole/new-console-output/components/message-types/network-event-message.js
+++ b/devtools/client/webconsole/new-console-output/components/message-types/network-event-message.js
@@ -52,19 +52,19 @@ function NetworkEventMessage({
const topLevelClasses = [ "cm-s-mozilla" ];
let statusInfo;
if (httpVersion && status && statusText && totalTime !== undefined) {
statusInfo = `[${httpVersion} ${status} ${statusText} ${totalTime}ms]`;
}
- function openNetworkMonitor() {
- serviceContainer.openNetworkPanel(actor);
- }
+ const openNetworkMonitor = serviceContainer.openNetworkPanel
+ ? () => serviceContainer.openNetworkPanel(actor)
+ : null;
const method = dom.span({className: "method" }, request.method);
const xhr = isXHR
? dom.span({ className: "xhr" }, l10n.getStr("webConsoleXhrIndicator"))
: null;
const url = dom.a({ className: "url", title: request.url, onClick: openNetworkMonitor },
request.url.replace(/\?.+/, ""));
const statusBody = statusInfo
--- a/devtools/client/webconsole/new-console-output/components/message.js
+++ b/devtools/client/webconsole/new-console-output/components/message.js
@@ -44,19 +44,19 @@ const Message = createClass({
scrollToMessage: PropTypes.bool,
exceptionDocURL: PropTypes.string,
parameters: PropTypes.object,
request: PropTypes.object,
dispatch: PropTypes.func,
timeStamp: PropTypes.number,
serviceContainer: PropTypes.shape({
emitNewMessage: PropTypes.func.isRequired,
- onViewSourceInDebugger: PropTypes.func.isRequired,
- onViewSourceInScratchpad: PropTypes.func.isRequired,
- onViewSourceInStyleEditor: PropTypes.func.isRequired,
+ onViewSourceInDebugger: PropTypes.func,
+ onViewSourceInScratchpad: PropTypes.func,
+ onViewSourceInStyleEditor: PropTypes.func,
openContextMenu: PropTypes.func.isRequired,
openLink: PropTypes.func.isRequired,
sourceMapService: PropTypes.any,
}),
notes: PropTypes.arrayOf(PropTypes.shape({
messageBody: PropTypes.string.isRequired,
frame: PropTypes.any,
})),
--- a/devtools/client/webconsole/new-console-output/new-console-output-wrapper.js
+++ b/devtools/client/webconsole/new-console-output/new-console-output-wrapper.js
@@ -33,98 +33,99 @@ function NewConsoleOutputWrapper(parentN
}
NewConsoleOutputWrapper.prototype = {
init: function () {
const attachRefToHud = (id, node) => {
this.jsterm.hud[id] = node;
};
- let childComponent = ConsoleOutput({
- serviceContainer: {
- attachRefToHud,
- emitNewMessage: (node, messageId) => {
- this.jsterm.hud.emit("new-messages", new Set([{
- node,
- messageId,
- }]));
- },
- hudProxyClient: this.jsterm.hud.proxy.client,
+ const serviceContainer = {
+ attachRefToHud,
+ emitNewMessage: (node, messageId) => {
+ this.jsterm.hud.emit("new-messages", new Set([{
+ node,
+ messageId,
+ }]));
+ },
+ hudProxyClient: this.jsterm.hud.proxy.client,
+ openContextMenu: (e, message) => {
+ let { screenX, screenY, target } = e;
+
+ let messageEl = target.closest(".message");
+ let clipboardText = messageEl ? messageEl.textContent : null;
+
+ // Retrieve closes actor id from the DOM.
+ let actorEl = target.closest("[data-link-actor-id]");
+ let actor = actorEl ? actorEl.dataset.linkActorId : null;
+
+ let menu = createContextMenu(this.jsterm, this.parentNode,
+ { actor, clipboardText, message });
+
+ // Emit the "menu-open" event for testing.
+ menu.once("open", () => this.emit("menu-open"));
+ menu.popup(screenX, screenY, this.toolbox);
+
+ return menu;
+ },
+ openLink: url => this.jsterm.hud.owner.openLink(url),
+ createElement: nodename => {
+ return this.document.createElementNS("http://www.w3.org/1999/xhtml", nodename);
+ },
+ };
+
+ if (this.toolbox) {
+ Object.assign(serviceContainer, {
onViewSourceInDebugger: frame => {
this.toolbox.viewSourceInDebugger(frame.url, frame.line).then(() =>
this.jsterm.hud.emit("source-in-debugger-opened")
);
},
onViewSourceInScratchpad: frame => this.toolbox.viewSourceInScratchpad(
frame.url,
frame.line
),
onViewSourceInStyleEditor: frame => this.toolbox.viewSourceInStyleEditor(
frame.url,
frame.line
),
- openContextMenu: (e, message) => {
- let { screenX, screenY, target } = e;
-
- let messageEl = target.closest(".message");
- let clipboardText = messageEl ? messageEl.textContent : null;
-
- // Retrieve closes actor id from the DOM.
- let actorEl = target.closest("[data-link-actor-id]");
- let actor = actorEl ? actorEl.dataset.linkActorId : null;
-
- let menu = createContextMenu(this.jsterm, this.parentNode,
- { actor, clipboardText, message });
-
- // Emit the "menu-open" event for testing.
- menu.once("open", () => this.emit("menu-open"));
- menu.popup(screenX, screenY, this.toolbox);
-
- return menu;
- },
openNetworkPanel: (requestId) => {
return this.toolbox.selectTool("netmonitor").then(panel => {
return panel.panelWin.NetMonitorController.inspectRequest(requestId);
});
},
sourceMapService:
this.toolbox ? this.toolbox._deprecatedServerSourceMapService : null,
- openLink: url => this.jsterm.hud.owner.openLink(url),
- createElement: nodename => {
- return this.document.createElementNS("http://www.w3.org/1999/xhtml", nodename);
- },
highlightDomElement: (grip, options = {}) => {
- return this.toolbox && this.toolbox.highlighterUtils
+ return this.toolbox.highlighterUtils
? this.toolbox.highlighterUtils.highlightDomValueGrip(grip, options)
: null;
},
unHighlightDomElement: (forceHide = false) => {
- return this.toolbox && this.toolbox.highlighterUtils
+ return this.toolbox.highlighterUtils
? this.toolbox.highlighterUtils.unhighlight(forceHide)
: null;
},
openNodeInInspector: async (grip) => {
- if (!this.toolbox) {
- return Promise.reject("no toolbox");
- }
-
let onSelectInspector = this.toolbox.selectTool("inspector");
let onGripNodeToFront = this.toolbox.highlighterUtils.gripToNodeFront(grip);
let [
front,
inspector
] = await Promise.all([onGripNodeToFront, onSelectInspector]);
let onInspectorUpdated = inspector.once("inspector-updated");
let onNodeFrontSet = this.toolbox.selection.setNodeFront(front, "console");
return Promise.all([onNodeFrontSet, onInspectorUpdated]);
}
- }
- });
+ });
+ }
+
+ let childComponent = ConsoleOutput({serviceContainer});
let filterBar = FilterBar({
serviceContainer: {
attachRefToHud
}
});
let provider = React.createElement(