Bug 1426809 - Show "Copy response" context menu if data available r?honza draft
authorRicky Chien <ricky060709@gmail.com>
Thu, 04 Jan 2018 00:34:04 +0800
changeset 715291 bb1276c2371d5764aab3767f7c31c2ede9ed9663
parent 715290 8d7e14cc55c618084979d653bd6ff599a47e77ca
child 744761 25dcc510779e0da6eb07a5a76e0cd78184a89e29
push id94127
push userbmo:rchien@mozilla.com
push dateWed, 03 Jan 2018 16:34:39 +0000
reviewershonza
bugs1426809
milestone59.0a1
Bug 1426809 - Show "Copy response" context menu if data available r?honza MozReview-Commit-ID: Je3K8tk7cH4
devtools/client/netmonitor/src/widgets/RequestListContextMenu.js
--- 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));