import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo

This commit is contained in:
Roy Tam 2018-01-19 03:59:58 +08:00
commit dcd9973243
150858 changed files with 23884658 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

View file

@ -0,0 +1,45 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Test for Bug 1041200</title>
<script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/WindowSnapshot.js"></script>
<script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/paint_listener.js"></script>
</head>
<body>
<iframe style="width:700px; height:500px; margin-top:200px;" id="ourFrame"></iframe>
<script>
var SpecialPowers = window.opener.wrappedJSObject.SpecialPowers;
var SimpleTest = window.opener.wrappedJSObject.SimpleTest;
var ok = window.opener.wrappedJSObject.ok;
var info = window.opener.wrappedJSObject.info;
var viewer =
SpecialPowers.wrap(ourFrame).contentWindow
.QueryInterface(SpecialPowers.Ci.nsIInterfaceRequestor)
.getInterface(SpecialPowers.Ci.nsIWebNavigation)
.QueryInterface(SpecialPowers.Ci.nsIDocShell)
.contentViewer;
viewer.fullZoom = 2;
SimpleTest.waitForExplicitFinish();
window.onload = function() {
window.waitForAllPaintsFlushed(function () {
// Supply random key to ensure load actually happens
ourFrame.src = "data:text/html,<body onload='parent.childLoaded()' style='background:lime'><p>Hello<p>Hello<p>Hello<p>Hello<p>Hello<p>" + Math.random();
}, document.getElementById("ourFrame").contentDocument);
};
window.childLoaded = function() {
setTimeout(function() {
window.waitForAllPaintsFlushed(function(x1, y1, x2, y2) {
ok(x2 - x1 >= 700 && y2 - y1 >= 500,
"expected to see invalidate of entire frame, got " + [x1,y1,x2,y2].join(','));
SimpleTest.finish();
window.close();
});
}, 0);
};
</script>

View file

@ -0,0 +1,214 @@
<?xml version="1.0"?>
<RDF:RDF xmlns:NS1="http://sitedelta.schierla.de/SD-rdf#"
xmlns:NC="http://home.netscape.com/NC-rdf#"
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=19&amp;btnG=Suche&amp;meta="
NC:name="19 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Bag RDF:about="urn:root:bag">
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=1&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=2&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=3&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=4&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=5&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=6&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=7&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=8&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=9&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=10&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=11&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=12&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=13&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=14&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=15&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=16&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=17&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=18&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=19&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=20&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=21&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=22&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=23&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=24&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=25&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=26&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=27&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=28&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=29&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=30&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=31&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=32&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=33&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=34&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=35&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=36&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=37&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=38&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=39&amp;btnG=Suche&amp;meta="/>
<RDF:li RDF:resource="http://www.google.de/search?hl=de&amp;q=40&amp;btnG=Suche&amp;meta="/>
</RDF:Bag>
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=2&amp;btnG=Suche&amp;meta="
NC:name="2 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=12&amp;btnG=Suche&amp;meta="
NC:name="12 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=5&amp;btnG=Suche&amp;meta="
NC:name="5 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=6&amp;btnG=Suche&amp;meta="
NC:name="6 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=22&amp;btnG=Suche&amp;meta="
NC:name="22 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=17&amp;btnG=Suche&amp;meta="
NC:name="17 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="urn:root">
<NC:links RDF:resource="urn:root:bag"/>
</RDF:Description>
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=8&amp;btnG=Suche&amp;meta="
NC:name="8 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=1&amp;btnG=Suche&amp;meta="
NC:name="1 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=16&amp;btnG=Suche&amp;meta="
NC:name="16 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=21&amp;btnG=Suche&amp;meta="
NC:name="21 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=20&amp;btnG=Suche&amp;meta="
NC:name="20 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=9&amp;btnG=Suche&amp;meta="
NC:name="9 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=11&amp;btnG=Suche&amp;meta="
NC:name="11 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=14&amp;btnG=Suche&amp;meta="
NC:name="14 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=23&amp;btnG=Suche&amp;meta="
NC:name="23 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=24&amp;btnG=Suche&amp;meta="
NC:name="24 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=18&amp;btnG=Suche&amp;meta="
NC:name="18 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www0.pafnet.de/user/322033"
NC:name="pafnet - You2_xD"
NS1:nextScan="1243707104073"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=3&amp;btnG=Suche&amp;meta="
NC:name="3 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=7&amp;btnG=Suche&amp;meta="
NC:name="7 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=15&amp;btnG=Suche&amp;meta="
NC:name="15 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=4&amp;btnG=Suche&amp;meta="
NC:name="4 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=13&amp;btnG=Suche&amp;meta="
NC:name="13 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=10&amp;btnG=Suche&amp;meta="
NC:name="10 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=25&amp;btnG=Suche&amp;meta="
NC:name="25 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=26&amp;btnG=Suche&amp;meta="
NC:name="26 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=27&amp;btnG=Suche&amp;meta="
NC:name="27 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=28&amp;btnG=Suche&amp;meta="
NC:name="28 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=29&amp;btnG=Suche&amp;meta="
NC:name="29 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=30&amp;btnG=Suche&amp;meta="
NC:name="30 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=31&amp;btnG=Suche&amp;meta="
NC:name="31 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=32&amp;btnG=Suche&amp;meta="
NC:name="32 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=33&amp;btnG=Suche&amp;meta="
NC:name="33 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=34&amp;btnG=Suche&amp;meta="
NC:name="34 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=35&amp;btnG=Suche&amp;meta="
NC:name="35 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=36&amp;btnG=Suche&amp;meta="
NC:name="36 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=37&amp;btnG=Suche&amp;meta="
NC:name="37 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=38&amp;btnG=Suche&amp;meta="
NC:name="38 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=39&amp;btnG=Suche&amp;meta="
NC:name="39 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
<RDF:Description RDF:about="http://www.google.de/search?hl=de&amp;q=40&amp;btnG=Suche&amp;meta="
NC:name="40 - Google-Suche"
NS1:nextScan="0"
NS1:status="0" />
</RDF:RDF>

View file

@ -0,0 +1,4 @@
<script>
var gKeyDownChild = 0, gKeyPressChild = 0, gKeyUpChild = 0;
</script>
<input id='i4' onkeydown="gKeyDownChild++" onkeypress="gKeyPressChild++" onkeyup="gKeyUpChild++; this.parentNode.removeChild(this);">

View file

@ -0,0 +1,49 @@
[DEFAULT]
skip-if = os == 'android'
support-files =
animated.gif
blue-32x32.png
bug495648.rdf
bug551434_childframe.html
chrome_content_integration_window.xul
chrome_over_plugin_window.xul
default_background_window.xul
dialog_with_positioning_window.xul
no_clip_iframe_subdoc.html
no_clip_iframe_window.xul
printpreview_bug396024_helper.xul
printpreview_bug482976_helper.xul
printpreview_helper.xul
file_bug1018265.xul
[test_bug396367-1.html]
[test_bug396367-2.html]
[test_bug420499.xul]
[test_bug458898.html]
[test_bug495648.xul]
[test_bug504311.xul]
[test_bug514660.xul]
[test_bug533845.xul]
[test_bug551434.html]
[test_bug708062.html]
[test_bug812817.xul]
[test_bug847890_paintFlashing.html]
[test_bug1018265.xul]
[test_bug1041200.xul]
support-files=bug1041200_window.html
[test_chrome_content_integration.xul]
[test_chrome_over_plugin.xul]
[test_default_background.xul]
[test_dialog_with_positioning.html]
tags = openwindow
[test_fixed_bg_scrolling_repaints.html]
[test_leaf_layers_partition_browser_window.xul]
skip-if = (!debug) || (toolkit == "cocoa") || (os == "linux") # Disabled on Mac and Linux because of Bug 992311
[test_no_clip_iframe.xul]
[test_prerendered_transforms.html]
[test_printpreview.xul]
skip-if = os == "linux" && bits == 32 # Disabled on Linux32 for bug 1278957
[test_printpreview_bug396024.xul]
[test_printpreview_bug482976.xul]
[test_scrolling_repaints.html]
[test_will_change.html]

View file

@ -0,0 +1,45 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<window title="Content/chrome integration subwindow"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTests()"
style="background:black; -moz-appearance:none;">
<script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/WindowSnapshot.js"></script>
<stack style="height:300px; width:200px;">
<!-- the bottom 100px is a strip of black that should be vixible through the content iframe -->
<vbox style="background:pink; border-bottom:100px solid black"/>
<!-- the middle 100px is a strip of black in the content iframe -->
<!-- the bottom 100px of the iframe is transparent, the top 100px is yellow -->
<iframe type="content" style="border:none;"
transparent="transparent"
src="data:text/html,&lt;div style='position:absolute;left:0;top:0;width:100%;height:100px;background:yellow;border-bottom:100px solid black'&gt;"/>
<!-- the top 100px is a strip of black above the content iframe -->
<vbox style="border-top:100px solid black;"/>
</stack>
<script type="application/javascript">
<![CDATA[
var imports = [ "SimpleTest", "is", "isnot", "ok", "SpecialPowers" ];
for (var name of imports) {
window[name] = window.opener.wrappedJSObject[name];
}
function runTests() {
var testCanvas = snapshotWindow(window);
var refCanvas = snapshotWindow(window);
var ctx = refCanvas.getContext('2d');
ctx.fillStyle = "black";
ctx.fillRect(0, 0, refCanvas.width, refCanvas.height);
var comparison = compareSnapshots(testCanvas, refCanvas, true);
ok(comparison[0], "Rendering OK, got " + comparison[1] + ", expected " + comparison[2]);
var tester = window.SimpleTest;
window.close();
tester.finish();
}
]]>
</script>
</window>

View file

@ -0,0 +1,62 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<window title="Content/chrome integration subwindow"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTests()">\
<!-- We're mainly testing that a) translucent chrome elements cause the plugin to be clipped away and
b) translucent content elements do NOT cause the plugin to be clipped away -->
<stack style="height:100px; width:150px;">
<iframe type="content" style="border:none;" id="f"
src="data:text/html,&lt;embed id='e' type='application/x-test' wmode='window'
style='position:absolute;left:0;top:0;width:100px;height:100px'&gt;&lt;/embed&gt;
&lt;div style='position:absolute;left:0;top:80px;width:100px;height:10px;background:rgba(0,0,128,0.5)'&gt;&lt;/div&gt;
&lt;div style='position:absolute;left:0;top:90px;width:100px;height:10px;background:blue'&gt;&lt;/div&gt;
"/>
<vbox>
<vbox style="height:25px; background:yellow;"/> <!-- plugin should be covered here -->
<vbox style="height:25px; background:rgba(0,128,0,0.5);"/> <!-- plugin should be covered here -->
<vbox style="height:50px;"/> <!-- plugin should be visible here -->
</vbox>
</stack>
<script type="application/javascript">
<![CDATA[
var imports = [ "SimpleTest", "is", "isnot", "ok", "todo" ];
for (var name of imports) {
window[name] = window.opener.wrappedJSObject[name];
}
var plugin;
function waitForPaint() {
if (plugin.getPaintCount() < 1) {
setTimeout(waitForPaint, 0);
return;
}
if (plugin.hasWidget()) {
is(plugin.getClipRegionRectCount(), 1, "plugin clip rect count");
var left = plugin.getEdge(0);
var top = plugin.getEdge(1);
is(plugin.getClipRegionRectEdge(0,0) - left, 0, "plugin clip rect left");
// our two vboxes with backgrounds should cause the top of the plugin to be clipped
is(plugin.getClipRegionRectEdge(0,1) - top, 50, "plugin clip rect top");
is(plugin.getClipRegionRectEdge(0,2) - left, 100, "plugin clip rect right");
// of the two content DIVs, the first one should not cause the plugin to be clipped because
// it's transparent. The second one should cause the plugin to be clipped.
is(plugin.getClipRegionRectEdge(0,3) - top, 90, "plugin clip rect bottom");
} else {
todo(false, "Test only tests windowed plugins");
}
var tester = window.SimpleTest;
window.close();
tester.finish();
}
function runTests() {
plugin = document.getElementById("f").contentDocument.getElementById("e").wrappedJSObject;
waitForPaint();
}
]]>
</script>
</window>

View file

@ -0,0 +1,60 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTests()">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript"
src="chrome://mochikit/content/tests/SimpleTest/WindowSnapshot.js"></script>
<iframe type="content" id="f" src="about:blank" style="border:1px solid black;"/>
<script type="application/javascript">
<![CDATA[
SimpleTest.waitForExplicitFinish();
var imports = [ "SimpleTest", "is", "isnot", "ok" ];
for (var name of imports) {
window[name] = window.opener.wrappedJSObject[name];
}
function snapshot(win) {
var el = document.createElementNS("http://www.w3.org/1999/xhtml", "canvas");
el.width = win.innerWidth;
el.height = win.innerHeight;
var ctx = el.getContext("2d");
ctx.drawWindow(win, 0, 0,
win.innerWidth, win.innerHeight,
"rgba(0,0,0,0)", 0);
return el;
}
var color = '#2468AC';
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch);
prefs.setCharPref('browser.display.background_color', color);
function runTests() {
var f = document.getElementById("f");
var testCanvas = snapshot(f.contentWindow);
prefs.clearUserPref('browser.display.background_color');
var refCanvas = snapshot(f.contentWindow);
var ctx = refCanvas.getContext('2d');
ctx.fillStyle = color;
ctx.fillRect(0, 0, refCanvas.width, refCanvas.height);
var comparison = compareSnapshots(testCanvas, refCanvas, true);
ok(comparison[0], "Rendering OK, got " + comparison[1] + ", expected " + comparison[2]);
var tester = window.SimpleTest;
window.close();
tester.finish();
}
]]>
</script>
</window>

View file

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="setTimeout(runTest, 0)">
<vbox>
<text value="powered by example.com" style="padding: 16px;"/>
</vbox>
<hbox id="t" style="position: fixed; right: 16px; bottom: 16px;">
<button label="OK"/>
</hbox>
<script><![CDATA[
var SimpleTest = window.opener.wrappedJSObject.SimpleTest;
var SpecialPowers = window.opener.wrappedJSObject.SpecialPowers;
var is = window.opener.wrappedJSObject.is;
var ok = window.opener.wrappedJSObject.ok;
// We run this off a setTimeout from onload, because the XUL window
// only does its intrinsic-height layout after the load event has
// finished
function runTest() {
var t = document.getElementById("t");
var tBottom = t.getBoundingClientRect().bottom;
is(tBottom, document.documentElement.getBoundingClientRect().bottom - 16,
"check fixed-pos element t bottom positioned correctly");
ok(tBottom < 200, "fixed-pos element t bottom must be sane, less than 200 (got " + tBottom + ")");
window.close();
SimpleTest.finish();
}
]]></script>
</window>

View file

@ -0,0 +1,51 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet type="text/css" href="/tests/SimpleTest/test.css"?>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=1018265
-->
<window title="Mozilla Bug 1018265"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="setTimeout(run, 0);">
<!-- test code goes here -->
<script type="application/javascript">
<![CDATA[
/** Test for Bug 1018265 **/
var testcontent = null;
function run() {
testcontent = document.getElementById("testcontent");
shouldHaveTwoNonHiddenContentViewers();
testcontent.setAttribute("src", "foobarpage");
setTimeout(errorPageLoaded, 2500)
}
function errorPageLoaded() {
testcontent.addEventListener("pageshow", didGoBack, true);
setTimeout("testcontent.contentWindow.history.back();", 0);
}
function didGoBack(e) {
testcontent.removeEventListener("pageshow", didGoBack, true);
shouldHaveTwoNonHiddenContentViewers();
opener.done();
window.close();
}
function getContentViewer(win) {
return win.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIDocShell).contentViewer;
}
function shouldHaveTwoNonHiddenContentViewers() {
opener.is(getContentViewer(testcontent.contentWindow).isHidden, false, "Top level ContentViewer should not be hidden.");
opener.is(getContentViewer(testcontent.contentWindow.frames[0]).isHidden, false, " Iframe's ContentViewer should not be hidden.");
}
]]>
</script>
<browser type="content" id="testcontent" flex="1" src="data:text/html,&lt;iframe&gt;&lt;/iframe&gt;"/>
</window>

View file

@ -0,0 +1,7 @@
<!DOCTYPE HTML>
<html>
<body style="margin:0; background:lime;">
<div id="d" style="position:relative; top:-50px; width:150px; height:250px; background:yellow;"></div>
<div id="p" style="margin-top:-50px; width:150px; height:50px;"></div>
</body>
</html>

View file

@ -0,0 +1,96 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="runTests()">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript"
src="chrome://mochikit/content/tests/SimpleTest/WindowSnapshot.js"></script>
<script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/paint_listener.js"></script>
<div id="container" xmlns="http://www.w3.org/1999/xhtml" style="height:400px; overflow:auto; background:gray">
<div style="height:0">
<iframe type="content" id="f" src="no_clip_iframe_subdoc.html"
style="margin-top:50px; border:1px solid black; width:100px; height:100px;"/>
</div>
<div id="ref" style="background:gray;">
<div style="border:1px solid black; margin-top:50px; width:100px; height:100px;">
<div id="ref-d" style="background:lime; height:250px; width:150px;">
<div style="position:relative; top:-50px; width:150px; height:100%; background:yellow;"/>
</div>
</div>
</div>
</div>
<vbox flex="1"/>
<script type="application/javascript">
<![CDATA[
var imports = [ "SimpleTest", "is", "isnot", "ok", "onerror" ];
for (var name of imports) {
window[name] = window.opener.wrappedJSObject[name];
}
SimpleTest.waitForExplicitFinish();
var Ci = Components.interfaces;
var frame = document.getElementById("f");
var fl = frame.QueryInterface(Ci.nsIFrameLoaderOwner).frameLoader;
is(fl.clipSubdocument, true, "clipSubdocument should default to true");
fl.clipSubdocument = false;
is(fl.clipSubdocument, false, "clipSubdocument should have been set to false");
function runTests() {
var ref = document.getElementById("ref");
frame.contentWindow.scrollTo(0,0);
ref.style.visibility = "hidden";
var testCanvas = snapshotWindow(window);
ref.style.visibility = "";
var refCanvas = snapshotWindow(window);
var comparison = compareSnapshots(testCanvas, refCanvas, true);
ok(comparison[0], "Basic overflow drawing; got " + comparison[1] + ", expected " + comparison[2]);
document.getElementById("container").style.height = "200px";
ref.style.visibility = "hidden";
testCanvas = snapshotWindow(window);
ref.style.visibility = "";
refCanvas = snapshotWindow(window);
comparison = compareSnapshots(testCanvas, refCanvas, true);
ok(comparison[0], "Drawing with vertical scrollbar to show overflow area computation; got " +
comparison[1] + ", expected " + comparison[2]);
frame.contentDocument.getElementById("d").style.height = "350px";
document.getElementById("ref-d").style.height = "350px";
ref.style.visibility = "hidden";
testCanvas = snapshotWindow(window);
ref.style.visibility = "";
refCanvas = snapshotWindow(window);
comparison = compareSnapshots(testCanvas, refCanvas, true);
ok(comparison[0], "testing dynamic overflow area change affecting scrollbar; got " +
comparison[1] + ", expected " + comparison[2]);
// Now do invalidation tests
ref.style.visibility = "hidden";
document.getElementById("container").style.height = "400px";
waitForAllPaintsFlushed(function() {
frame.contentWindow.scrollTo(0,80);
waitForAllPaintsFlushed(function(x1, y1, x2, y2) {
ok(x1 <= 1 && x2 >= 151 && y1 <= 0 && y2 >= 400,
"Entire scrolled region is painted: " + x1 + "," + y1 + "," + x2 + "," + y2);
frame.contentDocument.getElementById("p").style.background = "cyan";
waitForAllPaintsFlushed(function(x1, y1, x2, y2) {
ok(x1 <= 1 && x2 >= 151 && y1 <= 271 && y2 >= 320,
"Entire updated region is painted: " + x1 + "," + y1 + "," + x2 + "," + y2);
var tester = window.SimpleTest;
window.close();
tester.finish();
}, frame.contentDocument);
});
});
}
]]>
</script>
</window>

View file

@ -0,0 +1,123 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=396024
-->
<window title="Mozilla Bug 396024" onload="run()"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<iframe id="i" src="about:blank" type="content"></iframe>
<iframe src="about:blank" type="content"></iframe>
<script type="application/javascript">
<![CDATA[
var is = window.opener.wrappedJSObject.is;
var ok = window.opener.wrappedJSObject.ok;
var todo = window.opener.wrappedJSObject.todo;
var SimpleTest = window.opener.wrappedJSObject.SimpleTest;
var gWbp;
function printpreview() {
gWbp = window.frames[1].QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIWebBrowserPrint);
var listener = {
onLocationChange: function(webProgress, request, location, flags) { },
onProgressChange: function(webProgress, request, curSelfProgress,
maxSelfProgress, curTotalProgress,
maxTotalProgress) { },
onSecurityChange: function(webProgress, request, state) { },
onStateChange: function(webProgress, request, stateFlags, status) { },
onStatusChange: function(webProgress, request, status, message) { },
QueryInterface: function(iid) {
if (iid.equals(Components.interfaces.nsIWebProgressListener) ||
iid.equals(Components.interfaces.nsISupportsWeakReference))
return this;
throw Components.results.NS_NOINTERFACE;
}
}
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch);
prefs.setBoolPref('print.show_print_progress', false);
//XXX I would have thought this would work, instead I'm forced to use prefs service
gWbp.globalPrintSettings.showPrintProgress = false;
gWbp.printPreview(gWbp.globalPrintSettings, window.frames[0], listener);
prefs.clearUserPref('print.show_print_progress');
}
function exitprintpreview() {
window.frames[1].QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIWebBrowserPrint).exitPrintPreview();
}
function finish() {
SimpleTest.finish();
window.close();
}
function run()
{
/** Test for Bug 396024 **/
var printService = Components.classes["@mozilla.org/gfx/printsettings-service;1"]
.getService(Components.interfaces.nsIPrintSettingsService);
try {
Components.classes["@mozilla.org/gfx/printerenumerator;1"]
.getService(Components.interfaces.nsIPrinterEnumerator);
} catch(e) {
todo(false, "Test skipped on MacOSX, as the print preview code doesn't work there");
finish();
return;
}
if (printService.defaultPrinterName != '') {
printpreview();
ok(gWbp.doingPrintPreview, "Should be doing print preview");
exitprintpreview();
ok(!gWbp.doingPrintPreview, "Should not be doing print preview anymore1");
printpreview();
setTimeout(run2, 0)
} else {
todo(false, "No printer seems installed on this machine, that is necessary for this test");
finish();
}
}
function run2() {
var loadhandler = function() {
document.getElementById("i").removeEventListener("load", arguments.callee, true);
setTimeout(run3, 0);
};
document.getElementById("i").addEventListener("load", loadhandler, true);
window.frames[0].location.reload();
}
function run3() {
gWbp = window.frames[1].QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIWebBrowserPrint);
ok(gWbp.doingPrintPreview, "Should be doing print preview");
exitprintpreview();
setTimeout(run4, 0);
}
function run4() {
var i = document.getElementById("i");
var x = i.parentNode.removeChild(i);
var loadhandler = function() {
document.getElementById("i").removeEventListener("load", loadhandler, true);
setTimeout(run5, 0);
};
x.addEventListener("load", loadhandler, true);
document.documentElement.getBoundingClientRect();
document.documentElement.appendChild(x);
gWbp = window.frames[1].QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIWebBrowserPrint);
ok(!gWbp.doingPrintPreview, "Should not be doing print preview anymore2");
}
function run5() {
//XXX this shouldn't be necessary, see bug 405555
printpreview();
exitprintpreview();
finish(); //should not have crashed after all of this
}
]]></script>
</window>

View file

@ -0,0 +1,82 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=482976
-->
<window title="Mozilla Bug 482976" onload="run1()"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<iframe src="about:blank" type="content"></iframe>
<iframe src="about:blank" type="content"></iframe>
<script type="application/javascript">
<![CDATA[
var is = window.opener.wrappedJSObject.is;
var ok = window.opener.wrappedJSObject.ok;
var todo = window.opener.wrappedJSObject.todo;
var SimpleTest = window.opener.wrappedJSObject.SimpleTest;
var gWbp;
function printpreview() {
gWbp = window.frames[1].QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIWebBrowserPrint);
var listener = {
onLocationChange: function(webProgress, request, location, flags) { },
onProgressChange: function(webProgress, request, curSelfProgress,
maxSelfProgress, curTotalProgress,
maxTotalProgress) { },
onSecurityChange: function(webProgress, request, state) { },
onStateChange: function(webProgress, request, stateFlags, status) { },
onStatusChange: function(webProgress, request, status, message) { },
QueryInterface: function(iid) {
if (iid.equals(Components.interfaces.nsIWebProgessListener) ||
iid.equals(Components.interfaces.nsISupportsWeakReference))
return this;
throw Components.results.NS_NOINTERFACE;
}
}
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch);
prefs.setBoolPref('print.show_print_progress', false);
//XXX I would have thought this would work, instead I'm forced to use prefs service
gWbp.globalPrintSettings.showPrintProgress = false;
gWbp.printPreview(gWbp.globalPrintSettings, window.frames[0], listener);
prefs.clearUserPref('print.show_print_progress');
}
function exitprintpreview() {
window.frames[1].QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIWebBrowserPrint).exitPrintPreview();
}
function finish() {
SimpleTest.finish();
window.close();
}
function run1()
{
/** Test for Bug 482976 **/
var printService = Components.classes["@mozilla.org/gfx/printsettings-service;1"]
.getService(Components.interfaces.nsIPrintSettingsService);
try {
Components.classes["@mozilla.org/gfx/printerenumerator;1"]
.getService(Components.interfaces.nsIPrinterEnumerator);
} catch(e) {
todo(false, "Test skipped on MacOSX, as the print preview code doesn't work there");
finish();
return;
}
if (printService.defaultPrinterName != '') {
printpreview();
ok(gWbp.doingPrintPreview, "Should be doing print preview");
exitprintpreview();
ok(!gWbp.doingPrintPreview, "Should not be doing print preview anymore");
} else {
todo(false, "No printer seems installed on this machine, that is necessary for this test");
}
finish();
}
]]></script>
</window>

View file

@ -0,0 +1,274 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<window onload="runTests()"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<iframe height="200" width="600" type="content"></iframe>
<iframe height="200" width="600" type="content"></iframe>
<script type="application/javascript">
<![CDATA[
var is = window.opener.wrappedJSObject.is;
var isnot = window.opener.wrappedJSObject.isnot;
var ok = window.opener.wrappedJSObject.ok;
var todo = window.opener.wrappedJSObject.todo;
var SimpleTest = window.opener.wrappedJSObject.SimpleTest;
var gWbp;
var ctx1;
var ctx2;
var counter = 0;
var file = Components.classes["@mozilla.org/file/directory_service;1"]
.getService(Components.interfaces.nsIProperties)
.get("TmpD", Components.interfaces.nsILocalFile);
filePath = file.path;
function printpreview() {
gWbp = window.frames[1].QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIWebBrowserPrint);
var listener = {
onLocationChange: function(webProgress, request, location, flags) { },
onProgressChange: function(webProgress, request, curSelfProgress,
maxSelfProgress, curTotalProgress,
maxTotalProgress) { },
onSecurityChange: function(webProgress, request, state) { },
onStateChange: function(webProgress, request, stateFlags, status) { },
onStatusChange: function(webProgress, request, status, message) { },
QueryInterface: function(iid) {
if (iid.equals(Components.interfaces.nsIWebProgressListener) ||
iid.equals(Components.interfaces.nsISupportsWeakReference))
return this;
throw Components.results.NS_NOINTERFACE;
}
}
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch);
prefs.setBoolPref('print.show_print_progress', false);
//XXX I would have thought this would work, instead I'm forced to use prefs service
gWbp.globalPrintSettings.showPrintProgress = false;
var before = 0;
var after = 0;
function beforeprint() { ++before; }
function afterprint() { ++after; }
window.frames[0].addEventListener("beforeprint", beforeprint, true);
window.frames[0].addEventListener("afterprint", afterprint, true);
gWbp.printPreview(gWbp.globalPrintSettings, window.frames[0], listener);
is(before, 1, "Should have called beforeprint listener!");
is(after, 1, "Should have called afterprint listener!");
window.frames[0].removeEventListener("beforeprint", beforeprint, true);
window.frames[0].removeEventListener("afterprint", afterprint, true);
prefs.clearUserPref('print.show_print_progress');
}
function exitprintpreview() {
window.frames[1].QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIWebBrowserPrint).exitPrintPreview();
}
function finish() {
SimpleTest.finish();
window.close();
}
function runTests()
{
var printService = Components.classes["@mozilla.org/gfx/printsettings-service;1"]
.getService(Components.interfaces.nsIPrintSettingsService);
try {
Components.classes["@mozilla.org/gfx/printerenumerator;1"]
.getService(Components.interfaces.nsIPrinterEnumerator);
} catch(e) {
todo(false, "Test skipped on MacOSX, as the print preview code doesn't work there");
finish();
return;
}
if (printService.defaultPrinterName != '') {
startTest1();
} else {
todo(false, "No printer seems installed on this machine, that is necessary for this test");
finish();
}
}
function compareCanvases() {
return window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIDOMWindowUtils)
.compareCanvases(document.getElementsByTagName("canvas")[0],
document.getElementsByTagName("canvas")[1],
{}) == 0;
}
function addHTMLContent(parent) {
var n = parent.ownerDocument.createElement("div");
parent.appendChild(n);
var s = "<iframe width='500' height='40' src='data:text/plain,ThisIsAnIframeCreatedDuringPrintPreview'></iframe>";
s += "<table>";
for (var i = 1; i < 501; ++i) {
s += "<tr><td>Cell A" + i + "</td><td>Cell B" + i + "</td><td>Cell C" + i + "</td></tr>";
}
s += "</table>";
n.innerHTML = s;
}
function startTest1() {
ctx1 = document.getElementsByTagName("canvas")[0].getContext("2d");
ctx2 = document.getElementsByTagName("canvas")[1].getContext("2d");
window.frames[0].document.body.innerHTML = "<div> </div><div>" + counter + " timers</div><div> </div>";
// Note this timeout is needed so that we can check that timers run
// after print preview, but not during it.
window.frames[0].wrappedJSObject.counter = counter;
window.frames[0].counterTimeout = "document.body.firstChild.nextSibling.innerHTML = ++counter + ' timers';" +
"window.setTimeout(counterTimeout, 0);";
window.frames[0].setTimeout(window.frames[0].counterTimeout, 0);
window.frames[0].document.body.firstChild.innerHTML = "Print preview";
printpreview();
ctx1.drawWindow(window.frames[1], 0, 0, 400, 400, "rgb(256,256,256)");
window.frames[0].document.body.firstChild.innerHTML = "Galley presentation";
// Add some elements.
addHTMLContent(window.frames[0].document.body.lastChild);
// Delete them.
window.frames[0].document.body.lastChild.innerHTML = "";
// And readd.
addHTMLContent(window.frames[0].document.body.lastChild);
setTimeout(finalizeTest1, 1000);
}
function finalizeTest1() {
ctx2.drawWindow(window.frames[1], 0, 0, 400, 400, "rgb(256,256,256)");
exitprintpreview();
ok(compareCanvases(), "Canvas should be the same!");
counter = window.frames[0].counter;
// This timeout is needed so that we can check that timers do run after
// print preview.
setTimeout(runTest2, 1000);
}
function runTest2() {
isnot(window.frames[0].document.body.firstChild.nextSibling.textContent, "0 timers", "Timers should have run!");
isnot(window.frames[0].counter, 0, "Timers should have run!");
counter = window.frames[0].counter;
window.frames[0].counterTimeout = "";
setTimeout(runTest3, 0);
}
var elementIndex = 0;
var compareEmptyElement = true;
var emptyFormElements =
["<input type='text'>",
"<input type='password'>",
"<input type='file'>",
"<input type='button'>",
"<input type='submit'>",
"<input type='reset'>",
"<input type='checkbox'>",
"<input type='radio'>",
"<select></select>",
"<select size='5'></select>",
"<textarea></textarea>"];
var formElements =
["<input type='text' value='text'>",
"<input type='password' value='password'>",
"<input type='file' value='" + filePath + "'>",
"<input type='button' value='button'>",
"<input type='submit' value='submit button'>",
"<input type='reset' value='reset button'>",
"<input type='checkbox' checked>",
"<input type='radio' checked>",
"<select><option>option1</option></select>",
"<select size='5'><option>1</option><option>2</option><option>3</option></select>",
"<textarea value='textarea'>textarea</textarea>"];
function runTest3() {
if (compareEmptyElement) {
var currentIndex = elementIndex;
++elementIndex;
if (elementIndex >= emptyFormElements.length) {
elementIndex = 0;
compareEmptyElement = false;
}
compareFormElementPrint(emptyFormElements[currentIndex], emptyFormElements[currentIndex], true);
return;
} else if (elementIndex < emptyFormElements.length) {
var currentIndex = elementIndex;
++elementIndex;
compareFormElementPrint(emptyFormElements[currentIndex], formElements[currentIndex], false);
return;
}
setTimeout(runTest4, 0)
}
function compareFormElementPrint(el1, el2, equals) {
window.frames[0].document.body.innerHTML = el1;
window.frames[0].document.body.firstChild.value =
window.frames[0].document.body.firstChild.getAttribute('value');
printpreview();
ctx1.drawWindow(window.frames[1], 0, 0, 400, 400, "rgb(256,256,256)");
exitprintpreview();
window.frames[0].document.body.innerHTML = el2;
window.frames[0].document.body.firstChild.value =
window.frames[0].document.body.firstChild.getAttribute('value');
printpreview();
ctx2.drawWindow(window.frames[1], 0, 0, 400, 400, "rgb(256,256,256)");
exitprintpreview();
is(compareCanvases(), equals,
"Comparing print preview didn't succeed [" + el1 + " : " + el2 + "]");
setTimeout(runTest3, 100);
}
// This is a crash test for bug 539060.
function runTest4() {
window.frames[0].document.body.innerHTML =
"<iframe style='display: none;' src='data:text/html,<iframe>'></iframe>";
setTimeout(runTest4end, 500);
}
function runTest4end() {
printpreview();
exitprintpreview();
runTest5();
}
// This is a crash test for bug 595337
function runTest5() {
window.frames[0].document.body.innerHTML =
'<iframe style="position: fixed; visibility: hidden; bottom: 10em;"></iframe>' +
'<input contenteditable="true" style="display: table; page-break-before: left; width: 10000px;">';
printpreview();
exitprintpreview();
setTimeout(runTest6, 0);
}
// Crash test for bug 878037
function runTest6() {
window.frames[0].document.body.innerHTML =
'<style> li { list-style-image: url("animated.gif"); } </style>' +
'<li>Firefox will crash if you try and print this page</li>';
setTimeout(runTest6end, 500);
}
function runTest6end() {
printpreview();
exitprintpreview();
finish();
}
]]></script>
<table style="border: 1px solid black;" xmlns="http://www.w3.org/1999/xhtml">
<tr><th>Print preview canvas 1</th><th>Print preview canvas 2</th></tr>
<tr>
<td><canvas height="400" width="400"></canvas></td>
<td><canvas height="400" width="400"></canvas></td>
</tr></table>
</window>

View file

@ -0,0 +1,38 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=1018265
-->
<window title="Mozilla Bug 1018265"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="run()">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<!-- test code goes here -->
<script type="application/javascript">
<![CDATA[
/** Test for Bug 1018265 **/
SimpleTest.waitForExplicitFinish();
function run() {
window.open("file_bug1018265.xul", "contentViewerTest", "chrome,width=100,height=100");
}
function done() {
ok(true, "done");
setTimeout("SimpleTest.finish()", 0);
}
]]>
</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=1018265"
target="_blank">Mozilla Bug 1018265</a>
</body>
</window>

View file

@ -0,0 +1,23 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<!-- test results are displayed in the html:body -->
<body xmlns="http://www.w3.org/1999/xhtml">
</body>
<!-- test code goes here -->
<script type="application/javascript">
<![CDATA[
SimpleTest.waitForExplicitFinish();
// Run the test in a separate window so that the test runs as a chrome
// window
window.open("bug1041200_window.html", "bug1041200",
"chrome,width=800,height=800");
]]>
</script>
</window>

View file

@ -0,0 +1,49 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=396367
-->
<head>
<title>Test for Bug 396367</title>
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
<script>
SimpleTest.waitForExplicitFinish();
function finish() {
ok(true, "didn't crash");
var docviewer = getdocviewer();
docviewer.textZoom = 1;
SimpleTest.finish();
}
function getdocviewer() {
var navigator1 = top.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIWebNavigation);
var docShell = navigator1.QueryInterface(Components.interfaces.nsIDocShell);
var docviewer = docShell.contentViewer;
return docviewer;
}
</script>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=396367">Mozilla Bug 396367</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
<input>
<script>document.body.setAttribute('style', 'display: -moz-box; overflow: scroll;');</script>
<script>
var docviewer = getdocviewer();
docviewer.textZoom=Math.floor(10*Math.random())/4+0.2;
document.documentElement.offsetHeight;
setTimeout(finish, 0);
</script>
</pre>
</body>
</html>

View file

@ -0,0 +1,56 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=396367
-->
<head>
<title>Test for Bug 396367</title>
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
<style>select::after { content:"m"; }</style>
<script>
SimpleTest.waitForExplicitFinish();
function finish() {
ok(true, "didn't crash");
var docviewer = getdocviewer();
docviewer.textZoom = 1;
SimpleTest.finish();
}
function getdocviewer() {
var navigator1 = top.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIWebNavigation);
var docShell = navigator1.QueryInterface(Components.interfaces.nsIDocShell);
var docviewer = docShell.contentViewer;
return docviewer;
}
</script>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=396367">Mozilla Bug 396367</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
<div style="overflow: scroll; float: left;">
<select></select>
<li style="display: table-cell;">
<script>
var docviewer = getdocviewer();
docviewer.textZoom=Math.floor(10*Math.random())/4+0.2;
document.documentElement.offsetHeight;
setTimeout(finish, 0);
</script>
</li>
</div>
</pre>
</body>
</html>

View file

@ -0,0 +1,129 @@
<?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=420499
-->
<window title="Mozilla Bug 420499" onload="setTimeout(focusInput, 500);"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
<menu id="menu" label="Menu">
<menupopup id="file-popup">
<!-- <textbox id="some-text" maxlength="10" value="some text"/> -->
<menu label="submenu">
<menupopup id="file-popup-inner">
<menuitem label="Item1"/>
<menuitem label="Item2"/>
<textbox id="some-text" maxlength="10" value="some more text"/>
</menupopup>
</menu>
<menuitem label="Item3"/>
<menuitem label="Item4"/>
</menupopup>
</menu>
<popupset>
<popup id="contextmenu">
<menuitem label="Cut"/>
<menuitem label="Copy"/>
<menuitem label="Paste"/>
</popup>
<tooltip id="tooltip" orient="vertical">
<description value="This is a tooltip"/>
</tooltip>
</popupset>
<!-- test results are displayed in the html:body -->
<body xmlns="http://www.w3.org/1999/xhtml" bgcolor="white">
<p id="par1">Paragraph 1</p>
<p id="par2">Paragraph 2</p>
<p id="par3">Paragraph 3</p>
<p id="par4">Paragraph 4</p>
<p id="par5">Paragraph 5</p>
<input type="text" id="text-input" maxlength="10" value="some more text"/> <br />
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=420499"
target="_blank">Mozilla Bug 420499</a>
</body>
<!-- test code goes here -->
<script type="application/javascript"><![CDATA[
/** Test for Bug 420499 **/
SimpleTest.waitForExplicitFinish();
function getSelectionController() {
return document.docShell
.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsISelectionDisplay)
.QueryInterface(Components.interfaces.nsISelectionController);
}
function isCaretVisible() {
window.QueryInterface(Components.interfaces.nsIInterfaceRequestor);
var docShell = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIWebNavigation)
.QueryInterface(Components.interfaces.nsIDocShell);
var selCon = docShell.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsISelectionDisplay)
.QueryInterface(Components.interfaces.nsISelectionController);
return selCon.caretVisible;
}
function focusInput() {
ok(!isCaretVisible(), "Caret shouldn't be visible");
$("text-input").focus();
ok(isCaretVisible(), "Caret should be visible when input focused");
window.addEventListener("popupshown", popupMenuShownHandler, false);
$("menu").open = true;
}
function popupMenuShownHandler() {
window.removeEventListener("popupshown", popupMenuShownHandler, false);
ok(!isCaretVisible(), "Caret shouldn't be visible when menu open");
window.addEventListener("popuphidden", ensureParagraphFocused, false);
$("menu").open = false;
}
function ensureParagraphFocused() {
window.removeEventListener("popuphidden", ensureParagraphFocused, false);
ok(isCaretVisible(), "Caret should have returned to previous focus");
window.addEventListener("popupshown", popupMenuShownHandler2, false);
$("contextmenu").openPopup($('text-input'), "topleft" , -1 , -1 , true, true);
}
function popupMenuShownHandler2() {
window.removeEventListener("popupshown", popupMenuShownHandler2, false);
ok(isCaretVisible(), "Caret should be visible when context menu open");
window.addEventListener("popuphidden", ensureParagraphFocused2, false);
document.getElementById("contextmenu").hidePopup();
}
function ensureParagraphFocused2() {
window.removeEventListener("popuphidden", ensureParagraphFocused2, false);
ok(isCaretVisible(), "Caret should still be visible");
window.addEventListener("popupshown", tooltipShownHandler, false);
$("tooltip").openPopup($('text-input'), "topleft" , -1 , -1 , false, true);
}
function tooltipShownHandler() {
window.removeEventListener("popupshown", tooltipShownHandler, false);
ok(isCaretVisible(), "Caret should be visible when tooltip is visible");
window.addEventListener("popuphidden", ensureParagraphFocused3, false);
document.getElementById("tooltip").hidePopup();
}
function ensureParagraphFocused3() {
window.removeEventListener("popuphidden", ensureParagraphFocused2, false);
ok(isCaretVisible(), "Caret should still be visible");
SimpleTest.finish();
}
]]></script>
</window>

View file

@ -0,0 +1,39 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=458898
-->
<head>
<title>Test for Bug 458898</title>
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=458898">Mozilla Bug 458898</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
<script class="testbody" type="text/javascript">
SimpleTest.waitForExplicitFinish();
var win = window.openDialog("data:text/html,<div style='height:200px; width:100px;'>");
function loaded() {
var disableWindowResizePref = "dom.disable_window_move_resize";
SpecialPowers.pushPrefEnv({"set":[[disableWindowResizePref, false]]}, function() {
win.sizeToContent();
ok(win.innerWidth >= 100, "innerWidth: " + win.innerWidth + " >= 100 ?");
ok(win.innerHeight >= 200, "innerHeight: " + win.innerHeight + " >= 200 ?");
win.close();
SimpleTest.finish();
});
}
win.addEventListener("load", loaded, false);
</script>
</pre>
</body>
</html>

View file

@ -0,0 +1,46 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=495648
-->
<window title="Mozilla Bug 495648"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
<!-- 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=495648"
target="_blank">Mozilla Bug 495648</a>
</body>
<!-- test code goes here -->
<script type="application/javascript">
<![CDATA[
SimpleTest.expectAssertions(15, 24);
/** Test for Bug 495648 **/
var uri = window.location.href.replace(/test_bug495648.xul/, "bug495648.rdf");
function doTest() {
var list = document.getElementById('l');
var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
var rdf = rdfService.GetDataSourceBlocking(uri);
list.database.AddDataSource(rdf);
list.builder.rebuild();
is(list.itemCount, 40, "Unexpected item count");
SimpleTest.finish();
}
SimpleTest.waitForExplicitFinish();
addLoadEvent(doTest);
]]>
</script>
<listbox flex="1" id="l" seltype="multiple" datasources="rdf:null" ref="urn:root" sortResource="http://home.netscape.com/NC-rdf#name" sortDirection="ascending">
<template>
<rule><conditions><content uri="?uri" /><triple subject="?uri" predicate="http://home.netscape.com/NC-rdf#links" object="?links" /><member container="?links" child="?child" /><triple subject="?child" predicate="http://home.netscape.com/NC-rdf#name" object="?name" /></conditions><bindings><binding subject="?child" predicate="http://sitedelta.schierla.de/SD-rdf#status" object="?status" /></bindings><action><listitem label="?name" class="listitem-iconic" status="?status" uri="?child" /></action></rule>
</template>
</listbox>
</window>

View file

@ -0,0 +1,35 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=504311
-->
<window title="Mozilla Bug 504311"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="doTest()">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<body xmlns="http://www.w3.org/1999/xhtml">
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=504311"
target="_blank">Mozilla Bug 504311</a>
</body>
<!-- test code goes here -->
<script type="application/javascript">
<![CDATA[
SimpleTest.waitForExplicitFinish();
function doTest()
{
var tb = document.getElementById("tb01");
var inputField = tb.inputField;
var editor = inputField.QueryInterface(Components.interfaces.nsIDOMNSEditableElement).editor;
editor = editor.QueryInterface(Components.interfaces.nsIPlaintextEditor);
editor.wrapWidth = -1;
ok(true, "Didn't crash");
SimpleTest.finish();
}
]]></script>
<textbox id="tb01" multiline="true"/>
</window>

View file

@ -0,0 +1,40 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=514660
-->
<window title="Mozilla Bug 504311"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="doTest()">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<body xmlns="http://www.w3.org/1999/xhtml">
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=514660"
target="_blank">Mozilla Bug 514660</a>
<textarea></textarea>
</body>
<!-- test code goes here -->
<script type="application/javascript">
<![CDATA[
SimpleTest.waitForExplicitFinish();
function doTest()
{
var viewer = window
.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIWebNavigation)
.QueryInterface(Components.interfaces.nsIDocShell)
.contentViewer;
viewer.authorStyleDisabled = true;
document.documentElement.getBoundingClientRect();
ok(true, "Didn't crash");
viewer.authorStyleDisabled = false;
SimpleTest.finish();
}
]]></script>
</window>

View file

@ -0,0 +1,44 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=533845
-->
<window title="Mozilla Bug 533845"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="doTest()">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<panel id="panel" width="50" height="50" onpopupshown="continueTest()">
<iframe type="content" id="contentFrame" src="data:text/html,&lt;html&gt;&lt;body onclick='document.body.textContent=1'&gt;This is a panel!&lt;/body&gt;&lt;/html&gt;" width="500" height="500"/>
</panel>
<body xmlns="http://www.w3.org/1999/xhtml">
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=533845"
target="_blank">Mozilla Bug 533845</a>
</body>
<!-- test code goes here -->
<script type="application/javascript">
<![CDATA[
SimpleTest.waitForExplicitFinish();
function doTest() {
document.getElementById('panel').showPopup();
}
function continueTest() {
var ifrwindow = document.getElementById("contentFrame").contentWindow;
ifrwindow.focus();
var utils = ifrwindow.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIDOMWindowUtils);
var rect = ifrwindow.document.body.getBoundingClientRect();
var x = rect.left + (rect.width/2);
var y = rect.top + (rect.height/2);
utils.sendMouseEvent("mousedown", x, y, 0, 1, 0);
utils.sendMouseEvent("mouseup", x, y, 0, 1, 0);
is(ifrwindow.document.body.textContent, "1", "Should have got a click event!");
SimpleTest.finish();
}
]]></script>
</window>

View file

@ -0,0 +1,97 @@
<html>
<head>
<title>Test for Bug 551434</title>
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
</head>
<body>
</div>
<pre id="test">
<input id="i1" onkeydown="gKeyDown1++; $('i2').focus();" onkeypress="gKeyPress1++;" onkeyup="gKeyUp1++;"/>
<input id="i2" onkeydown="gKeyDown2++;" onkeypress="gKeyPress2++;" onkeyup="gKeyUp2++;"/>
<input id="i3" onkeydown="gKeyDown3++; frames[0].document.getElementById('i4').focus();"
onkeypress="gKeyPress3++;" onkeyup="gKeyUp3++;"/>
<iframe id="iframe" src="http://example.org/chrome/layout/base/tests/chrome/bug551434_childframe.html"></iframe>
<script class="testbody" type="text/javascript">
SimpleTest.waitForExplicitFinish();
var gKeyDown1 = 0, gKeyPress1 = 0, gKeyUp1 = 0;
var gKeyDown2 = 0, gKeyPress2 = 0, gKeyUp2 = 0;
var gKeyDown3 = 0, gKeyPress3 = 0, gKeyUp3 = 0;
function runTest()
{
$("i1").focus();
// key events should not be retargeted when the focus changes to an
// element in the same document.
synthesizeKey("a", { type: "keydown", code: "KeyA", keyCode: KeyboardEvent.DOM_VK_B });
is(document.activeElement, $("i2"), "input 2 in focused");
synthesizeKey("a", { type: "keyup", code: "KeyA", keyCode: KeyboardEvent.DOM_VK_B });
is(gKeyDown1, 1, "keydown on input 1");
is(gKeyPress1, 0, "keypress on input 1");
is(gKeyUp1, 0, "keyup on input 1");
is(gKeyDown2, 0, "keydown on input 2");
is(gKeyPress2, 1, "keypress on input 2");
is(gKeyUp2, 1, "keyup on input 2");
is($("i1").value, "", "input 1 value");
is($("i2").value, "a", "input 2 value");
// key events should however be retargeted when the focus changes to an
// element in the a content document from a chrome document.
$("i3").focus();
var childWinObj = frames[0].wrappedJSObject;
synthesizeKey("b", { code: "KeyB", keyCode: KeyboardEvent.DOM_VK_B });
is(gKeyDown3, 1, "keydown on input 3");
is(gKeyPress3, 1, "keypress on input 3");
is(gKeyUp3, 1, "keyup on input 3");
is(childWinObj.gKeyDownChild, 0, "keydown on input 4");
is(childWinObj.gKeyPressChild, 0, "keypress on input 4");
is(childWinObj.gKeyUpChild, 0, "keyup on input 4");
var i4 = frames[0].document.getElementById("i4");
is($("i3").value, "b", "input 3 value");
is(i4.value, "", "input 4 value");
is(document.activeElement, $("iframe"), "parent focus");
is(frames[0].document.activeElement, i4, "child focus");
// key events should also be retargeted when the focus changes to an
// element in a chrome document from a content document.
i4.addEventListener("keydown", () => $("i3").focus(), false);
synthesizeKey("c", { code: "KeyC", keyCode: KeyboardEvent.DOM_VK_C });
is(gKeyDown3, 1, "keydown on input 3");
is(gKeyPress3, 1, "keypress on input 3");
is(gKeyUp3, 1, "keyup on input 3");
is(childWinObj.gKeyDownChild, 1, "keydown on input 4");
is(childWinObj.gKeyPressChild, 1, "keypress on input 4");
is(childWinObj.gKeyUpChild, 1, "keyup on input 4");
is($("i3").value, "b", "input 3 value");
is(i4.value, "c", "input 4 value");
is(document.activeElement, $("i3"), "parent focus");
SimpleTest.finish();
}
SimpleTest.waitForFocus(runTest);
</script>
</pre>
</body>
</html>

View file

@ -0,0 +1,47 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=708062
-->
<head>
<title>Test for Bug 708062</title>
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
</head>
<body onload="doTest()">
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=708062">Mozilla Bug 708062</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<iframe id="f" style="width:100px;"
src="data:text/html,A<div id='d' style='position:fixed;width:170px;top:0;right:0;height:1px;background:yellow;'>"></iframe>
<pre id="test">
<script>
function isBoundingClientRect(e, r, msg) {
var BCR = e.getBoundingClientRect();
is([BCR.left, BCR.top, BCR.right, BCR.bottom].join(','), r, msg);
}
function doTest() {
var f = document.getElementById('f');
var navigator1 = f.contentWindow.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIWebNavigation);
var docShell = navigator1.QueryInterface(Components.interfaces.nsIDocShell);
var docviewer = docShell.contentViewer;
var d = f.contentDocument.getElementById('d');
isBoundingClientRect(d, "-70,0,100,1", "initial rect");
docviewer.fullZoom = 2;
isBoundingClientRect(d, "-120,0,50,1", "after zooming in");
docviewer.fullZoom = 1;
isBoundingClientRect(d, "-70,0,100,1", "after zooming back out");
SimpleTest.finish();
}
</script>
</pre>
</body>
</html>

View file

@ -0,0 +1,38 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=812817
-->
<window title="Mozilla Bug 812817"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="doTest()">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<panel id="panel" width="200" height="200" onpopupshown="continueTest()">
</panel>
<body xmlns="http://www.w3.org/1999/xhtml">
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=812817"
target="_blank">Mozilla Bug 812817</a>
</body>
<!-- test code goes here -->
<script type="application/javascript">
<![CDATA[
SimpleTest.waitForExplicitFinish();
var panel = document.getElementById('panel');
function doTest() {
panel.openPopup(null, '', 500, 500, false, false, null);
}
function continueTest() {
panel.style.background = "url(blue-32x32.png)";
setTimeout(function() {
ok(true, "Didn't crash");
SimpleTest.finish();
}, 50);
}
]]></script>
</window>

View file

@ -0,0 +1,31 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Tests for paint flashing</title>
<script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
<script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/WindowSnapshot.js"></script>
<script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/paint_listener.js"></script>
<script type="application/javascript">
SimpleTest.waitForExplicitFinish();
function startTest() {
waitForAllPaintsFlushed(function () {
var before = snapshotWindow(window, false);
SpecialPowers.getDOMWindowUtils(window).paintFlashing = true;
document.body.innerHTML = "bar";
waitForAllPaintsFlushed(function () {
document.body.innerHTML = "foo";
waitForAllPaintsFlushed(function () {
var after = snapshotWindow(window, false);
ok(compareSnapshots(before, after, false)[0], "windows are different");
SpecialPowers.getDOMWindowUtils(window).paintFlashing = false;
SimpleTest.finish();
});
});
});
}
</script>
</head>
<body onload="startTest()">foo</body>
</html>

View file

@ -0,0 +1,26 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript"
src="chrome://mochikit/content/chrome-harness.js"></script>
<!-- test results are displayed in the html:body -->
<body xmlns="http://www.w3.org/1999/xhtml">
</body>
<!-- test code goes here -->
<script type="application/javascript">
<![CDATA[
SimpleTest.waitForExplicitFinish();
// Run the test in a separate window so that the test runs as a chrome
// window
var root = getRootDirectory(window.location.href);
window.open(root + "chrome_content_integration_window.xul", "chrome_content_integration",
"chrome,width=200,height=300");
]]>
</script>
</window>

View file

@ -0,0 +1,24 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<!-- test results are displayed in the html:body -->
<body xmlns="http://www.w3.org/1999/xhtml">
</body>
<!-- test code goes here -->
<script type="application/javascript">
<![CDATA[
SimpleTest.waitForExplicitFinish();
// Run the test in a separate window so that the test runs as a chrome
// window
SpecialPowers.setTestPluginEnabledState(SpecialPowers.Ci.nsIPluginTag.STATE_ENABLED);
var w = window.open("chrome_over_plugin_window.xul", "chrome_over_plugin",
"chrome,width=200,height=300");
]]>
</script>
</window>

View file

@ -0,0 +1,23 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<!-- test results are displayed in the html:body -->
<body xmlns="http://www.w3.org/1999/xhtml">
</body>
<!-- test code goes here -->
<script type="application/javascript">
<![CDATA[
SimpleTest.waitForExplicitFinish();
// Run the test in a separate window so that the test runs as a chrome
// window
window.open("default_background_window.xul", "default_background",
"chrome,width=200,height=300");
]]>
</script>
</window>

View file

@ -0,0 +1,20 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Test positioning of fixed-pos/abs-pos elements in a XUL dialog</title>
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript" src="chrome://mochikit/content/chrome-harness.js"></script>
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
</head>
<body>
<pre id="test">
<script type="application/javascript">
SimpleTest.waitForExplicitFinish();
var root = getRootDirectory(window.location.href);
window.openDialog(root + "dialog_with_positioning_window.xul", "dialog_with_positioning",
"dialog,chrome");
</script>
</pre>
</body>
</html>

View file

@ -0,0 +1,41 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Test that we don't get unnecessary repaints with fixed backgrounds</title>
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/paint_listener.js"></script>
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
</head>
<!-- Need a timeout here to allow paint unsuppression before we start the test -->
<body onload="setTimeout(startTest,0)" style="background:url(blue-32x32.png) top left no-repeat fixed; background-size: 100px 2000px; overflow:hidden;">
<div style="height: 2048px"></div>
<pre id="test">
<script type="application/javascript">
SimpleTest.waitForExplicitFinish();
var utils = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor).
getInterface(Components.interfaces.nsIDOMWindowUtils);
function startTest() {
// Do a scroll to ensure we trigger activity heuristics.
document.documentElement.scrollTop = 1;
waitForAllPaintsFlushed(function () {
document.documentElement.scrollTop = 0;
waitForAllPaintsFlushed(function () {
// Clear paint state and scroll down
utils.checkAndClearPaintedState(document.documentElement);
document.documentElement.scrollTop = 100;
waitForAllPaintsFlushed(function () {
// Make sure nothing painted
var painted = utils.checkAndClearPaintedState(document.documentElement);
is(painted, false, "Fixed background should not have been painted when scrolled");
SimpleTest.finish();
});
});
});
}
</script>
</pre>
</body>
</html>

View file

@ -0,0 +1,114 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<!-- test results are displayed in the html:body -->
<body xmlns="http://www.w3.org/1999/xhtml">
</body>
<!-- test code goes here -->
<script type="application/javascript">
<![CDATA[
SimpleTest.waitForExplicitFinish();
var winLowerThanVista = navigator.platform.indexOf("Win") == 0;
if (winLowerThanVista) {
var version = Components.classes["@mozilla.org/system-info;1"]
.getService(Components.interfaces.nsIPropertyBag2)
.getProperty("version");
winLowerThanVista = parseFloat(version) < 6.0;
}
var tests = [{maximize: false}, {maximize: true}];
var testIndex = 0;
var win;
function testInfo() {
return tests[testIndex].maximize ? " (maximized)" : " (non-maximized)";
}
function doTest(evt) {
var initialCount = win.mozPaintCount;
function nextStep() {
if (win.mozPaintCount == initialCount || win.isMozAfterPaintPending) {
SimpleTest.info("Waiting for mozPaintCount (= " + initialCount + ") to increase" + testInfo());
// Do not use SimpleTest.executeSoon() here: give a little more time.
setTimeout(nextStep, 100);
return;
}
isnot(win.mozPaintCount, initialCount, "mozPaintCount has increased" + testInfo());
function testLeafLayersPartitionWindow() {
var success = win.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIDOMWindowUtils)
.leafLayersPartitionWindow();
// "[leafLayersPartitionWindow()] Always returns true in non-DEBUG builds."
// To prevent random failures on Windows, try to run this again after a timeout.
if (!success && navigator.platform.indexOf("Win") >= 0) {
setTimeout(testLeafLayersPartitionWindow, 100);
return;
}
ok(success,
"Leaf layers should form a non-overlapping partition of the browser window" + testInfo() +
(success ? "" : ". [Set MOZ_DUMP_PAINT_LIST=1 env var to investigate.]"));
win.close();
++testIndex;
nextTest();
}
testLeafLayersPartitionWindow();
}
if (tests[testIndex].maximize) {
function resizeListener() {
win.removeEventListener("resize", resizeListener, true);
// We want a paint after resize.
initialCount = win.mozPaintCount;
SimpleTest.executeSoon(nextStep);
}
win.addEventListener("resize", resizeListener, true);
SimpleTest.info("Maximizing test " + testIndex + " window" + testInfo());
Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator)
.getMostRecentWindow("navigator:browser")
.maximize();
} else {
SimpleTest.executeSoon(nextStep);
}
}
function nextTest() {
if (testIndex >= tests.length) {
SimpleTest.finish();
return;
}
if (winLowerThanVista && !tests[testIndex].maximize) {
ok(true, "Skipping non-maximized test " + testIndex + " on winLowerThanVista since the resizer causes overlapping layers");
++testIndex;
nextTest();
return;
}
window.focus();
// Run the test in a separate window so we get a clean browser window.
win = window.open("data:text/html,<html style='overflow:scroll'>",
"", "scrollbars=yes,toolbar,menubar,width=500,height=500");
setTimeout(setupWindow, 0);
}
function setupWindow() {
win.addEventListener("load", doTest, false);
win.focus();
}
nextTest();
]]>
</script>
</window>

View file

@ -0,0 +1,23 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<!-- test results are displayed in the html:body -->
<body xmlns="http://www.w3.org/1999/xhtml">
</body>
<!-- test code goes here -->
<script type="application/javascript">
<![CDATA[
SimpleTest.waitForExplicitFinish();
// Run the test in a separate window so that the test runs as a chrome
// window
window.open("no_clip_iframe_window.xul", "no_clip_iframe",
"chrome,width=200,height=400");
]]>
</script>
</window>

View file

@ -0,0 +1,47 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Test that active transformed elements coming into view are prerendered so we don't have to redraw constantly</title>
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/paint_listener.js"></script>
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
</head>
<body onload="startTest()">
<div>
<div id="t" style="position:absolute; left:0; top:500px; -moz-transform: translatex(-100px); width:200px; height:100px; background:yellow;">
<div style="text-align:right">Hello</div>
<div style="text-align:left">Kitty</div>
</div>
</div>
<pre id="test">
<script type="application/javascript">
SimpleTest.waitForExplicitFinish();
var t = document.getElementById("t");
var utils = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor).
getInterface(Components.interfaces.nsIDOMWindowUtils);
function startTest() {
// Do a couple of transform changes to ensure we've triggered activity heuristics
waitForAllPaintsFlushed(function () {
t.style.MozTransform = "translatex(-75px)";
waitForAllPaintsFlushed(function () {
t.style.MozTransform = "translatex(-50px)";
waitForAllPaintsFlushed(function () {
// Clear paint state now and move again.
utils.checkAndClearPaintedState(t);
// Don't move to 0 since that might trigger some special case that turns off transforms.
t.style.MozTransform = "translatex(-1px)";
waitForAllPaintsFlushed(function () {
var painted = utils.checkAndClearPaintedState(t);
is(painted, false, "Transformed element should not have been painted");
SimpleTest.finish();
});
});
});
});
}
</script>
</pre>
</body>
</html>

View file

@ -0,0 +1,16 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<body xmlns="http://www.w3.org/1999/xhtml">
</body>
<!-- test code goes here -->
<script type="application/javascript">
<![CDATA[
SimpleTest.waitForExplicitFinish();
window.open("printpreview_helper.xul", "printpreview", "chrome,width=100,height=100");
]]></script>
</window>

View file

@ -0,0 +1,22 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=396024
-->
<window title="Mozilla Bug 369024"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<body xmlns="http://www.w3.org/1999/xhtml">
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=396024"
target="_blank">Mozilla Bug 396024</a>
</body>
<!-- test code goes here -->
<script type="application/javascript">
<![CDATA[
SimpleTest.waitForExplicitFinish();
window.open("printpreview_bug396024_helper.xul", "bug396024", "chrome,width=100,height=100");
]]></script>
</window>

View file

@ -0,0 +1,22 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=482976
-->
<window title="Mozilla Bug 482976"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<body xmlns="http://www.w3.org/1999/xhtml">
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=482976"
target="_blank">Mozilla Bug 482976</a>
</body>
<!-- test code goes here -->
<script type="application/javascript">
<![CDATA[
SimpleTest.waitForExplicitFinish();
window.open("printpreview_bug482976_helper.xul", "bug482976", "chrome,width=100,height=100");
]]></script>
</window>

View file

@ -0,0 +1,49 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Test that we don't get unnecessary repaints due to subpixel shifts</title>
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/paint_listener.js"></script>
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
</head>
<!-- Need a timeout here to allow paint unsuppression before we start the test -->
<body onload="setTimeout(startTest,0)">
<div id="t" style="width:400px; height:100px; background:yellow; overflow:hidden">
<div style="height:40px;"></div>
<div id="e" style="height:30px; background:lime"></div>
<div style="height:60.4px; background:pink"></div>
</div>
<pre id="test">
<script type="application/javascript">
SimpleTest.waitForExplicitFinish();
var t = document.getElementById("t");
var e = document.getElementById("e");
var utils = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor).
getInterface(Components.interfaces.nsIDOMWindowUtils);
function startTest() {
// Do a scroll to ensure we trigger activity heuristics.
waitForAllPaintsFlushed(function () {
t.scrollTop = 5;
// Scroll down as far as we can, to put our rendering layer at a subpixel offset within the layer
waitForAllPaintsFlushed(function () {
t.scrollTop = 1000;
waitForAllPaintsFlushed(function () {
// Clear paint state now and scroll again.
utils.checkAndClearPaintedState(e);
// scroll up a little bit. This should not cause anything to be repainted.
t.scrollTop = t.scrollTop - 10;
waitForAllPaintsFlushed(function () {
var painted = utils.checkAndClearPaintedState(e);
is(painted, false, "Fully-visible scrolled element should not have been painted");
SimpleTest.finish();
});
});
});
});
}
</script>
</pre>
</body>
</html>

View file

@ -0,0 +1,99 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Tests for MozAfterPaint</title>
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/paint_listener.js"></script>
<style>
#checkOpacityRepaint {
will-change: opacity;
}
#checkTransformRepaint {
will-change: transform;
}
div {
width: 100px;
height: 100px;
background: radial-gradient(ellipse at center, #87e0fd 0%,#53cbf1 40%,#05abe0 100%);
}
</style>
</head>
<body>
<div id="checkRepaint">
Check repaint without will-change
</div>
<div id="checkOpacityRepaint">
Check repaint with will-change
</div>
<div id="checkTransformRepaint">
Check repaint with will-change
</div>
</body>
<script>
var utils = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor).
getInterface(Components.interfaces.nsIDOMWindowUtils);
var initialPaintCount = 0;
function test_checkRepaint(next) {
var element = document.getElementById("checkRepaint");
waitForAllPaintsFlushed(function () {
utils.checkAndClearPaintedState(element);
element.style.opacity = "0.5";
waitForAllPaintsFlushed(function () {
var painted = utils.checkAndClearPaintedState(element);
// *** We check that this repaints because the test is relying
// on this property. If this is broken then this test wont
// be reliable check for will-change.
is(painted, true, "element should have been painted");
next();
});
});
}
function test_checkOpacityRepaint(next) {
var element = document.getElementById("checkOpacityRepaint");
waitForAllPaintsFlushed(function () {
utils.checkAndClearPaintedState(element);
element.style.opacity = "0.5";
waitForAllPaintsFlushed(function () {
var painted = utils.checkAndClearPaintedState(element);
// BasicLayers' heuristics are so that even with will-change:opacity,
// we can still have repaints.
if (utils.layerManagerType != "Basic") {
is(painted, false, "will-change checkOpacityRepaint element should not have been painted");
}
next();
});
});
}
function test_checkTransformRepaint(next) {
var element = document.getElementById("checkTransformRepaint");
waitForAllPaintsFlushed(function () {
utils.checkAndClearPaintedState(element);
element.style.transform = "translateY(-5px)";
waitForAllPaintsFlushed(function () {
var painted = utils.checkAndClearPaintedState(element);
// BasicLayers' heuristics are so that even with will-change:transform,
// we can still have repaints.
if (utils.layerManagerType != "Basic") {
is(painted, false, "will-change checkTransformRepaint element should not have been painted");
}
next();
});
});
}
SimpleTest.waitForExplicitFinish();
test_checkRepaint(function(){
test_checkOpacityRepaint(function(){
test_checkTransformRepaint(function(){
SimpleTest.finish();
});
});
});
</script>
</html>