Commit graph

531 commits

Author SHA1 Message Date
Ryan Hunt
fc7e92ad83 Bug 1520363 - Rename nsIScrollableFrame::GetAnchor() to Anchor(). r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D19872

--HG--
extra : moz-landing-system : lando
2019-02-15 01:25:55 +00:00
Hiroyuki Ikezoe
ff820309e3 Bug 1525075 - Use the ICB size for Element.{clientWidth, clientHeight} instead of expanded the layout viewport size. r=botond
This is what Chrome does.

documentElement-clientWidth-on-minimum-scale-size.tentative.html was the test
case for this but unfortunately it was disabled in bug 1515043. And it seems
that the test case failed on Android in the first place.

Differential Revision: https://phabricator.services.mozilla.com/D19461

--HG--
extra : moz-landing-system : lando
2019-02-13 23:47:32 +00:00
Emilio Cobos Álvarez
12867b1a3f Bug 1525371 - Kill ComputedStyle::mPresContext, move the pointer to the frame instead. r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D18734
2019-02-07 11:15:36 +01:00
Daniel Holbert
4147f36107 Bug 969874: Make scrollable frames derive their baseline from their scrolled content (unless their display value is block-inside). r=mats
Before this patch, we made scrollable frames derive their baseline from their
margin-box, because that's what the spec requires for scrollable inline-block
boxes. However, the spec now singles out inline-block as a special case, and
other sorts of scrollable inline-level containers are supposed to derive their
baseline from the scrolled content. So, this patch makes us do that, with an
exception for scrollable inline-block boxes.

For more info about the block-inside special case, see the end of the "block
containers" chunk here: https://drafts.csswg.org/css-align/#baseline-export
(Though that spec text may be a bit too specific, per my spec issue at
https://github.com/w3c/csswg-drafts/issues/3611 -- that's why this patch checks
for block-inside rather than inline-block.)

Differential Revision: https://phabricator.services.mozilla.com/D18481

--HG--
extra : moz-landing-system : lando
2019-02-06 00:22:56 +00:00
Daniel Holbert
3cee4428b6 Bug 1525133: Explicitly skip orthogonal-flow children when determining last-baseline of a block from its children. r=mats
Without the check that I'm adding in this patch, we'd violate the
"parallel writing mode" expectation of some baseline accessors
that we use in the now-guarded code. And we'd produce bogus layout
as a result.

The added assertions are just for good measure. The included testcase
causes us to fail both assertions, in a build that's missing the fix.

Differential Revision: https://phabricator.services.mozilla.com/D18715

--HG--
extra : moz-landing-system : lando
2019-02-05 19:45:46 +00:00
Ryan Hunt
6d38cefd3d Bug 1522264 - Translate the visual viewport offset to be relative to the scroll port. r=botond
This was lost in the change to only use the visual viewport if both the
size and offset were set.

Differential Revision: https://phabricator.services.mozilla.com/D17752

--HG--
extra : moz-landing-system : lando
2019-01-28 19:48:00 +00:00
Ryan Hunt
3e87663a7f Bug 1518640 - Use the visual viewport for anchor node selection. r=botond
--HG--
extra : rebase_source : 0f7038a4bf6b7d2a7958177b883c7fbb4130d288
extra : intermediate-source : 97681055c88c7af478467d6c76e227d0cb916aad
extra : source : 27bbb318ecb4f44c315f87584bdeb1b239d80cef
2019-01-22 13:37:16 -06:00
Csoregi Natalia
54be80a8cf Backed out 2 changesets (bug 1518640) for reftest failures on gfx/layers/apz/test/reftest/frame-reconstruction-scroll-clamping.html. CLOSED TREE
Backed out changeset 27bbb318ecb4 (bug 1518640)
Backed out changeset 3b192e4631cc (bug 1518640)
2019-01-22 22:37:00 +02:00
Ryan Hunt
04f720e12c Bug 1518640 - Use the visual viewport for anchor node selection. r=botond
--HG--
extra : histedit_source : 44a540ddceb42939c124e51486c18856584de39a
2019-01-22 13:37:16 -06:00
Hiroyuki Ikezoe
496dff9a8b Bug 1423013 - Expand the layout viewport to the minimum scale size for overflow:hidden pages. r=botond,tnikkel
Depends on D15345

Differential Revision: https://phabricator.services.mozilla.com/D15347

--HG--
extra : moz-landing-system : lando
2019-01-15 09:48:18 +00:00
Oana Pop Rus
e6a470fee9 Backed out 3 changesets (bug 1423013) for failing at reftests/transform/compound-1a.html on a CLOSED TREE
Backed out changeset 91624c065046 (bug 1423013)
Backed out changeset 050a2ef2393d (bug 1423013)
Backed out changeset db57901030e9 (bug 1423013)
2019-01-15 09:35:57 +02:00
Hiroyuki Ikezoe
4faf5e4991 Bug 1423013 - Expand the layout viewport to the minimum scale size for overflow:hidden pages. r=botond,tnikkel
Depends on D15345

Differential Revision: https://phabricator.services.mozilla.com/D15347

--HG--
extra : moz-landing-system : lando
2019-01-15 03:28:10 +00:00
Jan Henning
79fe5e1e56 Bug 1498812 - Part 11: Use Visual Viewport for storing scroll position in the PresState. r=botond,tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D15691

--HG--
extra : moz-landing-system : lando
2019-01-11 19:50:24 +00:00
Ryan Hunt
43e96a0c82 Bug 1305957 part 7 - Adjust scroll offset to match change in relative position of scroll anchor after reflow. r=hiro,dbaron
This commit implements anchor offset adjustment. When the position of a frame
that is an anchor is changed during reflow, we notify the anchor container. The
anchor container will then post a reflow callback.

Then when reflow is completed, the anchor container will perform a scroll to
keep the anchor node in the same relative position.

Differential Revision: https://phabricator.services.mozilla.com/D13270

--HG--
extra : rebase_source : 9d40a5d5b73777d0da3799f162eeb85bb8e6d8f0
extra : source : d9052f7b34d9857863b66d64797f8b0b82504bec
2018-12-21 10:26:10 -06:00
Ryan Hunt
91f41f3a0a Bug 1305957 part 4 - Add basic ScrollAnchorContainer implementation. r=hiro
This commit adds a barebones class called 'ScrollAnchorContainer' that will
contain most of the logic for scroll anchoring. It is owned as a member of
ScrollFrameHelper, and has the same lifetime.

Differential Revision: https://phabricator.services.mozilla.com/D13267

--HG--
extra : rebase_source : 41f6f7691af60401f18f98a89f1878cfad2e74d3
extra : source : 3033401ef320414ef5f489c53526d015c38a89d7
2018-11-27 15:18:03 -06:00
Bogdan Tara
6d78d1e2c9 Backed out 15 changesets (bug 1305957) for ASAN failures CLOSED TREE
Backed out changeset 4d5eb85d3155 (bug 1305957)
Backed out changeset 51c86d025ecb (bug 1305957)
Backed out changeset d8eef8f3e396 (bug 1305957)
Backed out changeset 950bf6ad1ef2 (bug 1305957)
Backed out changeset b4cb2cbebdb6 (bug 1305957)
Backed out changeset bfca5019a9cc (bug 1305957)
Backed out changeset e76b842c7b7f (bug 1305957)
Backed out changeset d9445a5f3458 (bug 1305957)
Backed out changeset d9052f7b34d9 (bug 1305957)
Backed out changeset e7124fecb721 (bug 1305957)
Backed out changeset bdb766faa867 (bug 1305957)
Backed out changeset 3033401ef320 (bug 1305957)
Backed out changeset 6b96050386f6 (bug 1305957)
Backed out changeset c66c00f73296 (bug 1305957)
Backed out changeset 6bd0bdab93cb (bug 1305957)
2019-01-10 18:49:22 +02:00
Ryan Hunt
a2c95c01f0 Bug 1305957 part 7 - Adjust scroll offset to match change in relative position of scroll anchor after reflow. r=hiro,dbaron
This commit implements anchor offset adjustment. When the position of a frame
that is an anchor is changed during reflow, we notify the anchor container. The
anchor container will then post a reflow callback.

Then when reflow is completed, the anchor container will perform a scroll to
keep the anchor node in the same relative position.

Differential Revision: https://phabricator.services.mozilla.com/D13270

--HG--
extra : rebase_source : 44797fcf6585d5912f83baea90a8e554f39618b5
extra : histedit_source : c4354ba8aac99e0d083f40b515369db6a95f997d
2018-12-21 10:26:10 -06:00
Ryan Hunt
18d5058194 Bug 1305957 part 4 - Add basic ScrollAnchorContainer implementation. r=hiro
This commit adds a barebones class called 'ScrollAnchorContainer' that will
contain most of the logic for scroll anchoring. It is owned as a member of
ScrollFrameHelper, and has the same lifetime.

Differential Revision: https://phabricator.services.mozilla.com/D13267

--HG--
extra : rebase_source : 4d58b51aa6b893392d7c152d27750ebda059f784
extra : histedit_source : 9a2841931c47c4358e15d2fa6514ed347e3d0dad
2018-11-27 15:18:03 -06:00
Hiroyuki Ikezoe
d95e67add7 Bug 1516368 - Align boolean member variables in ScrollFrameHelper. r=botond
Depends on D15336

Differential Revision: https://phabricator.services.mozilla.com/D15338

--HG--
extra : moz-landing-system : lando
2018-12-30 02:16:12 +00:00
Brian Hackett
490b175062 Bug 1044074 - Don't run resize or scroll events while documents have events suppressed, r=smaug.
--HG--
extra : rebase_source : 47b98b215d3131fa3e6e88948fdd67aaf41524a9
2018-12-18 15:38:45 -10:00
Hiroyuki Ikezoe
f0fe14fe8d Bug 1514679 - Drop aFirstPass from ReflowScrolledFrame. r=botond
It hasn't been used since bug 300030.

Depends on D14715

Differential Revision: https://phabricator.services.mozilla.com/D14716

--HG--
extra : moz-landing-system : lando
2018-12-17 21:54:41 +00:00
Hiroyuki Ikezoe
0a0f595df0 Bug 1514679 - Use layers::ScrollDirection instead of boolean. r=botond
Depends on D14713

Differential Revision: https://phabricator.services.mozilla.com/D14714

--HG--
extra : moz-landing-system : lando
2018-12-17 21:54:11 +00:00
Sylvestre Ledru
265e672179 Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset

--HG--
extra : amend_source : 4d301d3b0b8711c4692392aa76088ba7fd7d1022
2018-11-30 11:46:48 +01:00
Kartikaya Gupta
c7c9b39313 Bug 1503029 - Ensure the slider frame is notified of APZ drag initiation. r=botond
This adds a notification from APZ to the scrollbar's slider frame to
inform it of APZ starting an async scrollbar drag. This is useful
because APZ can start a scrollbar drag and even change the scroll
position before the scrollbar frame even handles the mousedown event. In
such a case, the mousedown can land on where the scrollthumb *used to
be* before it was dragged away. This can result in scroll-to-click
behavior getting triggered and the scrollthumb glitching.

With this patch, the new notification follows the same path as the
request-repaint message, and so is guaranteed to arrive at the scrollbar
before any request-repaint messages. It sets some state that can be used
to correct the behaviour described above.

Differential Revision: https://phabricator.services.mozilla.com/D12364

--HG--
extra : moz-landing-system : lando
2018-11-22 18:00:49 +00:00
Emilio Cobos Álvarez
cf56163d41 Bug 1509044 - FrameLoader.clipSubdocument is unused. r=jwatt,smaug
Plus it generally doesn't work for e10s, etc. etc.

Differential Revision: https://phabricator.services.mozilla.com/D12547

--HG--
extra : moz-landing-system : lando
2018-11-21 20:06:15 +00:00
Ting-Yu Lin
1d9848a22a Bug 916972 - Eliminate nsIFrame::GetSplittableType() completely. r=mats,dholbert
Currently, GetSplittableType() is called only in
nsCSSFrameConstructor::CreateContinuingFrame(). The splittable concrete frames
should inherit from nsSplittableFrame, and must explicitly create continuing
frame in CreateContinuingFrame(). Thus, no need to maintain GetSplittableType().

Differential Revision: https://phabricator.services.mozilla.com/D10798

--HG--
extra : moz-landing-system : lando
2018-11-05 19:11:12 +00:00
Ryan Hunt
2226bcc8a3 Bug 1504220 - Move ScrollableLayerGuid, ViewID, ZoomConstraints from FrameMetrics.h r=botond
This commit attempts to lower the pain of modifying FrameMetrics.h.

It looks like most includes really only want ViewID or
ScrollableLayerGuid, so this commit factors them out into a separate
header. In the process FrameMetrics::ViewID is changed to
ScrollableLayerGuid::ViewID, which personally seems like a better
place for it now that we have RepaintRequest. Unfortunately that
requires a lot of places to be updated.

After this commit there are still a couple of major places that
FrameMetrics is included.
 * nsDisplayList.h
 * nsIScrollableFrame.h
 * Layers.h

Those are going to be more tricky or impossible to fix so they're
not in this commit.

Differential Revision: https://phabricator.services.mozilla.com/D10722

--HG--
rename : gfx/layers/FrameMetrics.h => gfx/layers/ScrollableLayerGuid.h
rename : gfx/layers/FrameMetrics.h => gfx/layers/ZoomConstraints.h
extra : rebase_source : 29ac79f91460a181bf7437af5c371207e22858e2
extra : source : c2e70e531075493fc6e374dcec862827f0bc6e77
2018-11-01 15:15:46 -05:00
Ryan Hunt
1601a8bb80 Bug 1453425 - Add relative scroll offset updates using nsGkAtoms::relative. r=botond
This commit adds a scroll origin, nsGkAtoms::relative, which can be used to
mark main thread scrolling that can be combined with a concurrent APZ scroll.

The behavior of this is controlled by a pref, apz.relative-update. This pref
is initially activated and is intended as an aid to narrowing down causes
of regressions for users in bug reports.

Relative scroll updates work by tracking the last sent or accepted APZ
scroll offset. This is sent along with every FrameMetrics. Additionally,
a flag is added to FrameMetrics, mIsRelative, indicating whether the
scroll offset can be combined with a potential APZ scroll. When this
flag is set, AsyncPanZoomController will apply the delta between the sent
base scroll offset, and sent new scroll offset.

This flag is controlled by the last scroll origin on nsGfxScrollFrame. The
new origin, `relative`, is marked as being able to clobber APZ updates,
but can only be set if all scrolls since the last repaint request or
layers transaction have been relative.

Differential Revision: https://phabricator.services.mozilla.com/D8234

--HG--
extra : rebase_source : 51351a84c9cda228a0975e22eda3fd3bd8d261c4
extra : histedit_source : 4b564c19b16fe2bd26adc671b62b7cb6106e8163
2018-10-09 23:24:28 -05:00
Ryan Hunt
d4c042f28a Bug 1453425 - Use ScrollByCSSPixels in relative scrolling DOM API's. r=botond
This commit changes `Window::ScrollBy` and `Element::ScrollBy` to use
ScrollByCSSPixels in preparation for marking ScrollByCSSPixels as a
relative scroll API.

Differential Revision: https://phabricator.services.mozilla.com/D8233

--HG--
extra : rebase_source : fa82acc12395569bd332573718f8a8013ac20b60
extra : histedit_source : 7ac061e65a2522051ed73f3ba6349d5ea696e15f
2018-10-05 19:06:40 -05:00
Ryan Hunt
2e10c1c6cb Bug 1453425 - Remove mScrollPosAtLastPaint from nsGfxScrollFrame. r=botond
This field appears to be only ever used as a local variable, and can be removed.

Differential Revision: https://phabricator.services.mozilla.com/D7126

--HG--
extra : rebase_source : 310057f703f4734ba9aef807100c5b5ff888da41
extra : histedit_source : 735d3f09bdb56d6eb386e2b5faffea1d769d97a1
2018-09-24 14:12:04 -05:00
Kartikaya Gupta
a971a37e5f Bug 1485834 - Allow recomputing the cumulative resolution in ComputeScrollMetadata. r=botond
We need to correctly populate the cumulative resolution field in the
ScrollMetadata in order to support zooming. Without this, the cumulative
resolution doesn't include the presShell resolution, and that results in
APZ getting into an inconsistent state.

Currently, the cumulative resolution is populated from the
ContainerLayerParameters object's scale, but in the case of WebRender,
we call ComputeScrollMetadata with an empty ContainerLayerParameters
since don't actually do layer building or rasterization in Gecko.
This patch makes this more explicit by changing the argument to a
Maybe<ContainerLayerParameters> and passing Nothing() from the WebRender
call sites.

In this scenario, we just use the cumulative presShell resolution as
the cumulative resolution, which should be correct for WebRender as
we won't have an "extra" CSS-derived resolution applied on the Gecko
side.

Depends on D9120

Differential Revision: https://phabricator.services.mozilla.com/D9121

--HG--
extra : moz-landing-system : lando
2018-10-19 14:24:50 +00:00
Mats Palmgren
729982d840 Bug 1490561 - Make sure we remove our RefreshDriver observers in CompleteAsyncScroll. r=emilio 2018-10-01 07:59:25 +02:00
Botond Ballo
34115a8216 Bug 1484597 - Expose visual viewport information more conveniently in Layout. r=mstange
Differential Revision: https://phabricator.services.mozilla.com/D6074

--HG--
extra : moz-landing-system : lando
2018-09-21 19:01:13 +00:00
Xidorn Quan
7483d8715a Bug 1486662 - Allow scroll without scrollbar for non-textcontrol elements on Android. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D5115

--HG--
extra : moz-landing-system : lando
2018-09-07 00:35:45 +00:00
Jeremy Lempereur
96d35f35bd Bug 1471708 - Rename the "scroll-position clamping scroll port size" to "visual viewport size". r=botond
MozReview-Commit-ID: IWPzXSF5jfR

--HG--
extra : rebase_source : f67d64ef18a643077d5019048399e68acc722337
2018-07-22 21:49:38 +02:00
Cosmin Sabou
7cf1ac297e Backed out changeset 542243f5f600 (bug 1471708) for failling reftest on gfx/layers/apz/test/reftest/async-scrollbar-1. 2018-08-05 07:57:50 +03:00
Jeremy Lempereur
e591a6945a Bug 1471708 - Rename the "scroll-position clamping scroll port size" to "visual viewport size". r=botond
MozReview-Commit-ID: IWPzXSF5jfR

--HG--
extra : rebase_source : 9d13a680ebf76a5f86c9040a5a16981514435dc8
2018-07-22 21:49:38 +02:00
Xidorn Quan
8421040c69 Bug 1479995 - Rename ScrollbarStyles to ScrollStyles. r=mstange
This change also renames several related functions, as well as fields,
and the header is moved into EXPORTS.mozilla given it is defined under
mozilla namespace.

MozReview-Commit-ID: LqCdcW8fmUN

--HG--
rename : layout/base/ScrollbarStyles.cpp => layout/base/ScrollStyles.cpp
rename : layout/base/ScrollbarStyles.h => layout/base/ScrollStyles.h
extra : rebase_source : 8933f3bca88d5db4b9508e3947f695ecf7511b3e
2018-08-01 16:14:26 +10:00
Matt Woodrow
95856dac21 Bug 1462412 - Correctly ignore the perspective property for frames that aren't transformable. r=dbaron 2018-05-23 10:41:19 +12:00
Boris Zbarsky
8bf73defc4 Bug 644603 part 1. Introduce nsIFrame::GetOffsetToIgnoringScrolling. r=dbaron 2018-04-26 17:53:05 -04:00
Jamie Nicol
e8077ba4d8 Bug 1449608 - Avoid calling ComputeScrollMetadata repeatedly for same scroll frame and clip. r=mstange
Currently in ContainerState::SetupScrollingMetadata we call
ComputeScrollMetadata for every layer and for each ASR in the layer's
clip chain. If there are many sibling layers with the same clip then
this is largely wasted work.

This change makes us cache the most recently calculated result, and
only recalculate if the ASR or clip is different.

There was a small portion of ComputeScrollMetadata that must actually
be executed for every layer and ASR in its clip chain. This has been moved
to a separate function, ClipLayerToDisplayPort, that is still called
every time.

MozReview-Commit-ID: 7Zzblmimtc5

--HG--
extra : rebase_source : 85ee310ceaaff5fa8a1ccb513ffaf90904ace19d
2018-04-19 14:48:04 +01:00
Narcis Beleuzu
cf9dd5bc32 Backed out changeset 544e2832e783 (bug 1449608) for bustages "xul.dll : fatal error LNK112". CLOSED TREE 2018-04-24 21:06:41 +03:00
Jamie Nicol
bc72f195fb Bug 1449608 - Avoid calling ComputeScrollMetadata repeatedly for same scroll frame and clip. r=mstange
Currently in ContainerState::SetupScrollingMetadata we call
ComputeScrollMetadata for every layer and for each ASR in the layer's
clip chain. If there are many sibling layers with the same clip then
this is largely wasted work.

This change makes us cache the most recently calculated result, and
only recalculate if the ASR or clip is different.

There was a small portion of ComputeScrollMetadata that must actually
be executed for every layer and ASR in its clip chain. This has been moved
to a separate function, ClipLayerToDisplayPort, that is still called
every time.

MozReview-Commit-ID: 7Zzblmimtc5

--HG--
extra : rebase_source : 4554f908f42f761ddb2fca9be6bbe688c194c756
2018-04-19 14:48:04 +01:00
Andreea Pavel
14cb4908a0 Backed out changeset b443e56d2f62 (bug 1449608) for build bustages on a CLOSED TREE 2018-04-24 00:16:58 +03:00
Jamie Nicol
d361ce7995 Bug 1449608 - Avoid calling ComputeScrollMetadata repeatedly for same scroll frame and clip. r=mstange
Currently in ContainerState::SetupScrollingMetadata we call
ComputeScrollMetadata for every layer and for each ASR in the layer's
clip chain. If there are many sibling layers with the same clip then
this is largely wasted work.

This change makes us cache the most recently calculated result, and
only recalculate if the ASR or clip is different.

There was a small portion of ComputeScrollMetadata that must actually
be executed for every layer and ASR in its clip chain. This has been moved
to a separate function, ClipLayerToDisplayPort, that is still called
every time.

MozReview-Commit-ID: 7Zzblmimtc5

--HG--
extra : rebase_source : d39908b2be2565d22079b3e5e8df56316159a918
2018-04-19 14:48:04 +01:00
Nika Layzell
242c9ce313 Bug 1438026 - Part 3: Replace nsPresState with the new PresState type, r=baku 2018-04-10 17:49:44 -04:00
Emilio Cobos Álvarez
e341b20ec4 Bug 1447483: Merge nsStyleContext and ServoStyleContext, rename to ComputedStyle. r=jwatt on a CLOSED TREE
MozReview-Commit-ID: JPopq0LudD
2018-03-22 20:06:24 +01:00
Emilio Cobos Álvarez
5dd797f154 Back out changeset b683bb3f22a1 (Bug 1447483) for not landing with all the files. r=me on a CLOSED TREE
This reverts commit 1808914126bb9f9e4a82d2c3d7ac961885fe7d62.

MozReview-Commit-ID: 5skESBseEvo
2018-03-22 20:05:22 +01:00
Emilio Cobos Álvarez
ca5ac79cca Bug 1447483: Merge nsStyleContext and ServoStyleContext, rename to ComputedStyle. r=jwatt
MozReview-Commit-ID: JPopq0LudD
2018-03-22 19:48:42 +01:00
abhinav
d534e6532f Bug 1411129 - Rename MayBeAsynchronouslyScrolled to IsMaybeAsynchronouslyScrolled to follow our naming conventions. r=mats 2018-01-29 17:54:04 +05:30