1
0
Fork 0
firefox/devtools/client/inspector/grids/test/head.js
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

78 lines
2.4 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
/* eslint no-unused-vars: [2, {"vars": "local"}] */
"use strict";
// Import the inspector's head.js first (which itself imports shared-head.js).
Services.scriptloader.loadSubScript(
"chrome://mochitests/content/browser/devtools/client/inspector/test/head.js",
this
);
const asyncStorage = require("resource://devtools/shared/async-storage.js");
Services.prefs.setIntPref("devtools.toolbox.footer.height", 350);
registerCleanupFunction(async function () {
Services.prefs.clearUserPref("devtools.toolbox.footer.height");
await asyncStorage.removeItem("gridInspectorHostColors");
});
/**
* Simulate a mouseover event on a grid cell currently rendered in the grid
* inspector.
*
* @param {Document} doc
* The owner document for the grid inspector.
* @param {Number} gridCellIndex
* The index (0-based) of the grid cell that should be hovered.
*/
function synthesizeMouseOverOnGridCell(doc, gridCellIndex = 0) {
// Make sure to retrieve the current live grid item before attempting to
// interact with it using mouse APIs.
const gridCell = doc.querySelectorAll("#grid-cell-group rect")[gridCellIndex];
EventUtils.synthesizeMouseAtCenter(
gridCell,
{ type: "mouseover" },
doc.defaultView
);
}
/**
* Returns the number of visible grid highlighters
*
* @param {Object} options
* @param {Boolean} options.isParent: Pass false/true if only the parent/child grid highlighter
* should be counted.
* @returns {Number}
*/
function getNumberOfVisibleGridHighlighters({ isParent } = {}) {
return SpecialPowers.spawn(
gBrowser.selectedBrowser,
[isParent],
_isParent => {
const roots = content.document.getConnectedShadowRoots();
return roots.filter(root => {
// We want to check that the highlighter canvas is actually visible
const gridHighlighterEl = root.querySelector(
`#css-grid-root:has(canvas:not([hidden]))`
);
if (!gridHighlighterEl) {
return false;
}
if (typeof _isParent === "boolean") {
return (
gridHighlighterEl.getAttribute("data-is-parent-grid") ===
_isParent.toString()
);
}
// If isParent wasn't passed, we return all grid highlighters, parent and child.
return true;
}).length;
}
);
}