Commit Graph

160 Commits

Author SHA1 Message Date
Kartikaya Gupta
4600f9a2b5 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
e83bee3590 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

--HG--
extra : rebase_source : 9fea76c2497eb131fba0ff4a82018309be6e1ef0
2016-08-18 17:00:42 -04:00
Botond Ballo
06d34b07af 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

--HG--
extra : source : 569276f2edd39600de534183e12b7f8762b917c8
2016-06-06 18:16:06 -04:00
Botond Ballo
771407a83d 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

--HG--
extra : rebase_source : cf1e70734524cb740cb0cb64190d5a780d2b692f
extra : amend_source : b91d3f887a78da248950289fa8917db5fa62910b
extra : source : 54cb97cee6810ec56308d1f2f66e5b8fda02da3e
extra : histedit_source : dc982f0a16e8c2c042c260bc56252425cc6f76c4
2016-04-29 17:32:53 -04:00
Botond Ballo
0702a1f217 Bug 1267438 - Group ScrollMetadata's optional clip rect and mask layer index into a LayerClip structure. r=mstange
MozReview-Commit-ID: 6W0GZYkioov

--HG--
extra : rebase_source : f99b4c8bd571fd82ddd7e6121caac57b13c380f7
extra : source : b802e4ef209948f307565f2ba750b2fbd340bcb6
extra : histedit_source : 016fe1d78bde06feeb483446fdfb508448573d72
2016-04-29 16:14:21 -04:00
Botond Ballo
80791b18a4 Bug 1267470 - Move more fields from FrameMetrics to ScrollMetadata. r=kats
MozReview-Commit-ID: zxtt1NNcDe

--HG--
extra : rebase_source : 65cdc94615ccbb51901e8c4ac086987ff2183719
2016-04-27 16:06:34 -04:00
Kartikaya Gupta
db9357edba 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
5419be90e8 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
a333c6e537 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
e4f0d8e002 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
967f8c8fb1 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
a2ee8407e4 Bug 1219296 - Scroll snap directly in APZ instead of going through the main thread. r=kats
MozReview-Commit-ID: 3qAdSWXwOsu

--HG--
extra : rebase_source : 1c746af11c620e4bc27d1163980db361c239ae5e
2016-03-28 18:36:02 -04:00
Botond Ballo
895380f52c Bug 1219296 - Ship scroll snap information to the compositor. r=kats
MozReview-Commit-ID: 2aCaAEC5Csu

--HG--
extra : rebase_source : 840fa9478c32932c40cf3f9222d14da567f9d41b
2016-03-11 22:04:53 -05:00
Botond Ballo
77cebd9dd2 Bug 1219296 - Make ScrollMetadata::sNullMetadata a StaticAutoPtr so that ScrollMetadata can admit nsTArray members. r=kats
MozReview-Commit-ID: LOZdnAhL5xH

--HG--
extra : rebase_source : 39b619a7945e9f3c867dbe67e700e8b83d7c3699
2016-03-30 17:04:10 -04:00
Botond Ballo
4690842281 Bug 1219296 - Factor out scroll snap information into a form that's usable by the compositor. r=kats
MozReview-Commit-ID: DTvu7UsKsBg

--HG--
extra : rebase_source : 71831d884d128bc9e50aac55c7a8302f7ffe74f8
2016-03-18 20:07:27 -04:00
Botond Ballo
a74ec8c79b Bug 1219296 - Split fields not needed for repaints out from FrameMetrics. r=kats
MozReview-Commit-ID: DymHOSI6yYK

--HG--
extra : rebase_source : 1996bcb7f005c02b94031fe1c73d5136814b0296
2016-03-28 19:14:52 -04:00
Seth Fowler
d8b3579dd9 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
73a7b93fd0 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
a1c2f88721 Bug 1226826 - Record paint times in the checkerboard event. r=botond
--HG--
extra : commitid : CygYKO4FVuh
2016-01-15 16:19:59 -05:00
Nigel Babu
ecae6cd9a5 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)

--HG--
extra : commitid : D1zZSeIHTOA
2016-01-14 08:33:11 +05:30
Kartikaya Gupta
a7478cbca5 Bug 1226826 - Record paint times in the checkerboard event. r=botond
--HG--
extra : commitid : kX3Eye3aq0
2016-01-13 15:46:08 -05:00
Kartikaya Gupta
57630a6b66 Bug 1219352 - Pack the FrameMetrics booleans. r=botond
--HG--
extra : commitid : AWU27s9DKzG
2016-01-06 20:50:01 -05:00
Kartikaya Gupta
0d7d89c6a4 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.

--HG--
extra : commitid : 6ink6xmxH38
2016-01-06 20:50:01 -05:00
Kartikaya Gupta
5e3b5adcf2 Bug 1219352 - Update a couple of bool-setters to take a bool argument. r=botond
--HG--
extra : commitid : BSeR1YwEqNy
2016-01-06 20:50:01 -05:00
David Anderson
bba1b2478f Annotate FrameMetrics that are created for ScrollInfoLayers. (bug 1192919 part 1, r=kats)
--HG--
extra : commitid : 83SwqEe7GTb
2015-12-21 09:36:36 -05:00
Nicholas Nethercote
d0c4a9db1b Bug 1208300 (part 4) - Remove gfxRGBA and some related things. r=jwatt.
Hooray!

--HG--
extra : rebase_source : d691b55eef5a8655aa98b81b5398452a5ebe860d
2015-09-24 19:24:16 -07:00
Nicholas Nethercote
ff7df9ad79 Bug 1208283 (part 4) - Change FrameMetrics::mBackgroundColor from gfxRGBA to gfx::Color. r=jwatt.
This removes some ToColor() calls.

--HG--
extra : rebase_source : 05ee3e5aaa784e12c15fa42845864eacec45271f
2015-09-24 18:17:45 -07:00
Botond Ballo
9eadc95b3f Bug 1181832 - Keep gfxPrefs.h out of header files. r=kats
--HG--
extra : rebase_source : 33d5abb8f12f1173ae50d1712f15e273f9b26ace
extra : source : 4bd2e2744ef1b914d2859f3433b6b9026d91401b
2015-07-13 11:53:10 -04:00
Birunthan Mohanathas
a8939590de 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
55a0f8ee25 Bug 1148582 - Add mask layers to FrameMetrics for ancestor scroll frame clips. r=mattwoodrow
--HG--
extra : rebase_source : 9bf7a73b14e40972b3a5824b2f1344b7770ab789
extra : source : 745366787bcae737c0aec908554db2a3ec288908
2015-06-21 12:27:31 -04:00
Markus Stange
f1b62506d9 Back out bug 1148582 for static analysis bustage. 2015-07-01 01:20:59 -04:00
David Anderson
c29b4c6dfa Bug 1148582 - Add mask layers to FrameMetrics for ancestor scroll frame clips. r=mattwoodrow 2015-06-21 12:27:31 -04:00
Kartikaya Gupta
bd05613425 Bug 1055557 - Move storage of ZoomConstraints from RemoteContentController to APZCTreeManager. r=botond 2015-06-17 12:32:41 -04:00
Botond Ballo
5669fd281d Bug 1158424 - Remove FrameMetrics::IsRootScrollable() (it just duplicated IsRootContent()). r=kats
--HG--
extra : rebase_source : d1cf2d5e65a6c3e5742c6be6b7fccafa34191329
extra : source : a729ae28cb42a39aec4f5b4d4f4d4315a2a32ba7
2015-05-27 19:40:40 -04:00
Botond Ballo
4958aa7c1b Bug 1158424 - Rename FrameMetrics::mIsRoot to mIsRootContent. r=kats
--HG--
extra : rebase_source : a082680d842dd182d899f637200ce911cc3c480d
extra : source : 8b67f0b8dc96cebe9a58356708b23bebd8532134
2015-06-08 16:01:26 -04:00
David Anderson
e11be639dd Fix asynchronously scrolling containerful subframes. (bug 1148582 part 6.1, r=tn) 2015-06-02 16:34:46 -07:00
Timothy Nikkel
17048184a5 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
814888dc93 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
--HG--
extra : source : e35552b1a17a8998c73e32af7b3fb396a64dfed4
2015-05-27 16:56:08 -04:00
David Anderson
bb8d53f35f 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
cae6c92627 Bug 1160566 - Change some return values to be reference-to-const. r=botond 2015-05-07 14:44:03 -04:00
Kartikaya Gupta
e237a366e0 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
204bc78fed Fix some full zoom FrameMetrics changes not propagating to APZ. (bug 1147648, r=botond) 2015-03-25 18:34:56 -07:00
David Anderson
1e87fb5a4b 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
cda50e28d3 Bug 1036967 - Use ScaleFactors2D instead of ScaleFactor where appropriate in APZ and surrounding code. r=kats
--HG--
extra : rebase_source : bbdd433260c2e5244602275aa8516723f87d5740
extra : source : a2dbf7ec87c50f35a089470e39d6b4b448992e3d
2015-03-06 13:54:10 -05:00
Kartikaya Gupta
c6da1df376 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
f1c8e08cdd 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
5da9d866cf FrameMetrics comparator does not include the scroll generation. (bug 1132715, r=kats) 2015-02-15 13:01:00 -08:00
Surabhi Anand
98a481bdeb Bug 1120203 - Transitioning mPresShellResolution field of FrameMetrics to use getters/setters. r=kats 2015-01-16 16:15:52 -05:00
Kushan Joshi
94821f46e8 Bug 1116008 - Make FrameMetrics::mCriticalDisplayPort private. r=kats 2014-12-30 14:07:57 -05:00
Leonid V. Fedorenchik
9085b13b1e Bug 1115327 - Changed FrameMetrics.mScrollableRect to be accessible by getter/setter methods. r=kats 2014-12-27 12:48:27 -05:00