зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1308497 - De-duplicate helper function getFormDataSections r=Honza
MozReview-Commit-ID: 6FXvICNBsVt --HG-- extra : rebase_source : 76c52998f6e4055aada3bcc5e598c9f7af9d6662
This commit is contained in:
Родитель
7e0b9f0703
Коммит
a73a2bb872
|
@ -7,7 +7,6 @@ const { Ci } = require("chrome");
|
|||
const { Class } = require("sdk/core/heritage");
|
||||
const { resolve } = require("promise");
|
||||
const Services = require("Services");
|
||||
const { Task } = require("devtools/shared/task");
|
||||
|
||||
loader.lazyRequireGetter(this, "HarCollector", "devtools/client/netmonitor/har/har-collector", true);
|
||||
loader.lazyRequireGetter(this, "HarExporter", "devtools/client/netmonitor/har/har-exporter", true);
|
||||
|
@ -200,51 +199,6 @@ var HarAutomation = Class({
|
|||
getString: function (stringGrip) {
|
||||
return this.webConsoleClient.getString(stringGrip);
|
||||
},
|
||||
|
||||
/**
|
||||
* Extracts any urlencoded form data sections (e.g. "?foo=bar&baz=42") from a
|
||||
* POST request.
|
||||
*
|
||||
* @param object headers
|
||||
* The "requestHeaders".
|
||||
* @param object uploadHeaders
|
||||
* The "requestHeadersFromUploadStream".
|
||||
* @param object postData
|
||||
* The "requestPostData".
|
||||
* @return array
|
||||
* A promise that is resolved with the extracted form data.
|
||||
*/
|
||||
_getFormDataSections: Task.async(function* (headers, uploadHeaders,
|
||||
postData) {
|
||||
let formDataSections = [];
|
||||
|
||||
let { headers: requestHeaders } = headers;
|
||||
let { headers: payloadHeaders } = uploadHeaders;
|
||||
let allHeaders = [...payloadHeaders, ...requestHeaders];
|
||||
|
||||
let contentTypeHeader = allHeaders.find(e => {
|
||||
return e.name.toLowerCase() == "content-type";
|
||||
});
|
||||
|
||||
let contentTypeLongString = contentTypeHeader ?
|
||||
contentTypeHeader.value : "";
|
||||
let contentType = yield this.getString(contentTypeLongString);
|
||||
|
||||
if (contentType.includes("x-www-form-urlencoded")) {
|
||||
let postDataLongString = postData.postData.text;
|
||||
let data = yield this.getString(postDataLongString);
|
||||
|
||||
for (let section of data.split(/\r\n|\r|\n/)) {
|
||||
// Before displaying it, make sure this section of the POST data
|
||||
// isn't a line containing upload stream headers.
|
||||
if (payloadHeaders.every(header => !section.startsWith(header.name))) {
|
||||
formDataSections.push(section);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return formDataSections;
|
||||
}),
|
||||
});
|
||||
|
||||
// Helpers
|
||||
|
|
|
@ -8,6 +8,7 @@ const { LocalizationHelper } = require("devtools/shared/l10n");
|
|||
const Services = require("Services");
|
||||
const appInfo = Services.appinfo;
|
||||
const { CurlUtils } = require("devtools/client/shared/curl");
|
||||
const { getFormDataSections } = require("devtools/client/netmonitor/request-utils");
|
||||
|
||||
loader.lazyRequireGetter(this, "NetworkHelper", "devtools/shared/webconsole/network-helper");
|
||||
|
||||
|
@ -272,9 +273,12 @@ HarBuilder.prototype = {
|
|||
postData.mimeType = "application/x-www-form-urlencoded";
|
||||
|
||||
// Extract form parameters and produce nice HAR array.
|
||||
this._options.view._getFormDataSections(file.requestHeaders,
|
||||
getFormDataSections(
|
||||
file.requestHeaders,
|
||||
file.requestHeadersFromUploadStream,
|
||||
file.requestPostData).then(formDataSections => {
|
||||
file.requestPostData,
|
||||
this._options.getString
|
||||
).then(formDataSections => {
|
||||
formDataSections.forEach(section => {
|
||||
let paramsArray = NetworkHelper.parseQueryString(section);
|
||||
if (paramsArray) {
|
||||
|
|
|
@ -9,7 +9,8 @@ DIRS += [
|
|||
|
||||
DevToolsModules(
|
||||
'filter-predicates.js',
|
||||
'panel.js'
|
||||
'panel.js',
|
||||
'request-utils.js',
|
||||
)
|
||||
|
||||
BROWSER_CHROME_MANIFESTS += ['test/browser.ini']
|
||||
|
|
|
@ -33,7 +33,7 @@ const {ViewHelpers, Heritage, WidgetMethods, setNamedTimeout} =
|
|||
const {gDevTools} = require("devtools/client/framework/devtools");
|
||||
const {Curl, CurlUtils} = require("devtools/client/shared/curl");
|
||||
const {Filters, isFreetextMatch} = require("devtools/client/netmonitor/filter-predicates");
|
||||
|
||||
const {getFormDataSections} = require("devtools/client/netmonitor/request-utils");
|
||||
/**
|
||||
* Localization convenience methods.
|
||||
*/
|
||||
|
@ -760,65 +760,19 @@ RequestsMenuView.prototype = Heritage.extend(WidgetMethods, {
|
|||
clipboardHelper.copyString(string);
|
||||
},
|
||||
|
||||
/**
|
||||
* Extracts any urlencoded form data sections (e.g. "?foo=bar&baz=42") from a
|
||||
* POST request.
|
||||
*
|
||||
* @param object headers
|
||||
* The "requestHeaders".
|
||||
* @param object uploadHeaders
|
||||
* The "requestHeadersFromUploadStream".
|
||||
* @param object postData
|
||||
* The "requestPostData".
|
||||
* @return array
|
||||
* A promise that is resolved with the extracted form data.
|
||||
*/
|
||||
_getFormDataSections: Task.async(function* (headers, uploadHeaders,
|
||||
postData) {
|
||||
let formDataSections = [];
|
||||
|
||||
let { headers: requestHeaders } = headers;
|
||||
let { headers: payloadHeaders } = uploadHeaders;
|
||||
let allHeaders = [...payloadHeaders, ...requestHeaders];
|
||||
|
||||
let contentTypeHeader = allHeaders.find(e => {
|
||||
return e.name.toLowerCase() == "content-type";
|
||||
});
|
||||
|
||||
let contentTypeLongString = contentTypeHeader ?
|
||||
contentTypeHeader.value : "";
|
||||
|
||||
let contentType = yield gNetwork.getString(contentTypeLongString);
|
||||
|
||||
if (contentType.includes("x-www-form-urlencoded")) {
|
||||
let postDataLongString = postData.postData.text;
|
||||
let text = yield gNetwork.getString(postDataLongString);
|
||||
|
||||
for (let section of text.split(/\r\n|\r|\n/)) {
|
||||
// Before displaying it, make sure this section of the POST data
|
||||
// isn't a line containing upload stream headers.
|
||||
if (payloadHeaders.every(header => !section.startsWith(header.name))) {
|
||||
formDataSections.push(section);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return formDataSections;
|
||||
}),
|
||||
|
||||
/**
|
||||
* Copy the request form data parameters (or raw payload) from
|
||||
* the currently selected item.
|
||||
*/
|
||||
copyPostData: Task.async(function* () {
|
||||
let selected = this.selectedItem.attachment;
|
||||
let view = this;
|
||||
|
||||
// Try to extract any form data parameters.
|
||||
let formDataSections = yield view._getFormDataSections(
|
||||
let formDataSections = yield getFormDataSections(
|
||||
selected.requestHeaders,
|
||||
selected.requestHeadersFromUploadStream,
|
||||
selected.requestPostData);
|
||||
selected.requestPostData,
|
||||
gNetwork.getString.bind(gNetwork));
|
||||
|
||||
let params = [];
|
||||
formDataSections.forEach(section => {
|
||||
|
@ -3152,8 +3106,11 @@ NetworkDetailsView.prototype = {
|
|||
return;
|
||||
}
|
||||
|
||||
let formDataSections = yield RequestsMenuView.prototype
|
||||
._getFormDataSections(headers, uploadHeaders, postData);
|
||||
let formDataSections = yield getFormDataSections(
|
||||
headers,
|
||||
uploadHeaders,
|
||||
postData,
|
||||
gNetwork.getString.bind(gNetwork));
|
||||
|
||||
this._params.onlyEnumVisible = false;
|
||||
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
"use strict";
|
||||
|
||||
const { Task } = require("devtools/shared/task");
|
||||
|
||||
/**
|
||||
* Extracts any urlencoded form data sections (e.g. "?foo=bar&baz=42") from a
|
||||
* POST request.
|
||||
*
|
||||
* @param object headers
|
||||
* The "requestHeaders".
|
||||
* @param object uploadHeaders
|
||||
* The "requestHeadersFromUploadStream".
|
||||
* @param object postData
|
||||
* The "requestPostData".
|
||||
* @param object getString
|
||||
Callback to retrieve a string from a LongStringGrip.
|
||||
* @return array
|
||||
* A promise that is resolved with the extracted form data.
|
||||
*/
|
||||
exports.getFormDataSections = Task.async(function* (headers, uploadHeaders, postData,
|
||||
getString) {
|
||||
let formDataSections = [];
|
||||
|
||||
let { headers: requestHeaders } = headers;
|
||||
let { headers: payloadHeaders } = uploadHeaders;
|
||||
let allHeaders = [...payloadHeaders, ...requestHeaders];
|
||||
|
||||
let contentTypeHeader = allHeaders.find(e => {
|
||||
return e.name.toLowerCase() == "content-type";
|
||||
});
|
||||
|
||||
let contentTypeLongString = contentTypeHeader ? contentTypeHeader.value : "";
|
||||
|
||||
let contentType = yield getString(contentTypeLongString);
|
||||
|
||||
if (contentType.includes("x-www-form-urlencoded")) {
|
||||
let postDataLongString = postData.postData.text;
|
||||
let text = yield getString(postDataLongString);
|
||||
|
||||
for (let section of text.split(/\r\n|\r|\n/)) {
|
||||
// Before displaying it, make sure this section of the POST data
|
||||
// isn't a line containing upload stream headers.
|
||||
if (payloadHeaders.every(header => !section.startsWith(header.name))) {
|
||||
formDataSections.push(section);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return formDataSections;
|
||||
});
|
Загрузка…
Ссылка в новой задаче