This commit is contained in:
Boris Zbarsky 2008-08-25 13:21:28 -04:00
Родитель b721f72a42
Коммит 4c0efcaf45
3 изменённых файлов: 138 добавлений и 0 удалений

Просмотреть файл

@ -44,6 +44,8 @@ include $(DEPTH)/config/autoconf.mk
include $(topsrcdir)/config/rules.mk
_TEST_FILES = \
test_bug113934.xul \
bug113934_window.xul \
test_bug364461.xul \
bug364461_window.xul \
test_bug396519.xul \

Просмотреть файл

@ -0,0 +1,103 @@
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<window title="Mozilla Bug 113934" onload="doTheTest()"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<hbox>
<vbox>
<browser type="content" id="f1" width="300" height="200"/>
<browser type="content" id="f2" width="300" height="200"/>
</vbox>
<vbox>
<browser type="content" id="f3" width="30" height="200"/>
</vbox>
<spacer flex="1"/>
</hbox>
<!-- test code goes here -->
<script type="application/javascript"><![CDATA[
var imports = [ "SimpleTest", "is", "isnot", "ok", "snapshotWindow",
"compareSnapshots" ];
for each (var import in imports) {
window[import] = window.opener.wrappedJSObject[import];
}
function $(id) {
return document.getElementById(id);
}
/** Test for Bug 113934 **/
var doc1 =
"data:text/html,<html><body onbeforeunload='document.documentElement.textContent = \"\"' onunload='document.documentElement.textContent = \"\"' onpagehide='document.documentElement.textContent = \"\"'>This is a test</body></html>";
var doc2 = "data:text/html,<html><body>This is a second test</body></html>";
$("f1").setAttribute("src", doc1);
$("f2").setAttribute("src", doc2);
$("f3").setAttribute("src", doc2);
function doTheTest() {
var s1 = snapshotWindow($("f1").contentWindow);
var s2 = snapshotWindow($("f2").contentWindow);
var s3 = snapshotWindow($("f3").contentWindow);
ok(!compareSnapshots(s2, s3)[0],
"Should look different due to different sizing");
function getDOM(id) {
return $(id).contentDocument.documentElement.innerHTML;
}
var dom1 = getDOM("f1");
var dom2 = getDOM("f2");
$("f2").contentDocument.body.textContent = "Modified the text";
var dom2star = getDOM("f2");
isnot(dom2, dom2star, "We changed the DOM!");
$("f1").swapDocShells($("f2"));
// now we have doms 2*, 1, 2 in the frames
is(getDOM("f1"), dom2star, "Shouldn't have changed the DOM on swap");
is(getDOM("f2"), dom1, "Shouldn't have fired event handlers");
var strs = { "f1": "", "f3" : "" };
function attachListener(node, type) {
var listener = function(e) {
if (strs[node.id]) strs[node.id] += " ";
strs[node.id] += node.id + ".page" + type;
}
node.addEventListener("page" + type, listener, false);
listener.detach = function() {
node.removeEventListener("page" + type, listener, false);
}
return listener;
}
var l1 = attachListener($("f1"), "show");
var l2 = attachListener($("f1"), "hide");
var l3 = attachListener($("f3"), "show");
var l4 = attachListener($("f3"), "hide");
$("f1").swapDocShells($("f3"));
// now we have DOMs 2, 1, 2* in the frames
l1.detach();
l2.detach();
l3.detach();
l4.detach();
var s1_new = snapshotWindow($("f1").contentWindow);
var [same, first, second] = compareSnapshots(s1_new, s2);
ok(same, "Should reflow on swap", "Expected " + second + " but got " + first);
is(strs["f1"], "f1.pagehide f1.pageshow");
is(strs["f3"], "f3.pagehide f3.pageshow");
window.close();
SimpleTest.finish();
}
]]></script>
</window>

Просмотреть файл

@ -0,0 +1,33 @@
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=113934
-->
<window title="Mozilla Bug 113934"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript"
src="chrome://mochikit/content/MochiKit/packed.js"></script>
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/WindowSnapshot.js"></script>
<!-- test results are displayed in the html:body -->
<body xmlns="http://www.w3.org/1999/xhtml">
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=113934"
target="_blank">Mozilla Bug 396519</a>
</body>
<!-- test code goes here -->
<script type="application/javascript"><![CDATA[
SimpleTest.waitForExplicitFinish();
addLoadEvent(function() {
window.open("bug113934_window.xul", "bug113934",
"chrome,width=800,height=800");
});
]]></script>
</window>