mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-22 17:55:50 +00:00
Bug 1307892 - Add support for network event update message r=nchevobbe
MozReview-Commit-ID: 4lat3RYa4YN --HG-- extra : rebase_source : 2980fbb9286c0557973deb74ff1c2e3ef988ca5e
This commit is contained in:
parent
6a7758630c
commit
6cee666c54
@ -744,6 +744,10 @@ a.learn-more-link.webconsole-learn-more-link {
|
||||
margin-inline-end: 5px;
|
||||
}
|
||||
|
||||
.network .message-flex-body > .message-body {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.webconsole-output-wrapper .message .indent {
|
||||
display: inline-block;
|
||||
border-inline-end: solid 1px var(--theme-splitter-color);
|
||||
@ -757,7 +761,7 @@ a.learn-more-link.webconsole-learn-more-link {
|
||||
|
||||
.message.startGroup .icon,
|
||||
.message.startGroupCollapsed .icon {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* console.table() */
|
||||
|
@ -13,6 +13,7 @@ const { IdGenerator } = require("devtools/client/webconsole/new-console-output/u
|
||||
const { batchActions } = require("devtools/client/webconsole/new-console-output/actions/enhancers");
|
||||
const {
|
||||
MESSAGE_ADD,
|
||||
NETWORK_MESSAGE_UPDATE,
|
||||
MESSAGES_CLEAR,
|
||||
MESSAGE_OPEN,
|
||||
MESSAGE_CLOSE,
|
||||
@ -90,10 +91,25 @@ function messageTableDataReceive(id, data) {
|
||||
};
|
||||
}
|
||||
|
||||
function networkMessageUpdate(packet, idGenerator = null) {
|
||||
if (idGenerator == null) {
|
||||
idGenerator = defaultIdGenerator;
|
||||
}
|
||||
|
||||
let message = prepareMessage(packet, idGenerator);
|
||||
|
||||
return {
|
||||
type: NETWORK_MESSAGE_UPDATE,
|
||||
message,
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
messageAdd,
|
||||
messagesClear,
|
||||
messageOpen,
|
||||
messageClose,
|
||||
messageTableDataGet,
|
||||
networkMessageUpdate,
|
||||
};
|
||||
|
||||
|
@ -50,7 +50,10 @@ const MessageContainer = createClass({
|
||||
const repeatChanged = this.props.message.repeat !== nextProps.message.repeat;
|
||||
const openChanged = this.props.open !== nextProps.open;
|
||||
const tableDataChanged = this.props.tableData !== nextProps.tableData;
|
||||
return repeatChanged || openChanged || tableDataChanged;
|
||||
const responseChanged = this.props.message.response !== nextProps.message.response;
|
||||
const totalTimeChanged = this.props.message.totalTime !== nextProps.message.totalTime;
|
||||
return repeatChanged || openChanged || tableDataChanged || responseChanged ||
|
||||
totalTimeChanged;
|
||||
},
|
||||
|
||||
render() {
|
||||
|
@ -29,13 +29,35 @@ NetworkEventMessage.defaultProps = {
|
||||
indent: 0,
|
||||
};
|
||||
|
||||
function NetworkEventMessage(props) {
|
||||
const { message, serviceContainer, indent } = props;
|
||||
const { actor, source, type, level, request, isXHR, timeStamp } = message;
|
||||
function NetworkEventMessage({
|
||||
indent,
|
||||
message = {},
|
||||
serviceContainer,
|
||||
}) {
|
||||
const {
|
||||
actor,
|
||||
source,
|
||||
type,
|
||||
level,
|
||||
request,
|
||||
response: {
|
||||
httpVersion,
|
||||
status,
|
||||
statusText,
|
||||
},
|
||||
isXHR,
|
||||
timeStamp,
|
||||
totalTime,
|
||||
} = message;
|
||||
|
||||
const topLevelClasses = [ "cm-s-mozilla" ];
|
||||
let statusInfo;
|
||||
|
||||
function onUrlClick() {
|
||||
if (httpVersion && status && statusText && totalTime !== undefined) {
|
||||
statusInfo = `[${httpVersion} ${status} ${statusText} ${totalTime}ms]`;
|
||||
}
|
||||
|
||||
function openNetworkMonitor() {
|
||||
serviceContainer.openNetworkPanel(actor);
|
||||
}
|
||||
|
||||
@ -43,10 +65,13 @@ function NetworkEventMessage(props) {
|
||||
const xhr = isXHR
|
||||
? dom.span({ className: "xhr" }, l10n.getStr("webConsoleXhrIndicator"))
|
||||
: null;
|
||||
const url = dom.a({ className: "url", title: request.url, onClick: onUrlClick },
|
||||
request.url.replace(/\?.+/, ""));
|
||||
const url = dom.a({ className: "url", title: request.url, onClick: openNetworkMonitor },
|
||||
request.url.replace(/\?.+/, ""));
|
||||
const statusBody = statusInfo
|
||||
? dom.a({ className: "status", onClick: openNetworkMonitor }, statusInfo)
|
||||
: null;
|
||||
|
||||
const messageBody = dom.span({}, method, xhr, url);
|
||||
const messageBody = [method, xhr, url, statusBody];
|
||||
|
||||
const childProps = {
|
||||
source,
|
||||
|
@ -11,6 +11,7 @@ const actionTypes = {
|
||||
MESSAGES_CLEAR: "MESSAGES_CLEAR",
|
||||
MESSAGE_OPEN: "MESSAGE_OPEN",
|
||||
MESSAGE_CLOSE: "MESSAGE_CLOSE",
|
||||
NETWORK_MESSAGE_UPDATE: "NETWORK_MESSAGE_UPDATE",
|
||||
MESSAGE_TABLE_RECEIVE: "MESSAGE_TABLE_RECEIVE",
|
||||
TIMESTAMPS_TOGGLE: "TIMESTAMPS_TOGGLE",
|
||||
FILTER_TOGGLE: "FILTER_TOGGLE",
|
||||
|
@ -134,7 +134,7 @@ NewConsoleOutputWrapper.prototype = {
|
||||
let jsterm = this.jsterm;
|
||||
jsterm.hud.on("new-messages", function onThisMessage(e, messages) {
|
||||
for (let m of messages) {
|
||||
if (m.messageId == messageId) {
|
||||
if (m.messageId === messageId) {
|
||||
resolve(m.node);
|
||||
jsterm.hud.off("new-messages", onThisMessage);
|
||||
return;
|
||||
@ -160,6 +160,16 @@ NewConsoleOutputWrapper.prototype = {
|
||||
store.dispatch(actions.timestampsToggle(enabled));
|
||||
},
|
||||
|
||||
dispatchMessageUpdate: function (message, res) {
|
||||
batchedMessageAdd(actions.networkMessageUpdate(message));
|
||||
|
||||
// network-message-updated will emit when eventTimings message arrives
|
||||
// which is the last one of 8 updates happening on network message update.
|
||||
if (res.packet.updateType === "eventTimings") {
|
||||
this.jsterm.hud.emit("network-message-updated", res);
|
||||
}
|
||||
},
|
||||
|
||||
// Should be used for test purpose only.
|
||||
getStore: function () {
|
||||
return store;
|
||||
|
@ -98,6 +98,11 @@ function messages(state = new MessageState(), action) {
|
||||
case constants.MESSAGE_TABLE_RECEIVE:
|
||||
const {id, data} = action;
|
||||
return state.set("messagesTableDataById", messagesTableDataById.set(id, data));
|
||||
case constants.NETWORK_MESSAGE_UPDATE:
|
||||
let updateMessage = action.message;
|
||||
return state.set("messagesById", messagesById.map((message) =>
|
||||
(message.id === updateMessage.id) ? updateMessage : message
|
||||
));
|
||||
}
|
||||
|
||||
return state;
|
||||
|
@ -18,11 +18,12 @@ const { stubPreparedMessages } = require("devtools/client/webconsole/new-console
|
||||
const serviceContainer = require("devtools/client/webconsole/new-console-output/test/fixtures/serviceContainer");
|
||||
|
||||
const EXPECTED_URL = "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/inexistent.html";
|
||||
const EXPECTED_STATUS = /\[HTTP\/\d\.\d \d+ [A-Za-z ]+ \d+ms\]/;
|
||||
|
||||
describe("NetworkEventMessage component:", () => {
|
||||
describe("GET request", () => {
|
||||
it("renders as expected", () => {
|
||||
const message = stubPreparedMessages.get("GET request");
|
||||
const message = stubPreparedMessages.get("GET request eventTimings");
|
||||
const wrapper = render(NetworkEventMessage({ message, serviceContainer }));
|
||||
const L10n = require("devtools/client/webconsole/new-console-output/test/fixtures/L10n");
|
||||
const { timestampString } = new L10n();
|
||||
@ -32,9 +33,8 @@ describe("NetworkEventMessage component:", () => {
|
||||
expect(wrapper.find(".message-body .xhr").length).toBe(0);
|
||||
expect(wrapper.find(".message-body .url").length).toBe(1);
|
||||
expect(wrapper.find(".message-body .url").text()).toBe(EXPECTED_URL);
|
||||
expect(wrapper
|
||||
.find("div.message.cm-s-mozilla span.message-body.devtools-monospace").length
|
||||
).toBe(1);
|
||||
expect(wrapper.find(".message-body .status").length).toBe(1);
|
||||
expect(wrapper.find(".message-body .status").text()).toMatch(EXPECTED_STATUS);
|
||||
});
|
||||
|
||||
it("has the expected indent", () => {
|
||||
@ -52,21 +52,20 @@ describe("NetworkEventMessage component:", () => {
|
||||
|
||||
describe("XHR GET request", () => {
|
||||
it("renders as expected", () => {
|
||||
const message = stubPreparedMessages.get("XHR GET request");
|
||||
const message = stubPreparedMessages.get("XHR GET request eventTimings");
|
||||
const wrapper = render(NetworkEventMessage({ message, serviceContainer }));
|
||||
|
||||
expect(wrapper.find(".message-body .method").text()).toBe("GET");
|
||||
expect(wrapper.find(".message-body .xhr").length).toBe(1);
|
||||
expect(wrapper.find(".message-body .xhr").text()).toBe("XHR");
|
||||
expect(wrapper.find(".message-body .url").text()).toBe(EXPECTED_URL);
|
||||
let selector = "div.message.cm-s-mozilla span.message-body.devtools-monospace";
|
||||
expect(wrapper.find(selector).length).toBe(1);
|
||||
expect(wrapper.find(".message-body .status").text()).toMatch(EXPECTED_STATUS);
|
||||
});
|
||||
});
|
||||
|
||||
describe("XHR POST request", () => {
|
||||
it("renders as expected", () => {
|
||||
const message = stubPreparedMessages.get("XHR POST request");
|
||||
const message = stubPreparedMessages.get("XHR POST request eventTimings");
|
||||
const wrapper = render(NetworkEventMessage({ message, serviceContainer }));
|
||||
|
||||
expect(wrapper.find(".message-body .method").text()).toBe("POST");
|
||||
@ -74,8 +73,8 @@ describe("NetworkEventMessage component:", () => {
|
||||
expect(wrapper.find(".message-body .xhr").text()).toBe("XHR");
|
||||
expect(wrapper.find(".message-body .url").length).toBe(1);
|
||||
expect(wrapper.find(".message-body .url").text()).toBe(EXPECTED_URL);
|
||||
let selector = "div.message.cm-s-mozilla span.message-body.devtools-monospace";
|
||||
expect(wrapper.find(selector).length);
|
||||
expect(wrapper.find(".message-body .status").length).toBe(1);
|
||||
expect(wrapper.find(".message-body .status").text()).toMatch(EXPECTED_STATUS);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -24,22 +24,34 @@ add_task(function* () {
|
||||
ok(ui.jsterm, "jsterm exists");
|
||||
ok(ui.newConsoleOutput, "newConsoleOutput exists");
|
||||
|
||||
let received = new Promise(resolve => {
|
||||
let networkEvent = new Promise(resolve => {
|
||||
let i = 0;
|
||||
toolbox.target.client.addListener(TARGET, (type, res) => {
|
||||
toolbox.target.activeConsole.on(TARGET, (type, res) => {
|
||||
stubs.packets.push(formatPacket(keys[i], res));
|
||||
stubs.preparedMessages.push(formatNetworkStub(keys[i], res));
|
||||
stubs.preparedMessages.push(formatNetworkEventStub(keys[i], res));
|
||||
if (++i === keys.length) {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
let networkEventUpdate = new Promise(resolve => {
|
||||
let i = 0;
|
||||
ui.jsterm.hud.on("network-message-updated", function onNetworkUpdated(event, res) {
|
||||
ui.jsterm.hud.off("network-message-updated", onNetworkUpdated);
|
||||
stubs.preparedMessages.push(
|
||||
formatNetworkEventStub(`${keys[i++]} ${res.packet.updateType}`, res));
|
||||
if (i === keys.length) {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
yield ContentTask.spawn(gBrowser.selectedBrowser, {}, function () {
|
||||
content.wrappedJSObject.triggerPacket();
|
||||
});
|
||||
|
||||
yield received;
|
||||
yield Promise.all([networkEvent, networkEventUpdate]);
|
||||
}
|
||||
let filePath = OS.Path.join(`${BASE_PATH}/stubs/${TARGET}.js`);
|
||||
OS.File.writeAtomic(filePath, formatFile(stubs, "NetworkEventMessage"));
|
||||
|
@ -4,7 +4,7 @@
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
/* import-globals-from ../../../../../framework/test/shared-head.js */
|
||||
/* exported TEMP_FILE_PATH, TEMP_CSS_FILE_PATH, formatPacket, formatStub,
|
||||
formatNetworkStub, formatFile */
|
||||
formatNetworkEventStub, formatFile */
|
||||
"use strict";
|
||||
|
||||
// shared-head.js handles imports, constants, and utility functions
|
||||
@ -133,31 +133,9 @@ function formatStub(key, packet) {
|
||||
return `stubPreparedMessages.set("${key}", new ConsoleMessage(${stringifiedMessage}));`;
|
||||
}
|
||||
|
||||
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"});
|
||||
function formatNetworkEventStub(key, packet) {
|
||||
let networkInfo = packet.actor ? packet : packet.networkInfo;
|
||||
let prepared = prepareMessage(networkInfo, {getNextId: () => networkInfo.actor});
|
||||
let stringifiedMessage = JSON.stringify(prepared, null, 2);
|
||||
return `stubPreparedMessages.set("${key}", ` +
|
||||
`new NetworkEventMessage(${stringifiedMessage}));`;
|
||||
|
@ -14,8 +14,8 @@ const { NetworkEventMessage } =
|
||||
let stubPreparedMessages = new Map();
|
||||
let stubPackets = new Map();
|
||||
stubPreparedMessages.set("GET request", new NetworkEventMessage({
|
||||
"id": "1",
|
||||
"actor": "server1.conn0.child1/netEvent29",
|
||||
"id": "server1.conn0.child1/netEvent30",
|
||||
"actor": "server1.conn0.child1/netEvent30",
|
||||
"level": "log",
|
||||
"isXHR": false,
|
||||
"request": {
|
||||
@ -25,13 +25,38 @@ stubPreparedMessages.set("GET request", new NetworkEventMessage({
|
||||
"response": {},
|
||||
"source": "network",
|
||||
"type": "log",
|
||||
"timeStamp": 1479159937660,
|
||||
"groupId": null
|
||||
"groupId": null,
|
||||
"timeStamp": 1485777989897
|
||||
}));
|
||||
|
||||
stubPreparedMessages.set("GET request eventTimings", new NetworkEventMessage({
|
||||
"id": "server1.conn0.child1/netEvent30",
|
||||
"actor": "server1.conn0.child1/netEvent30",
|
||||
"level": "log",
|
||||
"isXHR": false,
|
||||
"request": {
|
||||
"url": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/inexistent.html",
|
||||
"method": "GET",
|
||||
"headersSize": 489
|
||||
},
|
||||
"response": {
|
||||
"httpVersion": "HTTP/1.1",
|
||||
"status": "404",
|
||||
"statusText": "Not Found",
|
||||
"headersSize": 160,
|
||||
"remoteAddress": "127.0.0.1",
|
||||
"remotePort": 8888
|
||||
},
|
||||
"source": "network",
|
||||
"type": "log",
|
||||
"groupId": null,
|
||||
"timeStamp": 1485777989897,
|
||||
"totalTime": 7
|
||||
}));
|
||||
|
||||
stubPreparedMessages.set("XHR GET request", new NetworkEventMessage({
|
||||
"id": "1",
|
||||
"actor": "server1.conn1.child1/netEvent29",
|
||||
"id": "server1.conn1.child1/netEvent30",
|
||||
"actor": "server1.conn1.child1/netEvent30",
|
||||
"level": "log",
|
||||
"isXHR": true,
|
||||
"request": {
|
||||
@ -41,13 +66,38 @@ stubPreparedMessages.set("XHR GET request", new NetworkEventMessage({
|
||||
"response": {},
|
||||
"source": "network",
|
||||
"type": "log",
|
||||
"timeStamp": 1479159938522,
|
||||
"groupId": null
|
||||
"groupId": null,
|
||||
"timeStamp": 1485777990639
|
||||
}));
|
||||
|
||||
stubPreparedMessages.set("XHR GET request eventTimings", new NetworkEventMessage({
|
||||
"id": "server1.conn1.child1/netEvent30",
|
||||
"actor": "server1.conn1.child1/netEvent30",
|
||||
"level": "log",
|
||||
"isXHR": true,
|
||||
"request": {
|
||||
"url": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/inexistent.html",
|
||||
"method": "GET",
|
||||
"headersSize": 489
|
||||
},
|
||||
"response": {
|
||||
"httpVersion": "HTTP/1.1",
|
||||
"status": "404",
|
||||
"statusText": "Not Found",
|
||||
"headersSize": 160,
|
||||
"remoteAddress": "127.0.0.1",
|
||||
"remotePort": 8888
|
||||
},
|
||||
"source": "network",
|
||||
"type": "log",
|
||||
"groupId": null,
|
||||
"timeStamp": 1485777990639,
|
||||
"totalTime": 10
|
||||
}));
|
||||
|
||||
stubPreparedMessages.set("XHR POST request", new NetworkEventMessage({
|
||||
"id": "1",
|
||||
"actor": "server1.conn2.child1/netEvent29",
|
||||
"id": "server1.conn2.child1/netEvent30",
|
||||
"actor": "server1.conn2.child1/netEvent30",
|
||||
"level": "log",
|
||||
"isXHR": true,
|
||||
"request": {
|
||||
@ -57,131 +107,174 @@ stubPreparedMessages.set("XHR POST request", new NetworkEventMessage({
|
||||
"response": {},
|
||||
"source": "network",
|
||||
"type": "log",
|
||||
"timeStamp": 1479159939328,
|
||||
"groupId": null
|
||||
"groupId": null,
|
||||
"timeStamp": 1485777991739
|
||||
}));
|
||||
|
||||
stubPreparedMessages.set("XHR POST request eventTimings", new NetworkEventMessage({
|
||||
"id": "server1.conn2.child1/netEvent30",
|
||||
"actor": "server1.conn2.child1/netEvent30",
|
||||
"level": "log",
|
||||
"isXHR": true,
|
||||
"request": {
|
||||
"url": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/inexistent.html",
|
||||
"method": "POST",
|
||||
"headersSize": 509
|
||||
},
|
||||
"response": {
|
||||
"httpVersion": "HTTP/1.1",
|
||||
"status": "404",
|
||||
"statusText": "Not Found",
|
||||
"headersSize": 160,
|
||||
"remoteAddress": "127.0.0.1",
|
||||
"remotePort": 8888
|
||||
},
|
||||
"source": "network",
|
||||
"type": "log",
|
||||
"groupId": null,
|
||||
"timeStamp": 1485777991739,
|
||||
"totalTime": 9
|
||||
}));
|
||||
|
||||
stubPackets.set("GET request", {
|
||||
"from": "server1.conn0.child1/consoleActor2",
|
||||
"type": "networkEvent",
|
||||
"eventActor": {
|
||||
"actor": "server1.conn0.child1/netEvent29",
|
||||
"startedDateTime": "2016-10-15T23:12:04.196Z",
|
||||
"timeStamp": 1479159937660,
|
||||
"_type": "NetworkEvent",
|
||||
"timeStamp": 1485777989897,
|
||||
"node": null,
|
||||
"actor": "server1.conn0.child1/netEvent30",
|
||||
"discardRequestBody": true,
|
||||
"discardResponseBody": true,
|
||||
"startedDateTime": "2017-01-30T12:06:29.897Z",
|
||||
"request": {
|
||||
"url": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/inexistent.html",
|
||||
"method": "GET",
|
||||
"isXHR": false,
|
||||
"cause": {
|
||||
"type": 3,
|
||||
"loadingDocumentUri": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-network-event.html",
|
||||
"stacktrace": [
|
||||
{
|
||||
"filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-tempfile.js",
|
||||
"lineNumber": 3,
|
||||
"columnNumber": 1,
|
||||
"functionName": "triggerPacket",
|
||||
"asyncCause": null
|
||||
},
|
||||
{
|
||||
"filename": "chrome://mochikit/content/tests/BrowserTestUtils/content-task.js line 52 > eval",
|
||||
"lineNumber": 4,
|
||||
"columnNumber": 7,
|
||||
"functionName": null,
|
||||
"asyncCause": null
|
||||
},
|
||||
{
|
||||
"filename": "chrome://mochikit/content/tests/BrowserTestUtils/content-task.js",
|
||||
"lineNumber": 53,
|
||||
"columnNumber": 20,
|
||||
"functionName": null,
|
||||
"asyncCause": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"private": false
|
||||
}
|
||||
"method": "GET"
|
||||
},
|
||||
"isXHR": false,
|
||||
"cause": {
|
||||
"type": "img",
|
||||
"loadingDocumentUri": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-network-event.html",
|
||||
"stacktrace": [
|
||||
{
|
||||
"filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-tempfile.js",
|
||||
"lineNumber": 3,
|
||||
"columnNumber": 1,
|
||||
"functionName": "triggerPacket",
|
||||
"asyncCause": null
|
||||
},
|
||||
{
|
||||
"filename": "chrome://mochikit/content/tests/BrowserTestUtils/content-task.js line 52 > eval",
|
||||
"lineNumber": 4,
|
||||
"columnNumber": 7,
|
||||
"functionName": null,
|
||||
"asyncCause": null
|
||||
},
|
||||
{
|
||||
"filename": "chrome://mochikit/content/tests/BrowserTestUtils/content-task.js",
|
||||
"lineNumber": 53,
|
||||
"columnNumber": 20,
|
||||
"functionName": null,
|
||||
"asyncCause": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"response": {},
|
||||
"timings": {},
|
||||
"updates": [],
|
||||
"private": false,
|
||||
"from": "server1.conn0.child1/consoleActor2"
|
||||
});
|
||||
|
||||
stubPackets.set("XHR GET request", {
|
||||
"from": "server1.conn1.child1/consoleActor2",
|
||||
"type": "networkEvent",
|
||||
"eventActor": {
|
||||
"actor": "server1.conn1.child1/netEvent29",
|
||||
"startedDateTime": "2016-10-15T23:12:05.690Z",
|
||||
"timeStamp": 1479159938522,
|
||||
"_type": "NetworkEvent",
|
||||
"timeStamp": 1485777990639,
|
||||
"node": null,
|
||||
"actor": "server1.conn1.child1/netEvent30",
|
||||
"discardRequestBody": true,
|
||||
"discardResponseBody": true,
|
||||
"startedDateTime": "2017-01-30T12:06:30.639Z",
|
||||
"request": {
|
||||
"url": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/inexistent.html",
|
||||
"method": "GET",
|
||||
"isXHR": true,
|
||||
"cause": {
|
||||
"type": 11,
|
||||
"loadingDocumentUri": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-network-event.html",
|
||||
"stacktrace": [
|
||||
{
|
||||
"filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-tempfile.js",
|
||||
"lineNumber": 4,
|
||||
"columnNumber": 1,
|
||||
"functionName": "triggerPacket",
|
||||
"asyncCause": null
|
||||
},
|
||||
{
|
||||
"filename": "chrome://mochikit/content/tests/BrowserTestUtils/content-task.js line 52 > eval",
|
||||
"lineNumber": 4,
|
||||
"columnNumber": 7,
|
||||
"functionName": null,
|
||||
"asyncCause": null
|
||||
},
|
||||
{
|
||||
"filename": "chrome://mochikit/content/tests/BrowserTestUtils/content-task.js",
|
||||
"lineNumber": 53,
|
||||
"columnNumber": 20,
|
||||
"functionName": null,
|
||||
"asyncCause": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"private": false
|
||||
}
|
||||
"method": "GET"
|
||||
},
|
||||
"isXHR": true,
|
||||
"cause": {
|
||||
"type": "xhr",
|
||||
"loadingDocumentUri": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-network-event.html",
|
||||
"stacktrace": [
|
||||
{
|
||||
"filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-tempfile.js",
|
||||
"lineNumber": 4,
|
||||
"columnNumber": 1,
|
||||
"functionName": "triggerPacket",
|
||||
"asyncCause": null
|
||||
},
|
||||
{
|
||||
"filename": "chrome://mochikit/content/tests/BrowserTestUtils/content-task.js line 52 > eval",
|
||||
"lineNumber": 4,
|
||||
"columnNumber": 7,
|
||||
"functionName": null,
|
||||
"asyncCause": null
|
||||
},
|
||||
{
|
||||
"filename": "chrome://mochikit/content/tests/BrowserTestUtils/content-task.js",
|
||||
"lineNumber": 53,
|
||||
"columnNumber": 20,
|
||||
"functionName": null,
|
||||
"asyncCause": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"response": {},
|
||||
"timings": {},
|
||||
"updates": [],
|
||||
"private": false,
|
||||
"from": "server1.conn1.child1/consoleActor2"
|
||||
});
|
||||
|
||||
stubPackets.set("XHR POST request", {
|
||||
"from": "server1.conn2.child1/consoleActor2",
|
||||
"type": "networkEvent",
|
||||
"eventActor": {
|
||||
"actor": "server1.conn2.child1/netEvent29",
|
||||
"startedDateTime": "2016-10-15T23:12:07.158Z",
|
||||
"timeStamp": 1479159939328,
|
||||
"_type": "NetworkEvent",
|
||||
"timeStamp": 1485777991739,
|
||||
"node": null,
|
||||
"actor": "server1.conn2.child1/netEvent30",
|
||||
"discardRequestBody": true,
|
||||
"discardResponseBody": true,
|
||||
"startedDateTime": "2017-01-30T12:06:31.739Z",
|
||||
"request": {
|
||||
"url": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/inexistent.html",
|
||||
"method": "POST",
|
||||
"isXHR": true,
|
||||
"cause": {
|
||||
"type": 11,
|
||||
"loadingDocumentUri": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-network-event.html",
|
||||
"stacktrace": [
|
||||
{
|
||||
"filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-tempfile.js",
|
||||
"lineNumber": 4,
|
||||
"columnNumber": 1,
|
||||
"functionName": "triggerPacket",
|
||||
"asyncCause": null
|
||||
},
|
||||
{
|
||||
"filename": "chrome://mochikit/content/tests/BrowserTestUtils/content-task.js line 52 > eval",
|
||||
"lineNumber": 4,
|
||||
"columnNumber": 7,
|
||||
"functionName": null,
|
||||
"asyncCause": null
|
||||
},
|
||||
{
|
||||
"filename": "chrome://mochikit/content/tests/BrowserTestUtils/content-task.js",
|
||||
"lineNumber": 53,
|
||||
"columnNumber": 20,
|
||||
"functionName": null,
|
||||
"asyncCause": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"private": false
|
||||
}
|
||||
"method": "POST"
|
||||
},
|
||||
"isXHR": true,
|
||||
"cause": {
|
||||
"type": "xhr",
|
||||
"loadingDocumentUri": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-network-event.html",
|
||||
"stacktrace": [
|
||||
{
|
||||
"filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-tempfile.js",
|
||||
"lineNumber": 4,
|
||||
"columnNumber": 1,
|
||||
"functionName": "triggerPacket",
|
||||
"asyncCause": null
|
||||
},
|
||||
{
|
||||
"filename": "chrome://mochikit/content/tests/BrowserTestUtils/content-task.js line 52 > eval",
|
||||
"lineNumber": 4,
|
||||
"columnNumber": 7,
|
||||
"functionName": null,
|
||||
"asyncCause": null
|
||||
},
|
||||
{
|
||||
"filename": "chrome://mochikit/content/tests/BrowserTestUtils/content-task.js",
|
||||
"lineNumber": 53,
|
||||
"columnNumber": 20,
|
||||
"functionName": null,
|
||||
"asyncCause": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"response": {},
|
||||
"timings": {},
|
||||
"updates": [],
|
||||
"private": false,
|
||||
"from": "server1.conn2.child1/consoleActor2"
|
||||
});
|
||||
|
||||
module.exports = {
|
||||
|
@ -50,6 +50,7 @@ exports.NetworkEventMessage = Immutable.Record({
|
||||
response: null,
|
||||
source: MESSAGE_SOURCE.NETWORK,
|
||||
type: MESSAGE_TYPE.LOG,
|
||||
timeStamp: null,
|
||||
groupId: null,
|
||||
timeStamp: null,
|
||||
totalTime: null,
|
||||
});
|
||||
|
@ -11,12 +11,7 @@ exports.IdGenerator = class IdGenerator {
|
||||
this.messageId = 1;
|
||||
}
|
||||
|
||||
getNextId() {
|
||||
// Return the next message id, as a string.
|
||||
return "" + this.messageId++;
|
||||
}
|
||||
|
||||
getCurrentId() {
|
||||
return this.messageId;
|
||||
getNextId(packet) {
|
||||
return (packet && packet.actor) ? packet.actor : "" + this.messageId++;
|
||||
}
|
||||
};
|
||||
|
@ -29,7 +29,7 @@ function prepareMessage(packet, idGenerator) {
|
||||
if (packet.allowRepeating) {
|
||||
packet = packet.set("repeatId", getRepeatId(packet));
|
||||
}
|
||||
return packet.set("id", idGenerator.getNextId());
|
||||
return packet.set("id", idGenerator.getNextId(packet));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -182,7 +182,8 @@ function transformPacket(packet) {
|
||||
isXHR: networkEvent.isXHR,
|
||||
request: networkEvent.request,
|
||||
response: networkEvent.response,
|
||||
timeStamp: networkEvent.timeStamp
|
||||
timeStamp: networkEvent.timeStamp,
|
||||
totalTime: networkEvent.totalTime,
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -228,17 +228,24 @@ WebConsoleConnectionProxy.prototype = {
|
||||
/**
|
||||
* Dispatch a message add on the new frontend and emit an event for tests.
|
||||
*/
|
||||
dispatchMessageAdd: function(packet) {
|
||||
dispatchMessageAdd: function (packet) {
|
||||
this.webConsoleFrame.newConsoleOutput.dispatchMessageAdd(packet);
|
||||
},
|
||||
|
||||
/**
|
||||
* Batched dispatch of messages.
|
||||
*/
|
||||
dispatchMessagesAdd: function(packets) {
|
||||
dispatchMessagesAdd: function (packets) {
|
||||
this.webConsoleFrame.newConsoleOutput.dispatchMessagesAdd(packets);
|
||||
},
|
||||
|
||||
/**
|
||||
* Dispatch a message event on the new frontend and emit an event for tests.
|
||||
*/
|
||||
dispatchMessageUpdate: function (networkInfo, response) {
|
||||
this.webConsoleFrame.newConsoleOutput.dispatchMessageUpdate(networkInfo, response);
|
||||
},
|
||||
|
||||
/**
|
||||
* The "cachedMessages" response handler.
|
||||
*
|
||||
@ -360,13 +367,15 @@ WebConsoleConnectionProxy.prototype = {
|
||||
* @private
|
||||
* @param string type
|
||||
* Message type.
|
||||
* @param object packet
|
||||
* The message received from the server.
|
||||
* @param object networkInfo
|
||||
* The network request information.
|
||||
* @param object response
|
||||
* The update response received from the server.
|
||||
*/
|
||||
_onNetworkEventUpdate: function (type, { packet, networkInfo }) {
|
||||
_onNetworkEventUpdate: function (type, response) {
|
||||
let { packet, networkInfo } = response;
|
||||
if (this.webConsoleFrame) {
|
||||
if (this.webConsoleFrame.NEW_CONSOLE_OUTPUT_ENABLED) {
|
||||
this.dispatchMessageUpdate(networkInfo, response);
|
||||
}
|
||||
this.webConsoleFrame.handleNetworkEventUpdate(networkInfo, packet);
|
||||
}
|
||||
},
|
||||
@ -497,4 +506,4 @@ WebConsoleConnectionProxy.prototype = {
|
||||
},
|
||||
};
|
||||
|
||||
exports.WebConsoleConnectionProxy = WebConsoleConnectionProxy;
|
||||
exports.WebConsoleConnectionProxy = WebConsoleConnectionProxy;
|
||||
|
Loading…
Reference in New Issue
Block a user