Commit Graph

127 Commits

Author SHA1 Message Date
Lee Salzman
bedf4e2546 Bug 1278957 - enable Skia content for Linux and Android. r=mchang
MozReview-Commit-ID: KFb81rVM0ik
2016-08-09 05:33:15 -04:00
Carsten "Tomcat" Book
7e2abea804 Backed out changeset 33b8617a7233 (bug 1278957) for linux pgo reftest failures 2016-08-09 09:15:40 +02:00
Lee Salzman
95611b73fe Bug 1278957 - enable Skia content for Linux and Android. r=mchang
MozReview-Commit-ID: KFb81rVM0ik
2016-08-08 14:26:26 -04:00
Markus Stange
07440559c6 Bug 1012752 - Snap scrolled area to layer pixels. r=tnikkel
We want the maximum scroll position to be aligned with layer pixels. That way
we don't have to re-rasterize the scrolled contents once scrolling hits the
edge of the scrollable area.

Here's how we determine the maximum scroll position: We get the scroll port
rect, snapped to layer pixels. Then we get the scrolled rect and also snap
that to layer pixels. The maximum scroll position is set to the difference
between right/bottom edges of these rectangles.
Now the scrollable area is computed by adding this maximum scroll position
to the unsnapped scroll port size.
The underlying idea here is: Pretend we have overflow:visible so that the
scrolled contents start at (0, 0) relative to the scroll port and spill over
the scroll port edges. When these contents are rendered, their rendering is
snapped to layer pixels. We want those exact pixels to be accessible by
scrolling.

This way of computing the snapped scrollable area ensures that, if you scroll
to the maximum scroll position, the right/bottom edges of the rendered
scrolled contents line up exactly with the right/bottom edges of the scroll
port. The scrolled contents are neither cut off nor are they moved too far.
(This is something that no other browser engine gets completely right, see the
testcase in bug 1012752.)

There are also a few disadvantages to this solution. We snap to layer pixels,
and the size of a layer pixel can depend on the zoom level, the document
resolution, the current screen's scale factor, and CSS transforms. The snap
origin is the position of the reference frame. So a change to any of these
things can influence the scrollable area and the maximum scroll position.
This patch does not make us adjust the current scroll position in the event
that the maximum scroll position changes such that the current scroll position
would be out of range, unless there's a reflow of the scrolled contents. This
means that we can sometimes render a slightly inconsistent state where the
current scroll position exceeds the maximum scroll position. We can fix this
once it turns out to be a problem; I doubt that it will be a problem because
none of the other browsers seems to prevent this problem either.

The size of the scrollable area is exposed through the DOM properties
scrollWidth and scrollHeight. At the moment, these are integer properties, so
their value is rounded to the nearest CSS pixel. Before this patch, the
returned value would always be within 0.5 CSS pixels of the value that layout
computed for the content's scrollable overflow based on the CSS styles of the
contents.
Now that scrollWidth and scrollHeight also depend on pixel snapping, their
values can deviate by up to one layer pixel from what the page might expect
based on the styles of the contents. This change requires a few changes to
existing tests.
The fact that scrollWidth and scrollHeight can change based on the position of
the scrollable element and the zoom level / resolution may surprise some web
pages. However, this also seems to happen in Edge. Edge seems to always round
scrollWidth and scrollHeight upwards, possibly to their equivalent of layout
device pixels.

MozReview-Commit-ID: 3LFV7Lio4tG
2016-08-04 23:51:58 -04:00
Markus Stange
d3b36dc007 Back out bug 1012752 for causing bug 1285532 and bug 1286674.
MozReview-Commit-ID: DYZ3D4yL1eZ
2016-07-16 17:10:08 -04:00
Markus Stange
9fa9a9399b Bug 1012752 - Snap scrolled area to layer pixels. r=tnikkel
We want the maximum scroll position to be aligned with layer pixels. That way
we don't have to re-rasterize the scrolled contents once scrolling hits the
edge of the scrollable area.

Here's how we determine the maximum scroll position: We get the scroll port
rect, snapped to layer pixels. Then we get the scrolled rect and also snap
that to layer pixels. The maximum scroll position is set to the difference
between right/bottom edges of these rectangles.
Now the scrollable area is computed by adding this maximum scroll position
to the unsnapped scroll port size.
The underlying idea here is: Pretend we have overflow:visible so that the
scrolled contents start at (0, 0) relative to the scroll port and spill over
the scroll port edges. When these contents are rendered, their rendering is
snapped to layer pixels. We want those exact pixels to be accessible by
scrolling.

This way of computing the snapped scrollable area ensures that, if you scroll
to the maximum scroll position, the right/bottom edges of the rendered
scrolled contents line up exactly with the right/bottom edges of the scroll
port. The scrolled contents are neither cut off nor are they moved too far.
(This is something that no other browser engine gets completely right, see the
testcase in bug 1012752.)

There are also a few disadvantages to this solution. We snap to layer pixels,
and the size of a layer pixel can depend on the zoom level, the document
resolution, the current screen's scale factor, and CSS transforms. The snap
origin is the position of the reference frame. So a change to any of these
things can influence the scrollable area and the maximum scroll position.
This patch does not make us adjust the current scroll position in the event
that the maximum scroll position changes such that the current scroll position
would be out of range, unless there's a reflow of the scrolled contents. This
means that we can sometimes render a slightly inconsistent state where the
current scroll position exceeds the maximum scroll position. We can fix this
once it turns out to be a problem; I doubt that it will be a problem because
none of the other browsers seems to prevent this problem either.

The size of the scrollable area is exposed through the DOM properties
scrollWidth and scrollHeight. At the moment, these are integer properties, so
their value is rounded to the nearest CSS pixel. Before this patch, the
returned value would always be within 0.5 CSS pixels of the value that layout
computed for the content's scrollable overflow based on the CSS styles of the
contents.
Now that scrollWidth and scrollHeight also depend on pixel snapping, their
values can deviate by up to one layer pixel from what the page might expect
based on the styles of the contents. This change requires a few changes to
existing tests.
The fact that scrollWidth and scrollHeight can change based on the position of
the scrollable element and the zoom level / resolution may surprise some web
pages. However, this also seems to happen in Edge. Edge seems to always round
scrollWidth and scrollHeight upwards, possibly to their equivalent of layout
device pixels.

MozReview-Commit-ID: 3LFV7Lio4tG
2016-06-02 15:41:51 -04:00
Mason Chang
1fe9e86d58 Bug 1282626. Windows skia reftest fuzzing. r=lsalzman 2016-06-27 18:12:57 -07:00
Geoff Brown
38e81de4fe Bug 1251013 - Update AndroidVersion annotations in test manifests - reftests; r=jmaher 2016-03-17 10:00:47 -06:00
Ryan VanderMeulen
d4e8de556c Bug 1253849 - Tweak some reftest annotations. 2016-03-08 21:23:17 -05:00
Mason Chang
eebae0919b Bug 1246213 - Skia reftest fuzzing for Skia content on OS X. r=jmuizelaar 2016-02-16 09:07:52 -08:00
Joel Maher
780d1b065b Bug 1236076 - 3 tests in text-overflow reftests are failing when run in linux64 docker images. r=mats 2016-01-05 03:20:20 -08:00
Matt Woodrow
2dfc6a4660 Bug 1216851 - Allow flattening of opacity when it contains text. r=roc 2015-10-23 11:22:45 +13:00
Carsten "Tomcat" Book
ec720929e1 Backed out changeset 0e8e25c04938 (bug 1216851) for reftest failures 2015-10-29 13:52:29 +01:00
Matt Woodrow
a3cb76b5b7 Bug 1216851 - Allow flattening of opacity when it contains text. r=roc 2015-10-23 11:22:45 +13:00
James Willcox
0330b16a3c Bug 1148131 - Enable DrawTargetTiled on Android r=Bas 2015-09-28 09:37:00 -05:00
Kartikaya Gupta
2bc86c8b03 Bug 1186004 - Split the asyncPanZoom reftest sandbox condition into asyncPan and asyncZoom. r=mstange 2015-07-22 23:42:08 -04:00
Andrew Comminos
4f957f0e7d Bug 1174755 - Improve reftest consistency on GTK3. r=karlt 2015-06-15 10:00:00 -04:00
Ryan VanderMeulen
059733186c Backed out changeset cc153acac9df (bug 1169502) for test_leaf_layers_partition_browser_window.xul permafail on Win7/8 debug.
CLOSED TREE
2015-06-16 13:41:59 -04:00
Markus Stange
0380bf0d33 Bug 1169502 - Simplify visible regions to tiles, not to a number of rects. r=jrmuizel, r=roc 2015-06-10 15:54:20 -04:00
Andrew Comminos
d8dc63f50d Bug 1170158 - Apply GTK2 reftest exceptions to GTK3. r=karlt 2015-06-02 13:47:00 -04:00
Jonathan Kew
739540d8a5 Bug 1157951 patch 3 - Reftests for text-overflow with text decorations in vertical writing mode. r=roc 2015-04-28 12:50:21 +01:00
David Anderson
c20dfa7ed2 Mark unaccelerated antialiasing reftest failures with APZ as fuzzy. (bug 1157716, r=mstange)
With APZ, we always layerize the first scrollable element of the page,
if the page itself is not scrollable. These additional layers can cause
fuzzy reftest failures in two ways: differences in blending, and by
disabling sub-pixel test anti-aliasing. The latter is only a problem
with unaccelerated drawing, because we don't support component alpha
layers with BasicLayers. (We also don't support them with
BasicCompositor, but "Reftest unaccelerated" only tests BasicLayers).
2015-04-24 10:13:32 -04:00
Kartikaya Gupta
df76660575 Back out cset 17aad8f83237 (bug 1154499) now that we have a nightly with APZ enabled. r=me a=me 2015-04-22 09:36:25 -04:00
David Anderson
8269547a47 Enable APZ for E10S on Windows for one Nightly. This patch will be backed out after one nightly. (bug 1154459, r=kats, a=ryanvm) 2015-04-21 15:35:19 -04:00
Phil Ringnalda
39379c2eae Backed out changeset ffde08dc5ceb (bug 1154459) for bustage
CLOSED TREE
2015-04-19 08:19:14 -07:00
David Anderson
942f18152b Enable APZ for E10S on Windows for one nightly build. (bug 1154459, r=kats) 2015-04-17 11:49:55 -04:00
Alexandre Lissy
1e9e6c55b5 Bug 1153574 - Re-enable Mulet reftests taskcluster-specific disables. r=ahal, a=test-only 2015-04-13 14:26:00 -04:00
Alexandre Lissy
d6ab926e00 Bug 1144080 - Disable reftests on Mulet for TaskCluster. r=ahal 2015-03-20 00:45:00 +01:00
Alexandre Lissy
7db88f40d2 Bug 1138442 - Disable reftests on Mulet in parity with B2G/B2G Desktop. r=ahal 2015-03-10 02:43:00 +01:00
Seth Fowler
e0714f723a Bug 1128229 - Add fuzzy annotations to tests that depend on imgFrame::Optimize being called on Android. r=me DONTBUILD 2015-01-31 21:41:06 -08:00
L. David Baron
2e1fd567ce Bug 1121327 patch 2 - Update reftest and crashtest manifests for new OSX variable in condition sandbox. r=ted.mielczarek 2015-01-15 15:07:50 -08:00
Mats Palmgren
af91712b7a Bug 649849, part 1 - Make -moz-appearance:none on a combobox remove the dropdown button (for WebKit compat). r=roc 2014-10-02 13:05:15 +00:00
Markus Stange
78c18d20f0 Bug 1009679 - Layerize the scrollbar thumb on desktop, too. r=roc 2014-05-28 12:52:13 +02:00
Daniel Holbert
e5ada5f1f7 backout c3f1ab75ea51 (bug 421436) for regressing bug 439462 2014-05-22 15:10:20 -07:00
Simon Montagu
bc87881517 Remove the hack making all <br> frames 1 app unit wide. Bug 421436, r=roc 2014-05-13 07:12:16 -07:00
Ed Morley
1cfb5c959b Backed out changeset 83fd85b082d1 (bug 1009679) for crashtest and reftest failures; CLOSED TREE 2014-05-14 15:55:04 +01:00
Markus Stange
f41357148a Bug 1009679 - Layerize the scrollbar thumb on desktop, too. r=roc 2014-05-14 14:33:52 +02:00
Mats Palmgren
47be36f46c Bug 990655 - Don't apply 'text-overflow' to nsComboboxControlFrame, its anon block deals with it. r=roc 2014-04-03 18:02:09 +00:00
L. David Baron
320fccceb4 Bug 709014 patch 1: Honor margin-left and margin-right on elements in inline layout that have 0 width and/or height (commonly, inline-blocks). r=roc
Prior to this patch, we failed to honor:
 * margin-left on elements in inline layout with 0 width and 0 height
 * margin-right on elements in inline layout with 0 width
I think that was because the code in CanPlaceFrame to discard both
margins when the width was 0 was running after the left-margin was
applied, unless the later code in PlaceFrame (checking both width 0 and
height 0) un-applied that left margin.

The assertion count change in test_value_computation.html is due to 2
additional "bad width" assertions (I presume from honoring large
margins that were previously ignored).

The change to 538935-1-ref.html is to match an improvement in rendering
of the margins in the test, where both sides of the margin are now
honored.

The change to layout/reftests/text-overflow/marker-basic-ref.html is to
keep the reference (which uses margins) rendering the same way following
the changes to margin handling.

The new behavior (in the reftests added in layout/reftests/inline/)
matches at least Chromium; I didn't check any other browsers.
2014-02-17 20:07:45 -08:00
Robert O'Callahan
e75bb0b129 Bug 157846. Part 0: Make tests more robust to padding changes and clipping of overflowing glyph edges. r=mats 2014-01-15 22:42:05 +13:00
Simon Montagu
53e52d22ed Bug 936935: Mark lines dirty more accurately in Bidi resolution, r=roc 2013-11-07 16:39:49 +02:00
Daniel Holbert
26049617cb Bug 886313: Make DisplayLine generate display items in a temporary collection, so we can apply text-overflow clipping without affecting earlier lines. r=roc 2013-06-28 00:22:57 -07:00
e0092451ba Bug 877266 - Add AndroidVersion to reftests and modify manifests for pandaboards. r=jmaher 2013-06-24 08:51:32 -04:00
Chris Lord
4d0fb3cad9 Bug 846772 - Fuzz/un-fuzz tests for the dynamic toolbar on Android. r=jwatt,matspal
The dynamic toolbar enlarges the browser slightly, which causes extra fuzzing
to be required on dynamic-clipPath-01.svg and scroll-rounding layout tests,
but also makes translate-pattern-1.sg pass.
2013-03-12 18:32:26 +00:00
Ryan VanderMeulen
c8102cb870 Backed out 5 changesets (bug 846772) for Android reftest-3 orange on a CLOSED TREE. 2013-03-12 17:37:16 -04:00
Chris Lord
93b85a9956 Bug 846772 - Fuzz dynamic-clipPath-01 and scroll-rounding tests for Android. r=jwatt,matspal
These tests need extra fuzzing when the dynamic toolbar is enabled.
2013-03-12 18:32:26 +00:00
Mats Palmgren
c66851bc2d Bug 843322 - Make CSS 'text-overflow' apply to ::-moz-placeholder. r=roc 2013-02-23 11:38:15 +01:00
Andrew Halberstadt
936d51438a Bug 811779 - Enable larger set of reftests on B2G emulators, r=jgriffin 2013-01-03 15:35:01 -05:00
Joel Maher
edc0ba4ad1 Bug 800099 - scroll-rounding reftest requires > 600x600 resolution. r=mats 2012-10-15 07:10:51 -04:00
Matt Woodrow
6d882a2957 Bug 539356 - Part 10 - Test changes required for DLBI. r=roc
* * *
[mq]: test-fixes
2012-08-29 17:48:13 +12:00