mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-26 14:18:48 +00:00
f579c98b65
- 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)
359 lines
11 KiB
HTML
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>
|
|
|