mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-22 01:35:35 +00:00
Bug 1426809 - Prevent fetching network update packet again after packet arrived r=Honza
MozReview-Commit-ID: 5Ifgj1opsNW --HG-- extra : rebase_source : 9ddd273520657db459df15c9a52cef120d669c51
This commit is contained in:
parent
9d20fe6b18
commit
5baf806cde
@ -134,10 +134,6 @@ class FirefoxDataProvider {
|
||||
let response = await this.getLongString(text);
|
||||
responseContent.content.text = response;
|
||||
payload.responseContent = responseContent;
|
||||
|
||||
// Lock down responseContentAvailable once we fetch data from back-end.
|
||||
// Using this as flag to prevent fetching arrived data again.
|
||||
payload.responseContentAvailable = false;
|
||||
}
|
||||
return payload;
|
||||
}
|
||||
@ -149,10 +145,6 @@ class FirefoxDataProvider {
|
||||
if (headers) {
|
||||
payload.requestHeaders = headers;
|
||||
}
|
||||
|
||||
// Lock down requestHeadersAvailable once we fetch data from back-end.
|
||||
// Using this as flag to prevent fetching arrived data again.
|
||||
payload.requestHeadersAvailable = false;
|
||||
}
|
||||
return payload;
|
||||
}
|
||||
@ -164,10 +156,6 @@ class FirefoxDataProvider {
|
||||
if (headers) {
|
||||
payload.responseHeaders = headers;
|
||||
}
|
||||
|
||||
// Lock down responseHeadersAvailable once we fetch data from back-end.
|
||||
// Using this as flag to prevent fetching arrived data again.
|
||||
payload.responseHeadersAvailable = false;
|
||||
}
|
||||
return payload;
|
||||
}
|
||||
@ -188,10 +176,6 @@ class FirefoxDataProvider {
|
||||
requestPostData.postData.text = postData;
|
||||
payload.requestPostData = Object.assign({}, requestPostData);
|
||||
payload.requestHeadersFromUploadStream = { headers, headersSize };
|
||||
|
||||
// Lock down requestPostDataAvailable once we fetch data from back-end.
|
||||
// Using this as flag to prevent fetching arrived data again.
|
||||
payload.requestPostDataAvailable = false;
|
||||
}
|
||||
return payload;
|
||||
}
|
||||
@ -214,10 +198,6 @@ class FirefoxDataProvider {
|
||||
payload.requestCookies = reqCookies;
|
||||
}
|
||||
}
|
||||
|
||||
// Lock down requestCookiesAvailable once we fetch data from back-end.
|
||||
// Using this as flag to prevent fetching arrived data again.
|
||||
payload.requestCookiesAvailable = false;
|
||||
}
|
||||
return payload;
|
||||
}
|
||||
@ -240,10 +220,6 @@ class FirefoxDataProvider {
|
||||
payload.responseCookies = resCookies;
|
||||
}
|
||||
}
|
||||
|
||||
// Lock down responseCookiesAvailable once we fetch data from back-end.
|
||||
// Using this as flag to prevent fetching arrived data again.
|
||||
payload.responseCookiesAvailable = false;
|
||||
}
|
||||
return payload;
|
||||
}
|
||||
@ -434,7 +410,12 @@ class FirefoxDataProvider {
|
||||
this.lazyRequestData.delete(key);
|
||||
|
||||
if (this.actions.updateRequest) {
|
||||
await this.actions.updateRequest(actor, payload, true);
|
||||
await this.actions.updateRequest(actor, {
|
||||
...payload,
|
||||
// Lockdown *Available property once we fetch data from back-end.
|
||||
// Using this as a flag to prevent fetching arrived data again.
|
||||
[`${method}Available`]: false,
|
||||
}, true);
|
||||
}
|
||||
|
||||
return payload;
|
||||
|
@ -40,6 +40,7 @@ class RequestListContextMenu {
|
||||
requestPostDataAvailable,
|
||||
responseHeaders,
|
||||
responseHeadersAvailable,
|
||||
responseContent,
|
||||
responseContentAvailable,
|
||||
url,
|
||||
} = selectedRequest;
|
||||
@ -73,7 +74,7 @@ class RequestListContextMenu {
|
||||
// Menu item will be visible even if data hasn't arrived, so we need to check
|
||||
// *Available property and then fetch data lazily once user triggers the action.
|
||||
visible: !!(selectedRequest && (requestPostDataAvailable || requestPostData)),
|
||||
click: () => this.copyPostData(id, formDataSections),
|
||||
click: () => this.copyPostData(id, formDataSections, requestPostData),
|
||||
});
|
||||
|
||||
copySubmenu.push({
|
||||
@ -82,8 +83,11 @@ class RequestListContextMenu {
|
||||
accesskey: L10N.getStr("netmonitor.context.copyAsCurl.accesskey"),
|
||||
// Menu item will be visible even if data hasn't arrived, so we need to check
|
||||
// *Available property and then fetch data lazily once user triggers the action.
|
||||
visible: !!(selectedRequest && (requestHeadersAvailable || requestHeaders)),
|
||||
click: () => this.copyAsCurl(id, url, method, requestHeaders, httpVersion),
|
||||
visible: !!(selectedRequest &&
|
||||
(requestHeadersAvailable || requestHeaders) &&
|
||||
(responseContentAvailable || responseContent)),
|
||||
click: () =>
|
||||
this.copyAsCurl(id, url, method, httpVersion, requestHeaders, responseContent),
|
||||
});
|
||||
|
||||
copySubmenu.push({
|
||||
@ -117,16 +121,17 @@ class RequestListContextMenu {
|
||||
accesskey: L10N.getStr("netmonitor.context.copyResponse.accesskey"),
|
||||
// Menu item will be visible even if data hasn't arrived, so we need to check
|
||||
// *Available property and then fetch data lazily once user triggers the action.
|
||||
visible: !!(selectedRequest && responseContentAvailable),
|
||||
click: () => this.copyResponse(id),
|
||||
visible: !!(selectedRequest && (responseContentAvailable || responseContent)),
|
||||
click: () => this.copyResponse(id, responseContent),
|
||||
});
|
||||
|
||||
copySubmenu.push({
|
||||
id: "request-list-context-copy-image-as-data-uri",
|
||||
label: L10N.getStr("netmonitor.context.copyImageAsDataUri"),
|
||||
accesskey: L10N.getStr("netmonitor.context.copyImageAsDataUri.accesskey"),
|
||||
visible: !!(selectedRequest && mimeType && mimeType.includes("image/")),
|
||||
click: () => this.copyImageAsDataUri(id, mimeType),
|
||||
visible: !!(selectedRequest && (responseContentAvailable || responseContent) &&
|
||||
mimeType && mimeType.includes("image/")),
|
||||
click: () => this.copyImageAsDataUri(id, mimeType, responseContent),
|
||||
});
|
||||
|
||||
copySubmenu.push({
|
||||
@ -161,8 +166,9 @@ class RequestListContextMenu {
|
||||
id: "request-list-context-save-image-as",
|
||||
label: L10N.getStr("netmonitor.context.saveImageAs"),
|
||||
accesskey: L10N.getStr("netmonitor.context.saveImageAs.accesskey"),
|
||||
visible: !!(selectedRequest && mimeType && mimeType.includes("image/")),
|
||||
click: () => this.saveImageAs(id, url),
|
||||
visible: !!(selectedRequest && (responseContentAvailable || responseContent) &&
|
||||
mimeType && mimeType.includes("image/")),
|
||||
click: () => this.saveImageAs(id, url, responseContent),
|
||||
});
|
||||
|
||||
menu.push({
|
||||
@ -263,7 +269,7 @@ class RequestListContextMenu {
|
||||
* Copy the request form data parameters (or raw payload) from
|
||||
* the currently selected item.
|
||||
*/
|
||||
async copyPostData(id, formDataSections) {
|
||||
async copyPostData(id, formDataSections, requestPostData) {
|
||||
let params = [];
|
||||
// Try to extract any form data parameters.
|
||||
formDataSections.forEach(section => {
|
||||
@ -279,8 +285,9 @@ class RequestListContextMenu {
|
||||
|
||||
// Fall back to raw payload.
|
||||
if (!string) {
|
||||
let { requestPostData } = await this.props.connector
|
||||
.requestData(id, "requestPostData");
|
||||
requestPostData = requestPostData ||
|
||||
await this.props.connector.requestData(id, "requestPostData").requestPostData;
|
||||
|
||||
string = requestPostData.postData.text;
|
||||
if (Services.appinfo.OS !== "WINNT") {
|
||||
string = string.replace(/\r/g, "");
|
||||
@ -292,18 +299,19 @@ class RequestListContextMenu {
|
||||
/**
|
||||
* Copy a cURL command from the currently selected item.
|
||||
*/
|
||||
async copyAsCurl(id, url, method, requestHeaders, httpVersion) {
|
||||
if (!requestHeaders) {
|
||||
requestHeaders = await this.props.connector.requestData(id, "requestHeaders");
|
||||
}
|
||||
let { requestPostData } = await this.props.connector
|
||||
.requestData(id, "requestPostData");
|
||||
async copyAsCurl(id, url, method, httpVersion, requestHeaders, requestPostData) {
|
||||
requestHeaders = requestHeaders ||
|
||||
await this.props.connector.requestData(id, "requestHeaders");
|
||||
|
||||
requestPostData = requestPostData ||
|
||||
await this.props.connector.requestData(id, "requestPostData").requestPostData;
|
||||
|
||||
// Create a sanitized object for the Curl command generator.
|
||||
let data = {
|
||||
url,
|
||||
method,
|
||||
headers: requestHeaders.headers,
|
||||
httpVersion: httpVersion,
|
||||
httpVersion,
|
||||
postDataText: requestPostData ? requestPostData.postData.text : "",
|
||||
};
|
||||
copyString(Curl.generateCommand(data));
|
||||
@ -313,9 +321,9 @@ class RequestListContextMenu {
|
||||
* Copy the raw request headers from the currently selected item.
|
||||
*/
|
||||
async copyRequestHeaders(id, requestHeaders) {
|
||||
if (!requestHeaders) {
|
||||
requestHeaders = await this.props.connector.requestData(id, "requestHeaders");
|
||||
}
|
||||
requestHeaders = requestHeaders ||
|
||||
await this.props.connector.requestData(id, "requestHeaders");
|
||||
|
||||
let rawHeaders = requestHeaders.rawHeaders.trim();
|
||||
|
||||
if (Services.appinfo.OS !== "WINNT") {
|
||||
@ -328,9 +336,9 @@ class RequestListContextMenu {
|
||||
* Copy the raw response headers from the currently selected item.
|
||||
*/
|
||||
async copyResponseHeaders(id, responseHeaders) {
|
||||
if (!responseHeaders) {
|
||||
responseHeaders = await this.props.connector.requestData(id, "responseHeaders");
|
||||
}
|
||||
responseHeaders = responseHeaders ||
|
||||
await this.props.connector.requestData(id, "responseHeaders");
|
||||
|
||||
let rawHeaders = responseHeaders.rawHeaders.trim();
|
||||
|
||||
if (Services.appinfo.OS !== "WINNT") {
|
||||
@ -342,8 +350,10 @@ class RequestListContextMenu {
|
||||
/**
|
||||
* Copy image as data uri.
|
||||
*/
|
||||
async copyImageAsDataUri(id, mimeType) {
|
||||
let responseContent = await this.props.connector.requestData(id, "responseContent");
|
||||
async copyImageAsDataUri(id, mimeType, responseContent) {
|
||||
responseContent = responseContent ||
|
||||
await this.props.connector.requestData(id, "responseContent");
|
||||
|
||||
let { encoding, text } = responseContent.content;
|
||||
copyString(formDataURI(mimeType, encoding, text));
|
||||
}
|
||||
@ -351,8 +361,10 @@ class RequestListContextMenu {
|
||||
/**
|
||||
* Save image as.
|
||||
*/
|
||||
async saveImageAs(id, url) {
|
||||
let responseContent = await this.props.connector.requestData(id, "responseContent");
|
||||
async saveImageAs(id, url, responseContent) {
|
||||
responseContent = responseContent ||
|
||||
await this.props.connector.requestData(id, "responseContent");
|
||||
|
||||
let { encoding, text } = responseContent.content;
|
||||
let fileName = getUrlBaseName(url);
|
||||
let data;
|
||||
@ -371,8 +383,10 @@ class RequestListContextMenu {
|
||||
/**
|
||||
* Copy response data as a string.
|
||||
*/
|
||||
async copyResponse(id) {
|
||||
let responseContent = await this.props.connector.requestData(id, "responseContent");
|
||||
async copyResponse(id, responseContent) {
|
||||
responseContent = responseContent ||
|
||||
await this.props.connector.requestData(id, "responseContent");
|
||||
|
||||
copyString(responseContent.content.text);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user