/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
// Check that calling the LenientThis warning is only called when expected.
const TEST_URI = `data:text/html;charset=utf8,${encodeURI(`
LenientThis warning
`)}`;
add_task(async function () {
const hud = await openNewTabAndConsole(TEST_URI);
const expectedWarningMessageText =
"Ignoring get or set of property that has [LenientThis] ";
await SpecialPowers.spawn(gBrowser.selectedBrowser, [], function () {
const global = content.wrappedJSObject;
global.console.log(global.htmlDivElementProto);
});
info("Wait for a bit so any warning message could be displayed");
await wait(1000);
await waitFor(() => findConsoleAPIMessage(hud, "HTMLDivElementPrototype"));
ok(
!findWarningMessage(hud, expectedWarningMessageText, ".warn"),
"Displaying the HTMLDivElementPrototype does not trigger the LenientThis warning"
);
info(
"Call a LenientThis getter with the wrong `this` to trigger a warning message"
);
await SpecialPowers.spawn(gBrowser.selectedBrowser, [], function () {
content.wrappedJSObject.triggerLenientThisWarning();
});
await waitFor(() =>
findWarningMessage(hud, expectedWarningMessageText, ".warn")
);
ok(
true,
"Calling the LenientThis getter with an unexpected `this` did triggered the warning"
);
info(
"Clear the console and call the LenientThis getter with an unexpected `this` again"
);
await clearOutput(hud);
await SpecialPowers.spawn(gBrowser.selectedBrowser, [], function () {
content.wrappedJSObject.triggerLenientThisWarning();
});
info("Wait for a bit so any warning message could be displayed");
await wait(1000);
ok(
!findWarningMessage(hud, expectedWarningMessageText, ".warn"),
"Calling the LenientThis getter a second time did not trigger the warning again"
);
});