gecko-dev/dom/browser-element/mochitest/browserElement_PromptCheck.js

60 lines
1.8 KiB
JavaScript

/* Any copyright is dedicated to the public domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
// Test that alertCheck (i.e., alert with the opportunity to opt out of future
// alerts), promptCheck, and confirmCheck work. We do this by spamming
// alerts/prompts/confirms from inside an <iframe mozbrowser>.
//
// At the moment, we treat alertCheck/promptCheck/confirmCheck just like a
// normal alert. But it's different to nsIPrompt!
"use strict";
SimpleTest.waitForExplicitFinish();
browserElementTestHelpers.setEnabledPref(true);
browserElementTestHelpers.addPermission();
function runTest()
{
var iframe = document.createElement('iframe');
iframe.setAttribute('mozbrowser', 'true');
document.body.appendChild(iframe);
var numPrompts = 0;
iframe.addEventListener('mozbrowsershowmodalprompt', function(e) {
is(e.detail.message, numPrompts, "prompt message");
if (numPrompts / 10 < 1) {
is(e.detail.promptType, 'alert');
}
else if (numPrompts / 10 < 2) {
is(e.detail.promptType, 'confirm');
}
else {
is(e.detail.promptType, 'prompt');
}
numPrompts++;
if (numPrompts == 30) {
SimpleTest.finish();
}
});
iframe.src =
'data:text/html,<html><body><script>\
addEventListener("load", function() { \
setTimeout(function() { \
var i = 0; \
for (; i < 10; i++) { alert(i); } \
for (; i < 20; i++) { confirm(i); } \
for (; i < 30; i++) { prompt(i); } \
}); \
}); \
</scr' + 'ipt></body></html>';
}
// The test harness sets dom.successive_dialog_time_limit to 0 for some bizarre
// reason. That's not normal usage, and it keeps us from testing alertCheck!
addEventListener('testready', function() {
SpecialPowers.pushPrefEnv({'set': [['dom.successive_dialog_time_limit', 10]]}, runTest);
});