/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; /** * This test runs in iframe environments ONLY. * When the iframe is resized, the embedded document's accessible bounds follow. * Here the body has no accessible of its own. Verify the bounds change maps to the * document accessible only. This is situation (1) in the NotifyOfPossibleBoundsChange * comment. */ addAccessibleTask( `
hello world
`, async function bodyIsDocAcc(browser, iframeDocAcc) { const docWidth = () => { let width = {}; iframeDocAcc.getBounds({}, {}, width, {}); return width.value; }; await untilCacheIs(docWidth, 0, "Embedded document width is 0"); // Resize the iframe element itself (not content within it) await SpecialPowers.spawn(browser, [DEFAULT_IFRAME_ID], iframeId => { content.document.getElementById(iframeId).style.width = "300px"; }); await untilCacheIs(docWidth, 300, "Embedded document width is 300"); }, { chrome: false, topLevel: false, iframe: true, remoteIframe: true, iframeAttrs: { style: "width: 0;" }, } ); /** * This test runs in iframe environments ONLY. This test is the * same as above, but `body { overflow: hidden }` gives the body its own * accessible. Verify the document accessible's bounds update when the * iframe is resized. This is situation (2) in the NotifyOfPossibleBoundsChange * comment. */ addAccessibleTask( `
hello world
`, async function bodyIsOwnAcc(browser, iframeDocAcc) { const bodyAcc = iframeDocAcc.firstChild; is( bodyAcc.id, DEFAULT_IFRAME_DOC_BODY_ID, "Embedded body has its own accessible" ); const docWidth = () => { let width = {}; iframeDocAcc.getBounds({}, {}, width, {}); return width.value; }; await untilCacheIs(docWidth, 0, "Embedded document width is 0"); // Resize the iframe element itself (not content within it) await SpecialPowers.spawn(browser, [DEFAULT_IFRAME_ID], iframeId => { content.document.getElementById(iframeId).style.width = "300px"; }); await untilCacheIs(docWidth, 300, "Embedded document width is 300"); }, { chrome: false, topLevel: false, iframe: true, remoteIframe: true, iframeAttrs: { style: "width: 0;" }, } );