Commit Graph

96 Commits

Author SHA1 Message Date
Bobby Holley
c2ce4d2e27 Bug 1393791 - Stop unbinding native-anonymous content off a script runner. r=emilio
The failure mode in the attached crashtest is an inconsistency in the flattened
tree. Specifically, we null out mVideoControls in an nsVideoFrame, but defer
the UnbindFromTree call on that NAC element, which measn that its mParent still
points to the nsVideoFrame's mContent. Because all this stuff runs off of script
runners, and the anonymous content destroyer is not guaranteed to run before
other potential script runners, we end up running arbitrary script while the
tree mismatch exists. This script calls back into ProcessPendingRestyles, which
causes trouble.

We could build a separate deferral mechanism, but it's not clear that we actually
need to defer the unbind anymore. The deferred unbind was added in bug 489008,
which predated a lot of simplifications in layout/dom interaction.

MozReview-Commit-ID: 1JYAhiXKVJC
2017-08-27 15:29:36 -07:00
Michael Kaply
829e6cf8f7 Bug 1389168 - Remove unnecessary IBM license text. r=gerv
MozReview-Commit-ID: 8HdaBppsJsc
2017-08-16 16:10:56 -05:00
Jonathan Watt
05797b9949 Bug 1367214, part 2 - Ensure that all the UndisplayedMap handling code consistently acts on the normalized parent. r=dholbert
We have four entry points that deal with the parents of display:none/
display:contents content.  These are the functions for setting, changing,
getting and removing a style context.  Or more specifically:

GetUndisplayedNodeInMapFor
  called by GetDisplay[None|Contents]StyleFor (via GetStyleContextInMap)

SetStyleContextInMap
  called by RegisterDisplay[None|Contents]StyleFor

ChangeStyleContextInMap
  called by ChangeRegisteredDisplay[None|Contents]StyleFor

UnregisterDisplay[None|Contents]StyleFor
  okay, this is actually two functions, but they act as a pair

This change makes all these functions call GetApplicableParent up front and act
on and pass around the parent that it returns.  This is so that throughout
the code we are always handling the parent that will be used as the key in
the UndisplayedMap entry.  This is necessary so that all the code that
sets/gets the 'MayHaveChildrenWithLayoutBoxesDisabled' bit on/from an
nsIContent object is using the same object, otherwise everything breaks down.

MozReview-Commit-ID: 6gso1tyr33E
2017-08-04 14:52:25 +01:00
Jonathan Watt
cac0f85302 Bug 1388939, part 8 - Remove nsFrameManager::GetDisplayContentsNodeFor and rewrite its caller to use other APIs. r=dholbert
MozReview-Commit-ID: 6S4MpwBlrjj
2017-08-02 09:56:28 +01:00
Jonathan Watt
0fb0cfac2a Bug 1388939, part 7 - Give clear names to the nsFrameManager methods for unregistering undisplayed style contexts. r=dholbert
MozReview-Commit-ID: EFtKqKBOPQH
2017-08-01 17:12:44 +01:00
Jonathan Watt
ab8c46e431 Bug 1388939, part 6 - Give clear names to the nsFrameManager methods for obtaining the linked list of undisplayed style contexts for a node. r=dholbert
MozReview-Commit-ID: 5EuaFzCW4Lh
2017-08-01 17:03:07 +01:00
Jonathan Watt
c7c290489b Bug 1388939, part 5 - Rename nsFrameManager::GetUndisplayedContent to GetDisplayNoneStyleFor. r=dholbert
MozReview-Commit-ID: Kpe6DcBP8yX
2017-08-01 15:27:59 +01:00
Jonathan Watt
29d2a62fff Bug 1388939, part 4 - Give clear names to the nsFrameManager methods for updating the registered undisplayed style contexts. r=dholbert
MozReview-Commit-ID: LZuleDSt6LR
2017-08-01 15:11:02 +01:00
Jonathan Watt
6c3978e020 Bug 1388939, part 3 - Give clear names to the nsFrameManager methods for registering undisplayed style contexts. r=dholbert
MozReview-Commit-ID: 1i2ilfWXcvo
2017-08-01 15:04:36 +01:00
Jonathan Watt
78b8665d87 Bug 1388939, part 2 - Pair up and document the various nsFrameManager methods for keeping track of "undisplayed" style contexts. r=dholbert
MozReview-Commit-ID: F8GvrXdvLEm
2017-08-01 14:43:15 +01:00
Jonathan Watt
c278f98a0f Bug 1388939, part 1 - Rename nsFrameManagerBase::mUndisplayedMap to mDisplayNoneMap. r=dholbert
MozReview-Commit-ID: 94vA4YJ2u
2017-08-01 13:50:23 +01:00
Mats Palmgren
50e9bac26a Bug 1367217 - Merge ClearAllUndisplayedContentIn / ClearAllDisplayContentsIn to avoid doing duplicated work. r=dholbert
MozReview-Commit-ID: 2oYliXTf1nr
2017-06-08 12:48:31 +02:00
Mats Palmgren
f53a6843c6 bug 1368547 part 2 - Remove nsFrameManager/PresShell methods dealing with placeholders and introduce a nsIFrame::GetPlaceholderFrame() convenience method. r=jfkthame
MozReview-Commit-ID: GBUiUBqJxhQ
2017-05-31 21:29:49 +02:00
Emilio Cobos Álvarez
c1ccc4c73b Bug 1296516: Convert UndisplayedMap to a typed hashtable. r=heycam
MozReview-Commit-ID: g54ekayP2y
2017-03-20 22:28:15 +01:00
Emilio Cobos Álvarez
8f5a334686 Bug 1296516: Indentation nits in nsFrameManager. r=heycam
MozReview-Commit-ID: L98VVegeATX
2017-03-20 22:28:14 +01:00
Emilio Cobos Álvarez
f8bd6c31bf Bug 1341083: Don't fall back to reframing with display: contents. r=heycam
MozReview-Commit-ID: KD3QBiU7M5f
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-02-25 19:15:43 +01:00
Emilio Cobos Álvarez
c0e5af8f9a Bug 1341083: Implement dynamic restyling for display: contents. r=heycam
MozReview-Commit-ID: KimTU2j4V4p
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-02-25 19:15:38 +01:00
Mats Palmgren
21460b2fcf Bug 731096 - Make nsFrameManager::RegisterPlaceholderFrame infallible. r=dholbert 2017-01-04 00:56:19 +01:00
Jonathan Watt
9c5b8de022 Bug 1279451 - Remove a lot of unnecessary includes of nsAutoPtr.h. rs=sparky 2016-06-07 21:10:18 +01:00
Cameron McCormack
6fdc2f1032 Bug 1223228 - Remove unused nsFrameManagerBase::mStyleSet. r=dholbert 2015-11-10 12:27:47 +11:00
Nathan Froyd
4e6d8f6705 Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat
The bulk of this commit was generated with a script, executed at the top
level of a typical source code checkout.  The only non-machine-generated
part was modifying MFBT's moz.build to reflect the new naming.

CLOSED TREE makes big refactorings like this a piece of cake.

 # The main substitution.
find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
    xargs perl -p -i -e '
 s/nsRefPtr\.h/RefPtr\.h/g; # handle includes
 s/nsRefPtr ?</RefPtr</g;   # handle declarations and variables
'

 # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h.
perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h

 # Handle nsRefPtr.h itself, a couple places that define constructors
 # from nsRefPtr, and code generators specially.  We do this here, rather
 # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename
 # things like nsRefPtrHashtable.
perl -p -i -e 's/nsRefPtr/RefPtr/g' \
     mfbt/nsRefPtr.h \
     xpcom/glue/nsCOMPtr.h \
     xpcom/base/OwningNonNull.h \
     ipc/ipdl/ipdl/lower.py \
     ipc/ipdl/ipdl/builtin.py \
     dom/bindings/Codegen.py \
     python/lldbutils/lldbutils/utils.py

 # In our indiscriminate substitution above, we renamed
 # nsRefPtrGetterAddRefs, the class behind getter_AddRefs.  Fix that up.
find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \
    xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g'

if [ -d .git ]; then
    git mv mfbt/nsRefPtr.h mfbt/RefPtr.h
else
    hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h
fi
2015-10-18 01:24:48 -04:00
Mats Palmgren
e9a74a0340 Bug 907396 - Frame manager support for display:contents. r=bzbarsky 2014-11-20 18:24:09 +00:00
Daniel Holbert
94341a614f Bug 1024084: Clean up forward declarations and #includes in nsFrameManager.h and nsFrameManagerBase.h. r=jwatt 2014-06-12 10:09:31 -07:00
Daniel Holbert
d0338b8f91 backout 703d26e9d979 (Bug 1024084) for Android bustage, on a CLOSED TREE 2014-06-11 16:10:29 -07:00
Jonathan Watt
3e4cfa5b66 Bug 1024138 - Remove the GetPresShell() and GetPresContext() methods from nsFrameManager. r=dholbert 2014-06-11 23:38:17 +01:00
Daniel Holbert
ad11cbf485 Bug 1024084: Use forward declarations instead of #includes for nsIFrame & nsContent in nsFrameManager.h. r=jwatt 2014-06-11 15:35:17 -07:00
Robert O'Callahan
981bb6d746 Bug 1015664. Part 4: Remove NS_HIDDEN in a few miscellaneous places. r=bsmedberg 2014-06-03 00:08:29 +12:00
Robert O'Callahan
9595e19b9a Bug 1015664. Part 2: Remove some NS_HIDDEN usage. r=bsmedberg 2014-06-03 00:08:24 +12:00
Robert O'Callahan
2c1ab3f641 Bug 1015664. Part 1: Remove NS_HIDDEN_() usage. r=bsmedberg 2014-06-03 00:08:21 +12:00
Mats Palmgren
a43fc7a0a3 Bug 1015781 - part 1+2, Make the SetInitialChildList/AppendFrames/InsertFrames/RemoveFrame methods return void (scripted change). Remove code handling the return values. r=roc 2014-05-28 19:36:58 +00:00
Mats Palmgren
958105e77a Bug 508665 - part 7, Require a nsContainerFrame* for aParent in nsFrameManager methods. r=roc 2014-05-24 22:20:40 +00:00
Ehsan Akhgari
7c63dd132d Bug 921753 - Part 1: Avoid #including nsStyleStructInlines.h in nsIFrame.h; r=roc
This patch reduces the number of files that transitively #include
gfx/2d.h from 1782 to 1582.
2013-10-01 17:00:38 -04:00
Ehsan Akhgari
45b9b9b617 Bug 906790 - Minimize layout/base #includes; r=roc 2013-08-19 18:55:18 -04:00
L. David Baron
82f7e7134b 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
39d065830d Bug 896138 patch 5: Expose UndisplayedNode list from nsFrameManager. r=heycam
This is needed for the following patch, which leaves the undisplayed map
in nsFrameManager rather than moving it to RestyleManager (I think one
could argue for either way, but it was easier not to move it).
2013-07-20 12:14:25 -07:00
L. David Baron
b9eb754656 Bug 896138 patch 1: Move RestyleTracker and OverflowChangedTracker out of nested namespace mozilla::css (which shouldn't exist) into namespace mozilla. r=heycam 2013-07-20 12:14:24 -07:00
Trevor Saunders
d660001c98 bug 856779 - remove nsFrameManager::Init() r=dholbert 2013-03-31 18:43:04 -04:00
Robert O'Callahan
baf0f2cc2a Bug 811301. Part 2: Remove saved state IDs now that the root scroll frame state is captured normally. r=mats 2012-11-14 22:40:17 -08:00
Matt Woodrow
e813da3696 Bug 539356 - Part 9c - Remove old invalidation code. r=bz 2012-08-29 17:39:31 +12:00
Ed Morley
ed4fe023b5 Revert mozilla-inbound to e4dd1fa6d222 for crashes and test failures on a CLOSED TREE 2012-09-27 16:34:46 +01:00
Matt Woodrow
24eaff95c9 Bug 539356 - Part 9 - Implement DLBI. r=roc,bz,jwatt 2012-08-29 17:38:58 +12:00
L. David Baron
00e70298e5 Make nsStyleContext::CalcStyleDifference force comparison based on the parent's hint instead of the style struct ForceCompare methods. (Bug 779968, patch 6, the main patch) r=bzbarsky
This propagates the non-inherited (in the nsChangeHint sense, not the
CSS inheritance sense) parts of the parent's change hint through
ReResolveStyleContext so that we can use them in
nsStyleContext::CalcDifference.  In the cases where we don't know the
parent's hint, we assume the worst, that all the non-inherited hints
were present in the parent's style change.

This should be a significant performance improvement handling simple
style changes (such as a style attribute change setting a non-inherited
property) on elements with large numbers of descendants that have data
in ForceCompare structs that can't be stored in the rule tree (for
example, margins or widths in em or rem units).
2012-09-07 10:13:36 -07:00
Ehsan Akhgari
d07e155f48 Backout changeset f568fc280fb0 (bug 539356) because of performance and correctness regressions 2012-07-03 20:24:55 -04:00
Matt Woodrow
145d424c02 Bug 539356 - Part 9 - Implement DLBI. r=roc,bz,jwatt 2012-06-30 15:06:11 +12:00
Jonathan Watt
131c149f2a Bug 767388 - Kill NS_DEBUG. r=bz. 2012-06-25 20:59:42 +01:00
Gervase Markham
cb6a072c2a Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
Boris Zbarsky
2e235601df Bug 751012. When saving frame state, make sure to walk through placeholders so we save the state of out-of-flow descendants properly. Also make sure to walk the continuations and special siblings of the root frame that we're saving state for. r=roc 2012-05-09 21:27:47 -04:00
Matt Woodrow
cd8cf4b110 Bug 729955 - Invalidate destroyed out-of-flow frames before unregistering the placeholder frame. r=bz 2012-03-26 11:27:37 -07:00
Matt Woodrow
439a12dca2 Bug 721082 - Constify nsIFrame::GetParentStyleContextFrame. r=roc 2012-02-15 22:28:21 +13:00
Jonathan Watt
abde690b9d Bug 714839 - Make nsCSSFrameConstructor inherit nsFrameManager. r=bz. 2012-02-02 10:06:46 +00:00