Commit Graph

1173 Commits

Author SHA1 Message Date
Hiroyuki Ikezoe
4c553c009e Bug 1324591 - Add nsLayoutUtils::IsInPositionFixedSubtree. r=TYLin
Depends on D75729

Differential Revision: https://phabricator.services.mozilla.com/D81480
2020-07-05 11:43:20 +00:00
Brindusan Cristian
5bbac659d5 Backed out 9 changesets (bug 1324591) for linux build bustages on central on nsDisplayList.h.
Backed out changeset 75966ee1fe65 (bug 1324591)
Backed out changeset d6a01c6bc40e (bug 1324591)
Backed out changeset fef36ff2ea3d (bug 1324591)
Backed out changeset 4a4ae4bd95d1 (bug 1324591)
Backed out changeset 732804c83add (bug 1324591)
Backed out changeset 84657a3522fb (bug 1324591)
Backed out changeset e6c74ba41007 (bug 1324591)
Backed out changeset 8e6d4e9f5aa0 (bug 1324591)
Backed out changeset 6bc284863aff (bug 1324591)
2020-07-05 13:45:35 +03:00
Hiroyuki Ikezoe
64799ce47f Bug 1324591 - Add nsLayoutUtils::IsInPositionFixedSubtree. r=TYLin
Differential Revision: https://phabricator.services.mozilla.com/D81480
2020-07-05 02:19:25 +00:00
longsonr
e9f98b4f97 Bug 1648463 - Move SVGForeignObjectFrame SVGImageFrame and SVGUseFrame to mozilla namespace r=dholbert,jgilbert
stop exposing SVGImageListener as only SVGImageFrame uses it.

Differential Revision: https://phabricator.services.mozilla.com/D81087
2020-06-25 20:42:49 +00:00
Emilio Cobos Álvarez
02ced5ba08 Bug 1647871 - Simplify content viewer composition size code. r=kats,hiro
This should be equivalent because:

 * Content viewer size and widget size should eventually be the same always
   (modulo mid-resize, see bug 1645954).

 * Only the root content document has a widget on android (the puppet widget).

 * Only the root content document has a dynamic toolbar.

 * We were only calling this on the root document, which has no parent pres
   context (at least with e10s). Without e10s we could have a chrome
   prescontext (not sure it that ends up being a parent in the pres context
   chain), but we should never change the resolution of that one, so I think
   aScaleContentViewerSize is just useless.

This avoids having two sources of truth by always checking the content viewer
size without subtracting the dynamic toolbar max size.

Differential Revision: https://phabricator.services.mozilla.com/D80723
2020-06-24 14:46:40 +00:00
Andrew Osmond
5d64a94391 Bug 1550710 - Make vector images enable high quality scaling for embedded raster images. r=tnikkel
We did not pass FLAG_HIGH_QUALITY_SCALING down to the document used to
rasterize the SVG to a surface, resulting in embedded raster images to
not use high quality downscaling.

Differential Revision: https://phabricator.services.mozilla.com/D56422
2020-06-23 12:43:21 +00:00
Emilio Cobos Álvarez
6c9ff73ac1 Bug 1646224 - Use mozilla::Length rather than nscoord to store font sizes. r=heycam,jfkthame
This avoids arbitrary precision loss when computing REM units and so on,
which is particularly important if we ever change the base of our app
units (but useful regardless).

Differential Revision: https://phabricator.services.mozilla.com/D79928
2020-06-22 09:45:40 +00:00
Kartikaya Gupta
b2bbdf0796 Bug 1646385 - Move SetVisualViewport goop from nsLayoutUtils to PresShell. r=tnikkel
There's no need to put this in nsLayoutUtils since it's so closely bound
to presShell anyway. So we move it from being a static nsLayoutUtils function
that takes a PresShell pointer, to being a method on the PresShell itself.

Two functional changes here:
1. Don't run the MaybeReflowForInflationScreenSizeChange code unless the
   visual viewport actually changes
2. Run the MaybeReflowForInflationScreenSizeChange if the visual viewport
   is reset.

These functional changes can be logically thought of as "group the font-
inflation reflow stuff together with the other visual-viewport-triggered
reflow stuff".

Depends on D80040

Differential Revision: https://phabricator.services.mozilla.com/D80041
2020-06-18 11:54:01 +00:00
Timothy Nikkel
c6658de71b Bug 1645954. Don't use a stale value of mScrollPort during scrollframe reflow while still determining the new value of mScrollPort. r=tnikkel
Also, adjust for scrollbars and resolution correctly.

Differential Revision: https://phabricator.services.mozilla.com/D79778
2020-06-18 09:25:02 +00:00
Cosmin Sabou
376723ec78 Backed out changeset 299e19193e11 (bug 1646224) for causing font related failures. CLOSED TREE 2020-06-18 18:26:51 +03:00
Markus Stange
b5651b0b03 Bug 1642603 - Make TransformAndClipBounds stop discarding the corner positions of empty rectangles. r=kip
Differential Revision: https://phabricator.services.mozilla.com/D79582
2020-06-17 18:54:46 +00:00
Emilio Cobos Álvarez
901a6be6f6 Bug 1646224 - Use mozilla::Length rather than nscoord to store font sizes. r=heycam,jfkthame
This avoids arbitrary precision loss when computing REM units and so on,
which is particularly important if we ever change the base of our app
units (but useful regardless).

Differential Revision: https://phabricator.services.mozilla.com/D79928
2020-06-18 13:55:03 +00:00
Cameron McCormack
3107a7b3a8 Bug 1645713 - Do less work when finding common ancestor for text run creation. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D79625
2020-06-16 23:40:37 +00:00
Kartikaya Gupta
d72396b729 Bug 1644512 - Reduce headers included in nsLayoutUtils.h. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D78954
2020-06-09 19:34:36 +00:00
Hiroyuki Ikezoe
ad655b12a0 Bug 1619169 - Expand the given size with the ratio of the dynamic toolbar max height to the display size in ExpandHeightForDynamicToolbar. r=botond
In some cases the visible area has been already scaled to a certain scale
_visually_ to fit the content to the display, whereas we apply the max height of
the dynamic toolbar to the visible area as it is [1], which means the
resolution of the each value mismatches.  Ideally this mismatch should be fixed
by factoring the resolution differece, but there are some edge cases we can't
simply fix it as I described in bug 1641166.

So, here we take a different approach which is not affected by the content
visible area's resolution value.

[1] https://searchfox.org/mozilla-central/rev/598e50d2c3cd81cd616654f16af811adceb08f9f/layout/base/nsPresContext.cpp#2527
[2] https://bugzilla.mozilla.org/show_bug.cgi?id=1641166

Differential Revision: https://phabricator.services.mozilla.com/D78441
2020-06-06 04:45:02 +00:00
Hiroyuki Ikezoe
c74d576f3e Bug 1619169 - Duplicate ExpandHeightForViewportUnits to ExpandHeightForDynamicToolbar. r=botond
And use the duplicated one at the places where we need the expanded size for
interactions with the dynamic toolbar on the compositor. The new function will
be modified in the next commit.

Note that the only one remaining call site of ExpandHeightForViewportUnits is
for window.inner{Width,Height}. For window.inner{Width,Height} we don't yet
return the layout viewport (which might be expanded by the minimum-scale), it's
going to be fixed in bug 1598487 [1], but it's not ready to fix because there
also need fixes in comm-central (see dependencies in the bug).  So for now, we
should keep the current behavior for window.inner{Width,Height}.

Also note that it's not yet clear whether we will eventually replace the last
call site of ExpandHeightForViewportUnits with ExpandHeightForDynamicToolbar
since the value corresponding to the dynamic toolbar might _NOT_ be affected by
the minimum-scale in some cases.  See bug 1641166 for details.

[1] https://bugzilla.mozilla.org/show_bug.cgi?id=1598487
[2] https://bugzilla.mozilla.org/show_bug.cgi?id=1641166

Differential Revision: https://phabricator.services.mozilla.com/D78440
2020-06-06 04:44:54 +00:00
Kartikaya Gupta
ca520b1c17 Bug 1643042 - Turn the scroll origin parameter into a strongly-typed enum. r=tnikkel
This patch is a fairly mechanical conversion. The old `nullptr` gets converted
to ScrollOrigin::NotSpecified, and all the other possible values get corresponding
values in the new ScrollOrigin enum. A few switch statements are introduced to
clean up big if statements, but other than that, additional cleanups will happen
in later patches.

Differential Revision: https://phabricator.services.mozilla.com/D78438
2020-06-05 09:37:51 +00:00
Hiroyuki Ikezoe
01eb439ad2 Bug 1640223 - Expand the given size in ExpandHeightForViewportUnits by multiplying the 'vh value / visible area height'. r=botond
The viewport units size doesn't match the aspect ratio of the screen size in
some cases.

For example, in the case of the reftest in this commit, the meta viewport is
"width=1600, height=device-height" and the screen size during reftest is
"800x1000". Thus the viewport units size will be "1600x1000". In such cases
with the old way ExpandHeightForViewportUnits shrinks the given size
"1600x1800" to "1600x1000" with 100px dynamic toolbar max height (and the
MOZ_ASSERT in the function happens on debug builds).

Differential Revision: https://phabricator.services.mozilla.com/D77176
2020-05-29 17:18:21 +00:00
longsonr
2a15970acc Bug 1636119 - Don't snap SVG content during animation r=hiro
Differential Revision: https://phabricator.services.mozilla.com/D74505
2020-05-14 10:43:11 +00:00
Hiroyuki Ikezoe
d1420797de Bug 1634616 - Use un-transformed dirty rect to compute partial prerender area. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D73404
2020-05-12 20:58:27 +00:00
Hiroyuki Ikezoe
afeee51c5f Bug 1634616 - Unscale pre-render area for transform animations too. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D74520
2020-05-12 20:58:09 +00:00
Coroiu Cristina
a9cc814af1 Backed out 3 changesets (bug 1634616) for reftest failures at layout/reftests/transform/partial-prerender-expansion-rotate.html on a CLOSED TREE
Backed out changeset 53da1ae188f4 (bug 1634616)
Backed out changeset 60271de42eb8 (bug 1634616)
Backed out changeset 4279b1647e47 (bug 1634616)
2020-05-12 13:47:25 +03:00
Hiroyuki Ikezoe
e84d8423ab Bug 1634616 - Use un-transformed dirty rect to compute partial prerender area. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D73404
2020-05-12 08:32:33 +00:00
Hiroyuki Ikezoe
9d21d30221 Bug 1634616 - Unscale pre-render area for transform animations too. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D74520
2020-05-12 08:32:15 +00:00
Botond Ballo
6748fc1cb3 Bug 1631568 - Have nsLayoutUtils::GetFrameForPoint() and GetFramesForArea() take a RelativeTo parameter. r=tnikkel
This removes the need for FrameForPointOptions::IsRelativeToLayoutViewport,
and makes sure each call site of these functions indicates whether the
input point/rect is in visual or layout coordinates.

Several call sites were passing in layout coordinates without setting the
IsRelativeToLayoutViewport flag, which this patch corrects.

Differential Revision: https://phabricator.services.mozilla.com/D71705
2020-05-05 15:24:12 +00:00
Botond Ballo
ebc9225c15 Bug 1631568 - Move ViewportType and RelativeTo into a separate header. r=tnikkel
This allows headers which nsLayoutUtils.h includes to use these types without
creating a circular dependency.

As part of this change, the types are also moved into namespace mozilla.

Differential Revision: https://phabricator.services.mozilla.com/D71704
2020-05-05 19:33:40 +00:00
Botond Ballo
9703b5367d Bug 1556556 - Miscellaneous fixes related to event coordinate transformations. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D69639
2020-05-05 19:28:15 +00:00
Botond Ballo
3a89751d73 Bug 1556556 - Include the layout-to-visual transform for a zoomed content root in GetTransformMatrix(). r=kats,mattwoodrow
This is the "core" change of the patch series, which causes most
existing layout codepaths to correctly factor in the visual to
layout transform (or its inverse), as long as the callers correctly
propagate it in the correct ViewportType.

Differential Revision: https://phabricator.services.mozilla.com/D68920
2020-05-05 19:27:47 +00:00
Botond Ballo
731c9522be Bug 1556556 - Propagate RelativeTo far and wide. r=kats,mattwoodrow
This "upgrades" various nsLayoutUtils functions which take as inputs
a set of coordinates and a frame that the coordinates are relative to,
to accept a RelativeTo object instead of a frame.

Most of the patch is just dumb propagation, but the few places where
we use an explicit ViewportType::Visual are important. There are
probably a few other places I've overlooked, but this seems to cover
the important ones that come up commonly.

There are undoubtedly other functions into which we can propagate
RelativeTo, in this patch I've propagated it as far as necessary
for my needs in this bug (mainly GetTransformToAncestor() and
GetEventCoordinatesRelativeTo()).

Differential Revision: https://phabricator.services.mozilla.com/D68919
2020-05-05 19:26:38 +00:00
Botond Ballo
396b2aa69d Bug 1556556 - Introduce ViewportType and RelativeTo. r=kats,mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D68916
2020-05-05 19:24:28 +00:00
Botond Ballo
f66e578e97 Bug 1556556 - Add a "relative to layout viewport" option for display list building. r=mstange,mattwoodrow
Use it in document.elementFromPoint().

Differential Revision: https://phabricator.services.mozilla.com/D68914
2020-05-05 19:24:08 +00:00
Timothy Nikkel
6ced4ade2c Bug 1635000. Fix comment about SCROLLABLE_FIXEDPOS_FINDS_ROOT. r=kats
Bug 1215977 added this flag.

Bug 1221870 changed the behaviour of this flag but didn't update the comment.

Differential Revision: https://phabricator.services.mozilla.com/D73585
2020-05-04 14:35:50 +00:00
Mats Palmgren
e7f922b1e5 Bug 1633045 - Don't use the Print Preview viewport scroll frame as a scroll container for 'position:sticky' content. r=TYLin
Differential Revision: https://phabricator.services.mozilla.com/D72529
2020-04-27 19:19:38 +00:00
Csoregi Natalia
bdf8849001 Backed out 30 changesets (bug 1556556, bug 1631568) for multiple mochitest failures. CLOSED TREE
Backed out changeset edd529f7a9c5 (bug 1631568)
Backed out changeset 1cc0881e244b (bug 1631568)
Backed out changeset ed3c1e85d5e3 (bug 1556556)
Backed out changeset 38ffc6215bbf (bug 1556556)
Backed out changeset 03c2c25d8023 (bug 1556556)
Backed out changeset 9c717eb067b8 (bug 1556556)
Backed out changeset 98e26bc98b85 (bug 1556556)
Backed out changeset 05a6a581e755 (bug 1556556)
Backed out changeset 867946cf05bb (bug 1556556)
Backed out changeset 20d72a334530 (bug 1556556)
Backed out changeset 2c62e61d9054 (bug 1556556)
Backed out changeset 62a223d057d2 (bug 1556556)
Backed out changeset 2c5d55a1f0b1 (bug 1556556)
Backed out changeset 700447945b4e (bug 1556556)
Backed out changeset 93190ae4f5ff (bug 1556556)
Backed out changeset a7bd34d961bb (bug 1556556)
Backed out changeset fccd1d3c7189 (bug 1556556)
Backed out changeset 24056e47183d (bug 1556556)
Backed out changeset 204881474cc1 (bug 1556556)
Backed out changeset 387320881876 (bug 1556556)
Backed out changeset be8f5eb58460 (bug 1556556)
Backed out changeset 629c58a9166b (bug 1556556)
Backed out changeset 4312b2b5dda8 (bug 1556556)
Backed out changeset d11dbf6403a5 (bug 1556556)
Backed out changeset 95c54c023779 (bug 1556556)
Backed out changeset 80fcb7e71188 (bug 1556556)
Backed out changeset d75a4ecb0d47 (bug 1556556)
Backed out changeset 903c4de34e7a (bug 1556556)
Backed out changeset f15334a3e803 (bug 1556556)
Backed out changeset 9553e99137ea (bug 1556556)
2020-04-28 12:43:11 +03:00
Botond Ballo
953fb069fa Bug 1631568 - Have nsLayoutUtils::GetFrameForPoint() and GetFramesForArea() take a RelativeTo parameter. r=tnikkel
This removes the need for FrameForPointOptions::IsRelativeToLayoutViewport,
and makes sure each call site of these functions indicates whether the
input point/rect is in visual or layout coordinates.

Several call sites were passing in layout coordinates without setting the
IsRelativeToLayoutViewport flag, which this patch corrects.

Differential Revision: https://phabricator.services.mozilla.com/D71705
2020-04-28 01:44:43 +00:00
Botond Ballo
bb47d699cf Bug 1631568 - Move ViewportType and RelativeTo into a separate header. r=tnikkel
This allows headers which nsLayoutUtils.h includes to use these types without
creating a circular dependency.

As part of this change, the types are also moved into namespace mozilla.

Differential Revision: https://phabricator.services.mozilla.com/D71704
2020-04-28 07:22:59 +00:00
Botond Ballo
6ae11be824 Bug 1556556 - Miscellaneous fixes related to event coordinate transformations. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D69639
2020-04-28 01:42:26 +00:00
Botond Ballo
8e84771610 Bug 1556556 - Include the layout-to-visual transform for a zoomed content root in GetTransformMatrix(). r=kats,mattwoodrow
This is the "core" change of the patch series, which causes most
existing layout codepaths to correctly factor in the visual to
layout transform (or its inverse), as long as the callers correctly
propagate it in the correct ViewportType.

Differential Revision: https://phabricator.services.mozilla.com/D68920
2020-04-28 01:42:14 +00:00
Botond Ballo
69b3b241f8 Bug 1556556 - Propagate RelativeTo far and wide. r=kats,mattwoodrow
This "upgrades" various nsLayoutUtils functions which take as inputs
a set of coordinates and a frame that the coordinates are relative to,
to accept a RelativeTo object instead of a frame.

Most of the patch is just dumb propagation, but the few places where
we use an explicit ViewportType::Visual are important. There are
probably a few other places I've overlooked, but this seems to cover
the important ones that come up commonly.

There are undoubtedly other functions into which we can propagate
RelativeTo, in this patch I've propagated it as far as necessary
for my needs in this bug (mainly GetTransformToAncestor() and
GetEventCoordinatesRelativeTo()).

Differential Revision: https://phabricator.services.mozilla.com/D68919
2020-04-28 01:40:35 +00:00
Botond Ballo
f462ca4949 Bug 1556556 - Introduce ViewportType and RelativeTo. r=kats,mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D68916
2020-04-28 01:38:08 +00:00
Botond Ballo
a371a07def Bug 1556556 - Add a "relative to layout viewport" option for display list building. r=mstange,mattwoodrow
Use it in document.elementFromPoint().

Differential Revision: https://phabricator.services.mozilla.com/D68914
2020-04-28 01:37:47 +00:00
Botond Ballo
e9713aee1e Bug 1628043 - Have GetFrameForPoint and GetFramesForArea take a const nsIFrame*. r=tnikkel
This allows us to have a single const_cast inside GetFramesForArea, and
avoid several callers of these functions (which, as of bug 1556556,
get a const nsIFrame* from RelativeTo inputs) having to const_cast.

Differential Revision: https://phabricator.services.mozilla.com/D70068
2020-04-07 18:27:38 +00:00
Philipp Zech
912bb5248d Bug 1625699 - Convert control-character-visibility #defines to an enum class. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D68705
2020-03-28 22:17:50 +00:00
Botond Ballo
0a55d35fb4 Bug 1623476 - Rename enum RelativeTo to DisplayportRelativeTo. r=tnikkel
This is in anticipation of introducing a struct named RelativeTo
in bug 1556556.

Differential Revision: https://phabricator.services.mozilla.com/D67515
2020-03-23 22:20:11 +00:00
Botond Ballo
800e8a79b9 Bug 1623476 - Some const-correctness improvements (nsIFrame* --> const nsIFrame*) in nsLayoutUtils functions. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D67514
2020-03-23 22:19:12 +00:00
Andrew Osmond
490ae875e7 Bug 1618345 - Enforce proper color management by splitting gfx::Color into sRGBColor and DeviceColor types. r=jrmuizel
gfx::Color is currently misused in many places. The DrawTargets expect
the color space to be in device space, e.g. what we are actually going
to draw using. Everything sitting above generally deals with sRGB, as
specified in CSS. Sometimes we missed the conversion from sRGB to device
space when issuing draw calls, and similarly sometimes we converted the
color to device space twice.

This patch splits the type in two. sRGBColor and DeviceColor now
represent sRGB and device color spaces respectively. DrawTarget only
accepts DeviceColor, and one can get a DeviceColor from an sRGBColor via
the ToDeviceColor helper API. The reftests now pass with color
management enabled for everything (e.g. CSS) instead of just tagged
raster images.

There will be a follow up patch to enable color management everywhere by
default on all supported platforms.

Differential Revision: https://phabricator.services.mozilla.com/D64771
2020-03-09 14:16:17 +00:00
Jeff Gilbert
52fc47d548 Bug 1616715 - SurfaceFromElement gets alpha Premult unless opt-in to NonPremult. r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D63421
2020-02-21 02:27:08 +00:00
Csoregi Natalia
df466483b7 Backed out changeset 5005fe56b7b0 (bug 1616715) for failures on test_2_conformance2__canvas__to-data-url-with-pack-params.html. CLOSED TREE 2020-02-21 01:33:48 +02:00
Jeff Gilbert
1e1b54eeec Bug 1616715 - SurfaceFromElement gets alpha Premult unless opt-in to NonPremult. r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D63421
2020-02-20 20:52:10 +00:00
Emilio Cobos Álvarez
08cc931df3 Bug 1614510 - Use cbindgen for shape-outside and clip-path. r=boris
Differential Revision: https://phabricator.services.mozilla.com/D62372
2020-02-11 22:03:53 +00:00