78 lines
2.4 KiB
JavaScript
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;
|
|
}
|
|
);
|
|
}
|