Files
palemoon27/dom/html/test/test_checked.html
roytam1 f579c98b65 import changes from `dev' branch of rmottola/Arctic-Fox:
- Bug 1195755: Don't assert recursion depth sanity on Mac, because there is none. r=me (e25096acc1)
- Bug 1217940 - remove BindingUtils.h from CycleCollectedJSRuntime.cpp; r=mccr8 (012fad0b80)
- Bug 1118285 - The browser.newtab.url preference is abused and should be removed. (ca573649c6)
- Bug 1209591 - allow loadURI consumers to expose whether an error page was immediately loaded as result of an error, r=smaug,mak (c033d86f07)
- Bug 1167132 - Part 14: [NetworkManager] Move network information into a separate interface (NetStats). r=ethan (87acc048cc)
- Bug 1167132 - Part 15: [NetworkManager] Move network information into a separate interface (NetworkInterfaceList). r=echen (a2a96e481e)
- Bug 1205240 - Add JSON Validation code in order to prevent invalid file. r=seanlin (8c7261ba8c)
- Bug 1215429 - Add import statement in order to access file object in chrome code of TVSimulatorService. r=seanlin (5ba9e78581)
- Bug 1217093 - Remove for-each from dom/. r=smaug (5af3efbd62)
- var-let (576b2489ec)
- Bug 1183440 - Replaces Promise.defer() with the Promise constructor in push tests. r=kitcambridge (16dfaa59b3)
- Bug 1191453 - Drop subscriptions for a site when the user revokes push permissions. r=mt,MattN (5edd10e5ad)
- Bug 1159641, Part 1 - Skip the permission check in `pushManager.getSubscription()`. r=mt (d399c496d7)
- Bug 1159641, Part 2 - Use tasks in the Push permissions test. r=mt (132484c355)
- Bug 1206302 - Use DOMException for Push errors. r=mt (5a675714fa)
- Bug 1193365 - Disable push debug. r=kitcambridge (1dc20e69b0)
- Bug 1219063, Part 1 - Use transactions for updating Push subscription permissions. r=mt (8c28453942)
- Bug 1219063, Part 2 - Remove obsolete "push" permission. r=mt (84a36931cd)
- Bug 1217065 - Unconditionally ack incoming updates. r=dragana,benbangert (e0bfa4454f)
- Bug 1212593 - Fix PushService behavior when we are switching between push servers. r=kcambridge (0afa39e743)
- Bug 1206163 - Retry failed register requests on reconnect. r=dragana (6ed1258b15)
- Bug 1218591 - Reset the WebSocket retry counter when the server replies. r=dragana (64e800db60)
- Bug 1210943 - Drop subscriptions unconditionally if the UAID changes. r=benbangert (52f538a7de)
- Bug 1214366 - Part 1: Don't preprocess PushServiceWebSocket.jsm. r=kitcambridge (a78b9fc838)
- Bug 1214366 - Part 3: Use getLastVisited equivalent in PushService.jsm. r=kitcambridge,rnewman (bc7004ad32)
- Bug 1210896, Part 1 - Use Console.jsm to log Push errors. r=mt (04335cc37f)
- Bug 1216683 - For the WebSocket version unregister should return true even if we are offline. r=kitcambridge (0f6e397a03)
- Bug 1210896, Part 2 - Use JS errors to reject internal Push promises. r=mt (3546b2f7c8)
- Bug 1223481 - Use the "potentially trustworthy origin" helper to validate Push server URLs. r=dragana (0c21f551f3)
- Bug 1223202 - Only send subscription change events if the Push permission is granted. r=mt (afeaf0dceb)
- Bug 1201128 - Don't send channel IDs in the Push handshake. r=nsm (dbbadb5c16)
- var-let (a35cb6aeca)
- Bug 1210211 - Part 1: Delay updating push quota. r=kitcambridge (53f5735ff0)
- Bug 1210211 - Part 2: Notify Push service of visible notifications. r=baku (9182bcb7d1)
- Bug 1170115 - Use clear-origin-data to remove Push records. r=allstars.chh (47f1070bab)
- Bug 1211418 - Part 1: Ensure Data Consistency after Collision of SMS Segment. r=echen. (f2d5221984)
- Bug 1211418 - Part 2: Add Test Coverage for the Collision of SMS Segment. r=echen. (06f7ba7308)
- Bug 1159132 - Part 1: Use dun apn only when config ro.tethering.dun_required is set. r=echen (bbb4fd2798)
- Bug 1159132 - Part 2: Set ro.tethering.dun_required when running dun test case. r=echen (11fe9344be)
- Bug 1187262 - Let the flag 'Services.io.offline' reference the state of tethering. r=jjong (ee22fd9358)
- Bug 1148671 - ipv6 and dual stack support on Lollipop. r=hchang (a9f7dc570e)
- Bug 1173671 - just warn if we fail to remove old default routes. r=echen (b4ab24da9f)
- Bug 1175817 - [NetworkManager] remove old default routes explicitly. r=echen,smaug (3f9a0b98ab)
- Bug 1174998 - Part 1: add setMtu() support in NetworkService. r=echen,smaug (9621036470)
- Bug 1174998 - Part 2: Set MTU for connected network interfaces. r=echen (397c898942)
- Bug 1197667 - [NetworkManager] Part 1: add missing implementation for 'allNetworkInfo'. r=echen (a49fd3498b)
- Bug 1197667 - [NetworkManager] Part 2: add test case for 'allNetworkInfo'. r=echen (942a52b0d4)
- Bug 1057091 - Add USB tethring command supporting IPv6 outgoing interface. r=hchang (9210eb5a1d)
- Bug 1177236 - Usage alert doesn't work when tethering is enabled. r=ethan (4bdd8ae226)
- Bug 1168938 - Memory safety bug in NetworkUtils::postTetherInterfaceList. r=fabrice (97485ac95c)
- Bug 1138757 - Part 1: Fix the logic of checking invalid port in CDMA WAP Push. r=echen (68dac00e52)
- Bug 1138757 - Part 2: Add Test Coverage for CDMA Wap Push. r=echen (9d54278aa9)
- Bug 1209891 - Do Not Reply Read-Report if a MMS Message Was Marked from Unread to Read Multiple Times. r=echen (421550db06)
- var-let (2ed380bb64)
- bug 1175005: performance regression. backout_f081c464c1e2 (28e1ee74b9)
- Bug 1207665 - Block Intel GMA 3150 for d3d11/d2d on all drivers. (bug 1207665 part 1, r=jrmuizel). r=jrmuizel (bb8eac6fa8)
- Bug 1188105: Parse bad driver versions. r=botond (8c856cac36)
- Bug 1075089 - Move popup menu frame offset to LookAndFeel and fix default offset for OS X. r=Enn (e1f7d0c418)
- Bug 1134385. Delete main thread assertion in CompositorVsyncDispatcher. r=kats (0945e91185)
- some profiler stuff (d3d68abdad)
- Bug 1156283 - Avoid shutdown observer race when shutting down gfx on Mac. r=roc (f66195546b)
2023-01-21 00:07:37 +08:00

359 lines
11 KiB
HTML

<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=418756
https://bugzilla.mozilla.org/show_bug.cgi?id=617528
-->
<head>
<title>Test for Bug 418756 and 617528</title>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
Mozilla bug
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=418756">418756</a>
and
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=617528">617528</a>
<p id="display"></p>
<div id="content">
<form id="f1">
</form>
<form id="f2">
</form>
<menu id="m1">
</menu>
<menu id="m2">
</menu>
</div>
<pre id="test">
<script class="testbody" type="text/javascript; version=1.7">
/** Test for Bug 418756 and 617528 **/
var group1;
var group2;
var group3;
var tags = ["input", "menuitem"];
for (let tag of tags) {
function bounce(node) {
let n = node.nextSibling;
let p = node.parentNode;
p.removeChild(node);
p.insertBefore(node, n);
}
var createdNodes = [];
function cleanup() {
for (let node of createdNodes) {
if (node.parentNode) {
node.parentNode.removeChild(node);
}
}
createdNodes = [];
}
var typeMapper = {
'c': 'checkbox',
'r': 'radio'
};
var id = 0;
// type can be 'c' for 'checkbox' and 'r' for 'radio'
function createNode(type, name, checked) {
let node = document.createElement(tag);
node.setAttribute("type", typeMapper[type]);
if (checked) {
node.setAttribute("checked", "checked");
}
node.setAttribute("id", type + (++id));
node.setAttribute(tag == "input" ? "name" : "radiogroup", name);
createdNodes.push(node);
return node;
}
var types = ['c', 'r'];
// First make sure that setting .checked makes .defaultChecked changes no
// longer affect .checked.
for (let type of types) {
let n = createNode(type, '', false);
is(n.defaultChecked, false, "Bogus defaultChecked on " + typeMapper[type]);
is(n.checked, false, "Bogus checked on " + typeMapper[type]);
n.defaultChecked = true;
is(n.defaultChecked, true, "Bogus defaultChecked on " + typeMapper[type] +
"after mutation");
is(n.checked, true, "Bogus checked on " + typeMapper[type] +
"after mutation");
n.checked = false;
is(n.defaultChecked, true, "Bogus defaultChecked on " + typeMapper[type] +
"after second mutation");
is(n.checked, false, "Bogus checked on " + typeMapper[type] +
"after second mutation");
n.defaultChecked = false;
is(n.defaultChecked, false, "Bogus defaultChecked on " + typeMapper[type] +
"after third mutation");
is(n.checked, false, "Bogus checked on " + typeMapper[type] +
"after third mutation");
n.defaultChecked = true;
is(n.defaultChecked, true, "Bogus defaultChecked on " + typeMapper[type] +
"after fourth mutation");
is(n.checked, false, "Bogus checked on " + typeMapper[type] +
"after fourth mutation");
}
cleanup();
// Now check that bouncing a control that's the only one of its kind has no
// effect
for (let type of types) {
let n = createNode(type, 'test1', true);
$(tag == "input" ? "f1" : "m1").appendChild(n);
n.checked = false;
n.defaultChecked = false;
bounce(n);
n.defaultChecked = true;
is(n.checked, false, "We set .checked on this " + typeMapper[type]);
}
cleanup();
// Now check that playing with a single radio in a group affects all
// other radios in the group (but not radios not in that group)
group1 = [ createNode('r', 'g1', false),
createNode('r', 'g1', false),
createNode('r', 'g1', false) ];
group2 = [ createNode('r', 'g2', false),
createNode('r', 'g2', false),
createNode('r', 'g2', false) ];
group3 = [ createNode('r', 'g1', false),
createNode('r', 'g1', false),
createNode('r', 'g1', false) ];
for each (let g in group1) {
$(tag == "input" ? "f1" : "m1").appendChild(g);
}
for each (let g in group2) {
$(tag == "input" ? "f1" : "m1").appendChild(g);
}
for each (let g in group3) {
$(tag == "input" ? "f2" : "m2").appendChild(g);
}
for each (let n in [1, 2, 3]) {
for each (let g in window["group"+n]) {
is(g.defaultChecked, false,
"group" + n + "[" + window["group"+n].indexOf(g) +
"] defaultChecked wrong pass 1");
is(g.checked, false,
"group" + n + "[" + window["group"+n].indexOf(g) +
"] checkedhecked wrong pass 1");
}
}
group1[1].defaultChecked = true;
for each (let n in [1, 2, 3]) {
for each (let g in window["group"+n]) {
is(g.defaultChecked, n == 1 && group1.indexOf(g) == 1,
"group" + n + "[" + window["group"+n].indexOf(g) +
"] defaultChecked wrong pass 2");
is(g.checked, n == 1 && group1.indexOf(g) == 1,
"group" + n + "[" + window["group"+n].indexOf(g) +
"] checked wrong pass 2");
}
}
group1[0].defaultChecked = true;
for each (let n in [1, 2, 3]) {
for each (let g in window["group"+n]) {
is(g.defaultChecked, n == 1 && (group1.indexOf(g) == 1 ||
group1.indexOf(g) == 0),
"group" + n + "[" + window["group"+n].indexOf(g) +
"] defaultChecked wrong pass 3");
is(g.checked, n == 1 && group1.indexOf(g) == 0,
"group" + n + "[" + window["group"+n].indexOf(g) +
"] checked wrong pass 3");
}
}
group1[2].defaultChecked = true;
for each (let n in [1, 2, 3]) {
for each (let g in window["group"+n]) {
is(g.defaultChecked, n == 1,
"group" + n + "[" + window["group"+n].indexOf(g) +
"] defaultChecked wrong pass 4");
is(g.checked, n == 1 && group1.indexOf(g) == 2,
"group" + n + "[" + window["group"+n].indexOf(g) +
"] checked wrong pass 4");
}
}
var next = group1[1].nextSibling;
var p = group1[1].parentNode;
p.removeChild(group1[1]);
group1[1].defaultChecked = false;
group1[1].defaultChecked = true;
p.insertBefore(group1[1], next);
for each (let n in [1, 2, 3]) {
for each (let g in window["group"+n]) {
is(g.defaultChecked, n == 1,
"group" + n + "[" + window["group"+n].indexOf(g) +
"] defaultChecked wrong pass 5");
is(g.checked, n == 1 && group1.indexOf(g) == 1,
"group" + n + "[" + window["group"+n].indexOf(g) +
"] checked wrong pass 5");
}
}
for each(let g in group1) {
g.defaultChecked = false;
}
for each (let n in [1, 2, 3]) {
for each (let g in window["group"+n]) {
is(g.defaultChecked, false,
"group" + n + "[" + window["group"+n].indexOf(g) +
"] defaultChecked wrong pass 6");
is(g.checked, false,
"group" + n + "[" + window["group"+n].indexOf(g) +
"] checkedhecked wrong pass 6");
}
}
group1[1].checked = true;
for each (let n in [1, 2, 3]) {
for each (let g in window["group"+n]) {
is(g.defaultChecked, false,
"group" + n + "[" + window["group"+n].indexOf(g) +
"] defaultChecked wrong pass 7");
is(g.checked, n == 1 && group1.indexOf(g) == 1,
"group" + n + "[" + window["group"+n].indexOf(g) +
"] checked wrong pass 7");
}
}
group1[0].defaultChecked = true;
for each (let n in [1, 2, 3]) {
for each (let g in window["group"+n]) {
is(g.defaultChecked, n == 1 && group1.indexOf(g) == 0,
"group" + n + "[" + window["group"+n].indexOf(g) +
"] defaultChecked wrong pass 8");
is(g.checked, n == 1 && group1.indexOf(g) == 1,
"group" + n + "[" + window["group"+n].indexOf(g) +
"] checked wrong pass 8");
}
}
group1[2].defaultChecked = true;
for each (let n in [1, 2, 3]) {
for each (let g in window["group"+n]) {
is(g.defaultChecked, n == 1 && (group1.indexOf(g) == 0 ||
group1.indexOf(g) == 2),
"group" + n + "[" + window["group"+n].indexOf(g) +
"] defaultChecked wrong pass 9");
is(g.checked, n == 1 && group1.indexOf(g) == 1,
"group" + n + "[" + window["group"+n].indexOf(g) +
"] checked wrong pass 9");
}
}
group1[1].parentNode.removeChild(group1[1]);
for each (let n in [1, 2, 3]) {
for each (let g in window["group"+n]) {
is(g.defaultChecked, n == 1 && (group1.indexOf(g) == 0 ||
group1.indexOf(g) == 2),
"group" + n + "[" + window["group"+n].indexOf(g) +
"] defaultChecked wrong pass 10");
is(g.checked, n == 1 && group1.indexOf(g) == 1,
"group" + n + "[" + window["group"+n].indexOf(g) +
"] checked wrong pass 10");
}
}
group1[2].checked = true;
for each (let n in [1, 2, 3]) {
for each (let g in window["group"+n]) {
is(g.defaultChecked, n == 1 && (group1.indexOf(g) == 0 ||
group1.indexOf(g) == 2),
"group" + n + "[" + window["group"+n].indexOf(g) +
"] defaultChecked wrong pass 11");
is(g.checked, n == 1 && (group1.indexOf(g) == 1 ||
group1.indexOf(g) == 2),
"group" + n + "[" + window["group"+n].indexOf(g) +
"] checked wrong pass 11");
}
}
group1[0].checked = true;
for each (let n in [1, 2, 3]) {
for each (let g in window["group"+n]) {
is(g.defaultChecked, n == 1 && (group1.indexOf(g) == 0 ||
group1.indexOf(g) == 2),
"group" + n + "[" + window["group"+n].indexOf(g) +
"] defaultChecked wrong pass 12");
is(g.checked, n == 1 && (group1.indexOf(g) == 1 ||
group1.indexOf(g) == 0),
"group" + n + "[" + window["group"+n].indexOf(g) +
"] checked wrong pass 12");
}
}
next = group2[1].nextSibling;
p = group2[1].parentNode;
p.removeChild(group2[1]);
p.insertBefore(group2[1], next);
group2[0].checked = true;
for each (let n in [1, 2, 3]) {
for each (let g in window["group"+n]) {
is(g.defaultChecked, n == 1 && (group1.indexOf(g) == 0 ||
group1.indexOf(g) == 2),
"group" + n + "[" + window["group"+n].indexOf(g) +
"] defaultChecked wrong pass 13");
is(g.checked, (n == 1 && (group1.indexOf(g) == 1 ||
group1.indexOf(g) == 0)) ||
(n == 2 && group2.indexOf(g) == 0),
"group" + n + "[" + window["group"+n].indexOf(g) +
"] checked wrong pass 13");
}
}
p.insertBefore(group2[1], next);
for each (let n in [1, 2, 3]) {
for each (let g in window["group"+n]) {
is(g.defaultChecked, n == 1 && (group1.indexOf(g) == 0 ||
group1.indexOf(g) == 2),
"group" + n + "[" + window["group"+n].indexOf(g) +
"] defaultChecked wrong pass 14");
is(g.checked, (n == 1 && (group1.indexOf(g) == 1 ||
group1.indexOf(g) == 0)) ||
(n == 2 && group2.indexOf(g) == 0),
"group" + n + "[" + window["group"+n].indexOf(g) +
"] checked wrong pass 14");
}
}
group2[1].defaultChecked = true;
for each (let n in [1, 2, 3]) {
for each (let g in window["group"+n]) {
is(g.defaultChecked, (n == 1 && (group1.indexOf(g) == 0 ||
group1.indexOf(g) == 2)) ||
(n == 2 && group2.indexOf(g) == 1),
"group" + n + "[" + window["group"+n].indexOf(g) +
"] defaultChecked wrong pass 15");
is(g.checked, (n == 1 && (group1.indexOf(g) == 1 ||
group1.indexOf(g) == 0)) ||
(n == 2 && group2.indexOf(g) == 0),
"group" + n + "[" + window["group"+n].indexOf(g) +
"] checked wrong pass 15");
}
}
cleanup();
}
</script>
</pre>
</body>
</html>