Commit Graph

207 Commits

Author SHA1 Message Date
Emilio Cobos Álvarez
fc8b78f775 Bug 1374752: Pack together the StyleSet, ChangeList and handled change hints, and use the latter with anonymous boxes while we're at it. r=heycam
MozReview-Commit-ID: DiWcUwD9po5
2017-06-20 23:21:27 +02:00
Boris Zbarsky
1f252462c7 Bug 1369321. Make sure to restyle from all our style roots when rebuilding all style data with stylo. r=bholley
MozReview-Commit-ID: 5pghPVb2UY1
2017-06-21 15:52:56 -04:00
Boris Zbarsky
b5761d0213 Bug 1374761 part 1. Properly restyle the viewport and its child anonymous box when we do a restyle. r=heycam
The child anon box may be an nsHTMLScrollFrame, a nsRootBoxFrame, or a
nsSimplePageSequenceFrame.   nsHTMLScrollFrame already knows how to deal with
its anonymous box kids, nsRootBoxFrame doesn't have any, and the next changeset
will deal with anon box kids of nsSimplePageSequenceFrame.

MozReview-Commit-ID: 2ZV061EhRmc
2017-06-21 11:45:12 -04:00
Hiroyuki Ikezoe
6b6e18eb8b Bug 1356141 - Don't traverse any elements that needed only for animation-only restyles in normal traversal. r=heycam
Before this patch, we were setting the dirty descendants bit in animation-only
restyles and it triggered unnecessary traversal for elements that does not need
the traversal (i.e no need selector matching).

MozReview-Commit-ID: 6pmF3ojVzgb
2017-06-20 06:30:48 +09:00
Cameron McCormack
9d18031cce Bug 1352306 - Part 2: stylo: Only snapshot EventStates if there is some rule that depends on it. r=emilio
MozReview-Commit-ID: J5xhdi7pGSv
2017-05-09 18:13:45 +08:00
Cameron McCormack
ad3e8ba35b Bug 1352306 - Part 1: stylo: Only snapshot attributes if there is some rule that depends on that attribute. r=emilio
MozReview-Commit-ID: Emey96ovc2a
2017-05-08 16:04:31 +08:00
Sebastian Hengst
931186e1b7 Backed out changeset bb6b79e53e82 (bug 1352306) as requested by emilio. r=backout 2017-06-17 14:16:54 +02:00
Sebastian Hengst
667e4b12e2 Backed out changeset 46d7719ee8ae (bug 1352306) 2017-06-17 14:16:20 +02:00
Cameron McCormack
71fdcfcde8 Bug 1352306 - Part 2: stylo: Only snapshot EventStates if there is some rule that depends on it. r=emilio
MozReview-Commit-ID: J5xhdi7pGSv
2017-05-09 18:13:45 +08:00
Cameron McCormack
0e46a12d89 Bug 1352306 - Part 1: stylo: Only snapshot attributes if there is some rule that depends on that attribute. r=emilio
MozReview-Commit-ID: Emey96ovc2a
2017-05-08 16:04:31 +08:00
Bobby Holley
08b7a41caa Bug 1373725 - Trigger a rule tree gc at the end of DoProcessPendingRestyles. r=emilio
MozReview-Commit-ID: W2lkQohudA
2017-06-16 21:59:58 -07:00
Emilio Cobos Álvarez
ad49506734 Bug 1368236: Implement the "hints handled for descendants" optimization. r=heycam
MozReview-Commit-ID: D6CCmWbEXTs
2017-06-16 09:37:45 +02:00
Manish Goregaokar
533734efc7 Bug 1373018 - Part 10: stylo: Remove StyleSource; r=bholley
MozReview-Commit-ID: 4IcROeDNoBA
2017-06-10 22:27:45 -07:00
Emilio Cobos Álvarez
5808ad7655 Bug 1368240: Record whether an snapshot is recording a class attribute change or id change. r=heycam
I'll use this information in order to get fewer dependencies out of the
dependency set.

MozReview-Commit-ID: 5HlmKmSNO8p
2017-06-13 15:52:42 +02:00
Emilio Cobos Álvarez
f2f5a08725 Bug 1368240: Manually expand later sibling hints. r=heycam
This will help keeping RestyleData small, and the amount of complexity we need
to handle during the traversal down.

MozReview-Commit-ID: 2a0FF40tr66
2017-06-13 15:52:37 +02:00
Emilio Cobos Álvarez
1e5cead0c1 Bug 1371955: Diff against the correct style, not the table wrapper style. r=heycam
MozReview-Commit-ID: 9fwt2D7vOpW
2017-06-11 13:44:24 +02:00
Cameron McCormack
9677c86fa6 Bug 1365162 - Part 1: Restyle entire subtree when lang="" or xml:lang="" changes. r=emilio
MozReview-Commit-ID: 46YSGTxjshc
2017-06-05 13:05:19 +08:00
Ryan VanderMeulen
75cc747ca2 Merge m-c to autoland. a=merge
UPGRADE_NSPR_RELEASE UPGRADE_NSS_RELEASE
2017-06-07 22:55:56 -04:00
Hiroyuki Ikezoe
73a43218dd Bug 1368889 - Post animation restyle hint againt pseudo element instead of its parent. r=birtles
To traverse pseudo elements in animation-only restyle, the pseudo element
itself needs the animation-only dirty bit.

MozReview-Commit-ID: 11RfVqnPXfJ
2017-06-08 10:22:25 +09:00
L. David Baron
03d37750a7 Bug 1369260 - Remove use of MOZ_ASSERT_IF in layout. r=heycam
As I've said before, as module owner I prefer that MOZ_ASSERT_IF not be
used in the module because I consider it to be unreadable.  However, a
few uses have crept in, and this patch removes them.

I consider it to be unreadable because the name looks like a name that
uses smalltalk-ish naming conventions, i.e., with a part of the name
corresponding to each parameter, in order.  However, the parameters are
in the order opposite the name.

This was written primarily with the vim commands:
:%s/MOZ_ASSERT_IF(\([^,]*\),/MOZ_ASSERT(!\1 ||/
:wn
followed by manual cleanup for indentation and removal of !!.

MozReview-Commit-ID: G6rLbOn7k8d
2017-06-06 22:27:17 -07:00
Cameron McCormack
7ac5893904 Bug 1365159 - Part 1: Record :-moz-browser-frame and :-moz-table-border-nonzero state on snapshots. r=emilio
MozReview-Commit-ID: BEglHnXhpYJ
2017-06-05 14:19:30 +08:00
Emilio Cobos Álvarez
084a6bad22 Bug 1357461: Ensure not to increment the restyle generation if we haven't restyled after all. r=heycam
This can happen with content attribute or state changes that end up not
generating any hint.

In particular, in the media_queries_dynamic.html case, the iframe resize was
toggling a few scrollbar attributes, which made us never pass the "didn't
restyle" test, even though the test really passed.

I'll probably need to add a workaround to assume we use viewport units, so
probably won't pass for long.

MozReview-Commit-ID: 2oEfic5yaOy
2017-06-03 18:59:10 +02:00
Emilio Cobos Álvarez
75dd4f7f8c Bug 1369187: Don't return an old style context for ::first-line and ::first-letter, but not crash either. r=bholley
This will make us reframe until fixed. It's not hard to fix, just requires to
discuss how :)

MozReview-Commit-ID: 1vlRUSuMqtp
2017-06-01 22:19:26 +02:00
Emilio Cobos Álvarez
0ebab4c299 Bug 1357583: Tidy the PostRestyleEventForCSSRuleChanges API. r=heycam
MozReview-Commit-ID: BtOWWC5knsi
2017-05-29 23:01:50 +02:00
Hiroyuki Ikezoe
f68519c81c Bug 1364799 - Add a new TraversalRestyleBehavior that represents the traversal is triggered by CSS rule changes. r=birtles
And propagate the new flag to servo if mRestyleForCSSRuleChanges is set.

MozReview-Commit-ID: HRZ5duYgciF
2017-05-21 08:16:26 +09:00
Hiroyuki Ikezoe
ac168a7d07 Bug 1364799 - Add PostRestyleEventForCSSRuleChanges to distinguish PostRestyleEvent. r=birtles,heycam
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
2017-05-21 08:16:26 +09:00
Emilio Cobos Álvarez
392abfca94 Bug 1366142: Ignore reentrant change hints without primary frame. r=heycam
MozReview-Commit-ID: 4bF7M0KMhNL
2017-05-20 14:35:37 +02:00
Boris Chiou
18ca899edb Bug 1334036 - Part 11: Trigger animation-only restyle when we handle an event with coordinates. r=birtles,heycam
We need to request an animation-only restyle to force flush all throttled
animations on main thread when we handle an event with coordinates
(e.g. mouse event).

MozReview-Commit-ID: KkjeQVsLgTl
2017-05-19 16:16:41 +08:00
Boris Chiou
647a46ae04 Bug 1334036 - Part 8: Add AddLayerChangesForAnimation in ServoRestyleManager. r=birtles
Some changes to animations don't affect the computed style and yet still
require the layer to be updated. Therefore, we also need to call
AddLayerChangesForAnimation in ServoRestyleManager. In this patch, we
factor out this function from GeckoRestyleManager, so we can reuse it.

MozReview-Commit-ID: LL7D1oGS65l
2017-05-02 14:03:16 +08:00
Emilio Cobos Álvarez
7423e83770 Bug 1364871: Restyle ::backdrop too. r=heycam
MozReview-Commit-ID: BGWRiaeZiD8
2017-05-19 23:59:23 +02:00
Emilio Cobos Álvarez
17e7c60699 Bug 1364871: Add a function to update frame pseudo-element styles during the post-traversal, and restyle bullet frames. r=heycam
MozReview-Commit-ID: 9m0jqmxjOb6
2017-05-19 23:58:22 +02:00
Emilio Cobos Álvarez
af4b6e8260 Bug 1365902: Make ServoStyleSet::RebuildAllStyleData async. r=heycam
MozReview-Commit-ID: D9Ri4gO3F6G
2017-05-17 18:33:32 +02:00
Emilio Cobos Álvarez
93c3013be8 Bug 1364862: Make PostRebuildAllStyleData async. r=heycam
MozReview-Commit-ID: EM3eUP1dWwA
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-05-15 18:02:59 +02:00
Emilio Cobos Álvarez
fec475d0be Bug 1364824: Implement ServoRestyleManager::PostRebuildAllStyleDataEvent. r=heycam
MozReview-Commit-ID: I9HmM9ZMB2c
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-05-15 09:41:42 +02:00
Hiroyuki Ikezoe
0defd7d385 Bug 1356916 - Call PostRestyleEvent() with the change hint obtained by Element::GetAttributeChangeHint in ServoRestyleManager::AttributeChanged. r=heycam
MozReview-Commit-ID: 14clm0eE0iE
2017-05-11 07:30:34 +09:00
Emilio Cobos Álvarez
c4f847ffaa Bug 1355343: Take all the snapshots into account. r=bholley
I've chosen this approach mainly because there's no other good way to guarantee
the model is correct than holding the snapshots alive until a style refresh.

What I tried before this (storing them in a sort of "immutable element data") is
a pain, since we call into style from the frame constructor and other content
notifications, which makes keeping track of which snapshots should be cleared an
which shouldn't an insane task.

Ideally we'd have a single entry-point for style, but that's not the case right
now, and changing that requires pretty non-trivial changes to the frame
constructor.

MozReview-Commit-ID: FF1KWZv2iBM
2017-05-07 16:36:47 +02:00
Emilio Cobos Álvarez
cabca766ba Bug 1362991: Compute at most one text style context per element. r=heycam
MozReview-Commit-ID: IDTRk47CsRS
2017-05-08 14:49:57 +02:00
Emilio Cobos Álvarez
c1d10eadbb Bug 1351339: Compute text style changes when the parent is a display: contents element. r=heycam
MozReview-Commit-ID: GWPNevfP4xc
2017-05-08 03:16:43 +02:00
Emilio Cobos Álvarez
8d15928c16 Bug 1361766: Move MathML content state changes outside of reflow. r=xidorn
This also adds assertions to ensure attributes and state don't change during
layout or frame construction.

MozReview-Commit-ID: BANcpxnRsYS
2017-05-02 22:42:26 +02:00
Emilio Cobos Álvarez
3731858edf Bug 1360241: Devirtualize nsIFrame::GetType. r=heycam
MozReview-Commit-ID: 5Nzhyta5Hle
2017-04-30 17:30:08 +02:00
Emilio Cobos Álvarez
5cff30131d Bug 1331047: Implement the new traversal semantics for stylo. r=bholley,hiro
MozReview-Commit-ID: 4BXx9JpGZKX
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-04-27 17:06:11 +02:00
Emilio Cobos Álvarez
7e1330401f Bug 1355351: Simplify nsLayoutUtils callers, and make child iterators notice display: contents pseudos. r=heycam
This also happens to fix other bugs, like making display: contents pseudos
animatable, which weren't before.

MozReview-Commit-ID: LhwTPNbFvSZ
2017-04-19 12:53:57 +02:00
Boris Chiou
fcc513f6a3 Bug 1355758 - Update RestyleManager::mAnimationGeneration for non-animation update. r=heycam
We use RestyleManager::mAnimationGeneration as the animation index of a
new created transition, and Element.getAnimations() uses this index to
sort the order of transitions. We increase mAnimationGeneration one per
restyle cycle if there is any non-animation update.

MozReview-Commit-ID: KmirBzI7CXi
2017-04-21 16:44:17 +08:00
Ting-Yu Lin
d168afba4f Bug 1354975 - Let the frame handles attribute change in ServoRestyleManager::AttributeChanged(). r=heycam
MozReview-Commit-ID: EdvgBnPlP9Y
2017-04-07 16:41:33 +08:00
Manish Goregaokar
0de0989a14 Bug 1341647 - stylo: Move HTMLBodyElement::WalkContentStyleRules to the mapped attr functionality; r=bz
MozReview-Commit-ID: 90qDHl0Ane4
2017-03-29 12:10:00 -07:00
Emilio Cobos Álvarez
529ee020ee Bug 1351791: Move PostRestyleEventForLazyConstruction and PostRestyleEventInternal to GeckoRestyleManager. r=bholley
MozReview-Commit-ID: 5lrNlkbrnZb
2017-03-31 11:56:29 +02:00
Manish Goregaokar
42f484fe6f Bug 1341648 - stylo: Include content rules from HTMLTableCellElement::WalkContentStyleRules ; r=bz
This also removes the TABLE_ATTRS_DIRTY optimization. Constructing nsMappedAttributes isn't really expensive and we do it all the time anyway.

MozReview-Commit-ID: 2krt1nFUzgl
2017-03-26 13:53:34 -07:00
Bobby Holley
a2cd204d74 Bug 1350441 - Make ServoRestyleManager::ClearServoDataFromSubtree a bit smarter. r=heycam
There's no reason to traverse the entire subtree if we encounter an unstyled section.

MozReview-Commit-ID: 7WeMTI73wR9
2017-03-29 09:27:24 -07:00
Emilio Cobos Álvarez
39225cda06 Bug 1350140: Flush the overflow changed tracker when done with restyles. r=heycam
MozReview-Commit-ID: 6ENzvvxCok5
2017-03-27 22:55:20 +02:00
Bobby Holley
aacbfde69f Bug 1350115 - Squelch post-traversal generated by additional animation traversals when we're styling a fresh subtree. r=heycam,r=birtles
This patch exists to avoid a crash in layout/style/test/test_animations.html. We end up
generating some ::before content, which causes us to style the new subtree at [1]. In
StyleNewSubtree, we fail the !postTraversalRequired assertion because
PrepareAndTraverseSubtree decided to traverse the tree twice (once to style it, and again
to restyle it for animations), and return that a post-traversal is needed.

The reason this issue happens with my NAC patches and not without is that we were previously
filtering out generated ::before content from the servo traversal, so the servo traversal
wouldn't have reached it and (presumably) the animation restyle wouldn't have happened and
we wouldn't have returned true for needing a post-traversal.

[1] http://searchfox.org/mozilla-central/rev/c48398abd9f0f074c69f2223260939e30e8f99a8/layout/base/nsCSSFrameConstructor.cpp#1918

MozReview-Commit-ID: 8tgzLjV8B3A
2017-03-24 09:40:30 -07:00