Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
"use strict";
const URL_ROOT =
const XUL_FRAME_URI = URL_ROOT + "doc_iframe_typecontent_input_focus.xhtml";
const INNER_HTML_FRAME_URI =
URL_ROOT + "doc_iframe_typecontent_input_focus_frame.html";
/**
* Check that focusing an input in a frame with type=content embedded in a xul
* document does not leak.
*/
add_task(async function () {
const doc = gBrowser.ownerDocument;
const linkedBrowser = gBrowser.selectedTab.linkedBrowser;
const browserContainer = gBrowser.getBrowserContainer(linkedBrowser);
info("Load the test page in a frame with type content");
const frame = doc.createXULElement("iframe");
frame.setAttribute("type", "content");
browserContainer.appendChild(frame);
info("Wait for the xul iframe to be loaded");
const onXulFrameLoad = BrowserTestUtils.waitForEvent(frame, "load", true);
frame.setAttribute("src", XUL_FRAME_URI);
await onXulFrameLoad;
const panelFrame = frame.contentDocument.querySelector("#html-iframe");
info("Wait for the html iframe to be loaded");
const onFrameLoad = BrowserTestUtils.waitForEvent(panelFrame, "load", true);
panelFrame.setAttribute("src", INNER_HTML_FRAME_URI);
await onFrameLoad;
info("Focus an input inside the iframe");
const focusMeInput = panelFrame.contentDocument.querySelector(".focusme");
const onFocus = BrowserTestUtils.waitForEvent(focusMeInput, "focus");
await SimpleTest.promiseFocus(panelFrame);
focusMeInput.focus();
await onFocus;
// This assert is not really meaningful, the main purpose of the test is
// to check against leaks.
is(
focusMeInput,
panelFrame.contentDocument.activeElement,
"The .focusme input is the active element"
);
info("Remove the focused input");
focusMeInput.remove();
});