From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../test/browser_net_column-resize-fit.js | 95 ++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 devtools/client/netmonitor/test/browser_net_column-resize-fit.js (limited to 'devtools/client/netmonitor/test/browser_net_column-resize-fit.js') diff --git a/devtools/client/netmonitor/test/browser_net_column-resize-fit.js b/devtools/client/netmonitor/test/browser_net_column-resize-fit.js new file mode 100644 index 0000000000..7cb60a8c38 --- /dev/null +++ b/devtools/client/netmonitor/test/browser_net_column-resize-fit.js @@ -0,0 +1,95 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +/** + * Tests resizing of columns in NetMonitor. + */ +add_task(async function () { + // Reset visibleColumns so we only get the default ones + // and not all that are set in head.js + Services.prefs.clearUserPref("devtools.netmonitor.visibleColumns"); + const visibleColumns = JSON.parse( + Services.prefs.getCharPref("devtools.netmonitor.visibleColumns") + ); + // Init network monitor + const { monitor } = await initNetMonitor(SIMPLE_URL, { + requestCount: 1, + }); + info("Starting test... "); + + const { document } = monitor.panelWin; + + // Wait for network events (to have some requests in the table) + const wait = waitForNetworkEvents(monitor, 1); + await reloadBrowser(); + await wait; + + info("Testing column resize to fit using double-click on draggable resizer"); + const fileHeader = document.querySelector(`#requests-list-file-header-box`); + const fileColumnResizer = fileHeader.querySelector(".column-resizer"); + + EventUtils.sendMouseEvent({ type: "dblclick" }, fileColumnResizer); + + // After resize - get fresh prefs for tests. + let columnsData = JSON.parse( + Services.prefs.getCharPref("devtools.netmonitor.columnsData") + ); + + // `File` column before resize: 25%, after resize: 11.25% + // `Transferred` column before resize: 10%, after resize: 10% + checkColumnsData(columnsData, "file", 12); + checkSumOfVisibleColumns(columnsData, visibleColumns); + + info( + "Testing column resize to fit using context menu `Resize Column To Fit Content`" + ); + + // Resizing `transferred` column. + EventUtils.sendMouseEvent( + { type: "contextmenu" }, + document.querySelector("#requests-list-transferred-button") + ); + + await selectContextMenuItem( + monitor, + "request-list-header-resize-column-to-fit-content" + ); + + columnsData = JSON.parse( + Services.prefs.getCharPref("devtools.netmonitor.columnsData") + ); + + // `Transferred` column before resize: 10%, after resize: 2.97% + checkColumnsData(columnsData, "transferred", 3); + checkSumOfVisibleColumns(columnsData, visibleColumns); + + // Done: clean up. + return teardown(monitor); +}); + +function checkColumnsData(columnsData, column, expectedWidth) { + const width = getWidthFromPref(columnsData, column); + const widthsDiff = Math.abs(width - expectedWidth); + ok( + widthsDiff < 2, + `Column ${column} has expected size. Got ${width}, Expected ${expectedWidth}` + ); +} + +function checkSumOfVisibleColumns(columnsData, visibleColumns) { + let sum = 0; + visibleColumns.forEach(column => { + sum += getWidthFromPref(columnsData, column); + }); + sum = Math.round(sum); + is(sum, 100, "All visible columns cover 100%."); +} + +function getWidthFromPref(columnsData, column) { + const widthInPref = columnsData.find(function (element) { + return element.name === column; + }).width; + return widthInPref; +} -- cgit v1.2.3