Bug 1361473 - Add filter option for network requests checking for transferred size being larger than specified value. r=Honza
MozReview-Commit-ID: LJeENle7t20
--- 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());