mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-08-23 12:53:07 +09:00
192 lines
5.8 KiB
JavaScript
192 lines
5.8 KiB
JavaScript
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
|
/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
|
|
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
/* import-globals-from ../../../../framework/test/shared-head.js */
|
|
|
|
"use strict";
|
|
|
|
// shared-head.js handles imports, constants, and utility functions
|
|
// Load the shared-head file first.
|
|
Services.scriptloader.loadSubScript(
|
|
"chrome://mochitests/content/browser/devtools/client/framework/test/shared-head.js",
|
|
this);
|
|
|
|
Services.prefs.setBoolPref("devtools.webconsole.new-frontend-enabled", true);
|
|
registerCleanupFunction(() => {
|
|
Services.prefs.clearUserPref("devtools.webconsole.new-frontend-enabled");
|
|
});
|
|
|
|
const { prepareMessage } = require("devtools/client/webconsole/new-console-output/utils/messages");
|
|
const { stubPackets } = require("devtools/client/webconsole/new-console-output/test/fixtures/stubs/index.js");
|
|
|
|
const BASE_PATH = "../../../../devtools/client/webconsole/new-console-output/test/fixtures";
|
|
const TEMP_FILE_PATH = OS.Path.join(`${BASE_PATH}/stub-generators`, "test-tempfile.js");
|
|
|
|
let cachedPackets = {};
|
|
|
|
function getCleanedPacket(key, packet) {
|
|
if(Object.keys(cachedPackets).includes(key)) {
|
|
return cachedPackets[key];
|
|
}
|
|
|
|
// Strip escaped characters.
|
|
let safeKey = key
|
|
.replace(/\\n/g, "\n")
|
|
.replace(/\\r/g, "\r")
|
|
.replace(/\\\"/g, `\"`)
|
|
.replace(/\\\'/g, `\'`);
|
|
|
|
// If the stub already exist, we want to ignore irrelevant properties
|
|
// (actor, timeStamp, timer, ...) that might changed and "pollute"
|
|
// the diff resulting from this stub generation.
|
|
let res;
|
|
if(stubPackets.has(safeKey)) {
|
|
|
|
let existingPacket = stubPackets.get(safeKey);
|
|
res = Object.assign({}, packet, {
|
|
from: existingPacket.from
|
|
});
|
|
|
|
// Clean root timestamp.
|
|
if(res.timestamp) {
|
|
res.timestamp = existingPacket.timestamp;
|
|
}
|
|
|
|
if (res.message) {
|
|
// Clean timeStamp on the message prop.
|
|
res.message.timeStamp = existingPacket.message.timeStamp;
|
|
if (res.message.timer) {
|
|
// Clean timer properties on the message.
|
|
// Those properties are found on console.time and console.timeEnd calls,
|
|
// and those time can vary, which is why we need to clean them.
|
|
if (res.message.timer.started) {
|
|
res.message.timer.started = existingPacket.message.timer.started;
|
|
}
|
|
if (res.message.timer.duration) {
|
|
res.message.timer.duration = existingPacket.message.timer.duration;
|
|
}
|
|
}
|
|
|
|
if(Array.isArray(res.message.arguments)) {
|
|
// Clean actor ids on each message.arguments item.
|
|
res.message.arguments.forEach((argument, i) => {
|
|
if (argument && argument.actor) {
|
|
argument.actor = existingPacket.message.arguments[i].actor;
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
if (res.result) {
|
|
// Clean actor ids on evaluation result messages.
|
|
res.result.actor = existingPacket.result.actor;
|
|
if (res.result.preview) {
|
|
if(res.result.preview.timestamp) {
|
|
// Clean timestamp there too.
|
|
res.result.preview.timestamp = existingPacket.result.preview.timestamp;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (res.exception) {
|
|
// Clean actor ids on exception messages.
|
|
res.exception.actor = existingPacket.exception.actor;
|
|
if (res.exception.preview) {
|
|
if(res.exception.preview.timestamp) {
|
|
// Clean timestamp there too.
|
|
res.exception.preview.timestamp = existingPacket.exception.preview.timestamp;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (res.eventActor) {
|
|
// Clean actor ids, timeStamp and startedDateTime on network messages.
|
|
res.eventActor.actor = existingPacket.eventActor.actor;
|
|
res.eventActor.startedDateTime = existingPacket.eventActor.startedDateTime;
|
|
res.eventActor.timeStamp = existingPacket.eventActor.timeStamp;
|
|
}
|
|
|
|
if (res.pageError) {
|
|
// Clean timeStamp on pageError messages.
|
|
res.pageError.timeStamp = existingPacket.pageError.timeStamp;
|
|
}
|
|
|
|
} else {
|
|
res = packet;
|
|
}
|
|
|
|
cachedPackets[key] = res;
|
|
return res;
|
|
}
|
|
|
|
function formatPacket(key, packet) {
|
|
return `
|
|
stubPackets.set("${key}", ${JSON.stringify(getCleanedPacket(key, packet), null, "\t")});
|
|
`;
|
|
}
|
|
|
|
function formatStub(key, packet) {
|
|
let prepared = prepareMessage(
|
|
getCleanedPacket(key, packet),
|
|
{getNextId: () => "1"}
|
|
);
|
|
|
|
return `
|
|
stubPreparedMessages.set("${key}", new ConsoleMessage(${JSON.stringify(prepared, null, "\t")}));
|
|
`;
|
|
}
|
|
|
|
function formatNetworkStub(key, packet) {
|
|
let actor = packet.eventActor;
|
|
let networkInfo = {
|
|
_type: "NetworkEvent",
|
|
timeStamp: actor.timeStamp,
|
|
node: null,
|
|
actor: actor.actor,
|
|
discardRequestBody: true,
|
|
discardResponseBody: true,
|
|
startedDateTime: actor.startedDateTime,
|
|
request: {
|
|
url: actor.url,
|
|
method: actor.method,
|
|
},
|
|
isXHR: actor.isXHR,
|
|
cause: actor.cause,
|
|
response: {},
|
|
timings: {},
|
|
// track the list of network event updates
|
|
updates: [],
|
|
private: actor.private,
|
|
fromCache: actor.fromCache,
|
|
fromServiceWorker: actor.fromServiceWorker
|
|
};
|
|
let prepared = prepareMessage(networkInfo, {getNextId: () => "1"});
|
|
return `
|
|
stubPreparedMessages.set("${key}", new NetworkEventMessage(${JSON.stringify(prepared, null, "\t")}));
|
|
`;
|
|
}
|
|
|
|
function formatFile(stubs) {
|
|
return `/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
/*
|
|
* THIS FILE IS AUTOGENERATED. DO NOT MODIFY BY HAND. RUN TESTS IN FIXTURES/ TO UPDATE.
|
|
*/
|
|
|
|
const { ConsoleMessage, NetworkEventMessage } = require("devtools/client/webconsole/new-console-output/types");
|
|
|
|
let stubPreparedMessages = new Map();
|
|
let stubPackets = new Map();
|
|
|
|
${stubs.preparedMessages.join("")}
|
|
${stubs.packets.join("")}
|
|
|
|
module.exports = {
|
|
stubPreparedMessages,
|
|
stubPackets,
|
|
}`;
|
|
}
|