Commit Graph

160 Commits

Author SHA1 Message Date
Kartikaya Gupta
2aa9d01032 Bug 1292781 - Send scroll-position-restore updates to APZ, but don't allow them to clobber user scrolls. r=tnikkel
Previously we weren't sending scroll position updates with origin nsGkAtoms::restore
over to the APZ at all, on the assumption that they should never clobber an APZ
scroll offset. However, there are scenarios where that is not true.

In particular, during a frame reconstruction, a layers update may be sent to the
compositor between the time a scrollframe has RestoreState() called on it, and
the time the scrollframe has ScrollToRestoredPosition() called on it. The layers
update that happens during this interval (correctly) sends a scroll position of
(0,0), and forces the APZ to scroll to that position. This is necessary to
prevent APZ from remaining at an invalid scroll offset while the frame is still
being rebuilt.

However, once ScrollToRestoredPosition() is called and the old scroll offset is
restored, that restored scroll position needs to get sent to the APZ in order to
have it properly restore to the original scroll position. In order to do this,
the main thread must flag the metrics with a scroll offset update. Since the user
may have scrolled concurrently in the compositor from the (0,0) position, we also
need to check for that case in the APZ code and avoid restoring the scroll
position. This is equivalent to the corresponding main-thread code in
ScrollToRestoredPosition().

MozReview-Commit-ID: LxRapVSrsJ3
2016-08-24 09:15:29 -04:00
Kartikaya Gupta
783f8b0fc7 Bug 1286179 - For APZ repaint requests that are triggered by main-thread updates, don't attempt to re-scroll the main thread. r=tnikkel
Avoiding these re-scrolls prevents APZ repaint requests from clobbering the
main-thread scroll position (which may have changed in the meantime) in some
cases. See https://bugzilla.mozilla.org/show_bug.cgi?id=1286179#c8 for an example
of a scenario where this re-scroll is problematic.

MozReview-Commit-ID: 7he2A2sygji
2016-08-18 17:00:42 -04:00
Botond Ballo
6cad6bdbaf Bug 1277814 - Avoid division-by-zero when the cumulative resolution is zero. r=tnikkel
The division-by-zero was introducing NaNs into the displayport calculations,
resulting in bad displayports.

MozReview-Commit-ID: 5dbqIEOFADS
2016-06-06 18:16:06 -04:00
Botond Ballo
ad40217e32 Bug 1267438 - Give layers an optional scrolled clip that is scrolled by all scroll frames associated with the layer. r=mstange
MozReview-Commit-ID: EGqVZuISSZQ
2016-04-29 17:32:53 -04:00
Botond Ballo
38fa31a24e Bug 1267438 - Group ScrollMetadata's optional clip rect and mask layer index into a LayerClip structure. r=mstange
MozReview-Commit-ID: 6W0GZYkioov
2016-04-29 16:14:21 -04:00
Botond Ballo
69d04c0329 Bug 1267470 - Move more fields from FrameMetrics to ScrollMetadata. r=kats
MozReview-Commit-ID: zxtt1NNcDe
2016-04-27 16:06:34 -04:00
Kartikaya Gupta
11b50cdf25 Bug 1267471 - Check the snap info when comparing scroll metadata for equality. rs=botond
MozReview-Commit-ID: 5aw7vjT3YcE
2016-04-25 20:58:11 -04:00
Kartikaya Gupta
081f83af01 Bug 1257641 - Remove now-unused code for the lightweight scroll offset update message. r=botond
MozReview-Commit-ID: EXGIDgO13v7
2016-04-13 10:21:13 -04:00
Kartikaya Gupta
c3335edd95 Bug 1257641 - Use empty transactions to carry scroll offset updates to APZ that don't require a repaint. r=mattwoodrow,mstange,botond
MozReview-Commit-ID: KNeGSKldmp7
2016-04-13 10:21:13 -04:00
Kartikaya Gupta
dae38a48d5 Bug 1257641 - Replace the mUpdateScrollOffset bool with an enum, needed in the next patch. r=botond
MozReview-Commit-ID: AtmpQTAUH8L
2016-04-13 10:21:13 -04:00
Kartikaya Gupta
0687ac72f8 Bug 1246290 - Add a bit to FrameMetrics to indicate if APZ-scrolling should be disabled on that APZC. r=botond
MozReview-Commit-ID: 5NeFP31Y0Qg
2016-04-03 13:13:58 -04:00
Botond Ballo
cb84948804 Bug 1219296 - Scroll snap directly in APZ instead of going through the main thread. r=kats
MozReview-Commit-ID: 3qAdSWXwOsu
2016-03-28 18:36:02 -04:00
Botond Ballo
51c46f3ee4 Bug 1219296 - Ship scroll snap information to the compositor. r=kats
MozReview-Commit-ID: 2aCaAEC5Csu
2016-03-11 22:04:53 -05:00
Botond Ballo
4b6e207842 Bug 1219296 - Make ScrollMetadata::sNullMetadata a StaticAutoPtr so that ScrollMetadata can admit nsTArray members. r=kats
MozReview-Commit-ID: LOZdnAhL5xH
2016-03-30 17:04:10 -04:00
Botond Ballo
dd4af74b0e Bug 1219296 - Factor out scroll snap information into a form that's usable by the compositor. r=kats
MozReview-Commit-ID: DTvu7UsKsBg
2016-03-18 20:07:27 -04:00
Botond Ballo
aa2fd58a6a Bug 1219296 - Split fields not needed for repaints out from FrameMetrics. r=kats
MozReview-Commit-ID: DymHOSI6yYK
2016-03-28 19:14:52 -04:00
Seth Fowler
f989c0c02b Bug 1257315 (Part 1) - Add a visualization of visibility tracking to the APZ minimap. r=botond,mattwoodrow 2016-03-18 18:38:57 -07:00
Kartikaya Gupta
6e47a6ee81 Bug 1253860 - Add machinery to update APZ's scroll offset without a main-thread paint. r=botond
MozReview-Commit-ID: Chy40f6VNIQ
2016-03-09 22:57:14 -05:00
Kartikaya Gupta
4514368ab9 Bug 1226826 - Record paint times in the checkerboard event. r=botond 2016-01-15 16:19:59 -05:00
Nigel Babu
95736293e6 Backed out 4 changesets (bug 1226826) for widespread bustage
Backed out changeset 95d373bec568 (bug 1226826)
Backed out changeset bb9970d440a4 (bug 1226826)
Backed out changeset 6c1fa0dc6bd7 (bug 1226826)
Backed out changeset 400ebf504171 (bug 1226826)
2016-01-14 08:33:11 +05:30
Kartikaya Gupta
fe920e7296 Bug 1226826 - Record paint times in the checkerboard event. r=botond 2016-01-13 15:46:08 -05:00
Kartikaya Gupta
59f1e378a5 Bug 1219352 - Pack the FrameMetrics booleans. r=botond 2016-01-06 20:50:01 -05:00
Kartikaya Gupta
735c324052 Bug 1219352 - Rearrange fields in FrameMetrics. r=botond
This patch:
- Maintains a consistent ordering between the lists of fields in the
  FrameMetrics constructor, operator==, IPC read/write functions, and the
  actual order of fields in FrameMetrics. As part of this, missing default
  initializers are added to the FrameMetrics constructor, and fields omitted
  from the operator== are explicitly noted.
- Moves all the boolean values to the end of the set of field (for better
  packing).
- Moves the scroll id and parent scroll id to the front of the list, so that
  the operator== can fail faster in the common case.
2016-01-06 20:50:01 -05:00
Kartikaya Gupta
aecbdcdf85 Bug 1219352 - Update a couple of bool-setters to take a bool argument. r=botond 2016-01-06 20:50:01 -05:00
David Anderson
74090361b4 Annotate FrameMetrics that are created for ScrollInfoLayers. (bug 1192919 part 1, r=kats) 2015-12-21 09:36:36 -05:00
Nicholas Nethercote
9b0389603b Bug 1208300 (part 4) - Remove gfxRGBA and some related things. r=jwatt.
Hooray!
2015-09-24 19:24:16 -07:00
Nicholas Nethercote
e98d68d03b Bug 1208283 (part 4) - Change FrameMetrics::mBackgroundColor from gfxRGBA to gfx::Color. r=jwatt.
This removes some ToColor() calls.
2015-09-24 18:17:45 -07:00
Botond Ballo
d61e3f0a5b Bug 1181832 - Keep gfxPrefs.h out of header files. r=kats 2015-07-13 11:53:10 -04:00
Birunthan Mohanathas
a29151dc87 Bug 1182996 - Fix and add missing namespace comments. rs=ehsan
The bulk of this commit was generated by running:

  run-clang-tidy.py \
    -checks='-*,llvm-namespace-comment' \
    -header-filter=^/.../mozilla-central/.* \
    -fix
2015-07-13 08:25:42 -07:00
David Anderson
2511c6ca59 Bug 1148582 - Add mask layers to FrameMetrics for ancestor scroll frame clips. r=mattwoodrow 2015-06-21 12:27:31 -04:00
Markus Stange
3000f6c8eb Back out bug 1148582 for static analysis bustage. 2015-07-01 01:20:59 -04:00
David Anderson
38a60e1411 Bug 1148582 - Add mask layers to FrameMetrics for ancestor scroll frame clips. r=mattwoodrow 2015-06-21 12:27:31 -04:00
Kartikaya Gupta
c3431f440a Bug 1055557 - Move storage of ZoomConstraints from RemoteContentController to APZCTreeManager. r=botond 2015-06-17 12:32:41 -04:00
Botond Ballo
6792300e9d Bug 1158424 - Remove FrameMetrics::IsRootScrollable() (it just duplicated IsRootContent()). r=kats 2015-05-27 19:40:40 -04:00
Botond Ballo
5e7ed63658 Bug 1158424 - Rename FrameMetrics::mIsRoot to mIsRootContent. r=kats 2015-06-08 16:01:26 -04:00
David Anderson
f4ad77bc5b Fix asynchronously scrolling containerful subframes. (bug 1148582 part 6.1, r=tn) 2015-06-02 16:34:46 -07:00
Timothy Nikkel
dd15266a0a Bug 1168630. Part 3. Add IsLayersIdRoot to frame metrics. r=botond
This field tells us if this frame metrics should be considered the root APZC for its layers id. Without this there doesn't seem to be a way to compute this from just the layers tree.
2015-05-31 14:44:41 -05:00
Botond Ballo
c4d7d92131 Bug 1167882 - Use the display size (includes scrollbar areas) rather than the root composition bounds (excludes scrollbar areas) to calculate the intrinsic scale. r=kats 2015-05-27 16:56:08 -04:00
David Anderson
fb219f8256 Move the APZ scroll frame clip onto FrameMetrics. (bug 1148582 part 3, r=mstange,tn) 2015-05-26 12:40:24 -07:00
Kartikaya Gupta
7482c3b09f Bug 1160566 - Change some return values to be reference-to-const. r=botond 2015-05-07 14:44:03 -04:00
Kartikaya Gupta
cb5c22758d Bug 1160566 - Make FrameMetrics.mCompositionBounds private and add a getter/setter for it. r=botond 2015-05-07 14:44:03 -04:00
David Anderson
1d2d302862 Fix some full zoom FrameMetrics changes not propagating to APZ. (bug 1147648, r=botond) 2015-03-25 18:34:56 -07:00
David Anderson
328fcee77d Clamp APZ wheel event deltas to the size of a page scroll. (bug 1146676, r=kats) 2015-03-24 14:59:41 -07:00
Botond Ballo
5272cb578e Bug 1036967 - Use ScaleFactors2D instead of ScaleFactor where appropriate in APZ and surrounding code. r=kats 2015-03-06 13:54:10 -05:00
Kartikaya Gupta
589190b6de Bug 1137267 - Remove unneeded flags to track touch listeners and touch caret. r=smaug,dvander,botond 2015-03-10 09:29:25 -04:00
dvander@alliedmods.net
5873d3e033 Don't async scroll overflowed single-line text boxes in APZ. (bug 1126090 part 6, r=botond) 2015-03-06 14:26:59 -08:00
David Anderson
4b6ed84f09 FrameMetrics comparator does not include the scroll generation. (bug 1132715, r=kats) 2015-02-15 13:01:00 -08:00
Surabhi Anand
b5b1e8520c Bug 1120203 - Transitioning mPresShellResolution field of FrameMetrics to use getters/setters. r=kats 2015-01-16 16:15:52 -05:00
Kushan Joshi
b4d526cbbf Bug 1116008 - Make FrameMetrics::mCriticalDisplayPort private. r=kats 2014-12-30 14:07:57 -05:00
Leonid V. Fedorenchik
0f3923a572 Bug 1115327 - Changed FrameMetrics.mScrollableRect to be accessible by getter/setter methods. r=kats 2014-12-27 12:48:27 -05:00