Commit Graph

454 Commits

Author SHA1 Message Date
Alexander Surkov
172f42edb7 Bug 1040735 - DOM node reinsertion under anonymous content may trigger a11y child adoption, r=bz, tbdaunde, davidb 2014-09-19 20:02:30 -04:00
Cameron McCormack
72c8556198 Bug 1041512 - Mark intrinsic widths dirty on a style change even if the frame hasn't had its first reflow yet. r=dbaron 2014-09-17 10:40:11 +10:00
Cameron McCormack
abeab49150 Bug 1045895 - Pass out provider frame from RestyleSelf to avoid calling GetParentStyleContextFrame again. r=dbaron 2014-09-10 14:42:03 +10:00
L. David Baron
92eeb0a453 Bug 977991 patch 4 - Ensure we don't try to use the style attribute optimization on pseudo-elements. r=birtles
This is needed because patch 1 and patch 3 did not add a mechanism that
allows restyling pseudo-elements, which would be substantially more work
and very little use (since the only case in which they have style
attributes is for our internal use on the ::-moz-color-swatch
pseudo-element).

RestyleUndisplayedChildren does not need the same fix because it's only
used on elements, and never on pseudo-elements or anonymous boxes.
2014-09-13 06:17:36 -07:00
Cameron McCormack
9f6b829fcb Bug 931668 - Part 24: Avoid copying RestyleData::mDescendants when modifying an existing entry. r=dbaron 2014-09-05 13:48:48 +10:00
Cameron McCormack
ce90f1bc3e Bug 931668 - Part 22: Clear cached structs on descendants of an old style context that had structs swapped, if it is staying around. r=dbaron 2014-09-05 13:48:47 +10:00
Cameron McCormack
9a07631783 Bug 931668 - Part 21: Fix issue where not all pending-restyle descendants are restyled. r=dbaron 2014-09-05 13:48:47 +10:00
Cameron McCormack
baf45befa9 Bug 931668 - Part 20.2: Don't call AssertStructsNotUsedElsewhere on style contexts for :before/:after frames that are going away. r=dbaron 2014-09-05 13:48:47 +10:00
Cameron McCormack
2b23ecb7d0 Bug 931668 - Part 20.1: Keep old structs on new style contexts, for those that are equal. r=dbaron
We don't do struct swapping if either the old or new style contexts are
shared, since we can't guarantee that such a change will be valid for
all frames that use the shared style context.
2014-09-05 13:48:46 +10:00
Cameron McCormack
b20d58dc77 Bug 931668 - Part 20: Stop the recursive restyling process when we detect it is safe to do so. r=dbaron 2014-09-05 13:48:46 +10:00
Cameron McCormack
ca7c138f7b Bug 931668 - Part 19: Make RebuildAllStyleData use eRestyle_ForceDescendants so that it does rebuild the whole style tree. r=dbaron 2014-09-05 13:48:46 +10:00
Cameron McCormack
2697fc8579 Bug 931668 - Part 17: Handle eRestyleResult_Stop by moving a frame's style context to its new parent. r=dbaron 2014-09-05 13:48:46 +10:00
Cameron McCormack
a0a0ac49e4 Bug 931668 - Part 16: Give ElementRestyler::RestyleSelf a return value that indicates how restyling should proceed. r=dbaron 2014-09-05 13:48:45 +10:00
Cameron McCormack
5829a08635 Bug 931668 - Part 15: Pass equal struct bitfield back out of ElementRestyler::CaptureChange. r=dbaron 2014-09-05 13:48:45 +10:00
Cameron McCormack
107a9be41e Bug 931668 - Part 11: Add eRestyle_Force (and eRestyle_ForceDescendants) restyle hints to control whether the frame (and all of its descendants) must be assigned its new style context even if it had the same style data as the old style context. r=dbaron 2014-09-05 13:48:45 +10:00
Cameron McCormack
5f380619fa Bug 931668 - Part 9 (no part 8): Make nsStyleContext::CalcStyleDifference compare all structs and return a bitfield of which changed. r=dbaron 2014-09-05 13:48:44 +10:00
L. David Baron
42863b4bad Bug 1057129 patch 3 - Post restyles from CheckAnimationRule directly to pseudo-elements. r=birtles
This matches patch 2, and also fixes an incorrect use of eRestyle_Self
on the parents of pseudo-elements in order to restyle those
pseudo-elements, where it would not previously have been effective.

This should all be temporary, since this code can go away with bug
960465, when animation phases are removed.
2014-08-24 21:48:22 -07:00
L. David Baron
7fdfb5b3c4 Bug 1057098 - Rename ElementRestyler::Restyle{Before,After}Pseudo to MaybeReframeFor{Before,After}Pseudo. r=bzbarsky 2014-08-24 21:48:21 -07:00
L. David Baron
e55c4dff59 Bug 625289 patch 7 - Expose TryStartingTransition. r=heycam 2014-08-13 15:39:01 -07:00
L. David Baron
30a51de618 Bug 625289 patch 5 - Create a ReframingStyleContexts struct during restyling. r=heycam 2014-08-13 15:39:01 -07:00
L. David Baron
70a8881a3a Bug 625289 patch 4 - Add member variable to restyle manager for currently reframing style contexts. r=heycam 2014-08-13 15:39:01 -07:00
L. David Baron
5e50b81448 Bug 625289 patch 2 - Create wrapper function around the only calling pattern of ComputeStyleChangeFor. r=heycam 2014-08-13 15:39:00 -07:00
L. David Baron
ff54c76827 Bug 625289 patch 1 - Add comment about dependence on synchronous frame reconstruction. r=heycam 2014-08-13 15:39:00 -07:00
L. David Baron
ee1160a963 Bug 996796 patch 24 - Use a RestyleTracker for the coalescing in the animation-only style flush (miniflush). r=heycam
This changes the coalescing behavior during the animation-only style
flush by doing tree-based coalescing between the style updates required
by animations and those required by transitions, rather than doing
animations and transitions separately.

Note that both the old and the new code update all
animating/transitioning styles rather than only the throttled styles,
though we should fix that eventually as noted in the FIXME comment in
the code (but only for the existing caller, and not for the new one to
be introduced in bug 960465).

Note that this depends for its correctness on the previous patches to
make the restyling process exact.

The test changes are because the effects of bug 1031688 are changed by
the change in coalescing.  In the old code, we updated transition styles
before animation styles; in the new code we do a single pass over the
tree, which for the relevant test means updating animations on the
parent before transitions on the child, which changes the effects of the
bug.
2014-08-06 22:58:44 -07:00
L. David Baron
79209bb86e Bug 996796 patch 23 - Make transition manager ignore StyleContextChanged notifications during an animation-only style update. r=heycam
This will be necessary when we use the restyle tracker for the
animation-only style flush.
2014-08-06 22:58:44 -07:00
L. David Baron
eb3cff8835 Bug 996796 patch 22 - Make restyling exact - only call RestyleBeforePseudo and RestyleAfterPseudo when we have an eRestyle_Subtree hint. r=heycam 2014-08-03 13:11:55 -07:00
L. David Baron
b1c3fa32da Bug 996796 patch 21 - Make restyling exact - Only call MaybeRecreateFramesForElement when we have a nonzero restyle hint. r=heycam 2014-08-03 13:11:55 -07:00
L. David Baron
20be34a7e0 Bug 996796 patch 20 - Make restyling exact - Avoid rerunning selector matching on everything when the basis of rem units changes. r=heycam 2014-08-03 13:11:55 -07:00
L. David Baron
c3875d943b Bug 996796 patch 19 - Avoid reresolution for extra style contexts when the restyle hint is not eRestyle_Self or eRestyle_Subtree. r=heycam
This is part of making reresolution not touch style that it was not
asked to touch, so that we can use it for the animation-only restyle.
2014-08-03 13:11:55 -07:00
L. David Baron
edc5583e27 Bug 996796 patch 18 - Fix RestyleTracker to handle restyle hints exactly rather than pessimistically when restyling continuations with varying styles (e.g., spans inside ::first-line or ::first-letter). r=heycam
This will be necessary when we use the restyle tracker for the
animation-only style flush, because animation-only style flushes need to
update *only* the animation style data and no other style data.  Thus
using the RestyleTracker for animation-only style flushes requires that
we do this.
2014-08-03 13:11:55 -07:00
L. David Baron
6e4ca84b80 Back out bug 996796 patch 18 through patch 25 (changesets fbe97c2db729 through 9719c08c3144) to fix 50%-of-the-time Android 4.0 debug orange from single assertion ("Why did this not get handled while processing mRestyleRoots?", layout/base/RestyleTracker.cpp, line 87) in gfx/tests/crashtests/815489.html . 2014-08-03 01:22:07 -07:00
L. David Baron
e99e5ad465 Bug 996796 patch 24 - Use a RestyleTracker for the coalescing in the animation-only style flush (miniflush). r=heycam
This changes the coalescing behavior during the animation-only style
flush by doing tree-based coalescing between the style updates required
by animations and those required by transitions, rather than doing
animations and transitions separately.

Note that both the old and the new code update all
animating/transitioning styles rather than only the throttled styles,
though we should fix that eventually as noted in the FIXME comment in
the code (but only for the existing caller, and not for the new one to
be introduced in bug 960465).

Note that this depends for its correctness on the previous patches to
make the restyling process exact.

The test changes are because the effects of bug 1031688 are changed by
the change in coalescing.  In the old code, we updated transition styles
before animation styles; in the new code we do a single pass over the
tree, which for the relevant test means updating animations on the
parent before transitions on the child, which changes the effects of the
bug.
2014-08-02 19:37:49 -07:00
L. David Baron
91317e847c Bug 996796 patch 23 - Make transition manager ignore StyleContextChanged notifications during an animation-only style update. r=heycam
This will be necessary when we use the restyle tracker for the
animation-only style flush.
2014-08-02 19:37:48 -07:00
L. David Baron
36236d6dd2 Bug 996796 patch 22 - Make restyling exact - only call RestyleBeforePseudo and RestyleAfterPseudo when we have an eRestyle_Subtree hint. r=heycam 2014-08-02 19:37:48 -07:00
L. David Baron
6ca1c054ae Bug 996796 patch 21 - Make restyling exact - Only call MaybeRecreateFramesForElement when we have a nonzero restyle hint. r=heycam 2014-08-02 19:37:48 -07:00
L. David Baron
1b8f8d00b3 Bug 996796 patch 20 - Make restyling exact - Avoid rerunning selector matching on everything when the basis of rem units changes. r=heycam 2014-08-02 19:37:47 -07:00
L. David Baron
1af81cb96f Bug 996796 patch 19 - Avoid reresolution for extra style contexts when the restyle hint is not eRestyle_Self or eRestyle_Subtree. r=heycam
This is part of making reresolution not touch style that it was not
asked to touch, so that we can use it for the animation-only restyle.
2014-08-02 19:37:47 -07:00
L. David Baron
5e654b757b Bug 996796 patch 18 - Fix RestyleTracker to handle restyle hints exactly rather than pessimistically when restyling continuations with varying styles (e.g., spans inside ::first-line or ::first-letter). r=heycam
This will be necessary when we use the restyle tracker for the
animation-only style flush, because animation-only style flushes need to
update *only* the animation style data and no other style data.  Thus
using the RestyleTracker for animation-only style flushes requires that
we do this.
2014-08-02 19:37:47 -07:00
L. David Baron
f6b7b27fd9 Bug 996796 patch 8 - Pass the replacements through to ResolveStyleWithReplacement. r=heycam
This means ResolveStyleWithReplacement will replace only the rules in
the nsRestyleHint rather than always replacing both the animations rule
and the transitions rule.  (This will become even more useful later when
we add the ability to replace the style attribute rule.)
2014-08-02 19:37:44 -07:00
L. David Baron
a61deed32e Bug 996796 patch 7 - Add new restyle types that replace only the data from CSS transitions or animations. r=heycam
This is the start of a refactoring of the existing code in
CommonAnimationManager, nsTransitionManager, and nsAnimationManager,
which will be removed in later patches (after patches in between cause
this code to be used instead of the current code).

But it also handles interesting cases more correctly, such as cases
where style context parents are unusual.

FIXME: It would be nice to add tests for these cases, but they're mostly
pretty obscure (e.g., a transition of 'transform' that's affected by
inheriting 'transform' from ::first-line), so I'm not treating it as a
priority right now.
2014-08-02 19:37:43 -07:00
L. David Baron
2b30e0b163 Bug 996796 patch 6 - Adjust checks of restyle types to accomodate new types weaker than eRestyle_Self. r=heycam
FIXME: Adjust for eRestyle_Force if bug 931668 lands first.

Later patches will add such types that are like eRestyle_Self but that
only replace the style attribute, animation rule, or transition rule.
2014-08-02 19:37:43 -07:00
Robert O'Callahan
3513545f9f Bug 1013054. Don't propagate non-repaint change hints to the canvas frame. r=mattwoodrow 2014-07-22 01:57:52 +12:00
L. David Baron
c78b271b54 Bug 996796 patch 3 - Move the knowledge of when we last updated main-thread-suppressed animation styles into the restyle manager rather than have two separate but always equal timestamps for animations and transitions. r=birtles 2014-07-24 21:35:34 -07:00
L. David Baron
dda6bdde87 Bug 996796 patch 2 - Change the public API to updating main-thread-suppressed animation styles (miniflush) in preparation for refactoring how it works. r=birtles
Later patches will combine the coalescing of restyling between the
miniflush performed for animations and for transitions into a single
RestyleTracker, which will coalesce the work better.  This patch changes
the API exposed for doing that so that the coalescing patch will contain
only the internals.
2014-07-24 21:35:34 -07:00
L. David Baron
89b8d9d2fb Bug 996796 patch 1 - Perform a miniflush on both animations and transitions before processing restyles. r=birtles
This affects the correctness of transitions that take over from a
running animation.  (In the current code this can happen on a single
element; once the cascading changes in bug 960465 are complete it can
only happen via inheritance.)

This version of the patch changes to do the test using opacity rather
than transform, since testing using transforms encountered issues
related to bug 1031688:  the presence of phantom transitions due to the
interaction of the computed value rules for transforms distinguishing
between values that the interpolation rules consider identical.  (These
problems only appear after patch 24 in this bug changes the coalescing
order between a parent with animations and a child with transitions so
that the parent is handled before the child, instead of transitions
being handled before animations.)

The final two added tests fail without the patch and pass with the patch.
(With the opacity version, the third to last test also fails without the
patch, probably due to the value not having yet been sent to the layer.
This was not an issue pre-patch with the original test using transform,
though.  I haven't tested that this happened with patch 0, though, so it
might have been the issue patch 0 fixes.)
2014-07-24 21:35:33 -07:00
Simon Montagu
0132cc9646 Bug 789096 patch 9: use logical coordinates in nsHTMLReflowState available size. r=jfkthame 2014-07-24 01:28:46 -07:00
Chris Lord
15e7d8c351 Bug 1038781 - Don't reflow/repaint frame when clip changes. r=roc
If an element's existing clip changes, just update overflow areas and let
DLBI handle invalidation.
2014-07-16 13:28:50 +02:00
L. David Baron
e5a5d8fd98 Bug 1026768 - Pass the restyle hint through from ProcessOneRestyle to ComputeStyleChangeFor rather than converting it to a boolean and back. r=heycam
This was originally bug 996796 patch 6, but it's also needed bug 931668,
so I'm moving it into its own bug.
2014-06-18 17:07:26 -07:00
Susanna Bowen
e432267ea6 Bug 727125 - Update overflow areas for text frames on text-decoration change to ensure text-decoration on hover is visible. r=dbaron 2014-06-17 10:32:00 -04:00
Susanna Bowen
1c51e9400a Bug 1025308 - Rename the variables associated with skipping style fixups for children element's based on parent display value. r=mats 2014-06-16 09:55:00 -04:00