Commit Graph

24 Commits

Author SHA1 Message Date
L. David Baron
38a6d76524 Bug 828312 patch 11: Don't generate change hints for restyling of later continuations, since the handling of the change hints from the first continuation is required to do the necessary work. r=bzbarsky
This depends on bug 898333 in order to avoid causing:
TEST-UNEXPECTED-FAIL | chrome://mochitests/content/chrome/dom/tests/mochitest/chrome/test_focused_link_scroll.xul | Assertion count 1 is greater than expected range 0-0 assertions.
due to the assertion:
###!!! ASSERTION: Shouldn't be trying to restyle non-elements directly: '!aContent || aContent->IsElement()', file ../../../layout/base/nsStyleChangeList.cpp, line 62

The assertion count change in layout/generic/crashtests/571995.xhtml is
expected because it changes us from having 7 of:
###!!! ASSERTION: Shouldn't be trying to restyle non-elements directly: '!aContent || aContent->IsElement()', file ../../../layout/base/nsStyleChangeList.cpp, line 62
with the stack:
  mozilla::ElementRestyler::CaptureChange(nsStyleContext*, nsStyleContext*, nsChangeHint) [layout/base/nsChangeHint.h:191]
  mozilla::ElementRestyler::RestyleSelf(nsRestyleHint) [layout/base/RestyleManager.cpp:2304]
to only having one.  This is expected since this patch changes
RestyleSelf to only call CaptureChange for the first continuation or
block-in-inline sibling.
2013-09-25 12:28:08 -07:00
L. David Baron
06fe81c384 Bug 898333, patch 2: Change RestyleManager::Restyle's tree traversal to reach next-continuations (and same-display block-in-inline siblings) from their prev-continuation rather than from their parent. r=bzbarsky
This patch fundamentally makes three changes:

 (1) Change the way RestyleSelf is used so that it is called in a loop,
     over all of the same-style continuations and block-in-inline
     siblings.
     (I had a note here reminding myself:
       TODO: Don't set hints for descendants!
     but I no longer remember what it meant.)

 (2) Change the traversal of children to traverse all of the children of
     the items traversed in (1).

 (3) When traversing children, skip children that are continuations,
     since we already reached them in (1) and (2).

A later patch will change the RestyleSelf loop to copy for the later
continuations rather than repeating the work.  This will mean reverting
many of the RestyleSelf changes contained here.

Some of the pieces marked temporary will be removed in bug 828312 patch
11, and the rest should hopefully be removed in bug 918064.
2013-09-25 12:28:07 -07:00
Alex Xu
59fcd38f0a Bug 900284: Use #ifdef ACCESSIBILITY around member variables only used inside #ifdef ACCESSIBILITY, to avoid clang warnings (and reduce object size with --disable-accessibility). r=dbaron 2013-07-31 19:15:19 -07:00
L. David Baron
016d6d8b55 Bug 898329 patch 7: Split ElementRestyler::Restyle into multiple functions. r=heycam 2013-07-30 17:36:11 -07:00
L. David Baron
372c024c0e Bug 898329 patch 5: Create and use ElementRestyler::mResolvedChild. r=heycam 2013-07-30 17:36:11 -07:00
L. David Baron
069d654106 Bug 898329 patch 3: Create and use ElementRestyler::mWasFrameVisible. r=heycam 2013-07-30 17:36:11 -07:00
L. David Baron
07bdb25977 Bug 898209 patch 14: Add constructor flags to ElementRestyler's regular constructor so we can avoid manipulating mHintsHandled from the outside. r=heycam
This is the first of two patches added on top to address review comments
on patch 2.
2013-07-30 17:36:10 -07:00
L. David Baron
8c05c48f7d Bug 898209 patch 13: Create and use ElementRestyler::mTreeMatchContext. r=heycam 2013-07-30 17:36:10 -07:00
L. David Baron
812f86eb07 Bug 898209 patch 12: Create and use ElementRestyler::mVisibleKidsOfHiddenElement. r=heycam 2013-07-30 17:36:10 -07:00
L. David Baron
52ab982fe7 Bug 898209 patch 11: Create and use member variables for accessibility notifications. r=heycam 2013-07-30 17:36:10 -07:00
L. David Baron
a663478e1a Bug 898209 patch 10: Create and use ElementRestyler::mRestyleTracker. r=heycam 2013-07-30 17:36:10 -07:00
L. David Baron
59a41597b1 Bug 898209 patch 9: Create and use ElementRestyler::mParentFrameHintsNotHandledForDescendants and mHintsNotHandledForDescendants. r=heycam 2013-07-30 17:36:10 -07:00
L. David Baron
6d0532d145 Bug 898209 patch 8: Create and use ElementRestyler::mChangeList. r=heycam 2013-07-30 17:36:10 -07:00
L. David Baron
9c7983dbd5 Bug 898209 patch 6: Create and use ElementRestyler::mParentContent and mContent. r=heycam 2013-07-30 17:36:09 -07:00
L. David Baron
62d516ab40 Bug 898209 patch 4: Remove aPresContext parameter to ElementRestyler::Restyle. r=heycam 2013-07-30 17:36:09 -07:00
L. David Baron
59c10658b8 Bug 898209 patch 3: Create and use ElementRestyler::mFrame. r=heycam 2013-07-30 17:36:09 -07:00
L. David Baron
2fa0e6ec12 Bug 898209 patch 2: Create and use ElementRestyler::mHintsHandled. r=heycam 2013-07-30 17:36:09 -07:00
L. David Baron
ef1ccb845b Bug 898209 patch 1: Add ElementRestyler class to begin refactoring ReResolveStyleContext. r=heycam 2013-07-30 17:36:09 -07:00
L. David Baron
48ff61e4ab Bug 896138 patch 10: Move beginning and ending of ProcessPendingRestyles into helper functions on the RestyleManager. r=heycam 2013-07-30 17:36:08 -07:00
Robert O'Callahan
53a01fa207 Bug 886295. Backout fix for bug 880854 to fix regression. r=mats
--HG--
extra : rebase_source : 66bc089c3ece4dbe4f6533fce97a902abdd4871a
2013-07-22 14:04:46 +12:00
L. David Baron
27bdf37ee1 Bug 896138 patch 8: Add setter for RestyleManager::mInStyleRefresh rather than using friend. r=heycam (within review comments for patch 4)
(The friend declaration is still needed for access to RestyleElement,
which I'd rather leave private.)
2013-07-20 12:14:25 -07:00
L. David Baron
33de67ec1b Bug 896138 patch 6: Move restyle management code from nsFrameManager to RestyleManager. r=heycam
This is the second of two big chunks of code moved into the new
RestyleManager class from another sources.

Note that the undisplayed map remains in nsFrameManager, although it
could perhaps have moved.
2013-07-20 12:14:25 -07:00
L. David Baron
0354744354 Bug 896138 patch 4: Move restyle management code from nsCSSFrameConstructor to RestyleManager. r=heycam
This moves restyling management out of nsCSSFrameConstructor (thus
reducing its size), and keeps the restyling code closer together.

This is the first of two big chunks of code moved in this patch series.
A later patch in this series will move related code from nsFrameManager
into the same destination file.
2013-07-20 12:14:25 -07:00
L. David Baron
67d46003ba Bug 896138 patch 2: Add a RestyleManager class. r=heycam
The later patches in this series will move restyling code into this file
from nsCSSFrameConstructor and nsFrameManager.
2013-07-20 12:14:24 -07:00