Bug 1337015 - show multiple select params correctly;r=Honza draft
authorFred Lin <gasolin@mozilla.com>
Wed, 08 Feb 2017 16:57:20 +0800
changeset 480972 0b6a02ea6bee316683f182471d32fc640792c86c
parent 480455 de301f4f1519a3444ed227e2ffd23ca34d02ca3b
child 545075 d591423d8ae096a830f2f991cd5ffb5c5584de09
push id44678
push userbmo:gasolin@mozilla.com
push dateThu, 09 Feb 2017 01:53:09 +0000
reviewersHonza
bugs1337015
milestone54.0a1
Bug 1337015 - show multiple select params correctly;r=Honza MozReview-Commit-ID: CykBya4ToeW
devtools/client/netmonitor/shared/components/params-panel.js
--- a/devtools/client/netmonitor/shared/components/params-panel.js
+++ b/devtools/client/netmonitor/shared/components/params-panel.js
@@ -58,24 +58,35 @@ function ParamsPanel({
   // Query String section
   if (query) {
     object[PARAMS_QUERY_STRING] =
       parseQueryString(query)
         .reduce((acc, { name, value }) =>
           name ? Object.assign(acc, { [name]: value }) : acc
         , {});
   }
+
   // Form Data section
   if (formDataSections && formDataSections.length > 0) {
     let sections = formDataSections.filter((str) => /\S/.test(str)).join("&");
     object[PARAMS_FORM_DATA] =
       parseQueryString(sections)
-        .reduce((acc, { name, value }) =>
-          name ? Object.assign(acc, { [name]: value }) : acc
-        , {});
+        .reduce((map, obj) => {
+          let value = map[obj.name];
+          // Deal with duplicate key case (ex: multiple selection)
+          if (value) {
+            if (typeof value !== "object") {
+              map[obj.name] = [value];
+            }
+            map[obj.name].push(obj.value);
+          } else {
+            map[obj.name] = obj.value;
+          }
+          return map;
+        }, {});
   }
 
   // Request payload section
   if (formDataSections && formDataSections.length === 0 && postData) {
     try {
       json = JSON.parse(postData);
     } catch (error) {
       // Continue regardless of parsing error