mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-11 04:15:43 +00:00
Bug 1403927 - Fix Params panel in HTTPi; r=nchevobbe
MozReview-Commit-ID: 16djEqkEJMj --HG-- extra : rebase_source : b717fd9fbdba85739d847269503788f686faca60
This commit is contained in:
parent
6ed80345bb
commit
7e514e201b
@ -14,7 +14,6 @@ const {
|
|||||||
const { connect } = require("devtools/client/shared/vendor/react-redux");
|
const { connect } = require("devtools/client/shared/vendor/react-redux");
|
||||||
const { findDOMNode } = require("devtools/client/shared/vendor/react-dom");
|
const { findDOMNode } = require("devtools/client/shared/vendor/react-dom");
|
||||||
const Actions = require("../actions/index");
|
const Actions = require("../actions/index");
|
||||||
const { getFormDataSections } = require("../utils/request-utils");
|
|
||||||
const { getSelectedRequest } = require("../selectors/index");
|
const { getSelectedRequest } = require("../selectors/index");
|
||||||
|
|
||||||
// Components
|
// Components
|
||||||
@ -53,35 +52,6 @@ const MonitorPanel = createClass({
|
|||||||
MediaQueryList.addListener(this.onLayoutChange);
|
MediaQueryList.addListener(this.onLayoutChange);
|
||||||
},
|
},
|
||||||
|
|
||||||
componentWillReceiveProps(nextProps) {
|
|
||||||
let {
|
|
||||||
request = {},
|
|
||||||
updateRequest,
|
|
||||||
} = nextProps;
|
|
||||||
let {
|
|
||||||
formDataSections,
|
|
||||||
requestHeaders,
|
|
||||||
requestHeadersFromUploadStream,
|
|
||||||
requestPostData,
|
|
||||||
} = request;
|
|
||||||
|
|
||||||
if (!formDataSections && requestHeaders &&
|
|
||||||
requestHeadersFromUploadStream && requestPostData) {
|
|
||||||
getFormDataSections(
|
|
||||||
requestHeaders,
|
|
||||||
requestHeadersFromUploadStream,
|
|
||||||
requestPostData,
|
|
||||||
this.props.connector.getLongString,
|
|
||||||
).then((newFormDataSections) => {
|
|
||||||
updateRequest(
|
|
||||||
request.id,
|
|
||||||
{ formDataSections: newFormDataSections },
|
|
||||||
true,
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
componentWillUnmount() {
|
componentWillUnmount() {
|
||||||
MediaQueryList.removeListener(this.onLayoutChange);
|
MediaQueryList.removeListener(this.onLayoutChange);
|
||||||
|
|
||||||
@ -108,14 +78,15 @@ const MonitorPanel = createClass({
|
|||||||
connector,
|
connector,
|
||||||
isEmpty,
|
isEmpty,
|
||||||
networkDetailsOpen,
|
networkDetailsOpen,
|
||||||
|
openLink,
|
||||||
sourceMapService,
|
sourceMapService,
|
||||||
openLink
|
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
let initialWidth = Services.prefs.getIntPref(
|
let initialWidth = Services.prefs.getIntPref(
|
||||||
"devtools.netmonitor.panes-network-details-width");
|
"devtools.netmonitor.panes-network-details-width");
|
||||||
let initialHeight = Services.prefs.getIntPref(
|
let initialHeight = Services.prefs.getIntPref(
|
||||||
"devtools.netmonitor.panes-network-details-height");
|
"devtools.netmonitor.panes-network-details-height");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
div({ className: "monitor-panel" },
|
div({ className: "monitor-panel" },
|
||||||
Toolbar(),
|
Toolbar(),
|
||||||
@ -130,8 +101,8 @@ const MonitorPanel = createClass({
|
|||||||
endPanel: networkDetailsOpen && NetworkDetailsPanel({
|
endPanel: networkDetailsOpen && NetworkDetailsPanel({
|
||||||
ref: "endPanel",
|
ref: "endPanel",
|
||||||
connector,
|
connector,
|
||||||
sourceMapService,
|
|
||||||
openLink,
|
openLink,
|
||||||
|
sourceMapService,
|
||||||
}),
|
}),
|
||||||
endPanelCollapsed: !networkDetailsOpen,
|
endPanelCollapsed: !networkDetailsOpen,
|
||||||
endPanelControl: true,
|
endPanelControl: true,
|
||||||
|
@ -5,13 +5,17 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
const {
|
const {
|
||||||
|
createClass,
|
||||||
createFactory,
|
createFactory,
|
||||||
DOM,
|
DOM,
|
||||||
PropTypes,
|
PropTypes,
|
||||||
} = require("devtools/client/shared/vendor/react");
|
} = require("devtools/client/shared/vendor/react");
|
||||||
|
const { connect } = require("devtools/client/shared/vendor/react-redux");
|
||||||
const { L10N } = require("../utils/l10n");
|
const { L10N } = require("../utils/l10n");
|
||||||
const { getUrlQuery, parseQueryString, parseFormData } = require("../utils/request-utils");
|
const { getUrlQuery, parseQueryString, parseFormData } = require("../utils/request-utils");
|
||||||
const { sortObjectKeys } = require("../utils/sort-utils");
|
const { sortObjectKeys } = require("../utils/sort-utils");
|
||||||
|
const { getFormDataSections } = require("../utils/request-utils");
|
||||||
|
const Actions = require("../actions/index");
|
||||||
|
|
||||||
// Components
|
// Components
|
||||||
const PropertiesView = createFactory(require("./PropertiesView"));
|
const PropertiesView = createFactory(require("./PropertiesView"));
|
||||||
@ -31,83 +35,126 @@ const SECTION_NAMES = [
|
|||||||
PARAMS_QUERY_STRING,
|
PARAMS_QUERY_STRING,
|
||||||
];
|
];
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* Params panel component
|
* Params panel component
|
||||||
* Displays the GET parameters and POST data of a request
|
* Displays the GET parameters and POST data of a request
|
||||||
*/
|
*/
|
||||||
function ParamsPanel({
|
const ParamsPanel = createClass({
|
||||||
openLink,
|
displayName: "ParamsPanel",
|
||||||
request,
|
|
||||||
}) {
|
|
||||||
let {
|
|
||||||
formDataSections,
|
|
||||||
mimeType,
|
|
||||||
requestPostData,
|
|
||||||
url,
|
|
||||||
} = request;
|
|
||||||
let postData = requestPostData ? requestPostData.postData.text : null;
|
|
||||||
let query = getUrlQuery(url);
|
|
||||||
|
|
||||||
if (!formDataSections && !postData && !query) {
|
propTypes: {
|
||||||
return div({ className: "empty-notice" },
|
connector: PropTypes.object.isRequired,
|
||||||
PARAMS_EMPTY_TEXT
|
openLink: PropTypes.func,
|
||||||
|
request: PropTypes.object.isRequired,
|
||||||
|
updateRequest: PropTypes.func.isRequired,
|
||||||
|
},
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
this.updateFormDataSections(this.props);
|
||||||
|
},
|
||||||
|
|
||||||
|
componentWillReceiveProps(nextProps) {
|
||||||
|
this.updateFormDataSections(nextProps);
|
||||||
|
},
|
||||||
|
|
||||||
|
updateFormDataSections(props) {
|
||||||
|
let {
|
||||||
|
connector,
|
||||||
|
request = {},
|
||||||
|
updateRequest,
|
||||||
|
} = props;
|
||||||
|
let {
|
||||||
|
formDataSections,
|
||||||
|
requestHeaders,
|
||||||
|
requestHeadersFromUploadStream,
|
||||||
|
requestPostData,
|
||||||
|
} = request;
|
||||||
|
|
||||||
|
if (!formDataSections && requestHeaders &&
|
||||||
|
requestHeadersFromUploadStream && requestPostData) {
|
||||||
|
getFormDataSections(
|
||||||
|
requestHeaders,
|
||||||
|
requestHeadersFromUploadStream,
|
||||||
|
requestPostData,
|
||||||
|
connector.getLongString,
|
||||||
|
).then((newFormDataSections) => {
|
||||||
|
updateRequest(
|
||||||
|
request.id,
|
||||||
|
{ formDataSections: newFormDataSections },
|
||||||
|
true,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
render() {
|
||||||
|
let {
|
||||||
|
openLink,
|
||||||
|
request
|
||||||
|
} = this.props;
|
||||||
|
let {
|
||||||
|
formDataSections,
|
||||||
|
mimeType,
|
||||||
|
requestPostData,
|
||||||
|
url,
|
||||||
|
} = request;
|
||||||
|
let postData = requestPostData ? requestPostData.postData.text : null;
|
||||||
|
let query = getUrlQuery(url);
|
||||||
|
|
||||||
|
if (!formDataSections && !postData && !query) {
|
||||||
|
return div({ className: "empty-notice" },
|
||||||
|
PARAMS_EMPTY_TEXT
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
let object = {};
|
||||||
|
let json;
|
||||||
|
|
||||||
|
// Query String section
|
||||||
|
if (query) {
|
||||||
|
object[PARAMS_QUERY_STRING] = getProperties(parseQueryString(query));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Form Data section
|
||||||
|
if (formDataSections && formDataSections.length > 0) {
|
||||||
|
let sections = formDataSections.filter((str) => /\S/.test(str)).join("&");
|
||||||
|
object[PARAMS_FORM_DATA] = getProperties(parseFormData(sections));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Request payload section
|
||||||
|
if (formDataSections && formDataSections.length === 0 && postData) {
|
||||||
|
try {
|
||||||
|
json = JSON.parse(postData);
|
||||||
|
} catch (error) {
|
||||||
|
// Continue regardless of parsing error
|
||||||
|
}
|
||||||
|
|
||||||
|
if (json) {
|
||||||
|
object[JSON_SCOPE_NAME] = sortObjectKeys(json);
|
||||||
|
} else {
|
||||||
|
object[PARAMS_POST_PAYLOAD] = {
|
||||||
|
EDITOR_CONFIG: {
|
||||||
|
text: postData,
|
||||||
|
mode: mimeType.replace(/;.+/, ""),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
postData = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
div({ className: "panel-container" },
|
||||||
|
PropertiesView({
|
||||||
|
object,
|
||||||
|
filterPlaceHolder: PARAMS_FILTER_TEXT,
|
||||||
|
sectionNames: SECTION_NAMES,
|
||||||
|
openLink,
|
||||||
|
})
|
||||||
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
});
|
||||||
let object = {};
|
|
||||||
let json;
|
|
||||||
|
|
||||||
// Query String section
|
|
||||||
if (query) {
|
|
||||||
object[PARAMS_QUERY_STRING] = getProperties(parseQueryString(query));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Form Data section
|
|
||||||
if (formDataSections && formDataSections.length > 0) {
|
|
||||||
let sections = formDataSections.filter((str) => /\S/.test(str)).join("&");
|
|
||||||
object[PARAMS_FORM_DATA] = getProperties(parseFormData(sections));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Request payload section
|
|
||||||
if (formDataSections && formDataSections.length === 0 && postData) {
|
|
||||||
try {
|
|
||||||
json = JSON.parse(postData);
|
|
||||||
} catch (error) {
|
|
||||||
// Continue regardless of parsing error
|
|
||||||
}
|
|
||||||
|
|
||||||
if (json) {
|
|
||||||
object[JSON_SCOPE_NAME] = sortObjectKeys(json);
|
|
||||||
} else {
|
|
||||||
object[PARAMS_POST_PAYLOAD] = {
|
|
||||||
EDITOR_CONFIG: {
|
|
||||||
text: postData,
|
|
||||||
mode: mimeType.replace(/;.+/, ""),
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
postData = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
div({ className: "panel-container" },
|
|
||||||
PropertiesView({
|
|
||||||
object,
|
|
||||||
filterPlaceHolder: PARAMS_FILTER_TEXT,
|
|
||||||
sectionNames: SECTION_NAMES,
|
|
||||||
openLink,
|
|
||||||
})
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
ParamsPanel.displayName = "ParamsPanel";
|
|
||||||
|
|
||||||
ParamsPanel.propTypes = {
|
|
||||||
request: PropTypes.object.isRequired,
|
|
||||||
openLink: PropTypes.func,
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mapping array to dict for TreeView usage.
|
* Mapping array to dict for TreeView usage.
|
||||||
@ -133,4 +180,8 @@ function getProperties(arr) {
|
|||||||
}, {}));
|
}, {}));
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = ParamsPanel;
|
module.exports = connect(null,
|
||||||
|
(dispatch) => ({
|
||||||
|
updateRequest: (id, data, batch) => dispatch(Actions.updateRequest(id, data, batch)),
|
||||||
|
}),
|
||||||
|
)(ParamsPanel);
|
||||||
|
@ -72,7 +72,7 @@ function TabboxPanel({
|
|||||||
id: PANELS.PARAMS,
|
id: PANELS.PARAMS,
|
||||||
title: PARAMS_TITLE,
|
title: PARAMS_TITLE,
|
||||||
},
|
},
|
||||||
ParamsPanel({ request, openLink }),
|
ParamsPanel({ connector, openLink, request }),
|
||||||
),
|
),
|
||||||
TabPanel({
|
TabPanel({
|
||||||
id: PANELS.RESPONSE,
|
id: PANELS.RESPONSE,
|
||||||
@ -91,7 +91,7 @@ function TabboxPanel({
|
|||||||
id: PANELS.STACK_TRACE,
|
id: PANELS.STACK_TRACE,
|
||||||
title: STACK_TRACE_TITLE,
|
title: STACK_TRACE_TITLE,
|
||||||
},
|
},
|
||||||
StackTracePanel({ request, sourceMapService, openLink, connector }),
|
StackTracePanel({ connector, openLink, request, sourceMapService }),
|
||||||
),
|
),
|
||||||
request.securityState && request.securityState !== "insecure" &&
|
request.securityState && request.securityState !== "insecure" &&
|
||||||
TabPanel({
|
TabPanel({
|
||||||
|
@ -5,7 +5,10 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
const I = require("devtools/client/shared/vendor/immutable");
|
const I = require("devtools/client/shared/vendor/immutable");
|
||||||
const { getUrlDetails } = require("../utils/request-utils");
|
const {
|
||||||
|
getUrlDetails,
|
||||||
|
processNetworkUpdates,
|
||||||
|
} = require("../utils/request-utils");
|
||||||
const {
|
const {
|
||||||
ADD_REQUEST,
|
ADD_REQUEST,
|
||||||
CLEAR_REQUESTS,
|
CLEAR_REQUESTS,
|
||||||
@ -16,7 +19,6 @@ const {
|
|||||||
SEND_CUSTOM_REQUEST,
|
SEND_CUSTOM_REQUEST,
|
||||||
TOGGLE_RECORDING,
|
TOGGLE_RECORDING,
|
||||||
UPDATE_REQUEST,
|
UPDATE_REQUEST,
|
||||||
UPDATE_PROPS,
|
|
||||||
} = require("../constants");
|
} = require("../constants");
|
||||||
|
|
||||||
const Request = I.Record({
|
const Request = I.Record({
|
||||||
@ -190,30 +192,8 @@ function requestsReducer(state = new Requests(), action) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
updatedRequest = updatedRequest.withMutations(request => {
|
updatedRequest = updatedRequest.withMutations(request => {
|
||||||
for (let [key, value] of Object.entries(action.data)) {
|
let values = processNetworkUpdates(action.data);
|
||||||
if (!UPDATE_PROPS.includes(key)) {
|
request = Object.assign(request, values);
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
request[key] = value;
|
|
||||||
|
|
||||||
switch (key) {
|
|
||||||
case "url":
|
|
||||||
// Compute the additional URL details
|
|
||||||
request.urlDetails = getUrlDetails(value);
|
|
||||||
break;
|
|
||||||
case "totalTime":
|
|
||||||
request.endedMillis = request.startedMillis + value;
|
|
||||||
lastEndedMillis = Math.max(lastEndedMillis, request.endedMillis);
|
|
||||||
break;
|
|
||||||
case "requestPostData":
|
|
||||||
request.requestHeadersFromUploadStream = {
|
|
||||||
headers: [],
|
|
||||||
headersSize: 0,
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return state.withMutations(st => {
|
return state.withMutations(st => {
|
||||||
|
@ -6,6 +6,10 @@
|
|||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
const {
|
||||||
|
UPDATE_PROPS,
|
||||||
|
} = require("devtools/client/netmonitor/src/constants");
|
||||||
|
|
||||||
const CONTENT_MIME_TYPE_ABBREVIATIONS = {
|
const CONTENT_MIME_TYPE_ABBREVIATIONS = {
|
||||||
"ecmascript": "js",
|
"ecmascript": "js",
|
||||||
"javascript": "js",
|
"javascript": "js",
|
||||||
@ -389,6 +393,36 @@ function getResponseHeader(item, header) {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This helper function is used for additional processing of
|
||||||
|
* incoming network update packets. It's used by Network and
|
||||||
|
* Console panel reducers.
|
||||||
|
*/
|
||||||
|
function processNetworkUpdates(request) {
|
||||||
|
let result = {};
|
||||||
|
for (let [key, value] of Object.entries(request)) {
|
||||||
|
if (UPDATE_PROPS.includes(key)) {
|
||||||
|
result[key] = value;
|
||||||
|
|
||||||
|
switch (key) {
|
||||||
|
case "securityInfo":
|
||||||
|
result.securityState = value.state;
|
||||||
|
break;
|
||||||
|
case "totalTime":
|
||||||
|
result.totalTime = request.totalTime;
|
||||||
|
break;
|
||||||
|
case "requestPostData":
|
||||||
|
result.requestHeadersFromUploadStream = {
|
||||||
|
headers: [],
|
||||||
|
headersSize: 0,
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
decodeUnicodeBase64,
|
decodeUnicodeBase64,
|
||||||
getFormDataSections,
|
getFormDataSections,
|
||||||
@ -411,6 +445,7 @@ module.exports = {
|
|||||||
getUrlScheme,
|
getUrlScheme,
|
||||||
parseQueryString,
|
parseQueryString,
|
||||||
parseFormData,
|
parseFormData,
|
||||||
|
processNetworkUpdates,
|
||||||
propertiesEqual,
|
propertiesEqual,
|
||||||
ipToLong,
|
ipToLong,
|
||||||
};
|
};
|
||||||
|
@ -108,7 +108,9 @@ function NetworkEventMessage({
|
|||||||
viewSourceInDebugger: (url, line) => {
|
viewSourceInDebugger: (url, line) => {
|
||||||
serviceContainer.onViewSourceInDebugger({url, line});
|
serviceContainer.onViewSourceInDebugger({url, line});
|
||||||
},
|
},
|
||||||
getLongString: () => {},
|
getLongString: (grip) => {
|
||||||
|
return serviceContainer.getLongString(grip);
|
||||||
|
},
|
||||||
getTabTarget: () => {},
|
getTabTarget: () => {},
|
||||||
getNetworkRequest: () => {},
|
getNetworkRequest: () => {},
|
||||||
sendHTTPRequest: () => {},
|
sendHTTPRequest: () => {},
|
||||||
|
@ -74,6 +74,8 @@ NewConsoleOutputWrapper.prototype = {
|
|||||||
this.jsterm.focus();
|
this.jsterm.focus();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let { hud } = this.jsterm;
|
||||||
|
|
||||||
const serviceContainer = {
|
const serviceContainer = {
|
||||||
attachRefToHud,
|
attachRefToHud,
|
||||||
emitNewMessage: (node, messageId, timeStamp) => {
|
emitNewMessage: (node, messageId, timeStamp) => {
|
||||||
@ -83,13 +85,16 @@ NewConsoleOutputWrapper.prototype = {
|
|||||||
timeStamp,
|
timeStamp,
|
||||||
}]));
|
}]));
|
||||||
},
|
},
|
||||||
hudProxy: this.jsterm.hud.proxy,
|
hudProxy: hud.proxy,
|
||||||
openLink: url => {
|
openLink: url => {
|
||||||
this.jsterm.hud.owner.openLink(url);
|
hud.owner.openLink(url);
|
||||||
},
|
},
|
||||||
createElement: nodename => {
|
createElement: nodename => {
|
||||||
return this.document.createElement(nodename);
|
return this.document.createElement(nodename);
|
||||||
},
|
},
|
||||||
|
getLongString: (grip) => {
|
||||||
|
return hud.proxy.webConsoleClient.getString(grip);
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
// Set `openContextMenu` this way so, `serviceContainer` variable
|
// Set `openContextMenu` this way so, `serviceContainer` variable
|
||||||
@ -233,8 +238,15 @@ NewConsoleOutputWrapper.prototype = {
|
|||||||
// network-message-updated will emit when all the update message arrives.
|
// network-message-updated will emit when all the update message arrives.
|
||||||
// Since we can't ensure the order of the network update, we check
|
// Since we can't ensure the order of the network update, we check
|
||||||
// that networkInfo.updates has all we need.
|
// that networkInfo.updates has all we need.
|
||||||
|
// Note that 'requestPostData' is sent only for POST requests, so we need
|
||||||
|
// to count with that.
|
||||||
const NUMBER_OF_NETWORK_UPDATE = 8;
|
const NUMBER_OF_NETWORK_UPDATE = 8;
|
||||||
if (res.networkInfo.updates.length === NUMBER_OF_NETWORK_UPDATE) {
|
let expectedLength = NUMBER_OF_NETWORK_UPDATE;
|
||||||
|
if (res.networkInfo.updates.indexOf("requestPostData") != -1) {
|
||||||
|
expectedLength++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (res.networkInfo.updates.length === expectedLength) {
|
||||||
this.batchedMessageUpdates({ res, message });
|
this.batchedMessageUpdates({ res, message });
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -23,9 +23,13 @@ const { getGripPreviewItems } = require("devtools/client/shared/components/reps/
|
|||||||
const { getSourceNames } = require("devtools/client/shared/source-utils");
|
const { getSourceNames } = require("devtools/client/shared/source-utils");
|
||||||
|
|
||||||
const {
|
const {
|
||||||
UPDATE_PROPS
|
UPDATE_REQUEST,
|
||||||
} = require("devtools/client/netmonitor/src/constants");
|
} = require("devtools/client/netmonitor/src/constants");
|
||||||
|
|
||||||
|
const {
|
||||||
|
processNetworkUpdates,
|
||||||
|
} = require("devtools/client/netmonitor/src/utils/request-utils");
|
||||||
|
|
||||||
const MessageState = Immutable.Record({
|
const MessageState = Immutable.Record({
|
||||||
// List of all the messages added to the console.
|
// List of all the messages added to the console.
|
||||||
messagesById: Immutable.OrderedMap(),
|
messagesById: Immutable.OrderedMap(),
|
||||||
@ -274,34 +278,14 @@ function messages(state = new MessageState(), action, filtersState, prefsState)
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
case UPDATE_REQUEST:
|
||||||
case constants.NETWORK_UPDATE_REQUEST: {
|
case constants.NETWORK_UPDATE_REQUEST: {
|
||||||
let request = networkMessagesUpdateById[action.id];
|
let request = networkMessagesUpdateById[action.id];
|
||||||
if (!request) {
|
if (!request) {
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
let values = {};
|
let values = processNetworkUpdates(action.data);
|
||||||
for (let [key, value] of Object.entries(action.data)) {
|
|
||||||
if (UPDATE_PROPS.includes(key)) {
|
|
||||||
values[key] = value;
|
|
||||||
|
|
||||||
switch (key) {
|
|
||||||
case "securityInfo":
|
|
||||||
values.securityState = value.state;
|
|
||||||
break;
|
|
||||||
case "totalTime":
|
|
||||||
values.totalTime = request.totalTime;
|
|
||||||
break;
|
|
||||||
case "requestPostData":
|
|
||||||
values.requestHeadersFromUploadStream = {
|
|
||||||
headers: [],
|
|
||||||
headersSize: 0,
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
newState = state.set(
|
newState = state.set(
|
||||||
"networkMessagesUpdateById",
|
"networkMessagesUpdateById",
|
||||||
Object.assign({}, networkMessagesUpdateById, {
|
Object.assign({}, networkMessagesUpdateById, {
|
||||||
|
Loading…
Reference in New Issue
Block a user