Commit Graph

276 Commits

Author SHA1 Message Date
Xidorn Quan
ea8b8b1e74 Bug 1449400 part 5 - Remove StyleSetHandle. r=emilio
This patch basically does:
* remove StyleSetHandle and its corresponding files
* revisit #includes of related header files and change correspondingly
* change nsIPresShell::mStyleSet to be UniquePtr<ServoStyleSet>
* change the creating path of ServoStyleSet to pass UniquePtr
* change other mentions of StyleSetHandle to ServoStyleSet*
* remove AsServo() calls on ServoStyleSet

Some unfortunate bits:
* some methods of (Servo)StyleSet only accepts ServoStyleSheet while
  many places call into the methods with StyleSheet, so there are many
  ->AsServo() added to sheets

MozReview-Commit-ID: K4zYnuhOurA
2018-03-29 22:15:46 +11:00
Xidorn Quan
d03cde8f6e Bug 1447828 part 8 - Remove remaining uses of StyleBackendType as well as the type itself. r=emilio
MozReview-Commit-ID: 6sh4eKvDpRF
2018-03-29 02:34:34 +11:00
Jonathan Watt
44d37e68d5 Bug 1449321 - Remove the IsServo and IsGecko methods from the style system code. r=emilio 2018-03-23 16:01:34 +00:00
Emilio Cobos Álvarez
fb9a0faf99 Bug 1448559: Cleanup CalcStyleDifference. r=xidorn
The aSamePointerStructs argument is unused now.

Also, aIgnoreVariables can be true everywhere now, since variable changes can't
generate change hints, and anonymous boxes and such don't care about whether
they really changed or not.

Only one caller cares about struct equality, and that already compares variables
manually as an optimization on the rust side.

We had this optimization inconsistently in some cases but not others.

MozReview-Commit-ID: F2EISKlxR3K
2018-03-26 09:47:33 +02:00
Emilio Cobos Álvarez
0b3a18a950 Bug 1448413: Do a bit of misc cleanup. r=jwatt
Summary: Mostly removing unneeded AsServo() and such.

Reviewers: jwatt

Bug #: 1448413

Differential Revision: https://phabricator.services.mozilla.com/D798

MozReview-Commit-ID: 8muHF7uMA53
2018-03-25 18:14:36 +02:00
Emilio Cobos Álvarez
1d4859a89a Bug 1447483: Merge nsStyleContext and ServoStyleContext, rename to ComputedStyle. r=jwatt on a CLOSED TREE
MozReview-Commit-ID: JPopq0LudD
2018-03-22 20:06:24 +01:00
Emilio Cobos Álvarez
97286b35c8 Back out changeset b683bb3f22a1 (Bug 1447483) for not landing with all the files. r=me on a CLOSED TREE
This reverts commit 1808914126bb9f9e4a82d2c3d7ac961885fe7d62.

MozReview-Commit-ID: 5skESBseEvo
2018-03-22 20:05:22 +01:00
Emilio Cobos Álvarez
1f5d8de5cc Bug 1447483: Merge nsStyleContext and ServoStyleContext, rename to ComputedStyle. r=jwatt
MozReview-Commit-ID: JPopq0LudD
2018-03-22 19:48:42 +01:00
Sylvestre Ledru
055d8432e6 Bug 1443080 - Use the static call for static methods (not instance) r=Ehsan
MozReview-Commit-ID: JwHh4bzxuTR
2018-03-16 14:29:15 +01:00
Coroiu Cristina
8c03201dcc Backed out 2 changesets (bug 1443080) for spidermonkey build bustage at build/src/js/src/jit/BaselineCacheIRCompiler.cpp
Backed out changeset 7d509bb8a35d (bug 1443080)
Backed out changeset 53bdcd5937cd (bug 1443080)
2018-03-14 11:13:21 +02:00
Sylvestre Ledru
4a52aab337 Bug 1443080 - Use the static call for static methods (not instance) r=Ehsan
MozReview-Commit-ID: JwHh4bzxuTR
2018-03-05 13:43:54 +01:00
Emilio Cobos Álvarez
3d6132df51 Bug 1439395: Avoid leaving an stale restyle root if there's no servo data on it. r=bholley
If a single element is inserted in the document, from the lazy frame
construction path we mark it as the restyle root.

It has no restyle data, and we weren't calling ClearServoData when its parent
was being removed from ClearServoDataFromSubtree, thus leaving the stale restyle
root.

MozReview-Commit-ID: GY812b8tDk0
2018-02-26 18:50:19 +01:00
Emilio Cobos Álvarez
f4dc7c3a81 Bug 1439793: Handle correctly a reconstruct generated from additional style contexts. r=xidorn
Much like we do in nsIFrame::UpdateStyleOfOwnedChildFrame.

There's also the fact that ::-moz-math-anonymous shouldn't probably be
content-exposed... Oh well.

MozReview-Commit-ID: 8mthwW7Nivy
2018-02-21 09:32:53 +01:00
Daniel Holbert
3a47f02744 Bug 1438020: Add some includes for "Inlines" headers to address clang build warnings in non-unified build. r=mats
MozReview-Commit-ID: HRHnjznPjx1
2018-02-13 14:38:20 -08:00
Daniel Holbert
b884586f77 Bug 1437623 part 2: (layout/base) Add missing includes/namespaces to preemptively fix unified bustage. r=mats
MozReview-Commit-ID: G4ufWWf9qRC
2018-02-13 09:08:42 -08:00
Emilio Cobos Álvarez
f9f9520fe5 Bug 1436625: Whitelist the assertion for the throttled animation flush. r=hiro
MozReview-Commit-ID: 6StJjbH5Y59
2018-02-13 20:57:48 +01:00
Emilio Cobos Álvarez
c933c5eb83 Bug 1433591: Update the style of child anon box wrapper after owned anon boxes. r=bz
Since the former could inherit from the latter.

Test incoming in a followup.

MozReview-Commit-ID: LJjprcyjDyU
2018-01-28 05:11:07 +01:00
Emilio Cobos Álvarez
b89797c4e1 Bug 1430844: Add assertions that would've caught this. r=bz
MozReview-Commit-ID: 1UfhIRn2We2
2018-01-17 19:12:34 +01:00
KuoE0
4f1ce32982 Bug 1428276 - Make ExpectedOwnerForChild deal with abs.pos. anon boxes. r=heycam
For an OOF frame, the parent frame that's associated with our parent
style context is the *placeholder's* parent -- not the OOF frame's
parent.

MozReview-Commit-ID: CUSBkWDqxWz
2018-01-05 16:26:01 +08:00
Emilio Cobos Álvarez
e459aafe72 Bug 1428164: Restyle owned anon boxes after processing children. r=bz
MozReview-Commit-ID: 4QcJPY9hkSm
2018-01-05 11:57:47 +01:00
Emilio Cobos Álvarez
13332c287a Bug 1422654: stylo: Avoid restyling XBL-bound element if the binding doesn't have stylesheets. r=heycam
MozReview-Commit-ID: An2McUbpCLk
2017-12-04 02:47:54 +01:00
Xidorn Quan
f849306f8b Bug 1417824 part 1 - Query theme for attribute change on element with appearance. r=heycam
The change is mostly copied from GeckoRestyleManager::AttributeChanged.
It is not clear to me whether it's worth moving it to the superclass so
that we don't duplicate the code. If we are removing the Gecko code in
short term, it probably doesn't matter.

It is also not clear whether we should port other code from that method
to ServoRestyleManager.

MozReview-Commit-ID: Fd1nbwgLGa1
2017-11-22 15:35:12 -06:00
Xidorn Quan
fb1eb9f3c4 Bug 1417281 part 1 - Trigger subtree restyle when lwtheme / lwthemetextcolor attribute on root element of XUL document is changed. r=heycam
MozReview-Commit-ID: 2RM3ZkWKiSl
2017-11-14 17:53:11 -08:00
Emilio Cobos Álvarez
ec3cefed36 Bug 1413288: The owner of a bullet frame is the first continuation of the parent. r=xidorn
MozReview-Commit-ID: FUsdsETkV2Q
2017-11-01 12:20:55 +01:00
Emilio Cobos Álvarez
37488d78d8 Bug 1409931: nsImageControlFrame can also be using a <map> element. r=xidorn
This goes with a crashtest, as soon as I get a usable build.

MozReview-Commit-ID: LqmPWoJZ7AJ
2017-10-20 12:00:49 +02:00
Emilio Cobos Álvarez
d54a06a8cd Bug 1409088: Fix destination insertion point removal algorithm. r=bz
When an insertion point (a) is added to the document before another insertion
point (b), and that insertion point matches nodes that used to match (b), the
following happens in RedistributeAllNodes:

 * Loop through (a), and clear the existing insertion points on nodes
   distributed into it (none, since it was just inserted).

 * Go through the node pool and add the matched nodes. That makes the node
   (which already had (b) in the insertion point array) have [(b), (a)] as the
   insertion points.

 * Go through (b), and clear the existing insertion points on the nodes
   distributed to it. That used to do IndexOf() + SetLength(), but since (b) was
   the first node by then in the insertion point array, we'll leave the
   insertion point array empty, while (a) would still think that the node is
   distributed to it.

This causes the bloom filter code, which loops through the flattened tree
parents, to not insert any (because the node doesn't know about where it's
inserted).

Also, add a debug phase to verify the flat tree before restyling that would've
caught this more clearly (happy to remove it if you don't think it's worth).

We still can't assert that the insertion point is properly referenced due to the
hacky way mInsertionPoints is cleared in
HTMLContentElement::UpdateFallbackDistribution, but we'll still clear the
insertion points either there, or on the rest of insertion point removal code in
ShadowRoot::DistributeAllNodes.

MozReview-Commit-ID: 9k2gnsAKMEe
2017-10-19 14:45:16 +02:00
Xidorn Quan
737b089de2 Bug 1406562 - Return first continuation for parent of first-letter in ExpectedOwnerForChild. r=emilio
MozReview-Commit-ID: KkBDMStwQ6r
2017-10-09 11:07:17 +11:00
Nicholas Nethercote
7dbfdaf890 Bug 1400460 - Rename nsIAtom as nsAtom. r=hiro.
(Path is actually r=froydnj.)

Bug 1400459 devirtualized nsIAtom so that it is no longer a subclass of
nsISupports. This means that nsAtom is now a better name for it than nsIAtom.

MozReview-Commit-ID: 91U22X2NydP
2017-10-03 09:05:19 +11:00
Boris Zbarsky
c4708237c3 Bug 1391736. Relax the ExpectedOwnerForChild assert in the ServoRestyleState constructor. r=emilio 2017-10-02 16:36:49 -04:00
Boris Zbarsky
9a88d323f3 Bug 1402476. ExpectedOwnerForChild should not return a first-letter frame for a text child. r=emilio
The expected owner is the DOM parent.  The first-letter then does some reparenting of the text style later.
2017-10-02 16:36:47 -04:00
Emilio Cobos Álvarez
b2aa7a1c88 Bug 1404167: Properly update the styles of first-letter childs of anon boxes. r=bz
MozReview-Commit-ID: Cyxs4FxGj6B
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-09-29 13:14:37 +02:00
Sebastian Hengst
66853fcbf8 Backed out changeset 710b592482ee (bug 1404167) for asserting mOwner == ExpectedOwnerForChild(aFrame) at ServoRestyleManager.cpp:125. r=backout 2017-09-29 11:39:12 +02:00
Emilio Cobos Álvarez
9fcda800c4 Bug 1404167: Properly update the styles of first-letter childs of anon boxes. r=bz
MozReview-Commit-ID: Cyxs4FxGj6B
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-09-29 08:50:47 +02:00
Emilio Cobos Álvarez
cc9ac260ec Bug 1403615: Also follow the NODE_DESCENDANTS_NEED_FRAMES bit in ClearRestyleStateFromSubtree. r=bholley
We don't follow this bit intentionally because we know that even if it's set,
when none of the other two bits are set there are no other restyle / change
hints down the tree.

We rely on the frame constructor to clean the mess up, though, and it doesn't
really do a good work about it.

In particular, the case we're hitting on the test-case is:

<body descendant-need-frames change=reconstruct style="display: table-column-group">
  <div descendant-need-frames>
    <div descendant-need-frames>
      <span needs-frame></span>
    </div>
  </div>
</body>

When we see we need to reconstruct the body, we call
ClearRestyleStateFromSubtree, but that doesn't do much now, since we don't
follow the descendant-need-frames bits.

Then, when we reconstruct the content, we arrive at[1] when constructing the
first child <div>. The <div> flags have been cleared, but not the children's!

Then a text-node is inserted in a <div>, breaking all sorts of invariants.

This is the easiest fix. Other fixes include clearing the flags on
SetAsUndisplayedContent. But that implies not clearing them in
ShouldCreateItemsForChild, and doing that somewhere more sensible.

I suspect it's not too hard, but that's a slightly more risky change, will do it
if you prefer it.

[1]: http://searchfox.org/mozilla-central/rev/3dbb47302e114219c53e99ebaf50c5cb727358ab/layout/base/nsCSSFrameConstructor.cpp#6092

MozReview-Commit-ID: 7026wkQLQkz
2017-09-28 08:53:51 +02:00
Sebastian Hengst
a653c1cfbd Backed out changeset 379e7e7bf80d (bug 1403615) for failing own crashtest. r=backout 2017-09-27 21:27:08 +02:00
Emilio Cobos Álvarez
4e7215a9e2 Bug 1403615: Also follow the NODE_DESCENDANTS_NEED_FRAMES bit in ClearRestyleStateFromSubtree. r=bholley
We don't follow this bit intentionally because we know that even if it's set,
when none of the other two bits are set there are no other restyle / change
hints down the tree.

We rely on the frame constructor to clean the mess up, though, and it doesn't
really do a good work about it.

In particular, the case we're hitting on the test-case is:

<body descendant-need-frames change=reconstruct style="display: table-column-group">
  <div descendant-need-frames>
    <div descendant-need-frames>
      <span needs-frame></span>
    </div>
  </div>
</body>

When we see we need to reconstruct the body, we call
ClearRestyleStateFromSubtree, but that doesn't do much now, since we don't
follow the descendant-need-frames bits.

Then, when we reconstruct the content, we arrive at[1] when constructing the
first child <div>. The <div> flags have been cleared, but not the children's!

Then a text-node is inserted in a <div>, breaking all sorts of invariants.

This is the easiest fix. Other fixes include clearing the flags on
SetAsUndisplayedContent. But that implies not clearing them in
ShouldCreateItemsForChild, and doing that somewhere more sensible.

I suspect it's not too hard, but that's a slightly more risky change, will do it
if you prefer it.

[1]: http://searchfox.org/mozilla-central/rev/3dbb47302e114219c53e99ebaf50c5cb727358ab/layout/base/nsCSSFrameConstructor.cpp#6092

MozReview-Commit-ID: 7026wkQLQkz
2017-09-27 20:02:04 +02:00
Emilio Cobos Álvarez
aa36c63d88 Bug 1403078: Lazily tweak the traversal root to account for sibling invalidations. r=heycam
MozReview-Commit-ID: Ij3nMOKu5FO
2017-09-26 14:20:11 +02:00
Emilio Cobos Álvarez
9d1af3e1f1 Bug 1403028: Ensure the parent is in the composed doc before marking it as dirty. r=heycam
We could do the check earlier, but the end result is effectively the same, and
this makes it easier to remove.

MozReview-Commit-ID: 5c8TFHK1ciD
2017-09-26 10:02:23 +02:00
Wes Kocher
8d855f04ce Merge inbound to central, a=merge
MozReview-Commit-ID: 7EzhCCVVn7n
2017-09-25 16:41:34 -07:00
Boris Zbarsky
62dc7f7f47 Bug 1401739. Make sure to always call UpdateStyleOfChildAnonBox with the first continuation as "this". r=emilio
MozReview-Commit-ID: KhfvBuCeoex
2017-09-25 10:58:39 -04:00
Emilio Cobos Álvarez
c10bb124e6 Bug 1387942: Relax backdrop frame parenthood assertion, and re-enable test. r=xidorn
MozReview-Commit-ID: 99I3apwe52l
2017-09-12 08:41:17 +02:00
Wei-Cheng Pan
77a3e6f43a Bug 1397168 - Add a function to find out if a node has any ancestor that is pending for restyling. r=emilio
MozReview-Commit-ID: DXcodMcQP59
2017-09-06 15:42:05 +08:00
Brian Birtles
8c77871398 Bug 1365855 - Drop comment about needing to update SMIL animation styles in ServoRestyleManager::UpdateOnlyAnimationStyles; r=hiro; DONTBUILD
Unlike GeckoRestyleManager::UpdateOnlyAnimationStyles which is called from
*both* GeckoRestyleManager::ProcessPendingRestyles and FlushThrottledStyles,
ServoRestyleManager::UpdateOnlyAnimationStyles is only called from
FlushThrottledStyles which is what we use to update transform animations before
doing hit-testing. In this case, there doesn't appear to be any situation where
throttled SMIL animations need to be updated since SMIL animations are only
throttled when they apply to display:none content (bug 1209405 and bug 1322970)
in which case they should not affect hit testing.

MozReview-Commit-ID: 4bt7hCSa7Xr
2017-09-07 16:24:12 +09:00
Wei-Cheng Pan
ed39aa0d16 Bug 1363805 - Part 3: Do lazy flushing if possible. r=heycam
Skips flushing current document if the target of getComputedDOMStyle cannot be
affected by any pending restyles.

MozReview-Commit-ID: C87HDIDvOth
2017-05-23 12:02:11 +08:00
Boris Zbarsky
c62dc63d66 Bug 1395650. Make anonymous column groups into non-inheriting anon boxes, to better match the behavior of other browsers. r=heycam 2017-09-01 00:53:33 -04:00
Boris Zbarsky
c3557b38fb Bug 1395591. When looking for our layout parent style, make sure to start with the placeholder if we're out of flow. r=emilio
MozReview-Commit-ID: 1M52bi3oQFX
2017-08-31 22:46:35 -04:00
Boris Zbarsky
78dee00e63 Bug 1390389. Fix anon box restyling assertions to correctly handle ib splits. r=xidorn
MozReview-Commit-ID: AtBFlvLyg6b
2017-08-31 09:12:13 -04:00
Brad Werth
e2b3b127d6 Bug 1385789: Refactor RestyleManager::ContentStateChangedInternal to move nsRestyleHint calculation out to GeckoRestyleManager. r=bholley
MozReview-Commit-ID: 7GXkPcjfYe6
2017-08-29 15:50:50 -07:00
Xidorn Quan
b7b6efba24 Bug 1390409 part 3 - Send a11y notification for visibility changes. r=emilio
MozReview-Commit-ID: I48OhzekXvD
2017-08-28 16:58:25 +10:00
Xidorn Quan
94ca520e89 Bug 1390409 part 2 - Replace aParentWasRestyled with a bitflag. r=emilio
MozReview-Commit-ID: 49C1N6LNXi7
2017-08-28 14:53:35 +10:00