1288 Commits

Author SHA1 Message Date
Matt Woodrow
c38bfdabb3 Bug 1198135 - Part 1: Recompute all required overflow areas when scrolling. r=dbaron 2016-08-25 11:15:33 +12:00
tlin@mozilla.com
54d89b5a5c Bug 1295084 Part 3 - Move nsStyleImageLayers::Position to mozilla::Position. r=dholbert
--HG--
extra : rebase_source : 6684d08700f9d7fed9fc1572871a0250d43b74cf
2016-08-25 09:59:51 +00:00
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
Kan-Ru Chen
b6d880aca1 Bug 1297276 - Rename mfbt/unused.h to mfbt/Unused.h for consistency. r=froydnj
The patch is generated from following command:

  rgrep -l unused.h|xargs sed -i -e s,mozilla/unused.h,mozilla/Unused.h,

MozReview-Commit-ID: AtLcWApZfES


--HG--
rename : mfbt/unused.h => mfbt/Unused.h
2016-08-24 14:47:04 +08:00
Phil Ringnalda
bf198cf202 Backed out 2 changesets (bug 1198135) for e10s reftest assertion failures
CLOSED TREE

Backed out changeset 05d5dee06384 (bug 1198135)
Backed out changeset 0d6ede0caa26 (bug 1198135)
2016-08-18 19:23:26 -07:00
Matt Woodrow
b2a3b682b3 Bug 1198135 - Part 2: Compute the scrolled rect stored by ScrollFrameHelper as what will actually be scrollable. r=dbaron
--HG--
extra : rebase_source : 3b47a778798069531d804393724b14194342866a
2016-08-18 16:09:47 +12:00
Matt Woodrow
06275ce493 Bug 1198135 - Part 1: Recompute all required overflow areas when scrolling. r=dbaron
--HG--
extra : rebase_source : a9e34de77013548aa8a456f171ec77e58930af81
2016-08-18 16:08:17 +12:00
Randall Barker
9a3fae864f Bug 1291373 - [geckoview] part 3, Remove MOZ_ANDROID_APZ r=botond,snorp 2016-08-16 14:33:43 -07:00
L. David Baron
6660436867 Bug 1294918 - Fix spelling of method name nsIFrame::IsAbsPosContainingBlock. r=dholbert
This misspelling was introduced in bug 1125767, changeset b9951cca6d1f.

MozReview-Commit-ID: KQNlLelY2Kn

--HG--
extra : rebase_source : 7b2b8379da23b06737b462dd4c316b5758d807a9
2016-08-12 18:39:45 -07: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
Kartikaya Gupta
ed11c9125a Bug 1241550 - Don't do paint skipping if there are plugin frames anywhere on the page, instead of limiting it to the scrollframe's descendants. r=jimm
MozReview-Commit-ID: 6fzAIrTDgla
2016-08-02 16:43:34 -04:00
Andi-Bogdan Postelnicu
cb60cc4703 Bug 1282408 - add ignore initialization check flag for bool variables from ScrollReflowInput. r=dbaron
MozReview-Commit-ID: 6IDxHLbSkoJ
2016-07-28 13:57:19 +03:00
Ting-Yu Lin
40fcd21b9a Bug 1277129 Part 7b - Rename various ReflowState variables to ReflowInput. r=dbaron
This patch is generated by the following script:

function rename() {
find .\
     -type f\
     ! -path "./obj*"\
     ! -path "./.git"\
     ! -path "./.hg"\
     \( -name "*.cpp" -or\
        -name "*.h" \)\
        -exec sed -i -r "s/$1/$2/g" "{}" \;
}

rename "([[:alpha:]]*)([rR])eflowState(s?)" "\1\2eflowInput\3"

MozReview-Commit-ID: ITFO7uMTkSb

--HG--
extra : rebase_source : c91a2e174a0baec60c1b0111ac7636295004ab35
2016-07-21 18:36:39 +08:00
Ting-Yu Lin
55cde36029 Bug 1277129 Part 6b - Rename rendContext to mRenderingContext in SizeComputationInput. r=dbaron
MozReview-Commit-ID: LczLJDtDncy

--HG--
extra : rebase_source : c32e928ae25f94305fb907db89278dce7304a903
2016-07-21 18:36:38 +08:00
Ting-Yu Lin
cd13f0ea71 Bug 1277129 Part 6a - Rename frame to mFrame in SizeComputationInput. r=dbaron
MozReview-Commit-ID: 3SXZ4qEZJc

--HG--
extra : rebase_source : 577d48f047af163585acea95dda311358f5e8c25
2016-07-21 18:36:38 +08:00
Ting-Yu Lin
4053c4c028 Bug 1277129 Part 5c - Rename nsHTMLReflowMetrics to ReflowOutput. r=dbaron
This patch is generated by the following script:

function rename() {
find .\
     -type f\
     ! -path "./obj*"\
     ! -path "./.git"\
     ! -path "./.hg"\
     \( -name "*.cpp" -or\
        -name "*.h" \)\
        -exec sed -i -e "s/$1/$2/g" "{}" \;
}

rename "nsHTMLReflowMetrics" "ReflowOutput"

MozReview-Commit-ID: 2HBb7DkooH5

--HG--
extra : rebase_source : acfa442a6483772fcb5748dc6f5e7072e599032a
2016-07-21 18:36:38 +08:00
Ting-Yu Lin
ecfae6abac Bug 1277129 Part 4b - Rename ScrollReflowState to ScrollReflowInput. r=dbaron
MozReview-Commit-ID: ILLqDYR0vkZ

--HG--
extra : rebase_source : d6167b5673e854f1a6e6b00fa942cd81e534ce49
2016-07-21 18:36:37 +08:00
Ting-Yu Lin
9c26b29bf4 Bug 1277129 Part 4a - Move ScrollReflowState into mozilla namespace. r=dbaron
MozReview-Commit-ID: C8drnMacxO

--HG--
extra : rebase_source : b0a492d44785c6f2f6afc8aedb8b9cd2dece86b3
2016-07-21 18:36:36 +08:00
Ting-Yu Lin
820f88de49 Bug 1277129 Part 1c - Rename nsHTMLReflowState to ReflowInput. r=dbaron
This patch is generated by the following script:

function rename() {
find .\
     -type f\
     ! -path "./obj*"\
     ! -path "./.git"\
     ! -path "./.hg"\
     \( -name "*.cpp" -or\
        -name "*.h" \)\
        -exec sed -i -e "s/$1/$2/g" "{}" \;
}

rename nsHTMLReflowState ReflowInput

MozReview-Commit-ID: 9r9vdVv1pXc

--HG--
extra : rebase_source : 623ec822996ba0ea0058dd137acf5a658cdea04a
2016-07-21 18:36:35 +08: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
Bob Owen
4ec3db3eec Bug 1252877 Part 7: Wait for plugin updates during active animations. r=dvander, r=jimm
Also, apply plugin updates when they arrive not just during composition.

MozReview-Commit-ID: FZJYiPqb5uZ
2016-07-18 09:54:02 +01:00
Bob Owen
88df0f1a00 Bug 1252877 Part 6: Fix plugin frame check for paint skipping and short circuit the search for plugin frames. r=jimm
MozReview-Commit-ID: EqAhU20Vkxm
2016-07-18 09:54:02 +01:00
Bob Owen
73dac13bac Bug 1252877 Part 4: Remove notification of plugins about scrolling from child. r=jimm
MozReview-Commit-ID: 2tHtOxx7jKa
2016-07-18 09:54:02 +01:00
Kartikaya Gupta
504b319a29 Bug 1287185 - Disable paint skipping for scrollframes with background-attachment:local. r=mstange
MozReview-Commit-ID: GMgIyxUd20c

--HG--
extra : rebase_source : 2fec3dd0a02aa0ab6eab69e9e6ee6229863be10e
2016-07-15 15:56:39 -04:00
Kartikaya Gupta
982bc8ba1f Bug 1284586 - Disable paint-skipping for scrollframes that we detect as having a CSS-clipped descendant. r=mstange
MozReview-Commit-ID: AvjokFZMwdd
2016-07-13 16:05:53 -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
Carsten "Tomcat" Book
3a42c363cc merge mozilla-inbound to mozilla-central a=merge 2016-06-30 12:33:41 +02:00
Kartikaya Gupta
63a50e8725 Bug 1253683 - Don't layerize scrollframes which are overflow:scroll but not actually scrollable. r=tnikkel
MozReview-Commit-ID: 6DUE3PB2hLI

--HG--
extra : rebase_source : 2e9aa59f5545a14ec70dcb6b7fbaf97bcce5dd0b
2016-06-29 14:29:40 -04:00
Jonathan Watt
b15368cfcb Bug 1279451 - Remove a lot of unnecessary includes of nsAutoPtr.h. rs=sparky 2016-06-07 21:10:18 +01:00
Jonathan Chan
42ba4360c9 Bug 1043537 - Don't show resize handle for generated content. r=Enn
MozReview-Commit-ID: IZHqb9IwaAl
2016-06-07 10:22:04 -07:00
Botond Ballo
2f0dad8fb6 Bug 1276107 - Ensure sorting display items by z-order doesn't cause event-regions items to end up below items they are supposed to cover. r=mattwoodrow
MozReview-Commit-ID: BxnshG9TgRb

--HG--
extra : rebase_source : 5817e50d64a1211e224c9b6dbd3e3efdcd5e48f0
extra : intermediate-source : 6f03149a7565e317156cc7218120f39c9fb41915
extra : source : 4c1ca58448e3513691f92c1f9f0a92329ccc17c5
extra : histedit_source : d3ddaa7425ac1e2a1b019c957525653aeee8a4da
2016-05-30 20:01:04 -04:00
Botond Ballo
d9b184b83a Bug 1276107 - Ensure that the event-regions display item for a scrollable subframe ends up on top of perspective child items. r=mattwoodrow
MozReview-Commit-ID: 8nyeZb7g8Po

--HG--
extra : rebase_source : b8844ff0adc346b99276623d902f11ef00201aa2
extra : intermediate-source : 7658c369fd33bbb5e1b91f98a12061294c05db90
extra : source : 605e81003024844d1c7a34022e5c9bc7956f92c9
extra : histedit_source : 3e4ee4b583e09a481ec4ff80ebe87890c70a28e0
2016-05-30 18:56:32 -04:00
Wes Kocher
086c164bf6 Backed out 6 changesets (bug 1276107) for windows apz test bustage CLOSED TREE
Backed out changeset acd104ba0e8d (bug 1276107)
Backed out changeset f15df83c29a6 (bug 1276107)
Backed out changeset cd06b8e0f6dc (bug 1276107)
Backed out changeset e8361d5c43d2 (bug 1276107)
Backed out changeset 6f03149a7565 (bug 1276107)
Backed out changeset 7658c369fd33 (bug 1276107)
2016-06-06 12:16:52 -07:00
Botond Ballo
5a82b92113 Bug 1276107 - Ensure sorting display items by z-order doesn't cause event-regions items to end up below items they are supposed to cover. r=mattwoodrow
MozReview-Commit-ID: BxnshG9TgRb

--HG--
extra : rebase_source : 5817e50d64a1211e224c9b6dbd3e3efdcd5e48f0
extra : source : 4c1ca58448e3513691f92c1f9f0a92329ccc17c5
extra : histedit_source : d3ddaa7425ac1e2a1b019c957525653aeee8a4da
2016-05-30 20:01:04 -04:00
Botond Ballo
d085f720c0 Bug 1276107 - Ensure that the event-regions display item for a scrollable subframe ends up on top of perspective child items. r=mattwoodrow
MozReview-Commit-ID: 8nyeZb7g8Po

--HG--
extra : rebase_source : b8844ff0adc346b99276623d902f11ef00201aa2
extra : source : 605e81003024844d1c7a34022e5c9bc7956f92c9
extra : histedit_source : 3e4ee4b583e09a481ec4ff80ebe87890c70a28e0
2016-05-30 18:56:32 -04:00
Matt Woodrow
d6c0343e48 Bug 1274962 - Part 7: Clean up unecessary parameter for RecomputePerspectiveChildrenOverflow. r=dbaron 2016-06-03 14:26:40 +12:00
Phil Ringnalda
f00b6395cb Back out 7 changesets (bug 1274962) for timeouts in browser_tableWidget_mouse_interaction.js
CLOSED TREE

Backed out changeset c5c9bc65a408 (bug 1274962)
Backed out changeset 15b5f8019521 (bug 1274962)
Backed out changeset 9ac50a46557b (bug 1274962)
Backed out changeset 9cda37e5a581 (bug 1274962)
Backed out changeset bb0230c4bb6d (bug 1274962)
Backed out changeset 56ededfbdee6 (bug 1274962)
Backed out changeset e081fc6f3f90 (bug 1274962)
2016-06-02 20:37:31 -07:00
Matt Woodrow
09d7165bcb Bug 1274962 - Part 7: Clean up unecessary parameter for RecomputePerspectiveChildrenOverflow. r=dbaron
--HG--
extra : rebase_source : 074d48327f4fe2450caab3a1cfa6db30f97b6c37
2016-06-03 14:26:40 +12:00
Sebastian Hengst
d67adf9024 Backed out changeset e79968b5fd84 (bug 1276107) for often failing test_group_wheelevents.html with e10s. r=backout 2016-06-02 22:54:31 +02:00
Sebastian Hengst
58605fbcd6 Backed out changeset 8df1bde7eafd (bug 1276107) 2016-06-02 22:54:31 +02:00
Botond Ballo
5067bf046b Bug 1276107 - Ensure sorting display items by z-order doesn't cause event-regions items to end up below items they are supposed to cover. r=mattwoodrow
MozReview-Commit-ID: BxnshG9TgRb

--HG--
extra : source : 4c1ca58448e3513691f92c1f9f0a92329ccc17c5
extra : histedit_source : d3ddaa7425ac1e2a1b019c957525653aeee8a4da
2016-05-30 20:01:04 -04:00
Botond Ballo
60bd909191 Bug 1276107 - Ensure that the event-regions display item for a scrollable subframe ends up on top of perspective child items. r=mattwoodrow
MozReview-Commit-ID: 8nyeZb7g8Po

--HG--
extra : source : 605e81003024844d1c7a34022e5c9bc7956f92c9
extra : histedit_source : 3e4ee4b583e09a481ec4ff80ebe87890c70a28e0
2016-05-30 18:56:32 -04:00
Kartikaya Gupta
47b3b7b426 Bug 1280013 - Incorporate the APZ callback transforms when using the root composition bounds to clip the displayport base. r=botond,tnikkel
MozReview-Commit-ID: 1HOGQnCjIMt
2016-06-29 08:50:20 -04:00
Carsten "Tomcat" Book
6dc6665bce Backed out changeset 4cfdd1649464 (bug 1263349) 2016-05-24 11:13:59 +02:00
Seth Fowler
1cb3c53e11 Bug 1263349 (Part 2) - Cache the current scroll parent and information about scrollports and displayports on nsDisplayListBuilder. r=botond,mstange 2016-05-24 01:12:48 -07:00
Jonathan Kew
bfdda7ee51 Bug 1272997 - followup 1 - Check for orthogonal writing modes when propagating (logical) resize flags from parent to child. r=dholbert 2016-05-18 21:07:54 +01:00
Kartikaya Gupta
11bfa10a5a Bug 1264297 - Don't do paint-skipping for elements with perspective, until we can properly populate the displayport. r=mstange
MozReview-Commit-ID: D3wKzWU72yi

--HG--
extra : rebase_source : f4487d2b37fe9799b32b40d0207b44dd50fca42f
2016-05-16 12:07:01 -04:00
Markus Stange
8ece268559 Bug 1263192 - Clip scrolled contents to the display port. r=mattwoodrow
MozReview-Commit-ID: 4Uut8OAmCAd

--HG--
extra : rebase_source : 6b32f018f671ce0028dc558fdecc43c41756e1fa
2016-05-12 18:56:24 -04:00
Matt Woodrow
47cde44daf Bug 1243610 - Refactor UpdateOverflow to separate out local overflow from that contributed by descendants. r=dbaron 2016-05-04 12:27:43 +12:00
Kartikaya Gupta
65f5105de7 Bug 1269539 - Ensure that the scroll position is restored properly on reloading a page which loads incrementally. r=tnikkel
MozReview-Commit-ID: 1qVA5yU7a7g

--HG--
extra : rebase_source : 032336d7552ece6dbeafa4eb07eceb7ed2a096ba
2016-05-03 10:40:20 -04:00