At first I thought that the problem was related to this bug, so I wrote this.
I think it's worth landing.
MozReview-Commit-ID: G6UKp5l5STm
--HG--
extra : rebase_source : 576c2add36e822d3adf281d91cde44303aa5c051
And propagate the new flag to servo if mRestyleForCSSRuleChanges is set.
MozReview-Commit-ID: HRZ5duYgciF
--HG--
extra : rebase_source : 65528ea0dfa21e84bb9184a849c72a5c322e306b
The difference is that PostRestyleEventForCSSRuleChanges sets
mRestyleForCSSRuleChanges true. In a subsequent patch,
we propagate a new TraversalRestyleBehavior flag to servo side
if mRestyleForCSSRuleChanges is true.
MozReview-Commit-ID: IKsBbm09uT9
--HG--
extra : rebase_source : 5014c0a978f98e81543ec7766d2daa415317069c
IGNORE BAD COMMIT MESSAGES because something landed and was backed out for no bug number
--HG--
extra : amend_source : 1134c379d1134fe160fd2d889488d07acd9f4177
On Windows with webrender disabled and advanced background-color layers enabled,
these tests fail because they have a higer fuzz than allowed. Specifically:
1316719-1a.html -> max difference: 53, number of differing pixels: 785
1316719-1b.html -> max difference: 53, number of differing pixels: 785
1316719-1c.html -> max difference: 53, number of differing pixels: 787
I'm assuming that for now we only care about the advanced background-color layers
when WebRender is enabled, so we can just skip the tests otherwise.
MozReview-Commit-ID: 3HI828mcBdH
Functions like BuildDisplayListForStackingContext or BuildDisplayListForChild look
up EffectSet property several times in callees, such as IsTransformed() or
HasOpacity(), which is time wasting.
We should look up EffectSet just once, and pass the found one to all callees
that need it.
MozReview-Commit-ID: GZywm2UcpU7
--HG--
extra : rebase_source : 21f5dd0076a90d876a6df35eee2b886844b44f0a
FRAME_STATE_BIT of nsFrame and nsINode::mBoolFlags are both full, we need to
find another place to hold MAY_HAVE_OPACITY information.
nsINode::mSlots might be a choice, but since we always use this information in
painting, memory footprint of nsINode will become larger after this change.
So I decide to put this information right in EffectSet. The drawback of storing
this information in EffectSet is, although unnecessary Effect look-up is
prevented, we still need EffectSet property look-up in each time
HasOpacityInternal call, so we need Part 2.
Conceptually, Part 1 and Part 2 are independent.
MozReview-Commit-ID: 6sfBFSHjxQb
--HG--
extra : rebase_source : 394141cec3b44bb352297a0add8f9763d815bddb
Unknown WR cset (WR was broken on LLVMpipe for a big range of changesets, and this
happened somewhere in that range, so it wasn't easy to bisect).
MozReview-Commit-ID: Id5kOdgpK9f
Gecko only draw one line for each collapsed border. In order to draw
only one line border in webrender, I create normal border webrender
command but only show top side of border for inline direction and left
side for block direction.
MozReview-Commit-ID: 7QChXuzVbg7