Bug 1361473 - Add filter option for network requests checking for transferred size being larger than specified value. r=Honza draft
authorMatt R <matthieu.rigolot@gmail.com>
Sat, 13 May 2017 00:06:39 +0100
changeset 577363 36ca4a146eadff3d0971eac29de255c682432aaa
parent 577084 96b36c5f527dd42e680a230839519eee1fc2c9f3
child 628485 24e2cbea534a891061c902640e3e3900cd2e9ee4
push id58674
push userbmo:matthieu.rigolot@gmail.com
push dateSat, 13 May 2017 17:04:57 +0000
reviewersHonza
bugs1361473
milestone55.0a1
Bug 1361473 - Add filter option for network requests checking for transferred size being larger than specified value. r=Honza MozReview-Commit-ID: LJeENle7t20
devtools/client/netmonitor/src/constants.js
devtools/client/netmonitor/src/utils/filter-text-utils.js
devtools/client/netmonitor/test/browser_net_filter-flags.js
--- a/devtools/client/netmonitor/src/constants.js
+++ b/devtools/client/netmonitor/src/constants.js
@@ -164,16 +164,17 @@ const HEADER_FILTERS = HEADERS
 
 const FILTER_FLAGS = [
   ...HEADER_FILTERS,
   "set-cookie-domain",
   "set-cookie-name",
   "set-cookie-value",
   "mime-type",
   "larger-than",
+  "transferred-larger-than",
   "is",
   "has-response-header",
   "regexp",
 ];
 
 const REQUESTS_WATERFALL = {
   BACKGROUND_TICKS_MULTIPLE: 5, // ms
   BACKGROUND_TICKS_SCALES: 3,
--- a/devtools/client/netmonitor/src/utils/filter-text-utils.js
+++ b/devtools/client/netmonitor/src/utils/filter-text-utils.js
@@ -78,16 +78,17 @@ function parseFilters(query) {
 
 function processFlagFilter(type, value) {
   switch (type) {
     case "regexp":
       return value;
     case "size":
     case "transferred":
     case "larger-than":
+    case "transferred-larger-than":
       let multiplier = 1;
       if (value.endsWith("k")) {
         multiplier = 1024;
         value = value.substring(0, value.length - 1);
       } else if (value.endsWith("m")) {
         multiplier = 1024 * 1024;
         value = value.substring(0, value.length - 1);
       }
@@ -145,16 +146,23 @@ function isFlagFilterMatch(item, { type,
       }
       break;
     case "size":
       match = isSizeMatch(value, item.contentSize);
       break;
     case "larger-than":
       match = item.contentSize > value;
       break;
+    case "transferred-larger-than":
+      if (item.fromCache) {
+        match = false;
+      } else {
+        match = item.transferredSize > value;
+      }
+      break;
     case "mime-type":
       match = item.mimeType.includes(value);
       break;
     case "is":
       if (value === "from-cache" ||
           value === "cached") {
         match = item.fromCache || item.status === "304";
       } else if (value === "running") {
--- a/devtools/client/netmonitor/test/browser_net_filter-flags.js
+++ b/devtools/client/netmonitor/test/browser_net_filter-flags.js
@@ -215,16 +215,29 @@ add_task(function* () {
   testContents([0, 1, 0, 0, 0, 0, 0, 0, 0]);
 
   setFreetextFilter("set-cookie-domain:.foo.example.com");
   testContents([0, 1, 0, 0, 0, 0, 0, 0, 0]);
 
   setFreetextFilter("set-cookie-domain:.not-existing.example.com");
   testContents([0, 0, 0, 0, 0, 0, 0, 0, 0]);
 
+  // Test transferred-larger-than
+  setFreetextFilter("transferred-larger-than:-1");
+  testContents([1, 1, 1, 1, 1, 1, 1, 1, 1]);
+
+  setFreetextFilter("transferred-larger-than:0");
+  testContents([1, 1, 1, 1, 0, 0, 0, 0, 0]);
+
+  setFreetextFilter("transferred-larger-than:33");
+  testContents([0, 0, 1, 1, 0, 0, 0, 0, 0]);
+
+  setFreetextFilter("transferred-larger-than:34");
+  testContents([0, 0, 0, 0, 0, 0, 0, 0, 0]);
+
   // Test mixing flags
   setFreetextFilter("-mime-type:HtmL status-code:200");
   testContents([0, 0, 1, 1, 1, 1, 1, 1, 0]);
 
   yield teardown(monitor);
 
   function testContents(visibility) {
     const items = getSortedRequests(store.getState());