Commit Graph

447 Commits

Author SHA1 Message Date
L. David Baron
ca3dcbbbf2 Bug 1115812 patch 4 - Rename mRebuildAllStyleData to mDoRebuildAllStyleData. r=heycam
This is the variable that says we *need to* rebuild style data.  Since
the next patch will introduce a variable that says we're *currently*
rebuilding all style data, renaming this one makes things clearer.
2015-01-13 21:03:11 -08:00
L. David Baron
137ea5a2b1 Bug 1115812 patch 3 - Pass the hints to DoRebuildAllStyleData via the member variables, in preparation for future refactoring. r=heycam
Part of this refactoring involves the ability to start the rebuild-all
process within the processing of restyles.  This means we can't pass
parameters directly from RebuildAllStyleData into DoRebuildAllStyleData.
So this continues storing the hints as member variables a little bit
deeper into the process.

(I tried to move in a different direction in this patch queue, and store
these hints in mPendingRestyles, for the root element.  But that broke
layout/style/test/test_counter_style.html and
layout/style/test/test_font_loading_api.html, and I didn't want to
figure out why.  It would be somewhat better in the long run, since
currently these hints will get processed if we do a rebuild-all on a
RestyleTracker other than mPendingRestyles, which can happen if we have
'rem' units and have a root element font size change in the
animation-only update or in mPendingAnimationRestyles.)
2015-01-13 21:03:11 -08:00
L. David Baron
a91fa968fc Bug 1115812 patch 2 - Move the eRestyle_ChangeAnimationPhaseDescendants hint in DoRebuildAllStyleData so that the new rebuild-all codepaths will keep it. r=heycam
The patches in this series refactor the process of rebuilding all style
data (RestyleManager::RebuildAllStyleData and
RestyleManager::DoRebuildAllStyleData) so that the process of rebuilding
all style data uses the existing restyle processing loops in
ProcessPendingRestyles.  (Rebuilding all style data is what we do when
we need to throw away the rule tree because something has invalidated
the cached data in it.)  This removes (increasing, especially with bug
960465 coming) code duplicated between the two codepaths, fixes some
omissions from the separate rebuild-all codepath, and (more immediately)
allows fixing lifetime issues of ReframingStyleContexts objects in bug
1110277 so that we can have a single ReframingStyleContexts for all of
the restyle processing in each restyle processing operation.  In other
words, the goal is to change the rebuild-all process from a separate
codepath to a few variables that modify the way ProcessPendingRestyles
works (and make it do the extra work).

This is just a small first step in that process, which moves one piece
of code from a chunk of duplicated and to-be-removed code into a chunk
of code that will be preserved.
2015-01-13 21:03:11 -08:00
L. David Baron
3482ed81e6 Bug 1115812 patch 1 - Remove obsolete comment that was fixed by bug 1047928. r=heycam 2015-01-13 21:03:11 -08:00
L. David Baron
f7d86f7966 Bug 1110277 patch 1 - Consider the ib-split chain when checking for ::before and ::after in order to reframe when they're missing. r=bzbarsky
This patch is not needed to fix the bug, but it seems like it's probably
desirable.  It's not needed for this bug because
MaybeReframeForBeforePseudo and MaybeReframeForAfterPseudo are already
called (by ElementRestyler::RestyleChildren) on only the first and last
continuation or ib-split sibling with the same style.  So this patch
should only actually change anything for cases like a block-in-inline
split whose initial inline part is inside of a ::first-line (where
different parts of the block-in-inline split chain have different style).

Since the symptom of this bug is (once patch 6 is in the tree) only
causing extra reframes, it can only be tested using the new API (from
bug 1115691) for observing reframes.  I confirmed that the test for this
bug fails without the patch and passes with the patch (as noted by the
removal of its todo annotation).
2015-01-11 15:43:10 -08:00
Brian Birtles
8f6a843319 Bug 927349 part 28 - Call AddLayerChangesForAnimation after updating style; r=dbaron 2014-12-25 16:28:25 +09:00
Xidorn Quan
6ed01ce159 Bug 1114792 - Rename nsStyleContext::IsDirectlyInsideRuby to IsInlineDescendantOfRuby. r=dbaron 2014-12-31 16:39:43 +11:00
Brian Birtles
18cadb3d11 Back out parts 22-29 from bug 927349 for causing intermittent test failure in css-animations/test_animation-pausing.html on 10.8 2014-12-26 11:54:43 +09:00
Brian Birtles
726cc33622 Bug 927349 part 29 - Disable failing browser_555547.js on Windows opt - pushed again without backing out parts 22-29 at the same time; r=me
In https://hg.mozilla.org/integration/mozilla-inbound/rev/3ab2ff9b9f94
I accidentally pushed part 29 along with a backout for parts 22-29. This patch
reverts that change.

If this changset causes problems, the following changesets should be backed out:

https://hg.mozilla.org/integration/mozilla-inbound/rev/477f46897b0b
https://hg.mozilla.org/integration/mozilla-inbound/rev/6c345954bce5
https://hg.mozilla.org/integration/mozilla-inbound/rev/642e400b22a9
https://hg.mozilla.org/integration/mozilla-inbound/rev/9bdf7c2279fa
https://hg.mozilla.org/integration/mozilla-inbound/rev/79cac8c71159
https://hg.mozilla.org/integration/mozilla-inbound/rev/cfe757e478d5
https://hg.mozilla.org/integration/mozilla-inbound/rev/eaf834051cbd
2014-12-26 08:49:20 +09:00
Brian Birtles
d2979fe812 Bug 927349 part 29 - Disable failing browser_555547.js on Windows opt; r=me (as discussed with jwatt) 2014-12-25 16:31:55 +09:00
Brian Birtles
b7076ae5c6 Bug 927349 part 28 - Call AddLayerChangesForAnimation after updating style; r=dbaron 2014-12-25 16:28:25 +09:00
Seth Fowler
38ce6b10a2 Bug 35168 (Part 2) - Allow relative positioning of internal table objects. r=dbaron 2014-08-19 18:24:58 -07:00
Xidorn Quan
5e38b50d8b Bug 1098275 - Inlinize block-level boxes inside ruby. r=heycam 2014-12-11 09:26:18 +11:00
Mats Palmgren
249ccee969 Bug 907396 - Make RestyleManager::RestyleElement and nsCSSFrameConstructor::MaybeRecreateFramesForElement deal with display:contents elements. r=bzbarsky 2014-11-20 18:24:10 +00:00
Mats Palmgren
567ed3a34f Bug 907396 - Replace GetParentStyleContextFrame with GetParentStyleContext which can return frame-less display:contents style contexts. r=bzbarsky 2014-11-20 18:24:10 +00:00
Mats Palmgren
354e8e55c0 Bug 907396 - Implement RestyleUndisplayedDescendants that restyles diplay:none children and display:contents descendants. r=bzbarsky 2014-11-20 18:24:10 +00:00
Mats Palmgren
bfc9b6f5d9 Bug 907396 - Frame constructor changes for display:contents. r=bzbarsky 2014-11-20 18:24:09 +00:00
David Zbarsky
2d7b8fd6fb Bug 1085769: Merge ContentOrAncestorHasAnimation/Transition r=birtles 2014-11-19 21:48:42 -05:00
Brian Birtles
3307c6ed04 Bug 1073336 part 16 - Factor out animation-layer related information to a common database; r=dbaron 2014-11-17 13:46:00 +09:00
Brian Birtles
cad4d8ac10 Bug 1073336 part 14b - Make ElementRestyler detect changes to the animation generation; r=dbaron
For some kinds of changes we need to update the layer tree even though there is
no change to style. For example, if an animation is paused via the Web
Animations API, we need to remove the animation from the layer even though the
style will not change.

This patch detects such changes by making ElementRestyler check for an
out-of-date animation generation on layers. This is complicated by the fact that
we currently maintain *two* animation generation numbers: one for the set of
animations and one for the set of transitions, but we only have *one* animation
generation number on each layer. This is a known issue (bug 847286).

As a result, until bug 847286 is fixed, we need to be careful to compare against
the greater of the two numbers.
2014-11-17 13:46:00 +09:00
Brian Birtles
9ac02b86c5 Bug 1073336 part 14a - Update animation generation when changing animations via the API; r=dbaron 2014-11-17 13:45:59 +09:00
L. David Baron
5d911fe9a0 Bug 1086937 patch 2 - Use eRestyle_ChangeAnimationPhaseDescendants to get the right style data in RestyleManager::RebuildAllStyleData. r=birtles
Until we get rid of animation phases in bug 960465, we need to ensure
we're producing style data for the correct animation phase.  This makes
this optimization slightly less beneficial until then.
2014-11-12 23:28:52 -08:00
L. David Baron
611d94b270 Bug 1086937 patch 1 - Add eRestyle_ChangeAnimationPhaseDescendants restyle hint that is like eRestyle_ChangeAnimationPhase, but for a whole subtree. r=birtles 2014-11-12 23:28:52 -08:00
L. David Baron
34a3c535fe Bug 1086937 patch 0 - Add missing null check of root element so this patch series doesn't expose a crash in layout/style/crashtests/472237-1.html . r=birtles 2014-11-12 23:28:52 -08:00
Robert Longson
bb5a720a66 Bug 975757 - changes to transforms in patterns do not cause an update. r=jwatt 2014-11-04 14:52:27 +00:00
Mats Palmgren
2e50f56d6e Bug 1077687. If we have a pending request to rebuild all style data then do so instead of processing individual restyles. r=roc 2014-11-02 16:47:26 +00:00
Jonathan Watt
b431664247 Bug 651021 - Make nsRenderingContext a stack class. r=jrmuizel 2014-10-31 20:08:49 +00:00
Mats Palmgren
77b1598415 Bug 1083855 - part 6, Make RecreateFramesForContent params non-optional. r=bz 2014-10-23 13:19:26 +00:00
Robert Longson
a3fc86586e Bug 1067375 - Fix animateTransform in svg-as-image to invalidate properly. r=jwatt 2014-10-12 08:49:34 +01:00
L. David Baron
6553edfa00 Bug 1047928 patch 5 - Pass restyle hint to RestyleManager::PostRebuildAllStyleDataEvent. r=bzbarsky
This patch is not intended to contain any changes in behavior.
2014-10-08 14:27:02 -07:00
L. David Baron
823a7c2ec1 Bug 1047928 patch 2 - Pass restyle hint to RestyleManager::RebuildAllStyleData. r=bzbarsky
This patch is not intended to contain any changes in behavior.
2014-10-08 14:26:57 -07:00
L. David Baron
81061bf33f Bug 1077849 - Use eRestyle_ForceDescendants for all cases of rebuilding the rule tree. r=heycam
Bug 931668 added the eRestyle_ForceDescendants case for all cases that
go through RebuildAllStyleData, but there is another case that calls
DoRebuildAllStyleData directly, and we should cover that too.

This is needed because when we're rebuilding the rule tree, we need to
create new style contexts for all frames.

I don't know of any bugs caused by this, but it seems worth fixing.
2014-10-04 16:59:47 -07:00
L. David Baron
aeddb8fa9f Bug 1075137 patch 7 - Remove old IsProcessingRestyles and IsProcessingAnimationStyleChange booleans. r=birtles 2014-10-02 21:53:24 -07:00
L. David Baron
0eaead4f9d Bug 1075137 patch 5 - Add new boolean to RestyleManager for whether we're currently processing animation restyles. r=birtles
This is just moving one bit of data from the pres context without any
logic change.  But given the other refactoring, it seems to make more
sense here now.
2014-10-02 21:53:24 -07:00
L. David Baron
e8ad12ff21 Bug 1075137 patch 2 - Add new booleans for whether to skip animation styles and whether to post animation restyles. r=birtles 2014-10-02 21:53:23 -07:00
L. David Baron
e231bef863 Bug 1075137 patch 1 - Convert one use of IsProcessingRestyles that doesn't follow normal pattern to a debug-only member on the restyle manager. r=birtles 2014-10-02 21:53:23 -07:00
L. David Baron
fc7c96d7e9 Bug 1074634 - Don't overwrite eRestyleResult_ContinueAndForceDescendants with eRestyleResult_Continue. r=heycam 2014-10-02 21:53:22 -07:00
Cameron McCormack
2b8a825cbe Bug 1072724 - Support showing more information about style structs in restyle logs. r=dbaron
The MOZ_DEBUG_RESTYLE_STRUCTS environment variable can be set to a comma-
separated list of style struct names.  When restyle logging is enabled,
this will cause the style context tree -- showing cached style struct
pointers for those structs specified -- to be logged before each
individual restyle is processed.  It will also show the struct pointer
values involved when swapping structs between style contexts.

For example, set MOZ_DEBUG_RESTYLE_STRUCTS=Font,UserInterface to show
the cached nsStyleFont and nsStyleUserInterface pointers on the style
contexts involved in the restyle process.
2014-10-01 09:13:57 +10:00
Cameron McCormack
2ed53ee77d Bug 1072130 - Don't swap structs when we're reusing a style context from a previous same-style continuation. r=dbaron 2014-09-25 15:51:43 +10:00
Cameron McCormack
f198d61ca8 Bug 979133 - Add facility to log the restyle process. r=dbaron
Set the MOZ_DEBUG_RESTYLE environment variable and every restyle will have
detailed logging printed to stderr. By default, restyles for animations are
not logged; you can include them by also setting MOZ_DEBUG_RESTYLE_ANIMATIONS.

If you wish to limit restyle logging to a particular change, you can call
nsPresContext::StartRestyleLogging() and nsPresContext::StopRestyleLogging()
at appropriate points. (You might want to add a couple of helper methods
temporarily on nsIDocument and then expose them to your page with Web IDL
to make them easier to call.) You do not need to have set MOZ_DEBUG_RESTYLE
for this to work.
2014-09-25 15:45:36 +10:00
Cameron McCormack
50ceba1bf8 Back out bug 1045895 for causing bug 1070759. 2014-09-25 15:30:18 +10:00
Phil Ringnalda
9f84067f15 Back out c0c410aed86f (bug 979133) for -wError bustage
CLOSED TREE
2014-09-24 21:06:22 -07:00
Cameron McCormack
8b4e0a7a7d Bug 979133 - Add facility to log the restyle process. r=dbaron
Set the MOZ_DEBUG_RESTYLE environment variable and every restyle will have
detailed logging printed to stderr.  By default, restyles for animations are
not logged; you can include them by also setting MOZ_DEBUG_RESTYLE_ANIMATIONS.

If you wish to limit restyle logging to a particular change, you can call
nsPresContext::StartRestyleLogging() and nsPresContext::StopRestyleLogging()
at appropriate points.  (You might want to add a couple of helper methods
temporarily on nsIDocument and then expose them to your page with Web IDL
to make them easier to call.)  You do not need to have set MOZ_DEBUG_RESTYLE
for this to work.
2014-09-25 13:13:14 +10:00
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