Bug 1426809 - Show "Copy response" context menu if data available r?honza
MozReview-Commit-ID: Je3K8tk7cH4
--- a/devtools/client/netmonitor/src/widgets/RequestListContextMenu.js
+++ b/devtools/client/netmonitor/src/widgets/RequestListContextMenu.js
@@ -35,16 +35,17 @@ class RequestListContextMenu {
mimeType,
httpVersion,
requestHeaders,
requestHeadersAvailable,
requestPostData,
requestPostDataAvailable,
responseHeaders,
responseHeadersAvailable,
+ responseContent,
responseContentAvailable,
url,
} = selectedRequest;
let {
cloneSelectedRequest,
openStatistics,
} = this.props;
let menu = [];
@@ -112,18 +113,18 @@ class RequestListContextMenu {
});
copySubmenu.push({
id: "request-list-context-copy-response",
label: L10N.getStr("netmonitor.context.copyResponse"),
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),
@@ -366,18 +367,20 @@ class RequestListContextMenu {
data = text;
}
saveAs(new Blob([data]), fileName, document);
}
/**
* Copy response data as a string.
*/
- async copyResponse(id) {
- let responseContent = await this.props.connector.requestData(id, "responseContent");
+ async copyResponse(id, responseContent) {
+ if (!responseContent) {
+ responseContent = await this.props.connector.requestData(id, "responseContent");
+ }
copyString(responseContent.content.text);
}
/**
* Copy HAR from the network panel content to the clipboard.
*/
copyAllAsHar(sortedRequests) {
return HarExporter.copy(this.getDefaultHarOptions(sortedRequests));