зеркало из https://github.com/mozilla/gecko-dev.git
1e6e97fed1
There's only one case of sync frame construction from ContentRemoved now, and it's not on the element being removed, but on the whitespace siblings if needed, and _only_ when they don't support lazy frame construction. Basically, this switches all the RecreateFramesForContent calls to use `aAsyncInsert` (which I changed to an enum class for readability), except when we're already reframing. Also, it switches ReframeTextIfNeeded to opt-in into lazy frame construction, since it's used only when aFlags == CONTENT_REMOVED. This allows to simplify the DestroyFramesFor API (which I'm happy to rename to something more meaningful, since now it's something like DestroyFramesForAndRecreateThemAsync), and do some other consistency cleanups. A bunch of the ContentRemoved callsites were pretty random at passing aAsyncInsert, and that was some kind of a mess. This patch ensures consistency, and makes it impossible to do O(n^2) work when removing DOM nodes, which is nice. The underlying reason for this is explained in the description of bug 1377848, and basically allows us to remove a bunch of Servo hacks on the longer term (a few of them are going away already, yay!). MozReview-Commit-ID: 2DrUTxGV8RX --HG-- extra : rebase_source : f428d839a5482477dea22c0fea600d54f3e8799c |
||
---|---|---|
.. | ||
builtin | ||
crashtests | ||
test | ||
XBLChildrenElement.cpp | ||
XBLChildrenElement.h | ||
moz.build | ||
nsBindingManager.cpp | ||
nsBindingManager.h | ||
nsXBLBinding.cpp | ||
nsXBLBinding.h | ||
nsXBLContentSink.cpp | ||
nsXBLContentSink.h | ||
nsXBLDocumentInfo.cpp | ||
nsXBLDocumentInfo.h | ||
nsXBLEventHandler.cpp | ||
nsXBLEventHandler.h | ||
nsXBLMaybeCompiled.h | ||
nsXBLProtoImpl.cpp | ||
nsXBLProtoImpl.h | ||
nsXBLProtoImplField.cpp | ||
nsXBLProtoImplField.h | ||
nsXBLProtoImplMember.h | ||
nsXBLProtoImplMethod.cpp | ||
nsXBLProtoImplMethod.h | ||
nsXBLProtoImplProperty.cpp | ||
nsXBLProtoImplProperty.h | ||
nsXBLPrototypeBinding.cpp | ||
nsXBLPrototypeBinding.h | ||
nsXBLPrototypeHandler.cpp | ||
nsXBLPrototypeHandler.h | ||
nsXBLPrototypeResources.cpp | ||
nsXBLPrototypeResources.h | ||
nsXBLResourceLoader.cpp | ||
nsXBLResourceLoader.h | ||
nsXBLSerialize.cpp | ||
nsXBLSerialize.h | ||
nsXBLService.cpp | ||
nsXBLService.h | ||
nsXBLWindowKeyHandler.cpp | ||
nsXBLWindowKeyHandler.h |