Bug 1640641 - Add resourceType attribute to each resource and emit list of resources. r=nchevobbe,jdescottes

Differential Revision: https://phabricator.services.mozilla.com/D76672
This commit is contained in:
Alexandre Poirot 2020-05-29 06:29:40 +00:00
parent 6e0500aaaa
commit 8827278483
9 changed files with 257 additions and 147 deletions

View File

@ -55,7 +55,7 @@ describe("ConsoleAPICall component:", () => {
// Stub packet
const logMessageStubPacket = {
from: "server1.conn0.consoleActor2",
resourceType: "platform-messages",
resourceType: "platform-message",
message: "foobar test",
timeStamp: 1519052480060,
};
@ -67,7 +67,7 @@ const fullTextLength = multilineFullText.length;
const initialText = multilineFullText.substring(0, 10000);
const logMessageLongStringStubPacket = {
from: "server1.conn0.consoleActor2",
resourceType: "platform-messages",
resourceType: "platform-message",
message: {
type: "longString",
initial: initialText,

View File

@ -42,7 +42,8 @@ rawPackets.set(`console.log('foobar', 'test')`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.log(undefined)`, {
@ -70,7 +71,8 @@ rawPackets.set(`console.log(undefined)`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.warn('danger, will robinson!')`, {
@ -96,7 +98,8 @@ rawPackets.set(`console.warn('danger, will robinson!')`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.log(NaN)`, {
@ -124,7 +127,8 @@ rawPackets.set(`console.log(NaN)`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.log(null)`, {
@ -152,7 +156,8 @@ rawPackets.set(`console.log(null)`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.log('鼬')`, {
@ -178,7 +183,8 @@ rawPackets.set(`console.log('鼬')`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.clear()`, {
@ -202,7 +208,8 @@ rawPackets.set(`console.clear()`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.count('bar')`, {
@ -231,7 +238,8 @@ rawPackets.set(`console.count('bar')`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.assert(false, {message: 'foobar'})`, {
@ -292,7 +300,8 @@ rawPackets.set(`console.assert(false, {message: 'foobar'})`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.log('úṇĩçödê țĕșť')`, {
@ -318,7 +327,8 @@ rawPackets.set(`console.log('úṇĩçödê țĕșť')`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.dirxml(window)`, {
@ -359,7 +369,8 @@ rawPackets.set(`console.dirxml(window)`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.log('myarray', ['red', 'green', 'blue'])`, {
@ -406,7 +417,8 @@ rawPackets.set(`console.log('myarray', ['red', 'green', 'blue'])`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.log('myregex', /a.b.c/)`, {
@ -445,7 +457,8 @@ rawPackets.set(`console.log('myregex', /a.b.c/)`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.table(['red', 'green', 'blue']);`, {
@ -503,7 +516,8 @@ rawPackets.set(`console.table(['red', 'green', 'blue']);`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.log('myobject', {red: 'redValue', green: 'greenValue', blue: 'blueValue'});`, {
@ -568,7 +582,8 @@ rawPackets.set(`console.log('myobject', {red: 'redValue', green: 'greenValue', b
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.debug('debug message');`, {
@ -594,7 +609,8 @@ rawPackets.set(`console.debug('debug message');`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.info('info message');`, {
@ -620,7 +636,8 @@ rawPackets.set(`console.info('info message');`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.error('error message');`, {
@ -655,7 +672,8 @@ rawPackets.set(`console.error('error message');`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.log('mymap')`, {
@ -707,7 +725,8 @@ rawPackets.set(`console.log('mymap')`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.log('myset')`, {
@ -753,7 +772,8 @@ rawPackets.set(`console.log('myset')`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.trace()`, {
@ -800,7 +820,8 @@ rawPackets.set(`console.trace()`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.trace('bar', {'foo': 'bar'}, [1,2,3])`, {
@ -897,7 +918,8 @@ rawPackets.set(`console.trace('bar', {'foo': 'bar'}, [1,2,3])`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.time('bar')`, {
@ -925,7 +947,8 @@ rawPackets.set(`console.time('bar')`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`timerAlreadyExists`, {
@ -954,7 +977,8 @@ rawPackets.set(`timerAlreadyExists`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.timeLog('bar') - 1`, {
@ -983,7 +1007,8 @@ rawPackets.set(`console.timeLog('bar') - 1`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.timeLog('bar') - 2`, {
@ -1040,7 +1065,8 @@ rawPackets.set(`console.timeLog('bar') - 2`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.timeEnd('bar')`, {
@ -1069,7 +1095,8 @@ rawPackets.set(`console.timeEnd('bar')`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`timeEnd.timerDoesntExist`, {
@ -1098,7 +1125,8 @@ rawPackets.set(`timeEnd.timerDoesntExist`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`timeLog.timerDoesntExist`, {
@ -1127,7 +1155,8 @@ rawPackets.set(`timeLog.timerDoesntExist`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.table('bar')`, {
@ -1153,7 +1182,8 @@ rawPackets.set(`console.table('bar')`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.table(['a', 'b', 'c'])`, {
@ -1211,7 +1241,8 @@ rawPackets.set(`console.table(['a', 'b', 'c'])`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.group('bar')`, {
@ -1237,7 +1268,8 @@ rawPackets.set(`console.group('bar')`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.groupEnd('bar')`, {
@ -1261,7 +1293,8 @@ rawPackets.set(`console.groupEnd('bar')`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.groupCollapsed('foo')`, {
@ -1287,7 +1320,8 @@ rawPackets.set(`console.groupCollapsed('foo')`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.groupEnd('foo')`, {
@ -1311,7 +1345,8 @@ rawPackets.set(`console.groupEnd('foo')`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.group()`, {
@ -1335,7 +1370,8 @@ rawPackets.set(`console.group()`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.groupEnd()`, {
@ -1359,7 +1395,8 @@ rawPackets.set(`console.groupEnd()`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.log(%cfoobar)`, {
@ -1389,7 +1426,8 @@ rawPackets.set(`console.log(%cfoobar)`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.log("%cHello%c|%cWorld")`, {
@ -1421,7 +1459,8 @@ rawPackets.set(`console.log("%cHello%c|%cWorld")`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.group(%cfoo%cbar)`, {
@ -1451,7 +1490,8 @@ rawPackets.set(`console.group(%cfoo%cbar)`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.groupEnd(%cfoo%cbar)`, {
@ -1475,7 +1515,8 @@ rawPackets.set(`console.groupEnd(%cfoo%cbar)`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.groupCollapsed(%cfoo%cbaz)`, {
@ -1505,7 +1546,8 @@ rawPackets.set(`console.groupCollapsed(%cfoo%cbaz)`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.groupEnd(%cfoo%cbaz)`, {
@ -1529,7 +1571,8 @@ rawPackets.set(`console.groupEnd(%cfoo%cbaz)`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.dir({C, M, Y, K})`, {
@ -1599,7 +1642,8 @@ rawPackets.set(`console.dir({C, M, Y, K})`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.count | default: 1`, {
@ -1628,7 +1672,8 @@ rawPackets.set(`console.count | default: 1`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.count | default: 2`, {
@ -1657,7 +1702,8 @@ rawPackets.set(`console.count | default: 2`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.count | test counter: 1`, {
@ -1686,7 +1732,8 @@ rawPackets.set(`console.count | test counter: 1`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.count | test counter: 2`, {
@ -1715,7 +1762,8 @@ rawPackets.set(`console.count | test counter: 2`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.count | default: 3`, {
@ -1744,7 +1792,8 @@ rawPackets.set(`console.count | default: 3`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.count | clear`, {
@ -1768,7 +1817,8 @@ rawPackets.set(`console.count | clear`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.count | default: 4`, {
@ -1797,7 +1847,8 @@ rawPackets.set(`console.count | default: 4`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.count | test counter: 3`, {
@ -1826,7 +1877,8 @@ rawPackets.set(`console.count | test counter: 3`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.countReset | test counter: 0`, {
@ -1855,7 +1907,8 @@ rawPackets.set(`console.countReset | test counter: 0`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.countReset | counterDoesntExist`, {
@ -1884,7 +1937,8 @@ rawPackets.set(`console.countReset | counterDoesntExist`, {
"styles": [],
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});
rawPackets.set(`console.log escaped characters`, {
@ -1910,7 +1964,8 @@ rawPackets.set(`console.log escaped characters`, {
"workerType": "none",
"category": "webdev",
"innerWindowID": 8589934593
}
},
"resourceType": "console-message"
});

View File

@ -39,7 +39,8 @@ rawPackets.set(`Unknown property such-unknown-property. Declaration dropp
"chromeContext": false,
"cssSelectors": "p",
"isPromiseRejection": false
}
},
"resourceType": "error-message"
});
rawPackets.set(`Error in parsing value for padding-top. Declaration dropped.`, {
@ -63,7 +64,8 @@ rawPackets.set(`Error in parsing value for padding-top. Declaration dropp
"chromeContext": false,
"cssSelectors": "p",
"isPromiseRejection": false
}
},
"resourceType": "error-message"
});

View File

@ -106,7 +106,8 @@ rawPackets.set(`ReferenceError: asdf is not defined`, {
"actorID": "server0.conn4.child2/obj25"
},
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`SyntaxError: redeclaration of let a`, {
@ -186,7 +187,8 @@ rawPackets.set(`SyntaxError: redeclaration of let a`, {
"actorID": "server0.conn4.child2/obj26"
},
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`TypeError longString message`, {
@ -278,7 +280,8 @@ rawPackets.set(`TypeError longString message`, {
"actorID": "server0.conn4.child2/obj29"
},
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`throw string with URL`, {
@ -334,7 +337,8 @@ rawPackets.set(`throw string with URL`, {
"isPromiseRejection": false,
"exception": "“https://evil.com/?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa“ is evil and “https://not-so-evil.com/?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa“ is not good either",
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`throw ""`, {
@ -390,7 +394,8 @@ rawPackets.set(`throw ""`, {
"isPromiseRejection": false,
"exception": "",
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`throw "tomato"`, {
@ -446,7 +451,8 @@ rawPackets.set(`throw "tomato"`, {
"isPromiseRejection": false,
"exception": "tomato",
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`throw false`, {
@ -502,7 +508,8 @@ rawPackets.set(`throw false`, {
"isPromiseRejection": false,
"exception": false,
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`throw 0`, {
@ -558,7 +565,8 @@ rawPackets.set(`throw 0`, {
"isPromiseRejection": false,
"exception": 0,
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`throw null`, {
@ -616,7 +624,8 @@ rawPackets.set(`throw null`, {
"type": "null"
},
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`throw undefined`, {
@ -674,7 +683,8 @@ rawPackets.set(`throw undefined`, {
"type": "undefined"
},
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`throw Symbol`, {
@ -734,7 +744,8 @@ rawPackets.set(`throw Symbol`, {
"name": "potato"
},
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`throw Object`, {
@ -816,7 +827,8 @@ rawPackets.set(`throw Object`, {
"actorID": "server0.conn4.child2/obj40"
},
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`throw Error Object`, {
@ -892,7 +904,8 @@ rawPackets.set(`throw Error Object`, {
"actorID": "server0.conn4.child2/obj42"
},
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`throw Error Object with custom name`, {
@ -968,7 +981,8 @@ rawPackets.set(`throw Error Object with custom name`, {
"actorID": "server0.conn4.child2/obj44"
},
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`Promise reject ""`, {
@ -1024,7 +1038,8 @@ rawPackets.set(`Promise reject ""`, {
"isPromiseRejection": true,
"exception": "",
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`Promise reject "tomato"`, {
@ -1080,7 +1095,8 @@ rawPackets.set(`Promise reject "tomato"`, {
"isPromiseRejection": true,
"exception": "tomato",
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`Promise reject false`, {
@ -1136,7 +1152,8 @@ rawPackets.set(`Promise reject false`, {
"isPromiseRejection": true,
"exception": false,
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`Promise reject 0`, {
@ -1192,7 +1209,8 @@ rawPackets.set(`Promise reject 0`, {
"isPromiseRejection": true,
"exception": 0,
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`Promise reject null`, {
@ -1250,7 +1268,8 @@ rawPackets.set(`Promise reject null`, {
"type": "null"
},
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`Promise reject undefined`, {
@ -1308,7 +1327,8 @@ rawPackets.set(`Promise reject undefined`, {
"type": "undefined"
},
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`Promise reject Symbol`, {
@ -1368,7 +1388,8 @@ rawPackets.set(`Promise reject Symbol`, {
"name": "potato"
},
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`Promise reject Object`, {
@ -1450,7 +1471,8 @@ rawPackets.set(`Promise reject Object`, {
"actorID": "server0.conn4.child2/obj54"
},
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`Promise reject Error Object`, {
@ -1526,7 +1548,8 @@ rawPackets.set(`Promise reject Error Object`, {
"actorID": "server0.conn4.child2/obj56"
},
"hasException": true
}
},
"resourceType": "error-message"
});
rawPackets.set(`Promise reject Error Object with custom name`, {
@ -1602,7 +1625,8 @@ rawPackets.set(`Promise reject Error Object with custom name`, {
"actorID": "server0.conn4.child2/obj58"
},
"hasException": true
}
},
"resourceType": "error-message"
});

View File

@ -4,6 +4,10 @@
"use strict";
const {
ResourceWatcher,
} = require("devtools/shared/resources/resource-watcher");
module.exports = async function({
targetList,
targetFront,
@ -33,20 +37,25 @@ module.exports = async function({
// Fetch already existing messages
// /!\ The actor implementation requires to call startListeners(ConsoleAPI) first /!\
const { messages } = await webConsoleFront.getCachedMessages(["ConsoleAPI"]);
let { messages } = await webConsoleFront.getCachedMessages(["ConsoleAPI"]);
for (let message of messages) {
messages = messages.map(message => {
// Handling cached messages for servers older than Firefox 78.
// Wrap the message into a `message` attribute, to match `consoleAPICall` behavior
if (message._type) {
// Wrap the message into a `message` attribute, to match `consoleAPICall` behavior
message = {
return {
message,
type: "consoleAPICall",
resourceType: ResourceWatcher.TYPES.CONSOLE_MESSAGE,
};
}
onAvailable(message);
}
message.resourceType = ResourceWatcher.TYPES.CONSOLE_MESSAGE;
return message;
});
onAvailable(messages);
// Forward new message events
webConsoleFront.on("consoleAPICall", onAvailable);
webConsoleFront.on("consoleAPICall", message => {
message.resourceType = ResourceWatcher.TYPES.CONSOLE_MESSAGE;
onAvailable([message]);
});
};

View File

@ -4,6 +4,10 @@
"use strict";
const {
ResourceWatcher,
} = require("devtools/shared/resources/resource-watcher");
module.exports = async function({
targetList,
targetFront,
@ -36,32 +40,36 @@ module.exports = async function({
// Fetch already existing messages
// /!\ The actor implementation requires to call startListeners("PageError") first /!\
const { messages } = await webConsoleFront.getCachedMessages(["PageError"]);
let { messages } = await webConsoleFront.getCachedMessages(["PageError"]);
for (let message of messages) {
// On older server (< v77), we're also getting LogMessage cached messages, so we need
// to ignore those.
if (
!webConsoleFront.traits.newCacheStructure &&
message._type &&
message._type !== "PageError"
) {
continue;
}
// On older server (< v77), we're also getting LogMessage cached messages, so we need
// to ignore those.
messages = messages.filter(message => {
return (
webConsoleFront.traits.newCacheStructure ||
!message._type ||
message._type == "PageError"
);
});
messages = messages.map(message => {
// Handling cached messages for servers older than Firefox 78.
// Wrap the message into a `pageError` attribute, to match `pageError` behavior
if (message._type) {
// Wrap the message into a `pageError` attribute, to match `pageError` behavior
message = {
return {
pageError: message,
type: "pageError",
resourceType: ResourceWatcher.TYPES.ERROR_MESSAGE,
};
}
message.resourceType = ResourceWatcher.TYPES.ERROR_MESSAGE;
return message;
});
// Cached messages don't have the same shape as live messages,
// so we need to transform them.
onAvailable(messages);
// Cached messages don't have the same shape as live messages,
// so we need to transform them.
onAvailable(message);
}
webConsoleFront.on("pageError", onAvailable);
webConsoleFront.on("pageError", message => {
message.resourceType = ResourceWatcher.TYPES.ERROR_MESSAGE;
onAvailable([message]);
});
};

View File

@ -4,6 +4,10 @@
"use strict";
const {
ResourceWatcher,
} = require("devtools/shared/resources/resource-watcher");
module.exports = async function({ targetList, targetFront, onAvailable }) {
// Only allow the top level target and processes.
// Frames can be ignored as logMessage are never sent to them anyway.
@ -27,28 +31,29 @@ module.exports = async function({ targetList, targetFront, onAvailable }) {
// /!\ The actor implementation requires to call startListeners("PageError") first /!\
// On older server (< v77), cached messages have to be retrieved at the same time as
// PageError messages.
const { messages } = await webConsoleFront.getCachedMessages([
let { messages } = await webConsoleFront.getCachedMessages([
webConsoleFront.traits.newCacheStructure ? "LogMessage" : "PageError",
]);
for (const message of messages) {
// On older server (< v77), we're also getting pageError cached messages, so we need
// to ignore those.
if (
!webConsoleFront.traits.newCacheStructure &&
message._type !== "LogMessage"
) {
continue;
}
// On older server (< v77), we're also getting pageError cached messages, so we need
// to ignore those.
messages = messages.filter(message => {
return (
webConsoleFront.traits.newCacheStructure || message._type === "LogMessage"
);
});
for (const message of messages) {
// Handling cached messages for servers older than Firefox 78.
if (message._type) {
message.type = "logMessage";
delete message._type;
}
onAvailable(message);
message.resourceType = ResourceWatcher.TYPES.PLATFORM_MESSAGE;
}
onAvailable(messages);
webConsoleFront.on("logMessage", onAvailable);
webConsoleFront.on("logMessage", message => {
message.resourceType = ResourceWatcher.TYPES.PLATFORM_MESSAGE;
onAvailable([message]);
});
};

View File

@ -4,11 +4,18 @@
"use strict";
const {
ResourceWatcher,
} = require("devtools/shared/resources/resource-watcher");
module.exports = async function({ targetList, targetFront, onAvailable }) {
if (!targetFront.isTopLevel) {
return;
}
const inspectorFront = await targetFront.getFront("inspector");
await inspectorFront.walker.watchRootNode(onAvailable);
await inspectorFront.walker.watchRootNode(node => {
node.resourceType = ResourceWatcher.TYPES.ROOT_NODE;
return onAvailable([node]);
});
};

View File

@ -200,24 +200,25 @@ class ResourceWatcher {
*
* @param {Front} targetFront
* The Target Front from which this resource comes from.
* @param {String} resourceType
* One string of ResourceWatcher.TYPES, which designes the types of resources
* being reported
* @param {json/Front} resource
* Depending on the resource Type, it can be a JSON object or a Front
* @param {Array<json/Front>} resources
* Depending on the resource Type, it can be an Array composed of either JSON objects or Fronts,
* which describes the resource.
*/
_onResourceAvailable(targetFront, resourceType, resource) {
// Put the targetFront on the resource for easy retrieval.
if (!resource.targetFront) {
resource.targetFront = targetFront;
}
_onResourceAvailable(targetFront, resources) {
for (const resource of resources) {
// Put the targetFront on the resource for easy retrieval.
if (!resource.targetFront) {
resource.targetFront = targetFront;
}
const { resourceType } = resource;
this._availableListeners.emit(resourceType, {
resourceType,
targetFront,
resource,
});
this._availableListeners.emit(resourceType, {
// XXX: We may want to read resource.resourceType instead of passing this resourceType argument?
resourceType,
targetFront,
resource,
});
}
}
/**
@ -296,11 +297,7 @@ class ResourceWatcher {
* type of resource from a given target.
*/
_watchResourcesForTarget(targetFront, resourceType) {
const onAvailable = this._onResourceAvailable.bind(
this,
targetFront,
resourceType
);
const onAvailable = this._onResourceAvailable.bind(this, targetFront);
return LegacyListeners[resourceType]({
targetList: this.targetList,
targetFront,
@ -381,7 +378,10 @@ const LegacyListeners = {
}
const webConsoleFront = await targetFront.getFront("console");
webConsoleFront.on("documentEvent", onAvailable);
webConsoleFront.on("documentEvent", event => {
event.resourceType = ResourceWatcher.TYPES.DOCUMENT_EVENT;
onAvailable([event]);
});
await webConsoleFront.startListeners(["DocumentEvents"]);
},
[ResourceWatcher.TYPES