diff options
author | Gaming4JC <g4jc@hyperbola.info> | 2019-06-09 14:52:19 -0400 |
---|---|---|
committer | Gaming4JC <g4jc@hyperbola.info> | 2019-07-18 22:38:34 -0400 |
commit | 4dc8efd76cb2ff649cfcec5dfa88686ea79b4ee2 (patch) | |
tree | dfa6647b40b69c13eadf040e99000378db324ee7 | |
parent | 8e932efef46c70fd0c165ee432893f9898267f08 (diff) | |
download | uxp-4dc8efd76cb2ff649cfcec5dfa88686ea79b4ee2.tar.gz |
1283712 - Part 11.1: Show notes in devtools console.
7 files changed, 87 insertions, 4 deletions
diff --git a/devtools/client/webconsole/new-console-output/components/message-types/evaluation-result.js b/devtools/client/webconsole/new-console-output/components/message-types/evaluation-result.js index 992dc62cfd..824bdb3fba 100644 --- a/devtools/client/webconsole/new-console-output/components/message-types/evaluation-result.js +++ b/devtools/client/webconsole/new-console-output/components/message-types/evaluation-result.js @@ -34,6 +34,7 @@ function EvaluationResult(props) { id: messageId, exceptionDocURL, frame, + notes, } = message; let messageBody; @@ -57,6 +58,7 @@ function EvaluationResult(props) { serviceContainer, exceptionDocURL, frame, + notes, }; return Message(childProps); } diff --git a/devtools/client/webconsole/new-console-output/components/message-types/page-error.js b/devtools/client/webconsole/new-console-output/components/message-types/page-error.js index 77ea75ff74..c68b850bd0 100644 --- a/devtools/client/webconsole/new-console-output/components/message-types/page-error.js +++ b/devtools/client/webconsole/new-console-output/components/message-types/page-error.js @@ -44,6 +44,7 @@ function PageError(props) { stacktrace, frame, exceptionDocURL, + notes, } = message; const childProps = { @@ -62,6 +63,7 @@ function PageError(props) { stacktrace, serviceContainer, exceptionDocURL, + notes, }; return Message(childProps); } diff --git a/devtools/client/webconsole/new-console-output/components/message.js b/devtools/client/webconsole/new-console-output/components/message.js index f36bff7e4a..b3d206007a 100644 --- a/devtools/client/webconsole/new-console-output/components/message.js +++ b/devtools/client/webconsole/new-console-output/components/message.js @@ -47,6 +47,10 @@ const Message = createClass({ onViewSourceInDebugger: PropTypes.func.isRequired, sourceMapService: PropTypes.any, }), + notes: PropTypes.arrayOf(PropTypes.shape({ + messageBody: PropTypes.string.isRequired, + frame: PropTypes.any, + })), }, getDefaultProps: function () { @@ -90,6 +94,7 @@ const Message = createClass({ serviceContainer, dispatch, exceptionDocURL, + notes, } = this.props; topLevelClasses.push("message", source, type, level); @@ -127,6 +132,29 @@ const Message = createClass({ }); } + let notesNodes; + if (notes) { + notes.map(note => dom.span( + { className: "message-flex-body error-note" }, + dom.span({ className: "message-body devtools-monospace" }, + "note: " + note.messageBody + ), + dom.span({ className: "message-location devtools-monospace" }, + note.frame ? FrameView({ + frame: note.frame, + onClick: serviceContainer + ? serviceContainer.onViewSourceInDebugger + : undefined, + showEmptyPathAsHost: true, + sourceMapService: serviceContainer + ? serviceContainer.sourceMapService + : undefined + }) : null + ))); + } else { + notesNodes = []; + } + const repeat = this.props.repeat ? MessageRepeat({repeat: this.props.repeat}) : null; // Configure the location. @@ -167,7 +195,8 @@ const Message = createClass({ repeat, location ), - attachment + attachment, + ...notesNodes ) ); } diff --git a/devtools/client/webconsole/new-console-output/selectors/messages.js b/devtools/client/webconsole/new-console-output/selectors/messages.js index c4b1aee282..e405be2f8b 100644 --- a/devtools/client/webconsole/new-console-output/selectors/messages.js +++ b/devtools/client/webconsole/new-console-output/selectors/messages.js @@ -126,6 +126,15 @@ function matchSearchFilters(message, filters) { || (message.parameters !== null && message.parameters.join("").toLocaleLowerCase() .includes(text.toLocaleLowerCase())) + // Look for a match in notes. + || (Array.isArray(message.notes) && message.notes.some(note => + // Look for a match in location. + isTextInFrame(text, note.frame) + // Look for a match in messageBody. + || (note.messageBody !== null + && note.messageBody.toLocaleLowerCase() + .includes(text.toLocaleLowerCase())) + )) ); } diff --git a/devtools/client/webconsole/new-console-output/types.js b/devtools/client/webconsole/new-console-output/types.js index 897ae5d3a4..cb27aedab3 100644 --- a/devtools/client/webconsole/new-console-output/types.js +++ b/devtools/client/webconsole/new-console-output/types.js @@ -38,6 +38,7 @@ exports.ConsoleMessage = Immutable.Record({ groupId: null, exceptionDocURL: null, userProvidedStyles: null, + notes: null, }); exports.NetworkEventMessage = Immutable.Record({ diff --git a/devtools/client/webconsole/new-console-output/utils/messages.js b/devtools/client/webconsole/new-console-output/utils/messages.js index f91209e9d2..119bc7fba8 100644 --- a/devtools/client/webconsole/new-console-output/utils/messages.js +++ b/devtools/client/webconsole/new-console-output/utils/messages.js @@ -165,6 +165,7 @@ function transformPacket(packet) { stacktrace: pageError.stacktrace ? pageError.stacktrace : null, frame, exceptionDocURL: pageError.exceptionDocURL, + notes: pageError.notes, }); } @@ -185,7 +186,8 @@ function transformPacket(packet) { exceptionMessage: messageText, exceptionDocURL, frame, - result: parameters + result: parameters, + notes, } = packet; const level = messageText ? MESSAGE_LEVEL.ERROR : MESSAGE_LEVEL.LOG; @@ -197,6 +199,7 @@ function transformPacket(packet) { parameters, exceptionDocURL, frame, + notes, }); } } diff --git a/devtools/server/actors/webconsole.js b/devtools/server/actors/webconsole.js index a1eba84ed3..66715bd34a 100644 --- a/devtools/server/actors/webconsole.js +++ b/devtools/server/actors/webconsole.js @@ -888,7 +888,8 @@ WebConsoleActor.prototype = let evalResult = evalInfo.result; let helperResult = evalInfo.helperResult; - let result, errorDocURL, errorMessage, errorGrip = null, frame = null; + let result, errorDocURL, errorMessage, errorNotes = null, errorGrip = null, + frame = null; if (evalResult) { if ("return" in evalResult) { result = evalResult.return; @@ -943,6 +944,23 @@ WebConsoleActor.prototype = }; } } catch (ex) {} + + try { + let notes = error.errorNotes; + if (notes && notes.length) { + errorNotes = []; + for (let note of notes) { + errorNotes.push({ + messageBody: this._createStringGrip(note.message), + frame: { + source: note.fileName, + line: note.lineNumber, + column: note.columnNumber, + } + }); + } + } + } catch (ex) {} } } @@ -967,6 +985,7 @@ WebConsoleActor.prototype = exceptionDocURL: errorDocURL, frame, helperResult: helperResult, + notes: errorNotes, }; }, @@ -1500,6 +1519,23 @@ WebConsoleActor.prototype = lineText = lineText.substr(0, DebuggerServer.LONG_STRING_INITIAL_LENGTH); } + let notesArray = null; + let notes = aPageError.notes; + if (notes && notes.length) { + notesArray = []; + for (let i = 0, len = notes.length; i < len; i++) { + let note = notes.queryElementAt(i, Ci.nsIScriptErrorNote); + notesArray.push({ + messageBody: this._createStringGrip(note.errorMessage), + frame: { + source: note.sourceName, + line: note.lineNumber, + column: note.columnNumber, + } + }); + } + } + return { errorMessage: this._createStringGrip(aPageError.errorMessage), errorMessageName: aPageError.errorMessageName, @@ -1516,7 +1552,8 @@ WebConsoleActor.prototype = strict: !!(aPageError.flags & aPageError.strictFlag), info: !!(aPageError.flags & aPageError.infoFlag), private: aPageError.isFromPrivateWindow, - stacktrace: stack + stacktrace: stack, + notes: notesArray, }; }, |