Commit Graph

175 Commits

Author SHA1 Message Date
Lee Salzman
1881a1669c 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
ebb461c874 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

--HG--
extra : rebase_source : 3e4e0b60493397e61283aa1d7fd93d7c197dec29
extra : source : d43c2d5e87f31ff47d7f3ada66c3f5f27cef84a9
2016-08-04 23:51:58 -04:00
Markus Stange
6bb3620330 Back out bug 1012752 for causing bug 1285532 and bug 1286674.
MozReview-Commit-ID: DYZ3D4yL1eZ

--HG--
extra : source : b98df554a6f0aa154275d363163ec618189503ed
2016-07-16 17:10:08 -04:00
Markus Stange
f8e66e0cdf 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

--HG--
extra : histedit_source : 5390eeebfe9a2791d9ac8e91ec1dfec4ec7b4118
2016-06-02 15:41:51 -04:00
Mason Chang
328a9da0c1 Bug 1282626. Windows skia reftest fuzzing. r=lsalzman 2016-06-27 18:12:57 -07:00
Geoff Brown
fd1e09d12b Bug 1251013 - Update AndroidVersion annotations in test manifests - reftests; r=jmaher 2016-03-17 10:00:47 -06:00
Ryan VanderMeulen
a3835b03c5 Bug 1253849 - Tweak some reftest annotations.
--HG--
extra : rebase_source : 449d1c23f7c0041f6114376694ef71845b792ffb
2016-03-08 21:23:17 -05:00
Mason Chang
b4c228baec Bug 1246213 - Skia reftest fuzzing for Skia content on OS X. r=jmuizelaar 2016-02-16 09:07:52 -08:00
Joel Maher
dccc504cec 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
5ff40cc89c Bug 1216851 - Allow flattening of opacity when it contains text. r=roc
--HG--
extra : rebase_source : 3861829d42298838eaa87912fa849b60b6f698e6
2015-10-23 11:22:45 +13:00
Carsten "Tomcat" Book
513d05c444 Backed out changeset 0e8e25c04938 (bug 1216851) for reftest failures 2015-10-29 13:52:29 +01:00
Matt Woodrow
bab116d797 Bug 1216851 - Allow flattening of opacity when it contains text. r=roc
--HG--
extra : rebase_source : 48b64c9ba86e89ae8d15ae05f7379fd518ca01b5
2015-10-23 11:22:45 +13:00
James Willcox
f3e7b2c099 Bug 1148131 - Enable DrawTargetTiled on Android r=Bas 2015-09-28 09:37:00 -05:00
Kartikaya Gupta
75997e4ed0 Bug 1186004 - Split the asyncPanZoom reftest sandbox condition into asyncPan and asyncZoom. r=mstange 2015-07-22 23:42:08 -04:00
Andrew Comminos
1fd1765334 Bug 1174755 - Improve reftest consistency on GTK3. r=karlt 2015-06-15 10:00:00 -04:00
Ryan VanderMeulen
df9a24ed23 Backed out changeset cc153acac9df (bug 1169502) for test_leaf_layers_partition_browser_window.xul permafail on Win7/8 debug.
CLOSED TREE

--HG--
extra : amend_source : e1ca077f359673986b94b71f6e1e4e5da767c2e8
2015-06-16 13:41:59 -04:00
Markus Stange
1a786425ca Bug 1169502 - Simplify visible regions to tiles, not to a number of rects. r=jrmuizel, r=roc
--HG--
extra : rebase_source : affd6655b864223cb1bb2ffe6e47a4759fd6b411
2015-06-10 15:54:20 -04:00
Andrew Comminos
065394444c Bug 1170158 - Apply GTK2 reftest exceptions to GTK3. r=karlt 2015-06-02 13:47:00 -04:00
Jonathan Kew
a34e6fd938 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
979949ce62 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
53dd599648 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
9ae1c872f4 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
d68dd54c30 Backed out changeset ffde08dc5ceb (bug 1154459) for bustage
CLOSED TREE
2015-04-19 08:19:14 -07:00
David Anderson
4f6a850738 Enable APZ for E10S on Windows for one nightly build. (bug 1154459, r=kats) 2015-04-17 11:49:55 -04:00
Alexandre Lissy
366fdcfa2e Bug 1153574 - Re-enable Mulet reftests taskcluster-specific disables. r=ahal, a=test-only 2015-04-13 14:26:00 -04:00
Alexandre Lissy
16ab34d6ec Bug 1144080 - Disable reftests on Mulet for TaskCluster. r=ahal 2015-03-20 00:45:00 +01:00
Alexandre Lissy
e8b4f395c0 Bug 1138442 - Disable reftests on Mulet in parity with B2G/B2G Desktop. r=ahal 2015-03-10 02:43:00 +01:00
Seth Fowler
84f29f6166 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
eb5285b396 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
7b738252f8 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
b207dd338d Bug 1009679 - Layerize the scrollbar thumb on desktop, too. r=roc 2014-05-28 12:52:13 +02:00
Daniel Holbert
5b3b530dc0 backout c3f1ab75ea51 (bug 421436) for regressing bug 439462 2014-05-22 15:10:20 -07:00
Simon Montagu
93df14c3c1 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
bfa64d1dcc Backed out changeset 83fd85b082d1 (bug 1009679) for crashtest and reftest failures; CLOSED TREE 2014-05-14 15:55:04 +01:00
Markus Stange
3ec8e6b5ec Bug 1009679 - Layerize the scrollbar thumb on desktop, too. r=roc 2014-05-14 14:33:52 +02:00
Mats Palmgren
efd3ece2e8 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
fbcb130e34 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
748b9049f1 Bug 157846. Part 0: Make tests more robust to padding changes and clipping of overflowing glyph edges. r=mats
--HG--
extra : rebase_source : f7d8ecb0df3fbbea593e46e515db47ee705392c7
2014-01-15 22:42:05 +13:00
Simon Montagu
07e1ec2854 Bug 936935: Mark lines dirty more accurately in Bidi resolution, r=roc 2013-11-07 16:39:49 +02:00
Daniel Holbert
5ac6d26487 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
Dan Minor (dminor@mozilla.com)
bc0735b08b Bug 877266 - Add AndroidVersion to reftests and modify manifests for pandaboards. r=jmaher 2013-06-24 08:51:32 -04:00
Chris Lord
fc4a148647 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
b16b9555c1 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
e6517b4238 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
ae67dd75c4 Bug 843322 - Make CSS 'text-overflow' apply to ::-moz-placeholder. r=roc 2013-02-23 11:38:15 +01:00
Andrew Halberstadt
221179f50b Bug 811779 - Enable larger set of reftests on B2G emulators, r=jgriffin 2013-01-03 15:35:01 -05:00
Joel Maher
a3da963e31 Bug 800099 - scroll-rounding reftest requires > 600x600 resolution. r=mats 2012-10-15 07:10:51 -04:00
Matt Woodrow
7507512379 Bug 539356 - Part 10 - Test changes required for DLBI. r=roc
* * *
[mq]: test-fixes
2012-08-29 17:48:13 +12:00
Ed Morley
aba3a8f5ef Revert mozilla-inbound to e4dd1fa6d222 for crashes and test failures on a CLOSED TREE 2012-09-27 16:34:46 +01:00
Ehsan Akhgari
21329c0636 Followup to bug 539356: fix the text-overflow reftest manifest
Landing on a CLOSED TREE
2012-09-27 10:04:01 -04:00
Matt Woodrow
6f5a5e2a30 Bug 539356 - Part 10 - Test changes required for DLBI. r=roc
* * *
[mq]: test-fixes
2012-08-29 17:48:13 +12:00
Matt Woodrow
82891a358e Bug 539356 - Part 33 - Change test-overflow/single-value reftest to use MozReftestInvalidate. r=roc 2012-08-13 22:11:16 +12:00
Joel Maher
2c076a679b Bug 760264 - when running reftests on android native, we have a failure in layout/reftests/text-overflow/scroll-rounding.html. r=ajuma 2012-06-13 14:20:45 -04:00
Joel Maher
bb1449586f Bug 748088 - Native android reftest are not testing OMTC+OGL. r=ajuma 2012-06-01 08:42:38 -04:00
Phil Ringnalda
dbf40c6c8c Bug 668849 - give up on testing spellcheck with text-overflow on WinXP 2012-05-28 19:37:14 -07:00
Phil Ringnalda
eda0e7a7e4 Bug 668849 - Double the workaround timeout to wait longer for spellcheck to finish 2012-05-18 22:27:38 -07:00
Mats Palmgren
8333b1b6a7 Bug 755025 - wallpaper reftest framework bug that runs test / reference with different :hover state. r=roc 2012-05-17 01:04:38 +02:00
Robert O'Callahan
3038face63 Bug 735898. Mark test as passing on Android 2012-04-13 23:50:15 +12:00
Robert O'Callahan
7c34e38876 Bug 733607. Restructure logic to compute snapped bounds of display items in layer coordinates. Moves responsibility for computing snapped bounds from within the display items to callers of GetBounds/GetOpaqueRegion. r=tnikkel
Previously we snapped the results of nsDisplayItem::GetBounds and
nsDisplayItem::GetOpaqueRegion internally. By tracking which display items were
inside transforms, we disabled snapping quite conservatively whenever an ancestor
had a transform, which is undesirable.

With this patch, we don't snap inside GetBounds or GetOpaqueRegion, but just return
a boolean flag indicating whether the item will draw with snapping or not. This flag
is conservative so that "true" means we will snap (if the graphics context has a transform
that allows snapping), but "false" means we might or might not snap (so it's always safe
to return false).

FrameLayerBuilder takes over responsibility for snapping item bounds. When it converts
display item bounds to layer pixel coordinates, it checks the snap flag returned from
the display item and checks whether the transform when we draw into the layer will be
a known scale (the ContainerParameters scale factors) plus integer translation. If both
are true, we snap the item bounds when converting to layer pixel coordinates. With
this approach, we can snap item bounds even when the items have ancestors with active
transforms.
2012-04-10 23:24:18 +12:00
Mats Palmgren
f524e9749b Bug 672944 - Test -moz-box text-overflow. r=roc 2012-01-28 04:35:59 +01:00
Mats Palmgren
0d801fb5ed Bug 690187 - Clip or suppress a marker if it makes the line empty. r=roc 2011-12-19 15:48:31 +01:00
Mats Palmgren
9fc0be400e Bug 684266 - Do ellipsing on the end-edge only when a single value was specified for text-overflow. r=bzbarsky r=roc 2011-10-12 18:20:46 +02:00
Benoit Girard
55511ee95e Bug 676831 - Mark Android OpenGL Reftest failures for regression testing. r=joe
--HG--
extra : rebase_source : b5458fa13fc6277560eb0ebc3e4e31f6c04b4e6c
2011-09-19 13:05:15 -07:00
Mats Palmgren
539c39d8b4 Bug 677582 - Tests for CSS3 text-overflow: <left> <right>. r=roc 2011-08-20 22:41:39 +02:00
Vitor Menezes
cf98ee0a14 Bug 403524: Merging codepaths introduced some reftest failures; we need to fix them (r=dbaron)
It would appear that shadows were expected to render above underlines,
violating the CSS3 spec for text-shadow
(http://dev.w3.org/csswg/css3-text/#text-shadow).  The text-overflow
reftest relied on our previous standards-mode decoration implementation,
which drew strikethroughs after drawing the contents of the box,
regardless of whether there was any text; the reference thus no longer
needs to artificially introduce the decoration.
2011-08-03 11:30:58 -07:00
Mats Palmgren
395ee74b39 Test text-overflow:ellipsis on table-cell. b=nobug r=test-only 2011-07-26 19:22:47 +02:00
Mats Palmgren
6cc32dec8e Bug 669284 - reftest. 2011-07-06 12:03:23 +02:00
Mats Palmgren
c8cfed69aa Disable newly added reftest for bug 667010 on Android to fix orange. r=test-only 2011-07-04 10:21:50 +02:00
Mats Palmgren
9bb2d0e9ec Bug 668919 - The ellipsis with text-overflow: ellipsis is sometimes one pixel too low. r=roc 2011-07-04 07:47:59 +02:00
Mats Palmgren
219b9d4294 Bug 667010 - "ASSERTION: unexpected block frame" with text-overflow: ellipsis, <fieldset>. r=roc 2011-07-04 07:47:59 +02:00
Michael Ventnor
126e263390 New, better reftest for bug 666689 r=roc 2011-07-04 14:59:19 +10:00
Mats Palmgren
fbc99e4595 Bug 668849 - Sporadic TEST-UNEXPECTED-FAIL | reftests/text-overflow/selection.html. r=test-only 2011-07-02 23:50:02 +02:00
Michael Ventnor
62ab64069b Implement text-shadow for the text-overflow marker text (ellipsis) r=roc 2011-07-01 16:43:11 +10:00
Mats Palmgren
2e8bd5ee28 Bug 666669 - Test rendering of selected text, background and selection decorations with text-overflow. r=roc 2011-06-30 02:56:49 +02:00
Mats Palmgren
edc656386c Bug 312156 - Tests for CSS3 text-overflow. r=roc 2011-06-22 20:11:48 +02:00