Commit Graph

256 Commits

Author SHA1 Message Date
Simon Montagu
76702f81c3 Bug 1147834: Use abstract coordinates in nsHTMLReflowState, r=jfkthame 2015-06-04 03:43:02 -07:00
Jordan Santell
7e1d6ea6e0 Bug 1164338 - Move styles markers to be generated in DoProcessRestyles rather than when the Flush_Style queue is flushed. r=smaug,heycam 2015-05-18 16:03:04 -07:00
Robert Longson
dcefad5b48 Bug 1163875 - ensure opacity animation in patterns results in redraws r=jwatt 2015-05-13 15:38:04 +01:00
Cameron McCormack
348a675cf6 Bug 1157097 - Don't share a style context that will have its cached style data cleared. r=dbaron 2015-04-29 14:47:15 +10:00
Cameron McCormack
c74201d7cc Bug 1156988 - Update RestyleManager::{Change,Restyle}HintToString for recent changes. r=dbaron 2015-04-22 08:03:31 +10:00
Brian Birtles
eb570dc2df Bug 1154615 part 5 - Rename AnimationPlayerCollection to AnimationCollection; r=jwatt 2015-04-21 10:22:10 +09:00
Cameron McCormack
08b506279f Bug 1154149 - Remove nsPresContext arguments from a bunch of nsStyleSet methods. r=dbaron 2015-04-17 11:09:59 +10:00
Cameron McCormack
c57a9da3cc Bug 1146101 - Call ClearCachedInheritedStyleDataOnDescendants on more style contexts that had structs swapped out from them. r=dbaron a=abillings 2015-04-15 08:13:45 +10:00
Ryan VanderMeulen
eccfcb8a87 Backed out changeset 8882af540247 (bug 1029451) for intermittent timeouts in the newly-added test. 2015-04-06 11:22:00 -04:00
Tom Tromey
ddd9e95730 Bug 1029451 - Preserve mIsSynthesizedForTests on mouse events. r=ehsan 2015-04-03 08:17:00 -04:00
Jonathan Watt
2e0360609c Bug 1145246, part 3 - Update layout code for the rename of Animatable.getAnimationPlayers() to Animatable.getAnimations(). r=birtles 2015-03-20 18:20:49 +00:00
Xidorn Quan
b95ba1ce10 Backout a6dbd23da598 (bug 1139283) since it is currently not needed. 2015-03-20 15:12:17 +11:00
Kartikaya Gupta
acab963d10 Bug 962594 - Don't build CSS animations for elements that are in a display:none subtree. r=heycam 2015-03-15 20:28:49 -04:00
Robert O'Callahan
315ccebd6d Bug 1125767. Centralize code into nsStylePosition::IsFixedPosContainingBlock. r=mats
Also renames IsPositioned to IsAbsPosContainingBlock.
2015-03-12 16:21:01 +13:00
Xidorn Quan
0e0bdaa1f6 Bug 1140264 part 3 - Rename IsInlineDescendantOfRuby to ShouldSuppressLineBreak and exclude rbc/rtc from it. r=dbaron 2015-03-11 10:28:21 +11:00
Xidorn Quan
22877723df Bug 1139283 - Move some properties from nsStyleDisplay to nsStylePosition. r=dbaron
The moved properties are:
* clip
* transform-style
* transform-origin
* backface-visibility
* perspective
* perspective-origin
* will-change
2015-03-08 18:43:22 +11:00
Cameron McCormack
dedf697b56 Bug 1136010 - Don't coalesce style contexts added to RestyleManager::mContextsToClear. r=dbaron 2015-03-04 18:06:29 +11:00
Cameron McCormack
b4811e3469 Bug 1137031 - Do not stop restyling when TryStartingTransitiosn gives us a new style context. r=dbaron
It is not correct to stop restyling by leaving the old style context on
the frame and returning eRestyleResult_Stop when TryStartingTransition
provides a new, without-animations style context.  This is at least
because the new new style context could have different styles from the
old new style context.
2015-03-04 16:08:00 +11:00
Andrea Marchesini
454d9140a2 Bug 1134280 - Get rid of Tag() - patch 1 - Is{HTML,XUL,MathML,SVG}Element and IsAnyOf{HTML,XUL,MathML,SVG}Elements, r=smaug 2015-03-03 11:08:59 +00:00
chiajung hung
90143cf904 Bug 1129249 - Expose the element id in Gecko profiler for Restyle. r=dholbert r=benwa 2015-02-25 23:16:00 +01:00
L. David Baron
6b4dd91874 Bug 1133439 patch 2 - Distinguish animation-only SMIL restyles based on eRestyle_StyleAttribute_Animations in RestyleManager::PostRestyleEvent. r=birtles 2015-02-19 21:22:05 +13:00
L. David Baron
06f668f7b7 Bug 1133392 - Make handling of nsChangeHint_UpdateSubtreeOverflow iterate continuations, as all change hint handling needs to. r=mats
The test fails without the patch (missing underline on "an underline")
and passes with the patch (where the underline is present, and aligned
with the non-displaced text).
2015-02-19 13:49:52 +13:00
Cameron McCormack
c1b64d0113 Bug 1127198 - Part 4: Clear cached structs only after we have fully processed a restyle. r=dbaron 2015-02-18 09:28:53 +11:00
Cameron McCormack
ec4fb5b8aa Bug 1125391 - Re-enable bug 931668 optimizations. r=dbaron 2015-02-18 09:28:53 +11:00
L. David Baron
3b82e74b9d Bug 960465 patch 22 - Remove implementation of nsRestyleHint_ChangeAnimationPhase. r=birtles 2015-02-17 11:15:06 +13:00
L. David Baron
cbf5e33e73 Bug 960465 patch 20 - Allow pseudo-elements for style attribute replacement in RuleNodeWithReplacement. r=birtles
I confirmed that we're actually using this codepath by manually testing
<input type=color>:  it works with the patch, but if I comment out the
call to nsHTMLCSSStyleSheet::PseudoElementRulesMatching from
nsStyleSet::RuleNodeWithReplacement, then the color swatch breaks, which
proves that we're depending on the code.

I think I included this in the queue because it is needed for patch 22,
although I've forgotten the full reasoning.
2015-02-17 11:15:05 +13:00
L. David Baron
e7d3fa23a5 Bug 960465 patch 18 - Remove aElementOrPseudoElement parameter to ReparentStyleContext (added in bug 1057129). r=birtles 2015-02-17 11:15:05 +13:00
L. David Baron
d5bb664bcf Bug 960465 patch 17 - Remove separate animation and non-animation phases of restyling. r=birtles
Note that this means that when we start transitions, we post restyles
that are processed during the current restyling operation, rather than
in a later phase.  This depends on patch 11, which makes the transition
manager skip style changes that it posts while starting transitions, to
ensure that this doesn't lead to an infinite loop.  This also depends on
patch 16, which only consumes restyle data for the primary frame, to
ensure that the animation restyles posted are processed properly.  It
also depends on patch 14, which makes us retain data on finished
transitions, to avoid triggering extra transitions on descendants when
both an ancestor and a descendant transition an inherited property, and
the descendant does so faster.

This fixes a known failure in layout/style/test/test_animations.html and
test_animations_omta.html (as visible in the patch).  I believe this is
because this patch changes us to compute keyframe values for animations
on top of a style context *with* animation data rather than one without,
which means what we're computing them on top of changes each time.  (The
purpose of patch 3 was to avoid this in the case where avoiding it
matters, i.e., implicit 0% and 100% keyframes.)
2015-02-17 11:15:05 +13:00
L. David Baron
a64d974c3e Bug 960465 patch 16 - Only consume restyle data for the primary frame. r=birtles
This is needed for patch 17, which removes restyling phases, so that
when the transition manager posts a restyle to undo the covering done by
the cover rule, that restyle doesn't get consumed by an inner frame.
2015-02-17 11:15:04 +13:00
L. David Baron
2907f101d5 Bug 960465 patch 9 - Move the addition of the cover rule into nsTransitionManager::StyleContextChanged so that later patches can make it other than just addition of a rule. r=birtles 2015-02-17 11:15:02 +13:00
L. David Baron
07a4a43e7a Bug 960465 patch 7 - Use SetInAnimationOnlyStyleUpdate for ProcessPendingRestyles runs that are only updating animation data. r=birtles 2015-02-17 11:15:02 +13:00
L. David Baron
f96bade422 Bug 960465 patch 6 - Add the new mechanism for avoiding starting spurious transitions as a result of animations: flush animation styles only before doing other restyle processing. r=birtles 2015-02-17 11:15:02 +13:00
L. David Baron
b99c33a3b5 Bug 960465 patch 5 - Make SMIL animations participate in the animation-only style flush. r=birtles
This is needed to prevent these reftests from failing:
  layout/reftests/svg/smil/smil-transitions-interaction-1a.svg
  layout/reftests/svg/smil/smil-transitions-interaction-1b.svg
  layout/reftests/svg/smil/smil-transitions-interaction-2a.svg
  layout/reftests/svg/smil/smil-transitions-interaction-2b.svg
  layout/reftests/svg/smil/smil-transitions-interaction-4a.svg
  layout/reftests/svg/smil/smil-transitions-interaction-4b.svg
The mIsCSS path fixes the a tests, and the !mIsCSS path fixes the b tests.

This is because this patch series changes the way in which transitions
interact with other types of animations to depend on those animations
being flushed in the animation-only style flush.  (The relevant call is
added in patch 6, though we don't really depend on it until patch 17.)
2015-02-17 11:15:02 +13:00
L. David Baron
3545426b12 Bug 960465 patch 4 - Track whether there are any pending non-animation restyles. r=birtles
This depends on bug 1087536 patch 3, which posts animation restyles
using the eRestyle_CSSTransitions and eRestyle_CSSAnimations hints.

This is used by patch 6.
2015-02-17 11:15:02 +13:00
L. David Baron
bc32b5ef7c Bug 992077 patch 3 - Stop using OverflowChangedTracker::CHILDREN_AND_PARENT_CHANGED for the UpdateOverflow and related hints. r=mats
This makes UpdateOverflow hint handling (which definitely did previously
need CHILDREN_AND_PARENT_CHANGED) and handling of related hints (which I
believe never actually needed CHILDREN_AND_PARENT_CHANGED) use the
CHILDREN_CHANGED hint in the overflow changed tracker, since use of
CHILDREN_AND_PARENT_CHANGED is no longer needed following the
introduction of the UpdateParentOverflow hint in patch 2.
2015-02-16 16:34:29 +13:00
L. David Baron
eccc9e3c56 Bug 992077 patch 1 - Add nsChangeHint_UpdateParentOverflow hint so that we can reduce unnecessary UpdateOverflow calls for top/right/bottom/left changes, and reduce unnecessary propagation to the parent for UpdateOverflow hints for changes that actually affect the element's overflow. r=mats
This cleans up after bug 984226, which introduced
CHILDREN_AND_PARENT_CHANGED to deal with the facts that:

 (1) most properties whose changes yield UpdateOverflow style hints
     imply that an element's overflow area may have changed, and
     propagation to ancestors can stop without updating the element's
     parent if the element's own overflow area didn't change.

 (2) a few properties whose changes yield UpdateOverflow style hints
     actually don't change the overflow area of the element on which the
     property changed, but instead change that element's overflow area
     on the element's parent.

Having two separate hints means that we don't have to do the extra work
of always updating the parent's overflow area (when the child's overflow
area didn't actually change) for the properties in category (1), and we
don't have to do extra work of updating the element's own overflow area
for properties in category (2).
2015-02-16 16:34:29 +13:00
Nicholas Nethercote
6ee3666899 Bug 1127201 (attempt 2, part 1) - Replace most NS_ABORT_IF_FALSE calls with MOZ_ASSERT. r=Waldo.
--HG--
extra : rebase_source : 488e401ff87e31a2074c4108c4df0572d9536667
2015-02-09 14:34:50 -08:00
Andrew McCreight
8413cc973c Back out Bug 1127201 (part 2) for various problems. 2015-02-06 15:04:32 -08:00
Nicholas Nethercote
3629781b69 Bug 1127201 (part 2) - Convert all NS_ABORT_IF_FALSE calls to MOZ_ASSERT. r=Waldo.
--HG--
extra : rebase_source : 99182e70335d2b5ff95f8c528ae992d37294be3a
2015-02-04 20:05:36 -08:00
Cameron McCormack
9052a02f04 Bug 1092363 - Disable bug 931668 optimizations for the time being. r=dbaron 2015-01-22 13:25:08 +11:00
L. David Baron
98bcd6bd74 Bug 1110277 patch 7 - Call CreateNeededFrames from ~ReframingStyleContexts. r=bzbarsky
I don't have any tests that exercise this code, and I can't even find a
codepath that demonstrates that it's needed, since the lazy
reconstruction that happens during style-triggered frame reconstruction
all appears to go through PostRestyleEvent rather than
MaybeConstructLazily.

But I think we should either do this or add an assertion that it's not
needed, and given that it's one line, it seems like we may as well just
do it.  (Note also that we're currently calling CreateNeededFrames at
the start of style reresolution, in
RestyleManager::ProcessPendingRestyles; this adds a call at the end.)
2015-01-13 21:03:13 -08:00
L. David Baron
c611676f36 Bug 1110277 patch 6 - Make the lifetime of the ReframingStyleContexts object longer. r=heycam
This makes the ReframingStyleContexts live across the lifetime of the
processing of a full queue of posted restyles.

This depends on bug 1115812 to behave sensibly (and not assert) when
rebuilding the rule tree (RebuildAllStyleData, etc.).

This handles the form of lazy frame construction that is done in
nsCSSFrameConstructor::RecreateFramesForContent, which posts a restyle.
Patch 7 handles any use of the lazy frame construction mechanism.

This patch (with patches 4 and 5 under it, but without patches 1-3)
fixes the original testcase in bug 1110277, except for some flashing of
the final position as the transition starts.

Also fixes bug 1111451.
2015-01-13 21:03:13 -08:00
L. David Baron
038f883c01 Bug 1110277 patch 5 - Move the AutoRestore into ReframingStyleContexts. r=heycam
This is just a little cleanup that follows from patch 4.
2015-01-13 21:03:13 -08:00
L. David Baron
c2332e431d Bug 1110277 patch 4 - Add a RestyleManager member to ReframingStyleContexts. r=heycam
This is needed for patch 7.
2015-01-13 21:03:13 -08:00
L. David Baron
3fcc54711e Bug 1115812 patch 20 - Add assertions that mDoRebuildAllStyleData and mInRebuildAllStyleData are false by the end of restyle processing. r=heycam
These assertions are as requested in comment 30 in the bug.

(If the first one doesn't fire, it's possible we could even get rid of
the handling of mDoRebuildAllStyleData that it's within.)
2015-01-13 21:03:13 -08:00
L. David Baron
620f1dd6aa Bug 1115812 patch 19 - Avoid bad kungFuDeathGrip pattern. r=heycam
If we need a strong reference to the pres shell, we may as well do it
the first time rather than bothering with an extra variable.
2015-01-13 21:03:12 -08:00
L. David Baron
d173b254e5 Bug 1115812 patch 18 - We only need to call ProcessPendingRestyles recursively, rather than RebuildAllStyleData. r=heycam
If we discover that we've set mDoRebuildAllStyleData in the middle of
ProcessPendingRestyles(), now that ProcessPendingRestyles() fully
handles mDoRebuildAllStyleData, we only need to make a recursive call to
ProcessPendingRestyles, rather than calling RebuildAllStyleData to call
ProcessPendingRestyles.
2015-01-13 21:03:12 -08:00
L. David Baron
d238ef548a Bug 1115812 patch 17 - Do animation-only update properly for a rebuild all. r=heycam
This fixes another pre-existing bug in the rebuild-all codepath; it
didn't handle the animation-only update correctly, which could have
caused bugs in transitions with OMT animations enabled.
2015-01-13 21:03:12 -08:00
L. David Baron
1b2b72fbeb Bug 1115812 patch 16 - Remove the now-unused DoRebuildAllStyleData. r=heycam 2015-01-13 21:03:12 -08:00
L. David Baron
74347ab8fc Bug 1115812 patch 15 - Change the rebuild-all that we do for 'rem' unit changes to use the new way. r=heycam
This means that instead of recurring into DoRebuildAllStyleData, we'll
call StartRebuildAllStyleData in the middle of processing the restyle
queue (which is fine).  StartRebuildAllStyleData will move the old rule
tree out of the way and immediately do a full-tree restyle, before
returning to any queue processing that might be left (the full-tree
restyle should have consumed all remaining restyle hints, but might have
posted some new ones for handling reframes that require reframing
ancestors).  And, more importantly, the EndReconstruct() call to get rid
of the old rule tree won't happen until after we're done processing the
containing RestyleTracker's queue of restyles, which reduces the risk of
having dangling old style contexts and makes it easier (in bug 1110277)
to have a ReframingStyleContexts with the right lifetime.
2015-01-13 21:03:12 -08:00