mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-25 01:01:52 +00:00
Bug 568392. Part 3: Make reftest harness draw with scrollbars and use the window's layer tree, when possible. r=dbaron
This commit is contained in:
parent
239a0da1b5
commit
c3d3dba89e
6
layout/reftests/reftest-sanity/corners-1-ref.html
Normal file
6
layout/reftests/reftest-sanity/corners-1-ref.html
Normal file
@ -0,0 +1,6 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<body style="overflow:hidden">
|
||||
<div style="width:1px; height:1px; background:lime; position:absolute; left:0; top:0;"></div>
|
||||
</body>
|
||||
</html>
|
6
layout/reftests/reftest-sanity/corners-1.html
Normal file
6
layout/reftests/reftest-sanity/corners-1.html
Normal file
@ -0,0 +1,6 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<body style="overflow:hidden">
|
||||
<div style="width:1px; height:1px; background:red; position:absolute; left:0; top:0;"></div>
|
||||
</body>
|
||||
</html>
|
6
layout/reftests/reftest-sanity/corners-2-ref.html
Normal file
6
layout/reftests/reftest-sanity/corners-2-ref.html
Normal file
@ -0,0 +1,6 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<body style="overflow:hidden">
|
||||
<div style="width:1px; height:1px; background:lime; position:absolute; left:799px; top:0;"></div>
|
||||
</body>
|
||||
</html>
|
6
layout/reftests/reftest-sanity/corners-2.html
Normal file
6
layout/reftests/reftest-sanity/corners-2.html
Normal file
@ -0,0 +1,6 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<body style="overflow:hidden">
|
||||
<div style="width:1px; height:1px; background:red; position:absolute; left:799px; top:0;"></div>
|
||||
</body>
|
||||
</html>
|
6
layout/reftests/reftest-sanity/corners-3-ref.html
Normal file
6
layout/reftests/reftest-sanity/corners-3-ref.html
Normal file
@ -0,0 +1,6 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<body style="overflow:hidden">
|
||||
<div style="width:1px; height:1px; background:lime; position:absolute; left:799px; top:999px;"></div>
|
||||
</body>
|
||||
</html>
|
6
layout/reftests/reftest-sanity/corners-3.html
Normal file
6
layout/reftests/reftest-sanity/corners-3.html
Normal file
@ -0,0 +1,6 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<body style="overflow:hidden">
|
||||
<div style="width:1px; height:1px; background:red; position:absolute; left:799px; top:999px;"></div>
|
||||
</body>
|
||||
</html>
|
6
layout/reftests/reftest-sanity/corners-4-ref.html
Normal file
6
layout/reftests/reftest-sanity/corners-4-ref.html
Normal file
@ -0,0 +1,6 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<body style="overflow:hidden">
|
||||
<div style="width:1px; height:1px; background:lime; position:absolute; left:0; top:999px;"></div>
|
||||
</body>
|
||||
</html>
|
6
layout/reftests/reftest-sanity/corners-4.html
Normal file
6
layout/reftests/reftest-sanity/corners-4.html
Normal file
@ -0,0 +1,6 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<body style="overflow:hidden">
|
||||
<div style="width:1px; height:1px; background:red; position:absolute; left:0; top:999px;"></div>
|
||||
</body>
|
||||
</html>
|
@ -64,3 +64,9 @@ include scripttests.list
|
||||
|
||||
# test url-prefix
|
||||
include urlprefixtests.list
|
||||
|
||||
# test that all corners are visible
|
||||
!= corners-1.html corners-1-ref.html
|
||||
!= corners-2.html corners-2-ref.html
|
||||
!= corners-3.html corners-3-ref.html
|
||||
!= corners-4.html corners-4-ref.html
|
||||
|
@ -109,6 +109,8 @@ var gSlowestTestTime = 0;
|
||||
var gSlowestTestURL;
|
||||
var gClearingForAssertionCheck = false;
|
||||
|
||||
var gDrawWindowFlags;
|
||||
|
||||
const TYPE_REFTEST_EQUAL = '==';
|
||||
const TYPE_REFTEST_NOTEQUAL = '!=';
|
||||
const TYPE_LOAD = 'load'; // test without a reference (just test that it does
|
||||
@ -931,8 +933,41 @@ function UpdateCanvasCache(url, canvas)
|
||||
}
|
||||
}
|
||||
|
||||
// Compute drawWindow flags lazily so the window is set up and can be
|
||||
// measured accurately
|
||||
function DoDrawWindow(ctx, win, x, y, w, h)
|
||||
{
|
||||
if (typeof gDrawWindowFlags == "undefined") {
|
||||
gDrawWindowFlags = ctx.DRAWWINDOW_DRAW_CARET |
|
||||
ctx.DRAWWINDOW_DRAW_VIEW;
|
||||
var flags = "DRAWWINDOW_DRAW_CARET | DRAWWINDOW_DRAW_VIEW";
|
||||
if (window.innerWidth == gCurrentCanvas.width &&
|
||||
window.innerHeight == gCurrentCanvas.height) {
|
||||
// We can use the window's retained layers
|
||||
// because the window is big enough to display the entire reftest
|
||||
gDrawWindowFlags |= ctx.DRAWWINDOW_USE_WIDGET_LAYERS;
|
||||
flags += " | DRAWWINDOW_USE_WIDGET_LAYERS";
|
||||
}
|
||||
dump("REFTEST INFO | drawWindow flags = " + flags + "\n");
|
||||
}
|
||||
|
||||
var scrollX = 0;
|
||||
var scrollY = 0;
|
||||
if (!(gDrawWindowFlags & ctx.DRAWWINDOW_DRAW_VIEW)) {
|
||||
scrollX = win.scrollX;
|
||||
scrollY = win.scrollY;
|
||||
}
|
||||
ctx.drawWindow(win, scrollX + x, scrollY + y, w, h, "rgb(255,255,255)",
|
||||
gDrawWindowFlags);
|
||||
}
|
||||
|
||||
function InitCurrentCanvasWithSnapshot()
|
||||
{
|
||||
if (gURLs[0].type == TYPE_LOAD || gURLs[0].type == TYPE_SCRIPT) {
|
||||
// We don't want to snapshot this kind of test
|
||||
return;
|
||||
}
|
||||
|
||||
gCurrentCanvas = AllocateCanvas();
|
||||
|
||||
/* XXX This needs to be rgb(255,255,255) because otherwise we get
|
||||
@ -946,12 +981,9 @@ function InitCurrentCanvasWithSnapshot()
|
||||
// window, so scale the drawing to show the zoom (making each canvas pixel be one
|
||||
// device pixel instead)
|
||||
ctx.scale(scale, scale);
|
||||
ctx.drawWindow(win, win.scrollX, win.scrollY,
|
||||
Math.ceil(gCurrentCanvas.width / scale),
|
||||
Math.ceil(gCurrentCanvas.height / scale),
|
||||
"rgb(255,255,255)",
|
||||
ctx.DRAWWINDOW_DRAW_CARET |
|
||||
ctx.DRAWWINDOW_USE_WIDGET_LAYERS);
|
||||
DoDrawWindow(ctx, win, 0, 0,
|
||||
Math.ceil(gCurrentCanvas.width / scale),
|
||||
Math.ceil(gCurrentCanvas.height / scale));
|
||||
ctx.restore();
|
||||
}
|
||||
|
||||
@ -962,6 +994,9 @@ function roundTo(x, fraction)
|
||||
|
||||
function UpdateCurrentCanvasForEvent(event)
|
||||
{
|
||||
if (!gCurrentCanvas)
|
||||
return;
|
||||
|
||||
var win = gBrowser.contentWindow;
|
||||
var ctx = gCurrentCanvas.getContext("2d");
|
||||
var scale = gBrowser.markupDocumentViewer.fullZoom;
|
||||
@ -978,10 +1013,7 @@ function UpdateCurrentCanvasForEvent(event)
|
||||
ctx.save();
|
||||
ctx.scale(scale, scale);
|
||||
ctx.translate(left, top);
|
||||
ctx.drawWindow(win, left + win.scrollX, top + win.scrollY,
|
||||
right - left, bottom - top,
|
||||
"rgb(255,255,255)",
|
||||
ctx.DRAWWINDOW_DRAW_CARET);
|
||||
DoDrawWindow(ctx, win, left, top, right - left, bottom - top);
|
||||
ctx.restore();
|
||||
}
|
||||
}
|
||||
|
@ -48,9 +48,11 @@
|
||||
onunload="OnRefTestUnload();"
|
||||
width="800"
|
||||
height="1000"
|
||||
style="background:white"
|
||||
style="background:white; overflow:hidden"
|
||||
>
|
||||
<script type="application/ecmascript" src="quit.js" />
|
||||
<script type="application/ecmascript" src="reftest.js" />
|
||||
<browser id="browser" flex="1" type="content-primary" style="width: 800px; height: 1000px" />
|
||||
<!-- Make sure the browser element is exactly 800x1000, no matter what size our window is -->
|
||||
<browser id="browser" type="content-primary"
|
||||
style="min-width: 800px; min-height: 1000px; max-width: 800px; max-height: 1000px" />
|
||||
</window>
|
||||
|
Loading…
Reference in New Issue
Block a user