"use strict"; const kPrefHighlightAll = "findbar.highlightAll"; const kPrefModalHighlight = "findbar.modalHighlight"; add_task(async function setup() { await SpecialPowers.pushPrefEnv({ set: [ [kPrefHighlightAll, true], [kPrefModalHighlight, true] ]}); }); add_task(async function testIframeOffset() { let url = kFixtureBaseURL + "file_FinderIframeTest.html"; await BrowserTestUtils.withNewTab(url, async function(browser) { let findbar = gBrowser.getFindBar(); await promiseOpenFindbar(findbar); let word = "frame"; let expectedResult = { rectCount: 12, insertCalls: [2, 4], removeCalls: [0, 2] }; let promise = promiseTestHighlighterOutput(browser, word, expectedResult, (maskNode, outlineNode, rects) => { Assert.equal(rects.length, expectedResult.rectCount, "Rect counts should match"); // Checks to guard against regressing this functionality: let expectedOffsets = [ { x: 16, y: 60 }, { x: 68, y: 104 }, { x: 21, y: 215 }, { x: 78, y: 264 }, { x: 21, y: 375 }, { x: 78, y: 424 }, { x: 20, y: 534 }, { x: 93, y: 534 }, { x: 71, y: 577 }, { x: 145, y: 577 } ]; for (let i = 1, l = rects.length - 1; i < l; ++i) { let rect = rects[i]; let expected = expectedOffsets[i - 1]; Assert.equal(Math.floor(rect.x), expected.x, "Horizontal offset should match for rect " + i); Assert.equal(Math.floor(rect.y), expected.y, "Vertical offset should match for rect " + i); } }); await promiseEnterStringIntoFindField(findbar, word); await promise; }); });