haikuwebkit/Source/WebCore/rendering/LayerOverlapMap.cpp

338 lines
12 KiB
C++
Raw Permalink Normal View History

Move RenderLayerCompositor's OverlapMap to its own file https://bugs.webkit.org/show_bug.cgi?id=197915 Reviewed by Alex Christensen. Move OverlapMap to its own file. Make use of RectList, which was in the file but unused! Allocate OverlapMapContainer on the heap both to avoid header pollution of internals, and because they will get bigger in future. No behavior change. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * rendering/LayerOverlapMap.cpp: Added. (WebCore::RectList::append): (WebCore::RectList::intersects const): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::unite): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): * rendering/LayerOverlapMap.h: Added. (WebCore::LayerOverlapMap::isEmpty const): (WebCore::LayerOverlapMap::geometryMap const): (WebCore::LayerOverlapMap::geometryMap): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::RenderLayerCompositor::addToOverlapMap): (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): (WebCore::OverlapMapContainer::add): Deleted. (WebCore::OverlapMapContainer::overlapsLayers const): Deleted. (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::OverlapMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::add): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::isEmpty const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::pushCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::append): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects const): Deleted. * rendering/RenderLayerCompositor.h: Canonical link: https://commits.webkit.org/212039@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245326 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-15 15:59:21 +00:00
/*
* Copyright (C) 2019 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "config.h"
#include "LayerOverlapMap.h"
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes https://bugs.webkit.org/show_bug.cgi?id=198091 <rdar://problem/49403082> Reviewed by Antti Koivisto. Source/WebCore: When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller. All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure of the z-order and compositing trees). Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test against container N-1. To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds are computed unclipped. Between them, bounds are tested clipped. Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside composited overflow scroll (just like the old code). When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous container. Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html * rendering/LayerOverlapMap.cpp: (WebCore::operator<<): (WebCore::OverlapMapContainer::OverlapMapContainer): (WebCore::OverlapMapContainer::ClippingScope::ClippingScope): (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const): (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds): (WebCore::OverlapMapContainer::ClippingScope::addChild): (WebCore::OverlapMapContainer::ClippingScope::appendRect): (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive): (WebCore::OverlapMapContainer::scopeContainingLayer const): (WebCore::OverlapMapContainer::rootScope const): (WebCore::OverlapMapContainer::rootScope): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::mergeClippingScopesRecursive): (WebCore::OverlapMapContainer::append): (WebCore::OverlapMapContainer::ensureClippingScopeForLayers): (WebCore::OverlapMapContainer::findClippingScopeForLayers const): (WebCore::OverlapMapContainer::recursiveOutputToStream const): (WebCore::OverlapMapContainer::dump const): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::OverlapMapContainer::rectList const): Deleted. * rendering/LayerOverlapMap.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::createsClippingScope): (WebCore::enclosingClippingScopes): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::layerOverlaps const): * rendering/RenderLayerCompositor.h: Source/WebCore/../../LayoutTests: * TestExpectations: * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added. * platform/ios-wk2/TestExpectations: * platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/212178@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245602 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 00:12:49 +00:00
#include "RenderLayer.h"
#include <wtf/text/TextStream.h>
Move RenderLayerCompositor's OverlapMap to its own file https://bugs.webkit.org/show_bug.cgi?id=197915 Reviewed by Alex Christensen. Move OverlapMap to its own file. Make use of RectList, which was in the file but unused! Allocate OverlapMapContainer on the heap both to avoid header pollution of internals, and because they will get bigger in future. No behavior change. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * rendering/LayerOverlapMap.cpp: Added. (WebCore::RectList::append): (WebCore::RectList::intersects const): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::unite): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): * rendering/LayerOverlapMap.h: Added. (WebCore::LayerOverlapMap::isEmpty const): (WebCore::LayerOverlapMap::geometryMap const): (WebCore::LayerOverlapMap::geometryMap): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::RenderLayerCompositor::addToOverlapMap): (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): (WebCore::OverlapMapContainer::add): Deleted. (WebCore::OverlapMapContainer::overlapsLayers const): Deleted. (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::OverlapMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::add): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::isEmpty const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::pushCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::append): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects const): Deleted. * rendering/RenderLayerCompositor.h: Canonical link: https://commits.webkit.org/212039@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245326 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-15 15:59:21 +00:00
namespace WebCore {
struct RectList {
Vector<LayoutRect> rects;
LayoutRect boundingRect;
void append(const LayoutRect& rect)
{
rects.append(rect);
boundingRect.unite(rect);
}
void append(const RectList& rectList)
{
rects.appendVector(rectList.rects);
boundingRect.unite(rectList.boundingRect);
}
bool intersects(const LayoutRect& rect) const
{
if (!rects.size() || !rect.intersects(boundingRect))
return false;
for (const auto& currentRect : rects) {
if (currentRect.intersects(rect))
return true;
}
return false;
}
};
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes https://bugs.webkit.org/show_bug.cgi?id=198091 <rdar://problem/49403082> Reviewed by Antti Koivisto. Source/WebCore: When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller. All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure of the z-order and compositing trees). Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test against container N-1. To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds are computed unclipped. Between them, bounds are tested clipped. Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside composited overflow scroll (just like the old code). When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous container. Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html * rendering/LayerOverlapMap.cpp: (WebCore::operator<<): (WebCore::OverlapMapContainer::OverlapMapContainer): (WebCore::OverlapMapContainer::ClippingScope::ClippingScope): (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const): (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds): (WebCore::OverlapMapContainer::ClippingScope::addChild): (WebCore::OverlapMapContainer::ClippingScope::appendRect): (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive): (WebCore::OverlapMapContainer::scopeContainingLayer const): (WebCore::OverlapMapContainer::rootScope const): (WebCore::OverlapMapContainer::rootScope): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::mergeClippingScopesRecursive): (WebCore::OverlapMapContainer::append): (WebCore::OverlapMapContainer::ensureClippingScopeForLayers): (WebCore::OverlapMapContainer::findClippingScopeForLayers const): (WebCore::OverlapMapContainer::recursiveOutputToStream const): (WebCore::OverlapMapContainer::dump const): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::OverlapMapContainer::rectList const): Deleted. * rendering/LayerOverlapMap.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::createsClippingScope): (WebCore::enclosingClippingScopes): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::layerOverlaps const): * rendering/RenderLayerCompositor.h: Source/WebCore/../../LayoutTests: * TestExpectations: * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added. * platform/ios-wk2/TestExpectations: * platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/212178@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245602 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 00:12:49 +00:00
static TextStream& operator<<(TextStream& ts, const RectList& rectList)
{
ts << "bounds " << rectList.boundingRect << " (" << rectList.rects << " rects)";
return ts;
}
// Used to store overlap rects in a way that takes overflow into account.
// It stores a tree whose nodes are layers with composited scrolling. The tree is built lazily as layers are added whose containing block
// chains contain composited scrollers. The tree always starts at the root layer.
// Checking for overlap involves finding the node for the clipping layer enclosing the given layer (or the root),
// and comparing against the bounds of earlier siblings.
Move RenderLayerCompositor's OverlapMap to its own file https://bugs.webkit.org/show_bug.cgi?id=197915 Reviewed by Alex Christensen. Move OverlapMap to its own file. Make use of RectList, which was in the file but unused! Allocate OverlapMapContainer on the heap both to avoid header pollution of internals, and because they will get bigger in future. No behavior change. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * rendering/LayerOverlapMap.cpp: Added. (WebCore::RectList::append): (WebCore::RectList::intersects const): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::unite): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): * rendering/LayerOverlapMap.h: Added. (WebCore::LayerOverlapMap::isEmpty const): (WebCore::LayerOverlapMap::geometryMap const): (WebCore::LayerOverlapMap::geometryMap): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::RenderLayerCompositor::addToOverlapMap): (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): (WebCore::OverlapMapContainer::add): Deleted. (WebCore::OverlapMapContainer::overlapsLayers const): Deleted. (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::OverlapMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::add): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::isEmpty const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::pushCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::append): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects const): Deleted. * rendering/RenderLayerCompositor.h: Canonical link: https://commits.webkit.org/212039@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245326 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-15 15:59:21 +00:00
class OverlapMapContainer {
[WTF] Add makeUnique<T>, which ensures T is fast-allocated, WTF_MAKE_FAST_ALLOCATED annotation part https://bugs.webkit.org/show_bug.cgi?id=200620 Reviewed by Geoffrey Garen. Source/JavaScriptCore: Three patches including this one were originally one patch. I split it into three pieces to make roll-out easy. This part, we annotate classes / structs with WTF_MAKE_FAST_ALLOCATED and WTF_MAKE_STRUCT_FAST_ALLOCATED if they are allocated from std::make_unique. The second patch will switch `std::make_unique` to `WTF::makeUnique` and the third patch will insert a static_assert that makeUnique-allocated class T is FastMalloc-ed. One insight from this patch is that we tend to forget adding WTF_MAKE_STRUCT_FAST_ALLOCATED if it is just a data struct. * debugger/Debugger.h: * inspector/scripts/codegen/objc_generator_templates.py: * inspector/scripts/tests/all/expected/definitions-with-mac-platform.json-result: * inspector/scripts/tests/generic/expected/commands-with-async-attribute.json-result: * inspector/scripts/tests/generic/expected/commands-with-optional-call-return-parameters.json-result: * inspector/scripts/tests/generic/expected/definitions-with-mac-platform.json-result: * inspector/scripts/tests/generic/expected/domain-availability.json-result: * inspector/scripts/tests/generic/expected/domains-with-varying-command-sizes.json-result: * inspector/scripts/tests/generic/expected/enum-values.json-result: * inspector/scripts/tests/generic/expected/events-with-optional-parameters.json-result: * inspector/scripts/tests/generic/expected/generate-domains-with-feature-guards.json-result: * inspector/scripts/tests/generic/expected/same-type-id-different-domain.json-result: * inspector/scripts/tests/generic/expected/shadowed-optional-type-setters.json-result: * inspector/scripts/tests/generic/expected/should-strip-comments.json-result: * inspector/scripts/tests/generic/expected/type-declaration-aliased-primitive-type.json-result: * inspector/scripts/tests/generic/expected/type-declaration-array-type.json-result: * inspector/scripts/tests/generic/expected/type-declaration-enum-type.json-result: * inspector/scripts/tests/generic/expected/type-declaration-object-type.json-result: * inspector/scripts/tests/generic/expected/type-requiring-runtime-casts.json-result: * inspector/scripts/tests/generic/expected/type-with-open-parameters.json-result: * inspector/scripts/tests/generic/expected/version.json-result: * inspector/scripts/tests/ios/expected/definitions-with-mac-platform.json-result: * inspector/scripts/tests/mac/expected/definitions-with-mac-platform.json-result: Source/WebCore: * Modules/encryptedmedia/legacy/LegacyCDM.h: (WebCore::LegacyCDM::keySystem const): Deleted. (WebCore::LegacyCDM::client const): Deleted. (WebCore::LegacyCDM::setClient): Deleted. * Modules/encryptedmedia/legacy/LegacyCDMPrivate.h: * Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.h: * Modules/webaudio/AsyncAudioDecoder.h: (WebCore::AsyncAudioDecoder::DecodingTask::audioData): Deleted. (WebCore::AsyncAudioDecoder::DecodingTask::sampleRate const): Deleted. (WebCore::AsyncAudioDecoder::DecodingTask::successCallback): Deleted. (WebCore::AsyncAudioDecoder::DecodingTask::errorCallback): Deleted. (WebCore::AsyncAudioDecoder::DecodingTask::audioBuffer): Deleted. * Modules/webauthn/AuthenticatorCoordinator.h: * Modules/webdatabase/SQLStatement.h: (WebCore::SQLStatement::hasStatementCallback const): Deleted. (WebCore::SQLStatement::hasStatementErrorCallback const): Deleted. * Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h: * Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.h: * Modules/webgpu/WHLSL/WHLSLResolvingType.h: * bindings/js/DOMPromiseProxy.h: * bindings/js/GCController.h: * bridge/jsc/BridgeJSC.h: * contentextensions/ContentExtensionsBackend.h: * dom/FullscreenManager.h: (WebCore::FullscreenManager::document): Deleted. (WebCore::FullscreenManager::document const): Deleted. (WebCore::FullscreenManager::topDocument const): Deleted. (WebCore::FullscreenManager::page const): Deleted. (WebCore::FullscreenManager::frame const): Deleted. (WebCore::FullscreenManager::documentElement const): Deleted. (WebCore::FullscreenManager::hasLivingRenderTree const): Deleted. (WebCore::FullscreenManager::pageCacheState const): Deleted. (WebCore::FullscreenManager::scheduleFullStyleRebuild): Deleted. (WebCore::FullscreenManager::fullscreenElement const): Deleted. (WebCore::FullscreenManager::isFullscreen const): Deleted. (WebCore::FullscreenManager::isFullscreenKeyboardInputAllowed const): Deleted. (WebCore::FullscreenManager::currentFullscreenElement const): Deleted. * dom/Microtasks.h: (WebCore::MicrotaskQueue::vm const): Deleted. * editing/CompositeEditCommand.h: * editing/mac/AlternativeTextUIController.h: * html/HTMLMediaElement.h: * inspector/InspectorFrontendClientLocal.h: * inspector/agents/WebHeapAgent.cpp: * layout/displaytree/DisplayRun.h: * layout/inlineformatting/InlineItem.h: * layout/inlineformatting/InlineLine.h: * layout/tableformatting/TableGrid.h: * loader/FrameLoader.h: (WebCore::FrameLoader::frame const): Deleted. (WebCore::FrameLoader::policyChecker const): Deleted. (WebCore::FrameLoader::history const): Deleted. (WebCore::FrameLoader::notifier const): Deleted. (WebCore::FrameLoader::subframeLoader const): Deleted. (WebCore::FrameLoader::mixedContentChecker const): Deleted. (WebCore::FrameLoader::urlSelected): Deleted. (WebCore::FrameLoader::reload): Deleted. (WebCore::FrameLoader::requestedHistoryItem const): Deleted. (WebCore::FrameLoader::documentLoader const): Deleted. (WebCore::FrameLoader::policyDocumentLoader const): Deleted. (WebCore::FrameLoader::provisionalDocumentLoader const): Deleted. (WebCore::FrameLoader::state const): Deleted. (WebCore::FrameLoader::shouldReportResourceTimingToParentFrame const): Deleted. (WebCore::FrameLoader::client const): Deleted. (WebCore::FrameLoader::forceSandboxFlags): Deleted. (WebCore::FrameLoader::hasOpenedFrames const): Deleted. (WebCore::FrameLoader::setLoadsSynchronously): Deleted. (WebCore::FrameLoader::loadsSynchronously const): Deleted. (WebCore::FrameLoader::stateMachine): Deleted. (WebCore::FrameLoader::quickRedirectComing const): Deleted. (WebCore::FrameLoader::pageDismissalEventBeingDispatched const): Deleted. (WebCore::FrameLoader::previousURL const): Deleted. (WebCore::FrameLoader::setOverrideCachePolicyForTesting): Deleted. (WebCore::FrameLoader::setOverrideResourceLoadPriorityForTesting): Deleted. (WebCore::FrameLoader::setStrictRawResourceValidationPolicyDisabledForTesting): Deleted. (WebCore::FrameLoader::isStrictRawResourceValidationPolicyDisabledForTesting): Deleted. (WebCore::FrameLoader::provisionalLoadErrorBeingHandledURL const): Deleted. (WebCore::FrameLoader::setProvisionalLoadErrorBeingHandledURL): Deleted. (WebCore::FrameLoader::isReloadingFromOrigin const): Deleted. (WebCore::FrameLoader::setAlwaysAllowLocalWebarchive): Deleted. (WebCore::FrameLoader::alwaysAllowLocalWebarchive const): Deleted. (WebCore::FrameLoader::loadWithDocumentLoader): Deleted. (WebCore::FrameLoader::loadWithNavigationAction): Deleted. (WebCore::FrameLoader::shouldTreatCurrentLoadAsContinuingLoad const): Deleted. * loader/NavigationDisabler.h: * loader/NavigationScheduler.h: * loader/cache/CachedResource.h: * loader/cache/CachedSVGDocumentReference.h: (WebCore::CachedSVGDocumentReference::loadRequested const): Deleted. (WebCore::CachedSVGDocumentReference::document): Deleted. * loader/ios/PreviewLoader.h: * page/CaptionUserPreferences.h: * page/PrewarmInformation.h: * page/ResizeObserver.h: * page/SuspendableTimer.h: * page/csp/ContentSecurityPolicyDirective.h: * page/ios/ContentChangeObserver.h: * page/ios/DOMTimerHoldingTank.h: * page/linux/ResourceUsageOverlayLinux.cpp: * page/mac/TextIndicatorWindow.h: * page/scrolling/ScrollSnapOffsetsInfo.h: * page/scrolling/ScrollingMomentumCalculator.h: * platform/CPUMonitor.h: * platform/FileMonitor.h: * platform/ScrollAnimation.h: * platform/SuddenTermination.h: * platform/audio/AudioBus.h: (WebCore::AudioBus::numberOfChannels const): Deleted. (WebCore::AudioBus::channel): Deleted. (WebCore::AudioBus::channel const): Deleted. (WebCore::AudioBus::length const): Deleted. (WebCore::AudioBus::sampleRate const): Deleted. (WebCore::AudioBus::setSampleRate): Deleted. (WebCore::AudioBus::reset): Deleted. (WebCore::AudioBus::AudioBus): Deleted. * platform/audio/AudioChannel.h: (WebCore::AudioChannel::AudioChannel): Deleted. (WebCore::AudioChannel::set): Deleted. (WebCore::AudioChannel::length const): Deleted. (WebCore::AudioChannel::mutableData): Deleted. (WebCore::AudioChannel::data const): Deleted. (WebCore::AudioChannel::zero): Deleted. (WebCore::AudioChannel::clearSilentFlag): Deleted. (WebCore::AudioChannel::isSilent const): Deleted. * platform/audio/AudioFIFO.h: (WebCore::AudioFIFO::framesInFifo const): Deleted. (WebCore::AudioFIFO::updateIndex): Deleted. * platform/audio/AudioPullFIFO.h: * platform/audio/AudioResampler.h: (WebCore::AudioResampler::rate const): Deleted. * platform/audio/AudioResamplerKernel.h: * platform/audio/AudioSession.cpp: * platform/audio/AudioSession.h: (WebCore::AudioSession::isActive const): Deleted. * platform/audio/Biquad.h: * platform/audio/Cone.h: (WebCore::ConeEffect::setInnerAngle): Deleted. (WebCore::ConeEffect::innerAngle const): Deleted. (WebCore::ConeEffect::setOuterAngle): Deleted. (WebCore::ConeEffect::outerAngle const): Deleted. (WebCore::ConeEffect::setOuterGain): Deleted. (WebCore::ConeEffect::outerGain const): Deleted. * platform/audio/DenormalDisabler.h: (WebCore::DenormalDisabler::DenormalDisabler): Deleted. (WebCore::DenormalDisabler::~DenormalDisabler): Deleted. (WebCore::DenormalDisabler::flushDenormalFloatToZero): Deleted. (WebCore::DenormalDisabler::getCSR): Deleted. (WebCore::DenormalDisabler::setCSR): Deleted. * platform/audio/DirectConvolver.h: * platform/audio/Distance.h: (WebCore::DistanceEffect::model): Deleted. (WebCore::DistanceEffect::setModel): Deleted. (WebCore::DistanceEffect::setRefDistance): Deleted. (WebCore::DistanceEffect::setMaxDistance): Deleted. (WebCore::DistanceEffect::setRolloffFactor): Deleted. (WebCore::DistanceEffect::refDistance const): Deleted. (WebCore::DistanceEffect::maxDistance const): Deleted. (WebCore::DistanceEffect::rolloffFactor const): Deleted. * platform/audio/DownSampler.h: * platform/audio/DynamicsCompressor.h: (WebCore::DynamicsCompressor::sampleRate const): Deleted. (WebCore::DynamicsCompressor::nyquist const): Deleted. (WebCore::DynamicsCompressor::tailTime const): Deleted. (WebCore::DynamicsCompressor::latencyTime const): Deleted. * platform/audio/DynamicsCompressorKernel.h: (WebCore::DynamicsCompressorKernel::latencyFrames const): Deleted. (WebCore::DynamicsCompressorKernel::sampleRate const): Deleted. (WebCore::DynamicsCompressorKernel::meteringGain const): Deleted. * platform/audio/EqualPowerPanner.h: * platform/audio/FFTConvolver.h: (WebCore::FFTConvolver::fftSize const): Deleted. * platform/audio/HRTFDatabase.h: (WebCore::HRTFDatabase::numberOfAzimuths): Deleted. (WebCore::HRTFDatabase::sampleRate const): Deleted. * platform/audio/HRTFElevation.h: (WebCore::HRTFElevation::HRTFElevation): Deleted. (WebCore::HRTFElevation::kernelListL): Deleted. (WebCore::HRTFElevation::kernelListR): Deleted. (WebCore::HRTFElevation::elevationAngle const): Deleted. (WebCore::HRTFElevation::numberOfAzimuths const): Deleted. (WebCore::HRTFElevation::sampleRate const): Deleted. * platform/audio/HRTFPanner.h: (WebCore::HRTFPanner::fftSize const): Deleted. (WebCore::HRTFPanner::sampleRate const): Deleted. * platform/audio/MultiChannelResampler.h: * platform/audio/PlatformAudioData.h: * platform/audio/Reverb.h: (WebCore::Reverb::impulseResponseLength const): Deleted. * platform/audio/ReverbAccumulationBuffer.h: (WebCore::ReverbAccumulationBuffer::readIndex const): Deleted. (WebCore::ReverbAccumulationBuffer::readTimeFrame const): Deleted. * platform/audio/ReverbConvolver.h: (WebCore::ReverbConvolver::impulseResponseLength const): Deleted. (WebCore::ReverbConvolver::inputBuffer): Deleted. (WebCore::ReverbConvolver::useBackgroundThreads const): Deleted. * platform/audio/ReverbConvolverStage.h: (WebCore::ReverbConvolverStage::inputReadIndex const): Deleted. * platform/audio/ReverbInputBuffer.h: (WebCore::ReverbInputBuffer::writeIndex const): Deleted. * platform/audio/SincResampler.h: * platform/audio/UpSampler.h: * platform/audio/ZeroPole.h: (WebCore::ZeroPole::ZeroPole): Deleted. (WebCore::ZeroPole::reset): Deleted. (WebCore::ZeroPole::setZero): Deleted. (WebCore::ZeroPole::setPole): Deleted. (WebCore::ZeroPole::zero const): Deleted. (WebCore::ZeroPole::pole const): Deleted. * platform/audio/cocoa/WebAudioBufferList.h: (WebCore::WebAudioBufferList::list const): Deleted. (WebCore::WebAudioBufferList::operator AudioBufferList& const): Deleted. (WebCore::WebAudioBufferList::kind const): Deleted. * platform/audio/ios/AudioSessionIOS.mm: * platform/audio/mac/CARingBuffer.h: * platform/encryptedmedia/clearkey/CDMClearKey.h: * platform/gamepad/mac/HIDGamepad.h: * platform/graphics/FloatPoint.h: * platform/graphics/Font.h: * platform/graphics/GraphicsContext.h: * platform/graphics/GraphicsContext3DPrivate.h: * platform/graphics/GraphicsContextImpl.h: * platform/graphics/GraphicsLayer.cpp: * platform/graphics/LegacyCDMSession.h: * platform/graphics/Region.h: * platform/graphics/VelocityData.h: * platform/graphics/avfoundation/AVTrackPrivateAVFObjCImpl.h: * platform/graphics/avfoundation/CDMFairPlayStreaming.h: * platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.h: * platform/graphics/avfoundation/ISOFairPlayStreamingPsshBox.h: * platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.h: * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp: * platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.h: * platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.h: * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h: * platform/graphics/ca/GraphicsLayerCA.h: * platform/graphics/cairo/FontCustomPlatformData.h: * platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h: * platform/graphics/cairo/PlatformContextCairo.h: * platform/graphics/cocoa/GraphicsContext3DCocoa.mm: * platform/graphics/cv/ImageRotationSessionVT.h: (WebCore::ImageRotationSessionVT::RotationProperties::isIdentity const): Deleted. (WebCore::ImageRotationSessionVT::transform const): Deleted. (WebCore::ImageRotationSessionVT::rotationProperties const): Deleted. (WebCore::ImageRotationSessionVT::size): Deleted. (WebCore::ImageRotationSessionVT::rotatedSize): Deleted. * platform/graphics/cv/PixelBufferConformerCV.h: * platform/graphics/cv/TextureCacheCV.h: * platform/graphics/cv/VideoTextureCopierCV.h: * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h: * platform/graphics/gstreamer/VideoTextureCopierGStreamer.h: * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp: * platform/graphics/holepunch/MediaPlayerPrivateHolePunch.h: * platform/graphics/iso/ISOBox.h: * platform/graphics/iso/ISOOriginalFormatBox.h: * platform/graphics/iso/ISOProtectionSchemeInfoBox.h: * platform/graphics/iso/ISOSchemeInformationBox.h: * platform/graphics/iso/ISOSchemeTypeBox.h: * platform/graphics/iso/ISOTrackEncryptionBox.h: * platform/graphics/iso/ISOVTTCue.cpp: (WebCore::ISOStringBox::contents): Deleted. * platform/graphics/iso/ISOVTTCue.h: (WebCore::ISOWebVTTCue::boxTypeName): Deleted. (WebCore::ISOWebVTTCue::presentationTime const): Deleted. (WebCore::ISOWebVTTCue::duration const): Deleted. (WebCore::ISOWebVTTCue::sourceID const): Deleted. (WebCore::ISOWebVTTCue::id const): Deleted. (WebCore::ISOWebVTTCue::originalStartTime const): Deleted. (WebCore::ISOWebVTTCue::settings const): Deleted. (WebCore::ISOWebVTTCue::cueText const): Deleted. * platform/graphics/nicosia/NicosiaPaintingOperation.h: * platform/graphics/nicosia/texmap/NicosiaBackingStoreTextureMapperImpl.h: * platform/graphics/nicosia/texmap/NicosiaCompositionLayerTextureMapperImpl.h: * platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.h: * platform/graphics/nicosia/texmap/NicosiaGC3DLayer.h: * platform/graphics/nicosia/texmap/NicosiaImageBackingTextureMapperImpl.h: * platform/graphics/opengl/Extensions3DOpenGLCommon.h: * platform/graphics/texmap/TextureMapperGC3DPlatformLayer.h: * platform/graphics/texmap/coordinated/Tile.h: * platform/graphics/win/FontCustomPlatformData.h: * platform/graphics/win/FullScreenController.cpp: * platform/graphics/win/MediaPlayerPrivateFullscreenWindow.h: * platform/graphics/win/MediaPlayerPrivateMediaFoundation.h: * platform/graphics/win/PlatformContextDirect2D.h: * platform/graphics/win/WKCAImageQueue.cpp: * platform/gtk/PasteboardHelper.cpp: * platform/ios/LegacyTileGrid.h: * platform/mediarecorder/MediaRecorderPrivateAVFImpl.h: * platform/mediastream/gstreamer/GStreamerAudioData.h: (WebCore::GStreamerAudioData::GStreamerAudioData): Deleted. (WebCore::GStreamerAudioData::getSample): Deleted. (WebCore::GStreamerAudioData::getAudioInfo): Deleted. (WebCore::GStreamerAudioData::kind const): Deleted. * platform/mediastream/gstreamer/GStreamerCapturer.h: * platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp: * platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.h: * platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp: * platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.h: * platform/mediastream/libwebrtc/LibWebRTCDTMFSenderBackend.h: * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp: * platform/mediastream/libwebrtc/LibWebRTCProvider.h: * platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.h: * platform/mock/MediaPlaybackTargetPickerMock.h: * platform/mock/RTCDataChannelHandlerMock.h: * platform/network/ResourceErrorBase.h: * platform/network/curl/CookieJarDB.h: * platform/network/curl/CurlCacheEntry.h: * platform/network/curl/CurlContext.h: * platform/network/curl/CurlMultipartHandle.h: * platform/network/curl/CurlRequestScheduler.h: * platform/network/curl/CurlSSLVerifier.h: * platform/network/ios/PreviewConverter.h: * platform/network/soup/NetworkStorageSessionSoup.cpp: * platform/vr/openvr/VRPlatformDisplayOpenVR.h: * platform/vr/openvr/VRPlatformManagerOpenVR.h: * rendering/HitTestResult.h: * rendering/LayerOverlapMap.cpp: * rendering/RenderLayerCompositor.h: * rendering/svg/RenderSVGResourceMasker.h: * replay/UserInputBridge.h: * svg/graphics/filters/SVGFilterBuilder.h: * svg/properties/SVGAttributeAnimator.h: * svg/properties/SVGDecoratedProperty.h: * svg/properties/SVGPropertyAnimatorFactory.h: * testing/InternalSettings.cpp: * testing/LegacyMockCDM.cpp: * testing/LegacyMockCDM.h: * testing/MockCDMFactory.h: * workers/WorkerEventQueue.cpp: * workers/WorkerEventQueue.h: * workers/service/ServiceWorkerContainer.h: * worklets/PaintWorkletGlobalScope.h: * xml/XMLErrors.h: * xml/parser/XMLDocumentParserLibxml2.cpp: Source/WebDriver: * glib/SessionHostGlib.cpp: Source/WebKit: * NetworkProcess/AdClickAttributionManager.h: * NetworkProcess/Classifier/ResourceLoadStatisticsPersistentStorage.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: * NetworkProcess/Cookies/WebCookieManager.h: * NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.h: * NetworkProcess/NetworkHTTPSUpgradeChecker.h: * NetworkProcess/NetworkProcess.cpp: * NetworkProcess/NetworkSession.h: * NetworkProcess/NetworkSocketChannel.h: * NetworkProcess/WebSocketTask.h: * NetworkProcess/cache/PrefetchCache.h: * NetworkProcess/cocoa/WebSocketTaskCocoa.h: * NetworkProcess/soup/WebKitSoupRequestInputStream.cpp: * NetworkProcess/soup/WebSocketTaskSoup.h: * NetworkProcess/webrtc/LibWebRTCSocketClient.h: * NetworkProcess/webrtc/NetworkMDNSRegister.cpp: * Platform/Module.h: * PluginProcess/PluginControllerProxy.h: * Shared/ApplePay/WebPaymentCoordinatorProxy.h: * Shared/Authentication/AuthenticationManager.h: * Shared/Cocoa/SandboxExtensionCocoa.mm: * Shared/Plugins/NPObjectMessageReceiver.h: * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h: * UIProcess/API/APIAutomationClient.h: * UIProcess/API/APIAutomationSessionClient.h: * UIProcess/API/APIContextMenuClient.h: * UIProcess/API/APICustomProtocolManagerClient.h: * UIProcess/API/APIDiagnosticLoggingClient.h: * UIProcess/API/APIDownloadClient.h: * UIProcess/API/APIFindClient.h: * UIProcess/API/APIFindMatchesClient.h: * UIProcess/API/APIFormClient.h: * UIProcess/API/APIFullscreenClient.h: * UIProcess/API/APIGeolocationProvider.h: * UIProcess/API/APIHistoryClient.h: * UIProcess/API/APIIconDatabaseClient.h: * UIProcess/API/APIIconLoadingClient.h: * UIProcess/API/APIInjectedBundleClient.h: * UIProcess/API/APILegacyContextHistoryClient.h: * UIProcess/API/APILoaderClient.h: * UIProcess/API/APINavigationClient.h: * UIProcess/API/APIPolicyClient.h: * UIProcess/API/APIUIClient.h: * UIProcess/API/C/WKPage.cpp: (WKPageSetPageStateClient): * UIProcess/API/Cocoa/WKUserContentController.mm: * UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm: * UIProcess/API/glib/IconDatabase.h: * UIProcess/API/glib/WebKitAutomationSession.cpp: * UIProcess/API/glib/WebKitIconLoadingClient.cpp: * UIProcess/API/glib/WebKitNotificationProvider.h: * UIProcess/API/glib/WebKitUserContentManager.cpp: * UIProcess/API/glib/WebKitWebContext.cpp: * UIProcess/API/glib/WebKitWebView.cpp: * UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp: * UIProcess/API/gtk/WebKitWebInspector.cpp: * UIProcess/API/mac/WKView.mm: (-[WKView maybeInstallIconLoadingClient]): * UIProcess/API/wpe/APIViewClient.h: * UIProcess/API/wpe/ScrollGestureController.h: * UIProcess/ApplicationStateTracker.h: * UIProcess/Cocoa/AutomationSessionClient.h: * UIProcess/Cocoa/IconLoadingDelegate.h: * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp: * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h: * UIProcess/DrawingAreaProxy.h: * UIProcess/HighPerformanceGraphicsUsageSampler.h: * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/PageClient.h: * UIProcess/PerActivityStateCPUUsageSampler.h: * UIProcess/RemoteLayerTree/RemoteLayerTreeScrollingPerformanceData.h: * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h: * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h: * UIProcess/SystemPreviewController.h: * UIProcess/UserMediaPermissionRequestManagerProxy.h: * UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.h: * UIProcess/WebNavigationState.h: * UIProcess/WebPageInjectedBundleClient.h: * UIProcess/WebPageProxy.h: * UIProcess/WebsiteData/WebsiteDataStoreClient.h: * UIProcess/gtk/DragAndDropHandler.h: * UIProcess/ios/EditableImageController.h: * UIProcess/ios/InputViewUpdateDeferrer.h: * UIProcess/ios/SmartMagnificationController.h: * UIProcess/ios/fullscreen/WKFullScreenViewController.mm: * UIProcess/mac/WKFullScreenWindowController.mm: * UIProcess/mac/WKTextFinderClient.mm: * WebProcess/ApplePay/WebPaymentCoordinator.h: * WebProcess/Geolocation/GeolocationPermissionRequestManager.h: * WebProcess/Geolocation/WebGeolocationManager.h: * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp: * WebProcess/InjectedBundle/API/c/mac/WKBundlePageBannerMac.mm: * WebProcess/InjectedBundle/API/glib/DOM/DOMObjectCache.cpp: * WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp: * WebProcess/MediaCache/WebMediaKeyStorageManager.h: * WebProcess/MediaStream/UserMediaPermissionRequestManager.h: * WebProcess/Network/webrtc/LibWebRTCProvider.cpp: * WebProcess/Network/webrtc/LibWebRTCResolver.h: * WebProcess/Notifications/WebNotificationManager.h: * WebProcess/Plugins/Netscape/NetscapePlugin.h: * WebProcess/Plugins/Netscape/x11/NetscapePluginX11.h: * WebProcess/Plugins/PluginController.h: * WebProcess/Storage/WebSWOriginTable.h: * WebProcess/WebCoreSupport/WebAlternativeTextClient.h: * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebCoreSupport/WebContextMenuClient.h: * WebProcess/WebCoreSupport/WebDragClient.h: * WebProcess/WebCoreSupport/WebEditorClient.h: * WebProcess/WebCoreSupport/WebGeolocationClient.h: * WebProcess/WebCoreSupport/WebInspectorClient.h: * WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h: * WebProcess/WebCoreSupport/WebNotificationClient.h: * WebProcess/WebCoreSupport/WebPlugInClient.h: * WebProcess/WebCoreSupport/WebProgressTrackerClient.h: * WebProcess/WebCoreSupport/WebSpeechSynthesisClient.h: * WebProcess/WebCoreSupport/WebUserMediaClient.h: * WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.h: * WebProcess/WebPage/FindController.h: * WebProcess/WebPage/ViewGestureGeometryCollector.h: * WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp: * WebProcess/WebPage/ios/FindIndicatorOverlayClientIOS.h: * WebProcess/WebProcess.h: * WebProcess/cocoa/UserMediaCaptureManager.h: Source/WebKitLegacy/ios: * WebCoreSupport/WebChromeClientIOS.h: * WebCoreSupport/WebFixedPositionContent.mm: Source/WebKitLegacy/mac: * Plugins/Hosted/NetscapePluginInstanceProxy.h: * Plugins/Hosted/WebHostedNetscapePluginView.mm: * Plugins/WebNetscapePluginEventHandlerCocoa.h: * Storage/WebDatabaseManagerClient.mm: * WebCoreSupport/WebAlternativeTextClient.h: * WebCoreSupport/WebCachedFramePlatformData.h: * WebCoreSupport/WebChromeClient.h: * WebCoreSupport/WebContextMenuClient.h: * WebCoreSupport/WebDragClient.h: * WebCoreSupport/WebEditorClient.h: * WebCoreSupport/WebGeolocationClient.h: * WebCoreSupport/WebInspectorClient.h: * WebCoreSupport/WebNotificationClient.h: * WebCoreSupport/WebSelectionServiceController.h: * WebView/WebMediaPlaybackTargetPicker.h: Source/WebKitLegacy/win: * FullscreenVideoController.cpp: * FullscreenVideoController.h: * Plugins/PluginMessageThrottlerWin.h: * WebCachedFramePlatformData.h: * WebCoreSupport/AcceleratedCompositingContext.h: * WebCoreSupport/WebChromeClient.h: * WebCoreSupport/WebContextMenuClient.h: * WebCoreSupport/WebDesktopNotificationsDelegate.h: * WebCoreSupport/WebDragClient.h: * WebCoreSupport/WebEditorClient.h: * WebCoreSupport/WebFrameLoaderClient.cpp: * WebCoreSupport/WebGeolocationClient.h: * WebCoreSupport/WebInspectorClient.h: * WebDatabaseManager.cpp: * WebKitQuartzCoreAdditions/CAD3DRenderer.h: * WebNodeHighlight.h: * WebNotificationCenter.cpp: * WebNotificationCenter.h: Tools: * DumpRenderTree/AccessibilityController.h: * DumpRenderTree/GCController.h: * DumpRenderTree/win/DRTDataObject.cpp: * DumpRenderTree/win/DRTDataObject.h: * DumpRenderTree/win/DRTDesktopNotificationPresenter.h: * DumpRenderTree/win/DRTDropSource.h: * DumpRenderTree/win/DraggingInfo.h: * DumpRenderTree/win/EditingDelegate.h: * DumpRenderTree/win/EventSender.cpp: * DumpRenderTree/win/FrameLoadDelegate.h: * DumpRenderTree/win/HistoryDelegate.h: * DumpRenderTree/win/MD5.h: * DumpRenderTree/win/PolicyDelegate.h: * DumpRenderTree/win/ResourceLoadDelegate.h: * DumpRenderTree/win/TextInputController.h: * DumpRenderTree/win/UIDelegate.cpp: * DumpRenderTree/win/UIDelegate.h: * TestRunnerShared/UIScriptContext/UIScriptContext.h: * TestRunnerShared/cocoa/ClassMethodSwizzler.h: * TestRunnerShared/cocoa/InstanceMethodSwizzler.h: * TestWebKitAPI/Counters.h: * TestWebKitAPI/PlatformWebView.h: * TestWebKitAPI/Tests/WTF/Expected.cpp: * TestWebKitAPI/Tests/WTF/HashMap.cpp: (TestWebKitAPI::DerefObserver::ref): (TestWebKitAPI::DerefObserver::deref): (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/HashSet.cpp: (TestWebKitAPI::DerefObserver::ref): (TestWebKitAPI::DerefObserver::deref): (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/UniqueRef.cpp: * TestWebKitAPI/Tests/WTF/WeakPtr.cpp: * TestWebKitAPI/Tests/WebCore/CalculationValue.cpp: * TestWebKitAPI/Tests/WebKitGLib/TestAuthentication.cpp: * TestWebKitAPI/Tests/WebKitGLib/WebProcessTest.h: * TestWebKitAPI/glib/WebKitGLib/WebKitTestServer.h: * WebKitTestRunner/EventSenderProxy.h: * WebKitTestRunner/GeolocationProviderMock.h: * WebKitTestRunner/InjectedBundle/AccessibilityController.h: * WebKitTestRunner/InjectedBundle/EventSendingController.cpp: * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h: * WebKitTestRunner/PlatformWebView.h: * WebKitTestRunner/TestInvocation.h: Canonical link: https://commits.webkit.org/214537@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@248762 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-08-16 06:53:36 +00:00
WTF_MAKE_FAST_ALLOCATED;
Move RenderLayerCompositor's OverlapMap to its own file https://bugs.webkit.org/show_bug.cgi?id=197915 Reviewed by Alex Christensen. Move OverlapMap to its own file. Make use of RectList, which was in the file but unused! Allocate OverlapMapContainer on the heap both to avoid header pollution of internals, and because they will get bigger in future. No behavior change. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * rendering/LayerOverlapMap.cpp: Added. (WebCore::RectList::append): (WebCore::RectList::intersects const): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::unite): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): * rendering/LayerOverlapMap.h: Added. (WebCore::LayerOverlapMap::isEmpty const): (WebCore::LayerOverlapMap::geometryMap const): (WebCore::LayerOverlapMap::geometryMap): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::RenderLayerCompositor::addToOverlapMap): (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): (WebCore::OverlapMapContainer::add): Deleted. (WebCore::OverlapMapContainer::overlapsLayers const): Deleted. (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::OverlapMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::add): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::isEmpty const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::pushCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::append): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects const): Deleted. * rendering/RenderLayerCompositor.h: Canonical link: https://commits.webkit.org/212039@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245326 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-15 15:59:21 +00:00
public:
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes https://bugs.webkit.org/show_bug.cgi?id=198091 <rdar://problem/49403082> Reviewed by Antti Koivisto. Source/WebCore: When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller. All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure of the z-order and compositing trees). Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test against container N-1. To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds are computed unclipped. Between them, bounds are tested clipped. Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside composited overflow scroll (just like the old code). When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous container. Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html * rendering/LayerOverlapMap.cpp: (WebCore::operator<<): (WebCore::OverlapMapContainer::OverlapMapContainer): (WebCore::OverlapMapContainer::ClippingScope::ClippingScope): (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const): (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds): (WebCore::OverlapMapContainer::ClippingScope::addChild): (WebCore::OverlapMapContainer::ClippingScope::appendRect): (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive): (WebCore::OverlapMapContainer::scopeContainingLayer const): (WebCore::OverlapMapContainer::rootScope const): (WebCore::OverlapMapContainer::rootScope): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::mergeClippingScopesRecursive): (WebCore::OverlapMapContainer::append): (WebCore::OverlapMapContainer::ensureClippingScopeForLayers): (WebCore::OverlapMapContainer::findClippingScopeForLayers const): (WebCore::OverlapMapContainer::recursiveOutputToStream const): (WebCore::OverlapMapContainer::dump const): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::OverlapMapContainer::rectList const): Deleted. * rendering/LayerOverlapMap.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::createsClippingScope): (WebCore::enclosingClippingScopes): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::layerOverlaps const): * rendering/RenderLayerCompositor.h: Source/WebCore/../../LayoutTests: * TestExpectations: * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added. * platform/ios-wk2/TestExpectations: * platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/212178@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245602 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 00:12:49 +00:00
OverlapMapContainer(const RenderLayer& rootLayer)
: m_rootScope(rootLayer)
Move RenderLayerCompositor's OverlapMap to its own file https://bugs.webkit.org/show_bug.cgi?id=197915 Reviewed by Alex Christensen. Move OverlapMap to its own file. Make use of RectList, which was in the file but unused! Allocate OverlapMapContainer on the heap both to avoid header pollution of internals, and because they will get bigger in future. No behavior change. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * rendering/LayerOverlapMap.cpp: Added. (WebCore::RectList::append): (WebCore::RectList::intersects const): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::unite): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): * rendering/LayerOverlapMap.h: Added. (WebCore::LayerOverlapMap::isEmpty const): (WebCore::LayerOverlapMap::geometryMap const): (WebCore::LayerOverlapMap::geometryMap): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::RenderLayerCompositor::addToOverlapMap): (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): (WebCore::OverlapMapContainer::add): Deleted. (WebCore::OverlapMapContainer::overlapsLayers const): Deleted. (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::OverlapMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::add): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::isEmpty const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::pushCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::append): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects const): Deleted. * rendering/RenderLayerCompositor.h: Canonical link: https://commits.webkit.org/212039@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245326 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-15 15:59:21 +00:00
{
}
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes https://bugs.webkit.org/show_bug.cgi?id=198091 <rdar://problem/49403082> Reviewed by Antti Koivisto. Source/WebCore: When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller. All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure of the z-order and compositing trees). Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test against container N-1. To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds are computed unclipped. Between them, bounds are tested clipped. Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside composited overflow scroll (just like the old code). When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous container. Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html * rendering/LayerOverlapMap.cpp: (WebCore::operator<<): (WebCore::OverlapMapContainer::OverlapMapContainer): (WebCore::OverlapMapContainer::ClippingScope::ClippingScope): (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const): (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds): (WebCore::OverlapMapContainer::ClippingScope::addChild): (WebCore::OverlapMapContainer::ClippingScope::appendRect): (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive): (WebCore::OverlapMapContainer::scopeContainingLayer const): (WebCore::OverlapMapContainer::rootScope const): (WebCore::OverlapMapContainer::rootScope): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::mergeClippingScopesRecursive): (WebCore::OverlapMapContainer::append): (WebCore::OverlapMapContainer::ensureClippingScopeForLayers): (WebCore::OverlapMapContainer::findClippingScopeForLayers const): (WebCore::OverlapMapContainer::recursiveOutputToStream const): (WebCore::OverlapMapContainer::dump const): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::OverlapMapContainer::rectList const): Deleted. * rendering/LayerOverlapMap.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::createsClippingScope): (WebCore::enclosingClippingScopes): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::layerOverlaps const): * rendering/RenderLayerCompositor.h: Source/WebCore/../../LayoutTests: * TestExpectations: * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added. * platform/ios-wk2/TestExpectations: * platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/212178@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245602 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 00:12:49 +00:00
// Layers are added in z-order, lazily creating clipping scopes as necessary.
void add(const RenderLayer&, const LayoutRect& bounds, const Vector<LayerOverlapMap::LayerAndBounds>& enclosingClippingLayers);
bool overlapsLayers(const RenderLayer&, const LayoutRect& bounds, const Vector<LayerOverlapMap::LayerAndBounds>& enclosingClippingLayers) const;
void append(std::unique_ptr<OverlapMapContainer>&&);
String dump(unsigned) const;
private:
struct ClippingScope {
ClippingScope(const RenderLayer& inLayer)
: layer(inLayer)
{
}
ClippingScope(const LayerOverlapMap::LayerAndBounds& layerAndBounds)
: layer(layerAndBounds.layer)
, bounds(layerAndBounds.bounds)
{
}
ClippingScope* childWithLayer(const RenderLayer& layer) const
{
for (auto& child : children) {
if (&child.layer == &layer)
return const_cast<ClippingScope*>(&child);
}
return nullptr;
}
ClippingScope* addChildWithLayerAndBounds(const LayerOverlapMap::LayerAndBounds& layerAndBounds)
{
children.append({ layerAndBounds });
return &children.last();
}
ClippingScope* addChild(const ClippingScope& child)
{
ASSERT(&layer != &child.layer);
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes https://bugs.webkit.org/show_bug.cgi?id=198091 <rdar://problem/49403082> Reviewed by Antti Koivisto. Source/WebCore: When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller. All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure of the z-order and compositing trees). Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test against container N-1. To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds are computed unclipped. Between them, bounds are tested clipped. Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside composited overflow scroll (just like the old code). When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous container. Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html * rendering/LayerOverlapMap.cpp: (WebCore::operator<<): (WebCore::OverlapMapContainer::OverlapMapContainer): (WebCore::OverlapMapContainer::ClippingScope::ClippingScope): (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const): (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds): (WebCore::OverlapMapContainer::ClippingScope::addChild): (WebCore::OverlapMapContainer::ClippingScope::appendRect): (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive): (WebCore::OverlapMapContainer::scopeContainingLayer const): (WebCore::OverlapMapContainer::rootScope const): (WebCore::OverlapMapContainer::rootScope): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::mergeClippingScopesRecursive): (WebCore::OverlapMapContainer::append): (WebCore::OverlapMapContainer::ensureClippingScopeForLayers): (WebCore::OverlapMapContainer::findClippingScopeForLayers const): (WebCore::OverlapMapContainer::recursiveOutputToStream const): (WebCore::OverlapMapContainer::dump const): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::OverlapMapContainer::rectList const): Deleted. * rendering/LayerOverlapMap.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::createsClippingScope): (WebCore::enclosingClippingScopes): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::layerOverlaps const): * rendering/RenderLayerCompositor.h: Source/WebCore/../../LayoutTests: * TestExpectations: * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added. * platform/ios-wk2/TestExpectations: * platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/212178@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245602 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 00:12:49 +00:00
children.append(child);
return &children.last();
}
void appendRect(const LayoutRect& bounds)
{
rectList.append(bounds);
}
const RenderLayer& layer;
LayoutRect bounds; // Bounds of the composited clip.
Vector<ClippingScope> children;
RectList rectList;
};
static ClippingScope* clippingScopeContainingLayerChildRecursive(const ClippingScope& currNode, const RenderLayer& layer)
Move RenderLayerCompositor's OverlapMap to its own file https://bugs.webkit.org/show_bug.cgi?id=197915 Reviewed by Alex Christensen. Move OverlapMap to its own file. Make use of RectList, which was in the file but unused! Allocate OverlapMapContainer on the heap both to avoid header pollution of internals, and because they will get bigger in future. No behavior change. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * rendering/LayerOverlapMap.cpp: Added. (WebCore::RectList::append): (WebCore::RectList::intersects const): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::unite): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): * rendering/LayerOverlapMap.h: Added. (WebCore::LayerOverlapMap::isEmpty const): (WebCore::LayerOverlapMap::geometryMap const): (WebCore::LayerOverlapMap::geometryMap): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::RenderLayerCompositor::addToOverlapMap): (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): (WebCore::OverlapMapContainer::add): Deleted. (WebCore::OverlapMapContainer::overlapsLayers const): Deleted. (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::OverlapMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::add): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::isEmpty const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::pushCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::append): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects const): Deleted. * rendering/RenderLayerCompositor.h: Canonical link: https://commits.webkit.org/212039@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245326 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-15 15:59:21 +00:00
{
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes https://bugs.webkit.org/show_bug.cgi?id=198091 <rdar://problem/49403082> Reviewed by Antti Koivisto. Source/WebCore: When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller. All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure of the z-order and compositing trees). Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test against container N-1. To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds are computed unclipped. Between them, bounds are tested clipped. Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside composited overflow scroll (just like the old code). When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous container. Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html * rendering/LayerOverlapMap.cpp: (WebCore::operator<<): (WebCore::OverlapMapContainer::OverlapMapContainer): (WebCore::OverlapMapContainer::ClippingScope::ClippingScope): (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const): (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds): (WebCore::OverlapMapContainer::ClippingScope::addChild): (WebCore::OverlapMapContainer::ClippingScope::appendRect): (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive): (WebCore::OverlapMapContainer::scopeContainingLayer const): (WebCore::OverlapMapContainer::rootScope const): (WebCore::OverlapMapContainer::rootScope): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::mergeClippingScopesRecursive): (WebCore::OverlapMapContainer::append): (WebCore::OverlapMapContainer::ensureClippingScopeForLayers): (WebCore::OverlapMapContainer::findClippingScopeForLayers const): (WebCore::OverlapMapContainer::recursiveOutputToStream const): (WebCore::OverlapMapContainer::dump const): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::OverlapMapContainer::rectList const): Deleted. * rendering/LayerOverlapMap.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::createsClippingScope): (WebCore::enclosingClippingScopes): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::layerOverlaps const): * rendering/RenderLayerCompositor.h: Source/WebCore/../../LayoutTests: * TestExpectations: * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added. * platform/ios-wk2/TestExpectations: * platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/212178@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245602 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 00:12:49 +00:00
for (auto& child : currNode.children) {
if (&layer == &child.layer)
return const_cast<ClippingScope*>(&currNode);
if (auto* foundNode = clippingScopeContainingLayerChildRecursive(child, layer))
return foundNode;
}
return nullptr;
Move RenderLayerCompositor's OverlapMap to its own file https://bugs.webkit.org/show_bug.cgi?id=197915 Reviewed by Alex Christensen. Move OverlapMap to its own file. Make use of RectList, which was in the file but unused! Allocate OverlapMapContainer on the heap both to avoid header pollution of internals, and because they will get bigger in future. No behavior change. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * rendering/LayerOverlapMap.cpp: Added. (WebCore::RectList::append): (WebCore::RectList::intersects const): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::unite): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): * rendering/LayerOverlapMap.h: Added. (WebCore::LayerOverlapMap::isEmpty const): (WebCore::LayerOverlapMap::geometryMap const): (WebCore::LayerOverlapMap::geometryMap): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::RenderLayerCompositor::addToOverlapMap): (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): (WebCore::OverlapMapContainer::add): Deleted. (WebCore::OverlapMapContainer::overlapsLayers const): Deleted. (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::OverlapMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::add): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::isEmpty const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::pushCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::append): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects const): Deleted. * rendering/RenderLayerCompositor.h: Canonical link: https://commits.webkit.org/212039@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245326 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-15 15:59:21 +00:00
}
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes https://bugs.webkit.org/show_bug.cgi?id=198091 <rdar://problem/49403082> Reviewed by Antti Koivisto. Source/WebCore: When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller. All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure of the z-order and compositing trees). Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test against container N-1. To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds are computed unclipped. Between them, bounds are tested clipped. Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside composited overflow scroll (just like the old code). When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous container. Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html * rendering/LayerOverlapMap.cpp: (WebCore::operator<<): (WebCore::OverlapMapContainer::OverlapMapContainer): (WebCore::OverlapMapContainer::ClippingScope::ClippingScope): (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const): (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds): (WebCore::OverlapMapContainer::ClippingScope::addChild): (WebCore::OverlapMapContainer::ClippingScope::appendRect): (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive): (WebCore::OverlapMapContainer::scopeContainingLayer const): (WebCore::OverlapMapContainer::rootScope const): (WebCore::OverlapMapContainer::rootScope): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::mergeClippingScopesRecursive): (WebCore::OverlapMapContainer::append): (WebCore::OverlapMapContainer::ensureClippingScopeForLayers): (WebCore::OverlapMapContainer::findClippingScopeForLayers const): (WebCore::OverlapMapContainer::recursiveOutputToStream const): (WebCore::OverlapMapContainer::dump const): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::OverlapMapContainer::rectList const): Deleted. * rendering/LayerOverlapMap.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::createsClippingScope): (WebCore::enclosingClippingScopes): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::layerOverlaps const): * rendering/RenderLayerCompositor.h: Source/WebCore/../../LayoutTests: * TestExpectations: * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added. * platform/ios-wk2/TestExpectations: * platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/212178@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245602 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 00:12:49 +00:00
ClippingScope* scopeContainingLayer(const RenderLayer& layer) const
Move RenderLayerCompositor's OverlapMap to its own file https://bugs.webkit.org/show_bug.cgi?id=197915 Reviewed by Alex Christensen. Move OverlapMap to its own file. Make use of RectList, which was in the file but unused! Allocate OverlapMapContainer on the heap both to avoid header pollution of internals, and because they will get bigger in future. No behavior change. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * rendering/LayerOverlapMap.cpp: Added. (WebCore::RectList::append): (WebCore::RectList::intersects const): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::unite): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): * rendering/LayerOverlapMap.h: Added. (WebCore::LayerOverlapMap::isEmpty const): (WebCore::LayerOverlapMap::geometryMap const): (WebCore::LayerOverlapMap::geometryMap): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::RenderLayerCompositor::addToOverlapMap): (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): (WebCore::OverlapMapContainer::add): Deleted. (WebCore::OverlapMapContainer::overlapsLayers const): Deleted. (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::OverlapMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::add): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::isEmpty const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::pushCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::append): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects const): Deleted. * rendering/RenderLayerCompositor.h: Canonical link: https://commits.webkit.org/212039@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245326 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-15 15:59:21 +00:00
{
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes https://bugs.webkit.org/show_bug.cgi?id=198091 <rdar://problem/49403082> Reviewed by Antti Koivisto. Source/WebCore: When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller. All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure of the z-order and compositing trees). Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test against container N-1. To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds are computed unclipped. Between them, bounds are tested clipped. Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside composited overflow scroll (just like the old code). When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous container. Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html * rendering/LayerOverlapMap.cpp: (WebCore::operator<<): (WebCore::OverlapMapContainer::OverlapMapContainer): (WebCore::OverlapMapContainer::ClippingScope::ClippingScope): (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const): (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds): (WebCore::OverlapMapContainer::ClippingScope::addChild): (WebCore::OverlapMapContainer::ClippingScope::appendRect): (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive): (WebCore::OverlapMapContainer::scopeContainingLayer const): (WebCore::OverlapMapContainer::rootScope const): (WebCore::OverlapMapContainer::rootScope): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::mergeClippingScopesRecursive): (WebCore::OverlapMapContainer::append): (WebCore::OverlapMapContainer::ensureClippingScopeForLayers): (WebCore::OverlapMapContainer::findClippingScopeForLayers const): (WebCore::OverlapMapContainer::recursiveOutputToStream const): (WebCore::OverlapMapContainer::dump const): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::OverlapMapContainer::rectList const): Deleted. * rendering/LayerOverlapMap.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::createsClippingScope): (WebCore::enclosingClippingScopes): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::layerOverlaps const): * rendering/RenderLayerCompositor.h: Source/WebCore/../../LayoutTests: * TestExpectations: * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added. * platform/ios-wk2/TestExpectations: * platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/212178@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245602 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 00:12:49 +00:00
return clippingScopeContainingLayerChildRecursive(m_rootScope, layer);
Move RenderLayerCompositor's OverlapMap to its own file https://bugs.webkit.org/show_bug.cgi?id=197915 Reviewed by Alex Christensen. Move OverlapMap to its own file. Make use of RectList, which was in the file but unused! Allocate OverlapMapContainer on the heap both to avoid header pollution of internals, and because they will get bigger in future. No behavior change. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * rendering/LayerOverlapMap.cpp: Added. (WebCore::RectList::append): (WebCore::RectList::intersects const): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::unite): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): * rendering/LayerOverlapMap.h: Added. (WebCore::LayerOverlapMap::isEmpty const): (WebCore::LayerOverlapMap::geometryMap const): (WebCore::LayerOverlapMap::geometryMap): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::RenderLayerCompositor::addToOverlapMap): (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): (WebCore::OverlapMapContainer::add): Deleted. (WebCore::OverlapMapContainer::overlapsLayers const): Deleted. (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::OverlapMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::add): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::isEmpty const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::pushCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::append): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects const): Deleted. * rendering/RenderLayerCompositor.h: Canonical link: https://commits.webkit.org/212039@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245326 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-15 15:59:21 +00:00
}
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes https://bugs.webkit.org/show_bug.cgi?id=198091 <rdar://problem/49403082> Reviewed by Antti Koivisto. Source/WebCore: When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller. All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure of the z-order and compositing trees). Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test against container N-1. To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds are computed unclipped. Between them, bounds are tested clipped. Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside composited overflow scroll (just like the old code). When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous container. Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html * rendering/LayerOverlapMap.cpp: (WebCore::operator<<): (WebCore::OverlapMapContainer::OverlapMapContainer): (WebCore::OverlapMapContainer::ClippingScope::ClippingScope): (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const): (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds): (WebCore::OverlapMapContainer::ClippingScope::addChild): (WebCore::OverlapMapContainer::ClippingScope::appendRect): (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive): (WebCore::OverlapMapContainer::scopeContainingLayer const): (WebCore::OverlapMapContainer::rootScope const): (WebCore::OverlapMapContainer::rootScope): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::mergeClippingScopesRecursive): (WebCore::OverlapMapContainer::append): (WebCore::OverlapMapContainer::ensureClippingScopeForLayers): (WebCore::OverlapMapContainer::findClippingScopeForLayers const): (WebCore::OverlapMapContainer::recursiveOutputToStream const): (WebCore::OverlapMapContainer::dump const): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::OverlapMapContainer::rectList const): Deleted. * rendering/LayerOverlapMap.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::createsClippingScope): (WebCore::enclosingClippingScopes): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::layerOverlaps const): * rendering/RenderLayerCompositor.h: Source/WebCore/../../LayoutTests: * TestExpectations: * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added. * platform/ios-wk2/TestExpectations: * platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/212178@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245602 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 00:12:49 +00:00
static void mergeClippingScopesRecursive(const ClippingScope& sourceScope, ClippingScope& destScope);
Move RenderLayerCompositor's OverlapMap to its own file https://bugs.webkit.org/show_bug.cgi?id=197915 Reviewed by Alex Christensen. Move OverlapMap to its own file. Make use of RectList, which was in the file but unused! Allocate OverlapMapContainer on the heap both to avoid header pollution of internals, and because they will get bigger in future. No behavior change. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * rendering/LayerOverlapMap.cpp: Added. (WebCore::RectList::append): (WebCore::RectList::intersects const): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::unite): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): * rendering/LayerOverlapMap.h: Added. (WebCore::LayerOverlapMap::isEmpty const): (WebCore::LayerOverlapMap::geometryMap const): (WebCore::LayerOverlapMap::geometryMap): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::RenderLayerCompositor::addToOverlapMap): (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): (WebCore::OverlapMapContainer::add): Deleted. (WebCore::OverlapMapContainer::overlapsLayers const): Deleted. (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::OverlapMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::add): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::isEmpty const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::pushCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::append): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects const): Deleted. * rendering/RenderLayerCompositor.h: Canonical link: https://commits.webkit.org/212039@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245326 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-15 15:59:21 +00:00
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes https://bugs.webkit.org/show_bug.cgi?id=198091 <rdar://problem/49403082> Reviewed by Antti Koivisto. Source/WebCore: When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller. All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure of the z-order and compositing trees). Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test against container N-1. To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds are computed unclipped. Between them, bounds are tested clipped. Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside composited overflow scroll (just like the old code). When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous container. Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html * rendering/LayerOverlapMap.cpp: (WebCore::operator<<): (WebCore::OverlapMapContainer::OverlapMapContainer): (WebCore::OverlapMapContainer::ClippingScope::ClippingScope): (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const): (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds): (WebCore::OverlapMapContainer::ClippingScope::addChild): (WebCore::OverlapMapContainer::ClippingScope::appendRect): (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive): (WebCore::OverlapMapContainer::scopeContainingLayer const): (WebCore::OverlapMapContainer::rootScope const): (WebCore::OverlapMapContainer::rootScope): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::mergeClippingScopesRecursive): (WebCore::OverlapMapContainer::append): (WebCore::OverlapMapContainer::ensureClippingScopeForLayers): (WebCore::OverlapMapContainer::findClippingScopeForLayers const): (WebCore::OverlapMapContainer::recursiveOutputToStream const): (WebCore::OverlapMapContainer::dump const): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::OverlapMapContainer::rectList const): Deleted. * rendering/LayerOverlapMap.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::createsClippingScope): (WebCore::enclosingClippingScopes): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::layerOverlaps const): * rendering/RenderLayerCompositor.h: Source/WebCore/../../LayoutTests: * TestExpectations: * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added. * platform/ios-wk2/TestExpectations: * platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/212178@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245602 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 00:12:49 +00:00
ClippingScope* ensureClippingScopeForLayers(const Vector<LayerOverlapMap::LayerAndBounds>& enclosingClippingLayers);
ClippingScope* findClippingScopeForLayers(const Vector<LayerOverlapMap::LayerAndBounds>& enclosingClippingLayers) const;
void recursiveOutputToStream(TextStream&, const ClippingScope&, unsigned depth) const;
const ClippingScope& rootScope() const { return m_rootScope; }
ClippingScope& rootScope() { return m_rootScope; }
ClippingScope m_rootScope;
Move RenderLayerCompositor's OverlapMap to its own file https://bugs.webkit.org/show_bug.cgi?id=197915 Reviewed by Alex Christensen. Move OverlapMap to its own file. Make use of RectList, which was in the file but unused! Allocate OverlapMapContainer on the heap both to avoid header pollution of internals, and because they will get bigger in future. No behavior change. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * rendering/LayerOverlapMap.cpp: Added. (WebCore::RectList::append): (WebCore::RectList::intersects const): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::unite): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): * rendering/LayerOverlapMap.h: Added. (WebCore::LayerOverlapMap::isEmpty const): (WebCore::LayerOverlapMap::geometryMap const): (WebCore::LayerOverlapMap::geometryMap): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::RenderLayerCompositor::addToOverlapMap): (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): (WebCore::OverlapMapContainer::add): Deleted. (WebCore::OverlapMapContainer::overlapsLayers const): Deleted. (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::OverlapMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::add): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::isEmpty const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::pushCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::append): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects const): Deleted. * rendering/RenderLayerCompositor.h: Canonical link: https://commits.webkit.org/212039@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245326 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-15 15:59:21 +00:00
};
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes https://bugs.webkit.org/show_bug.cgi?id=198091 <rdar://problem/49403082> Reviewed by Antti Koivisto. Source/WebCore: When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller. All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure of the z-order and compositing trees). Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test against container N-1. To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds are computed unclipped. Between them, bounds are tested clipped. Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside composited overflow scroll (just like the old code). When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous container. Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html * rendering/LayerOverlapMap.cpp: (WebCore::operator<<): (WebCore::OverlapMapContainer::OverlapMapContainer): (WebCore::OverlapMapContainer::ClippingScope::ClippingScope): (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const): (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds): (WebCore::OverlapMapContainer::ClippingScope::addChild): (WebCore::OverlapMapContainer::ClippingScope::appendRect): (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive): (WebCore::OverlapMapContainer::scopeContainingLayer const): (WebCore::OverlapMapContainer::rootScope const): (WebCore::OverlapMapContainer::rootScope): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::mergeClippingScopesRecursive): (WebCore::OverlapMapContainer::append): (WebCore::OverlapMapContainer::ensureClippingScopeForLayers): (WebCore::OverlapMapContainer::findClippingScopeForLayers const): (WebCore::OverlapMapContainer::recursiveOutputToStream const): (WebCore::OverlapMapContainer::dump const): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::OverlapMapContainer::rectList const): Deleted. * rendering/LayerOverlapMap.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::createsClippingScope): (WebCore::enclosingClippingScopes): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::layerOverlaps const): * rendering/RenderLayerCompositor.h: Source/WebCore/../../LayoutTests: * TestExpectations: * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added. * platform/ios-wk2/TestExpectations: * platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/212178@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245602 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 00:12:49 +00:00
void OverlapMapContainer::add(const RenderLayer&, const LayoutRect& bounds, const Vector<LayerOverlapMap::LayerAndBounds>& enclosingClippingLayers)
{
auto* layerScope = ensureClippingScopeForLayers(enclosingClippingLayers);
layerScope->appendRect(bounds);
}
bool OverlapMapContainer::overlapsLayers(const RenderLayer&, const LayoutRect& bounds, const Vector<LayerOverlapMap::LayerAndBounds>& enclosingClippingLayers) const
{
if (m_rootScope.rectList.intersects(bounds))
return true;
if (m_rootScope.children.isEmpty())
return false;
// Find the ClippingScope for which this layer is a child.
auto* clippingScope = findClippingScopeForLayers(enclosingClippingLayers);
if (!clippingScope)
return false;
if (clippingScope->rectList.intersects(bounds))
return true;
// FIXME: In some cases do we have to walk up the ancestor clipping scope chain?
return false;
}
void OverlapMapContainer::mergeClippingScopesRecursive(const ClippingScope& sourceScope, ClippingScope& destScope)
{
ASSERT(&sourceScope.layer == &destScope.layer);
destScope.rectList.append(sourceScope.rectList);
for (auto& sourceChildScope : sourceScope.children) {
ClippingScope* destChild = destScope.childWithLayer(sourceChildScope.layer);
if (destChild) {
destChild->rectList.append(sourceChildScope.rectList);
mergeClippingScopesRecursive(sourceChildScope, *destChild);
} else {
// New child, just copy the whole subtree.
destScope.addChild(sourceChildScope);
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes https://bugs.webkit.org/show_bug.cgi?id=198091 <rdar://problem/49403082> Reviewed by Antti Koivisto. Source/WebCore: When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller. All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure of the z-order and compositing trees). Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test against container N-1. To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds are computed unclipped. Between them, bounds are tested clipped. Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside composited overflow scroll (just like the old code). When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous container. Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html * rendering/LayerOverlapMap.cpp: (WebCore::operator<<): (WebCore::OverlapMapContainer::OverlapMapContainer): (WebCore::OverlapMapContainer::ClippingScope::ClippingScope): (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const): (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds): (WebCore::OverlapMapContainer::ClippingScope::addChild): (WebCore::OverlapMapContainer::ClippingScope::appendRect): (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive): (WebCore::OverlapMapContainer::scopeContainingLayer const): (WebCore::OverlapMapContainer::rootScope const): (WebCore::OverlapMapContainer::rootScope): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::mergeClippingScopesRecursive): (WebCore::OverlapMapContainer::append): (WebCore::OverlapMapContainer::ensureClippingScopeForLayers): (WebCore::OverlapMapContainer::findClippingScopeForLayers const): (WebCore::OverlapMapContainer::recursiveOutputToStream const): (WebCore::OverlapMapContainer::dump const): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::OverlapMapContainer::rectList const): Deleted. * rendering/LayerOverlapMap.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::createsClippingScope): (WebCore::enclosingClippingScopes): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::layerOverlaps const): * rendering/RenderLayerCompositor.h: Source/WebCore/../../LayoutTests: * TestExpectations: * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added. * platform/ios-wk2/TestExpectations: * platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/212178@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245602 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 00:12:49 +00:00
}
}
}
void OverlapMapContainer::append(std::unique_ptr<OverlapMapContainer>&& otherContainer)
{
mergeClippingScopesRecursive(otherContainer->rootScope(), m_rootScope);
}
OverlapMapContainer::ClippingScope* OverlapMapContainer::ensureClippingScopeForLayers(const Vector<LayerOverlapMap::LayerAndBounds>& enclosingClippingLayers)
{
ASSERT(enclosingClippingLayers.size());
ASSERT(enclosingClippingLayers[0].layer.isRenderViewLayer());
auto* currScope = &m_rootScope;
for (unsigned i = 1; i < enclosingClippingLayers.size(); ++i) {
auto& scopeLayerAndBounds = enclosingClippingLayers[i];
auto* childScope = currScope->childWithLayer(scopeLayerAndBounds.layer);
if (!childScope) {
currScope = currScope->addChildWithLayerAndBounds(scopeLayerAndBounds);
break;
}
currScope = childScope;
}
return const_cast<ClippingScope*>(currScope);
}
OverlapMapContainer::ClippingScope* OverlapMapContainer::findClippingScopeForLayers(const Vector<LayerOverlapMap::LayerAndBounds>& enclosingClippingLayers) const
{
ASSERT(enclosingClippingLayers.size());
ASSERT(enclosingClippingLayers[0].layer.isRenderViewLayer());
const auto* currScope = &m_rootScope;
for (unsigned i = 1; i < enclosingClippingLayers.size(); ++i) {
auto& scopeLayerAndBounds = enclosingClippingLayers[i];
auto* childScope = currScope->childWithLayer(scopeLayerAndBounds.layer);
if (!childScope)
return nullptr;
currScope = childScope;
}
return const_cast<ClippingScope*>(currScope);
}
void OverlapMapContainer::recursiveOutputToStream(TextStream& ts, const ClippingScope& scope, unsigned depth) const
{
ts << "\n" << indent << TextStream::Repeat { 2 * depth, ' ' } << " scope for layer " << &scope.layer << " rects " << scope.rectList;
for (auto& childScope : scope.children)
recursiveOutputToStream(ts, childScope, depth + 1);
}
String OverlapMapContainer::dump(unsigned indent) const
{
TextStream multilineStream;
multilineStream.increaseIndent(indent);
multilineStream << "overlap container - root scope layer " << &m_rootScope.layer << " rects " << m_rootScope.rectList;
for (auto& childScope : m_rootScope.children)
recursiveOutputToStream(multilineStream, childScope, 1);
return multilineStream.release();
}
LayerOverlapMap::LayerOverlapMap(const RenderLayer& rootLayer)
Move RenderLayerCompositor's OverlapMap to its own file https://bugs.webkit.org/show_bug.cgi?id=197915 Reviewed by Alex Christensen. Move OverlapMap to its own file. Make use of RectList, which was in the file but unused! Allocate OverlapMapContainer on the heap both to avoid header pollution of internals, and because they will get bigger in future. No behavior change. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * rendering/LayerOverlapMap.cpp: Added. (WebCore::RectList::append): (WebCore::RectList::intersects const): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::unite): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): * rendering/LayerOverlapMap.h: Added. (WebCore::LayerOverlapMap::isEmpty const): (WebCore::LayerOverlapMap::geometryMap const): (WebCore::LayerOverlapMap::geometryMap): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::RenderLayerCompositor::addToOverlapMap): (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): (WebCore::OverlapMapContainer::add): Deleted. (WebCore::OverlapMapContainer::overlapsLayers const): Deleted. (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::OverlapMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::add): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::isEmpty const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::pushCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::append): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects const): Deleted. * rendering/RenderLayerCompositor.h: Canonical link: https://commits.webkit.org/212039@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245326 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-15 15:59:21 +00:00
: m_geometryMap(UseTransforms)
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes https://bugs.webkit.org/show_bug.cgi?id=198091 <rdar://problem/49403082> Reviewed by Antti Koivisto. Source/WebCore: When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller. All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure of the z-order and compositing trees). Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test against container N-1. To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds are computed unclipped. Between them, bounds are tested clipped. Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside composited overflow scroll (just like the old code). When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous container. Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html * rendering/LayerOverlapMap.cpp: (WebCore::operator<<): (WebCore::OverlapMapContainer::OverlapMapContainer): (WebCore::OverlapMapContainer::ClippingScope::ClippingScope): (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const): (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds): (WebCore::OverlapMapContainer::ClippingScope::addChild): (WebCore::OverlapMapContainer::ClippingScope::appendRect): (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive): (WebCore::OverlapMapContainer::scopeContainingLayer const): (WebCore::OverlapMapContainer::rootScope const): (WebCore::OverlapMapContainer::rootScope): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::mergeClippingScopesRecursive): (WebCore::OverlapMapContainer::append): (WebCore::OverlapMapContainer::ensureClippingScopeForLayers): (WebCore::OverlapMapContainer::findClippingScopeForLayers const): (WebCore::OverlapMapContainer::recursiveOutputToStream const): (WebCore::OverlapMapContainer::dump const): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::OverlapMapContainer::rectList const): Deleted. * rendering/LayerOverlapMap.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::createsClippingScope): (WebCore::enclosingClippingScopes): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::layerOverlaps const): * rendering/RenderLayerCompositor.h: Source/WebCore/../../LayoutTests: * TestExpectations: * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added. * platform/ios-wk2/TestExpectations: * platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/212178@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245602 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 00:12:49 +00:00
, m_rootLayer(rootLayer)
Move RenderLayerCompositor's OverlapMap to its own file https://bugs.webkit.org/show_bug.cgi?id=197915 Reviewed by Alex Christensen. Move OverlapMap to its own file. Make use of RectList, which was in the file but unused! Allocate OverlapMapContainer on the heap both to avoid header pollution of internals, and because they will get bigger in future. No behavior change. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * rendering/LayerOverlapMap.cpp: Added. (WebCore::RectList::append): (WebCore::RectList::intersects const): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::unite): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): * rendering/LayerOverlapMap.h: Added. (WebCore::LayerOverlapMap::isEmpty const): (WebCore::LayerOverlapMap::geometryMap const): (WebCore::LayerOverlapMap::geometryMap): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::RenderLayerCompositor::addToOverlapMap): (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): (WebCore::OverlapMapContainer::add): Deleted. (WebCore::OverlapMapContainer::overlapsLayers const): Deleted. (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::OverlapMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::add): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::isEmpty const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::pushCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::append): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects const): Deleted. * rendering/RenderLayerCompositor.h: Canonical link: https://commits.webkit.org/212039@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245326 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-15 15:59:21 +00:00
{
// Begin assuming the root layer will be composited so that there is
// something on the stack. The root layer should also never get an
// popCompositingContainer call.
pushCompositingContainer();
}
LayerOverlapMap::~LayerOverlapMap() = default;
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes https://bugs.webkit.org/show_bug.cgi?id=198091 <rdar://problem/49403082> Reviewed by Antti Koivisto. Source/WebCore: When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller. All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure of the z-order and compositing trees). Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test against container N-1. To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds are computed unclipped. Between them, bounds are tested clipped. Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside composited overflow scroll (just like the old code). When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous container. Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html * rendering/LayerOverlapMap.cpp: (WebCore::operator<<): (WebCore::OverlapMapContainer::OverlapMapContainer): (WebCore::OverlapMapContainer::ClippingScope::ClippingScope): (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const): (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds): (WebCore::OverlapMapContainer::ClippingScope::addChild): (WebCore::OverlapMapContainer::ClippingScope::appendRect): (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive): (WebCore::OverlapMapContainer::scopeContainingLayer const): (WebCore::OverlapMapContainer::rootScope const): (WebCore::OverlapMapContainer::rootScope): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::mergeClippingScopesRecursive): (WebCore::OverlapMapContainer::append): (WebCore::OverlapMapContainer::ensureClippingScopeForLayers): (WebCore::OverlapMapContainer::findClippingScopeForLayers const): (WebCore::OverlapMapContainer::recursiveOutputToStream const): (WebCore::OverlapMapContainer::dump const): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::OverlapMapContainer::rectList const): Deleted. * rendering/LayerOverlapMap.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::createsClippingScope): (WebCore::enclosingClippingScopes): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::layerOverlaps const): * rendering/RenderLayerCompositor.h: Source/WebCore/../../LayoutTests: * TestExpectations: * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added. * platform/ios-wk2/TestExpectations: * platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/212178@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245602 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 00:12:49 +00:00
void LayerOverlapMap::add(const RenderLayer& layer, const LayoutRect& bounds, const Vector<LayerAndBounds>& enclosingClippingLayers)
Move RenderLayerCompositor's OverlapMap to its own file https://bugs.webkit.org/show_bug.cgi?id=197915 Reviewed by Alex Christensen. Move OverlapMap to its own file. Make use of RectList, which was in the file but unused! Allocate OverlapMapContainer on the heap both to avoid header pollution of internals, and because they will get bigger in future. No behavior change. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * rendering/LayerOverlapMap.cpp: Added. (WebCore::RectList::append): (WebCore::RectList::intersects const): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::unite): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): * rendering/LayerOverlapMap.h: Added. (WebCore::LayerOverlapMap::isEmpty const): (WebCore::LayerOverlapMap::geometryMap const): (WebCore::LayerOverlapMap::geometryMap): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::RenderLayerCompositor::addToOverlapMap): (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): (WebCore::OverlapMapContainer::add): Deleted. (WebCore::OverlapMapContainer::overlapsLayers const): Deleted. (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::OverlapMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::add): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::isEmpty const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::pushCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::append): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects const): Deleted. * rendering/RenderLayerCompositor.h: Canonical link: https://commits.webkit.org/212039@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245326 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-15 15:59:21 +00:00
{
// Layers do not contribute to overlap immediately--instead, they will
// contribute to overlap as soon as their composited ancestor has been
// recursively processed and popped off the stack.
ASSERT(m_overlapStack.size() >= 2);
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes https://bugs.webkit.org/show_bug.cgi?id=198091 <rdar://problem/49403082> Reviewed by Antti Koivisto. Source/WebCore: When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller. All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure of the z-order and compositing trees). Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test against container N-1. To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds are computed unclipped. Between them, bounds are tested clipped. Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside composited overflow scroll (just like the old code). When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous container. Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html * rendering/LayerOverlapMap.cpp: (WebCore::operator<<): (WebCore::OverlapMapContainer::OverlapMapContainer): (WebCore::OverlapMapContainer::ClippingScope::ClippingScope): (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const): (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds): (WebCore::OverlapMapContainer::ClippingScope::addChild): (WebCore::OverlapMapContainer::ClippingScope::appendRect): (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive): (WebCore::OverlapMapContainer::scopeContainingLayer const): (WebCore::OverlapMapContainer::rootScope const): (WebCore::OverlapMapContainer::rootScope): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::mergeClippingScopesRecursive): (WebCore::OverlapMapContainer::append): (WebCore::OverlapMapContainer::ensureClippingScopeForLayers): (WebCore::OverlapMapContainer::findClippingScopeForLayers const): (WebCore::OverlapMapContainer::recursiveOutputToStream const): (WebCore::OverlapMapContainer::dump const): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::OverlapMapContainer::rectList const): Deleted. * rendering/LayerOverlapMap.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::createsClippingScope): (WebCore::enclosingClippingScopes): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::layerOverlaps const): * rendering/RenderLayerCompositor.h: Source/WebCore/../../LayoutTests: * TestExpectations: * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added. * platform/ios-wk2/TestExpectations: * platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/212178@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245602 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 00:12:49 +00:00
m_overlapStack[m_overlapStack.size() - 2]->add(layer, bounds, enclosingClippingLayers);
Move RenderLayerCompositor's OverlapMap to its own file https://bugs.webkit.org/show_bug.cgi?id=197915 Reviewed by Alex Christensen. Move OverlapMap to its own file. Make use of RectList, which was in the file but unused! Allocate OverlapMapContainer on the heap both to avoid header pollution of internals, and because they will get bigger in future. No behavior change. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * rendering/LayerOverlapMap.cpp: Added. (WebCore::RectList::append): (WebCore::RectList::intersects const): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::unite): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): * rendering/LayerOverlapMap.h: Added. (WebCore::LayerOverlapMap::isEmpty const): (WebCore::LayerOverlapMap::geometryMap const): (WebCore::LayerOverlapMap::geometryMap): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::RenderLayerCompositor::addToOverlapMap): (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): (WebCore::OverlapMapContainer::add): Deleted. (WebCore::OverlapMapContainer::overlapsLayers const): Deleted. (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::OverlapMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::add): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::isEmpty const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::pushCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::append): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects const): Deleted. * rendering/RenderLayerCompositor.h: Canonical link: https://commits.webkit.org/212039@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245326 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-15 15:59:21 +00:00
m_isEmpty = false;
}
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes https://bugs.webkit.org/show_bug.cgi?id=198091 <rdar://problem/49403082> Reviewed by Antti Koivisto. Source/WebCore: When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller. All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure of the z-order and compositing trees). Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test against container N-1. To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds are computed unclipped. Between them, bounds are tested clipped. Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside composited overflow scroll (just like the old code). When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous container. Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html * rendering/LayerOverlapMap.cpp: (WebCore::operator<<): (WebCore::OverlapMapContainer::OverlapMapContainer): (WebCore::OverlapMapContainer::ClippingScope::ClippingScope): (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const): (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds): (WebCore::OverlapMapContainer::ClippingScope::addChild): (WebCore::OverlapMapContainer::ClippingScope::appendRect): (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive): (WebCore::OverlapMapContainer::scopeContainingLayer const): (WebCore::OverlapMapContainer::rootScope const): (WebCore::OverlapMapContainer::rootScope): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::mergeClippingScopesRecursive): (WebCore::OverlapMapContainer::append): (WebCore::OverlapMapContainer::ensureClippingScopeForLayers): (WebCore::OverlapMapContainer::findClippingScopeForLayers const): (WebCore::OverlapMapContainer::recursiveOutputToStream const): (WebCore::OverlapMapContainer::dump const): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::OverlapMapContainer::rectList const): Deleted. * rendering/LayerOverlapMap.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::createsClippingScope): (WebCore::enclosingClippingScopes): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::layerOverlaps const): * rendering/RenderLayerCompositor.h: Source/WebCore/../../LayoutTests: * TestExpectations: * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added. * platform/ios-wk2/TestExpectations: * platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/212178@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245602 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 00:12:49 +00:00
bool LayerOverlapMap::overlapsLayers(const RenderLayer& layer, const LayoutRect& bounds, const Vector<LayerAndBounds>& enclosingClippingLayers) const
Move RenderLayerCompositor's OverlapMap to its own file https://bugs.webkit.org/show_bug.cgi?id=197915 Reviewed by Alex Christensen. Move OverlapMap to its own file. Make use of RectList, which was in the file but unused! Allocate OverlapMapContainer on the heap both to avoid header pollution of internals, and because they will get bigger in future. No behavior change. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * rendering/LayerOverlapMap.cpp: Added. (WebCore::RectList::append): (WebCore::RectList::intersects const): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::unite): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): * rendering/LayerOverlapMap.h: Added. (WebCore::LayerOverlapMap::isEmpty const): (WebCore::LayerOverlapMap::geometryMap const): (WebCore::LayerOverlapMap::geometryMap): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::RenderLayerCompositor::addToOverlapMap): (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): (WebCore::OverlapMapContainer::add): Deleted. (WebCore::OverlapMapContainer::overlapsLayers const): Deleted. (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::OverlapMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::add): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::isEmpty const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::pushCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::append): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects const): Deleted. * rendering/RenderLayerCompositor.h: Canonical link: https://commits.webkit.org/212039@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245326 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-15 15:59:21 +00:00
{
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes https://bugs.webkit.org/show_bug.cgi?id=198091 <rdar://problem/49403082> Reviewed by Antti Koivisto. Source/WebCore: When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller. All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure of the z-order and compositing trees). Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test against container N-1. To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds are computed unclipped. Between them, bounds are tested clipped. Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside composited overflow scroll (just like the old code). When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous container. Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html * rendering/LayerOverlapMap.cpp: (WebCore::operator<<): (WebCore::OverlapMapContainer::OverlapMapContainer): (WebCore::OverlapMapContainer::ClippingScope::ClippingScope): (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const): (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds): (WebCore::OverlapMapContainer::ClippingScope::addChild): (WebCore::OverlapMapContainer::ClippingScope::appendRect): (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive): (WebCore::OverlapMapContainer::scopeContainingLayer const): (WebCore::OverlapMapContainer::rootScope const): (WebCore::OverlapMapContainer::rootScope): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::mergeClippingScopesRecursive): (WebCore::OverlapMapContainer::append): (WebCore::OverlapMapContainer::ensureClippingScopeForLayers): (WebCore::OverlapMapContainer::findClippingScopeForLayers const): (WebCore::OverlapMapContainer::recursiveOutputToStream const): (WebCore::OverlapMapContainer::dump const): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::OverlapMapContainer::rectList const): Deleted. * rendering/LayerOverlapMap.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::createsClippingScope): (WebCore::enclosingClippingScopes): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::layerOverlaps const): * rendering/RenderLayerCompositor.h: Source/WebCore/../../LayoutTests: * TestExpectations: * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added. * platform/ios-wk2/TestExpectations: * platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/212178@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245602 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 00:12:49 +00:00
return m_overlapStack.last()->overlapsLayers(layer, bounds, enclosingClippingLayers);
Move RenderLayerCompositor's OverlapMap to its own file https://bugs.webkit.org/show_bug.cgi?id=197915 Reviewed by Alex Christensen. Move OverlapMap to its own file. Make use of RectList, which was in the file but unused! Allocate OverlapMapContainer on the heap both to avoid header pollution of internals, and because they will get bigger in future. No behavior change. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * rendering/LayerOverlapMap.cpp: Added. (WebCore::RectList::append): (WebCore::RectList::intersects const): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::unite): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): * rendering/LayerOverlapMap.h: Added. (WebCore::LayerOverlapMap::isEmpty const): (WebCore::LayerOverlapMap::geometryMap const): (WebCore::LayerOverlapMap::geometryMap): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::RenderLayerCompositor::addToOverlapMap): (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): (WebCore::OverlapMapContainer::add): Deleted. (WebCore::OverlapMapContainer::overlapsLayers const): Deleted. (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::OverlapMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::add): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::isEmpty const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::pushCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::append): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects const): Deleted. * rendering/RenderLayerCompositor.h: Canonical link: https://commits.webkit.org/212039@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245326 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-15 15:59:21 +00:00
}
void LayerOverlapMap::pushCompositingContainer()
{
[WTF] Add makeUnique<T>, which ensures T is fast-allocated, makeUnique / makeUniqueWithoutFastMallocCheck part https://bugs.webkit.org/show_bug.cgi?id=200620 Source/JavaScriptCore: Reviewed by Geoff Garen. * API/JSCallbackObject.h: (JSC::JSCallbackObjectData::setPrivateProperty): * API/JSCallbackObjectFunctions.h: (JSC::JSCallbackObject<Parent>::JSCallbackObject): * API/JSClassRef.cpp: (OpaqueJSClassContextData::OpaqueJSClassContextData): (OpaqueJSClass::contextData): * API/JSMarkingConstraintPrivate.cpp: (JSContextGroupAddMarkingConstraint): * API/JSWrapperMap.mm: (-[JSWrapperMap initWithGlobalContextRef:]): * API/ObjCCallbackFunction.mm: (ArgumentTypeDelegate::typeInteger): (ArgumentTypeDelegate::typeDouble): (ArgumentTypeDelegate::typeBool): (ArgumentTypeDelegate::typeId): (ArgumentTypeDelegate::typeOfClass): (ArgumentTypeDelegate::typeStruct): (ResultTypeDelegate::typeInteger): (ResultTypeDelegate::typeDouble): (ResultTypeDelegate::typeBool): (ResultTypeDelegate::typeVoid): (ResultTypeDelegate::typeId): (ResultTypeDelegate::typeOfClass): (ResultTypeDelegate::typeBlock): (ResultTypeDelegate::typeStruct): (objCCallbackFunctionForInvocation): * API/glib/JSCContext.cpp: (jscContextSetVirtualMachine): * API/glib/JSCWrapperMap.cpp: (JSC::WrapperMap::WrapperMap): * assembler/ProbeStack.cpp: (JSC::Probe::Stack::ensurePageFor): * b3/B3LowerToAir.cpp: * b3/B3Procedure.cpp: (JSC::B3::Procedure::Procedure): (JSC::B3::Procedure::dominators): (JSC::B3::Procedure::naturalLoops): (JSC::B3::Procedure::backwardsCFG): (JSC::B3::Procedure::backwardsDominators): (JSC::B3::Procedure::addDataSection): * b3/air/AirCode.cpp: (JSC::B3::Air::Code::cCallSpecial): * b3/air/AirGenerate.cpp: (JSC::B3::Air::prepareForGeneration): * b3/air/testair.cpp: * b3/testb3.h: (compileProc): * bytecode/AccessCase.cpp: (JSC::AccessCase::generateImpl): * bytecode/AccessCaseSnippetParams.cpp: * bytecode/BytecodeBasicBlock.cpp: (JSC::BytecodeBasicBlock::computeImpl): * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::setFrameShuffleData): * bytecode/CodeBlock.cpp: (JSC::CodeBlock::ensureJITDataSlow): (JSC::CodeBlock::setCalleeSaveRegisters): (JSC::CodeBlock::ensureCatchLivenessIsComputedForBytecodeOffsetSlow): * bytecode/CodeBlock.h: (JSC::CodeBlock::createRareDataIfNecessary): * bytecode/DFGExitProfile.cpp: (JSC::DFG::ExitProfile::add): * bytecode/DeferredCompilationCallback.cpp: (JSC::DeferredCompilationCallback::ensureDeferredSourceDump): * bytecode/GetByIdStatus.cpp: (JSC::GetByIdStatus::computeForStubInfoWithoutExitSiteFeedback): * bytecode/GetByIdVariant.cpp: (JSC::GetByIdVariant::operator=): * bytecode/LazyOperandValueProfile.cpp: (JSC::CompressedLazyOperandValueProfileHolder::add): * bytecode/PolyProtoAccessChain.h: (JSC::PolyProtoAccessChain::clone): * bytecode/PolymorphicAccess.cpp: (JSC::PolymorphicAccess::regenerate): * bytecode/PutByIdStatus.cpp: (JSC::PutByIdStatus::computeForStubInfo): * bytecode/PutByIdVariant.cpp: (JSC::PutByIdVariant::operator=): * bytecode/RecordedStatuses.cpp: (JSC::RecordedStatuses::addCallLinkStatus): (JSC::RecordedStatuses::addGetByIdStatus): (JSC::RecordedStatuses::addPutByIdStatus): (JSC::RecordedStatuses::addInByIdStatus): * bytecode/StructureStubClearingWatchpoint.cpp: (JSC::WatchpointsOnStructureStubInfo::ensureReferenceAndAddWatchpoint): * bytecode/StructureStubInfo.cpp: (JSC::StructureStubInfo::addAccessCase): * bytecode/UnlinkedCodeBlock.cpp: (JSC::UnlinkedCodeBlock::livenessAnalysisSlow): * bytecode/UnlinkedCodeBlock.h: (JSC::UnlinkedCodeBlock::createRareDataIfNecessary): * bytecode/UnlinkedFunctionExecutable.cpp: (JSC::UnlinkedFunctionExecutable::ensureRareDataSlow): * bytecompiler/BytecodeGenerator.h: (JSC::BytecodeGenerator::generate): * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::AbstractInterpreter): * dfg/DFGGraph.cpp: (JSC::DFG::Graph::Graph): (JSC::DFG::Graph::livenessFor): (JSC::DFG::Graph::killsFor): (JSC::DFG::Graph::ensureCPSCFG): (JSC::DFG::Graph::ensureCPSDominators): (JSC::DFG::Graph::ensureSSADominators): (JSC::DFG::Graph::ensureCPSNaturalLoops): (JSC::DFG::Graph::ensureSSANaturalLoops): (JSC::DFG::Graph::ensureBackwardsCFG): (JSC::DFG::Graph::ensureBackwardsDominators): (JSC::DFG::Graph::ensureControlEquivalenceAnalysis): * dfg/DFGJITCompiler.cpp: (JSC::DFG::JITCompiler::JITCompiler): (JSC::DFG::JITCompiler::link): (JSC::DFG::JITCompiler::compile): (JSC::DFG::JITCompiler::compileFunction): (JSC::DFG::JITCompiler::addressOfDoubleConstant): * dfg/DFGLivenessAnalysisPhase.cpp: * dfg/DFGPlan.cpp: (JSC::DFG::Plan::compileInThreadImpl): * dfg/DFGSSAConversionPhase.cpp: (JSC::DFG::SSAConversionPhase::run): * dfg/DFGSlowPathGenerator.h: (JSC::DFG::slowPathCall): (JSC::DFG::slowPathMove): * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::emitAllocateRawObject): (JSC::DFG::SpeculativeJIT::arrayify): (JSC::DFG::SpeculativeJIT::compileGetByValOnString): (JSC::DFG::SpeculativeJIT::compileCreateDirectArguments): (JSC::DFG::SpeculativeJIT::compileArraySlice): (JSC::DFG::SpeculativeJIT::emitStructureCheck): (JSC::DFG::SpeculativeJIT::compileAllocateNewArrayWithSize): * dfg/DFGStoreBarrierInsertionPhase.cpp: * dfg/DFGWorklist.cpp: (JSC::DFG::Worklist::createNewThread): * disassembler/Disassembler.cpp: (JSC::disassembleAsynchronously): * ftl/FTLAbstractHeap.cpp: (JSC::FTL::IndexedAbstractHeap::atSlow): * ftl/FTLCompile.cpp: (JSC::FTL::compile): * ftl/FTLFail.cpp: (JSC::FTL::fail): * ftl/FTLLink.cpp: (JSC::FTL::link): * ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::lazySlowPath): * ftl/FTLState.cpp: (JSC::FTL::State::State): * heap/CompleteSubspace.cpp: (JSC::CompleteSubspace::allocatorForSlow): * heap/Heap.cpp: (JSC::Heap::Heap): (JSC::Heap::protectedObjectTypeCounts): (JSC::Heap::objectTypeCounts): (JSC::Heap::addCoreConstraints): * heap/HeapInlines.h: * heap/HeapSnapshotBuilder.cpp: (JSC::HeapSnapshotBuilder::buildSnapshot): * heap/IsoCellSet.cpp: (JSC::IsoCellSet::addSlow): * heap/IsoSubspace.cpp: (JSC::IsoSubspace::IsoSubspace): * heap/MarkingConstraintSet.cpp: (JSC::MarkingConstraintSet::add): * inspector/JSGlobalObjectConsoleClient.cpp: (Inspector::JSGlobalObjectConsoleClient::messageWithTypeAndLevel): (Inspector::JSGlobalObjectConsoleClient::profile): (Inspector::JSGlobalObjectConsoleClient::profileEnd): (Inspector::JSGlobalObjectConsoleClient::warnUnimplemented): * inspector/JSGlobalObjectInspectorController.cpp: (Inspector::JSGlobalObjectInspectorController::JSGlobalObjectInspectorController): (Inspector::JSGlobalObjectInspectorController::reportAPIException): (Inspector::JSGlobalObjectInspectorController::ensureInspectorAgent): (Inspector::JSGlobalObjectInspectorController::ensureDebuggerAgent): (Inspector::JSGlobalObjectInspectorController::createLazyAgents): * inspector/agents/InspectorAgent.cpp: (Inspector::InspectorAgent::InspectorAgent): * inspector/agents/InspectorConsoleAgent.cpp: (Inspector::InspectorConsoleAgent::InspectorConsoleAgent): (Inspector::InspectorConsoleAgent::startTiming): (Inspector::InspectorConsoleAgent::logTiming): (Inspector::InspectorConsoleAgent::stopTiming): (Inspector::InspectorConsoleAgent::count): (Inspector::InspectorConsoleAgent::countReset): * inspector/agents/InspectorDebuggerAgent.cpp: (Inspector::InspectorDebuggerAgent::InspectorDebuggerAgent): * inspector/agents/InspectorHeapAgent.cpp: (Inspector::InspectorHeapAgent::InspectorHeapAgent): * inspector/agents/InspectorScriptProfilerAgent.cpp: (Inspector::InspectorScriptProfilerAgent::InspectorScriptProfilerAgent): * inspector/agents/InspectorTargetAgent.cpp: (Inspector::InspectorTargetAgent::InspectorTargetAgent): * inspector/agents/JSGlobalObjectDebuggerAgent.cpp: (Inspector::JSGlobalObjectDebuggerAgent::breakpointActionLog): * inspector/agents/JSGlobalObjectRuntimeAgent.cpp: (Inspector::JSGlobalObjectRuntimeAgent::JSGlobalObjectRuntimeAgent): * inspector/remote/socket/RemoteInspectorSocketEndpoint.cpp: (Inspector::RemoteInspectorSocketEndpoint::createClient): * inspector/remote/socket/RemoteInspectorSocketEndpoint.h: * inspector/scripts/codegen/objc_generator_templates.py: * inspector/scripts/tests/all/expected/definitions-with-mac-platform.json-result: * inspector/scripts/tests/generic/expected/commands-with-async-attribute.json-result: * inspector/scripts/tests/generic/expected/commands-with-optional-call-return-parameters.json-result: * inspector/scripts/tests/generic/expected/domain-availability.json-result: * inspector/scripts/tests/generic/expected/domains-with-varying-command-sizes.json-result: * inspector/scripts/tests/generic/expected/enum-values.json-result: * inspector/scripts/tests/generic/expected/generate-domains-with-feature-guards.json-result: * inspector/scripts/tests/mac/expected/definitions-with-mac-platform.json-result: * jit/JIT.cpp: (JSC::JIT::compileWithoutLinking): (JSC::JIT::link): * jit/JITThunks.cpp: (JSC::JITThunks::JITThunks): * jit/Repatch.cpp: (JSC::linkPolymorphicCall): * jsc.cpp: (runJSC): * parser/Parser.cpp: (JSC::Parser<LexerType>::Parser): * parser/Parser.h: (JSC::Scope::pushLabel): (JSC::Parser<LexerType>::parse): * parser/ParserArena.h: (JSC::ParserArena::identifierArena): * profiler/ProfilerCompilation.cpp: (JSC::Profiler::Compilation::executionCounterFor): * runtime/Error.cpp: (JSC::getStackTrace): * runtime/FunctionExecutable.cpp: (JSC::FunctionExecutable::ensureRareDataSlow): * runtime/FunctionRareData.h: (JSC::FunctionRareData::createAllocationProfileClearingWatchpoint): * runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::init): (JSC::JSGlobalObject::tryInstallArraySpeciesWatchpoint): * runtime/JSGlobalObject.h: (JSC::JSGlobalObject::createRareDataIfNeeded): * runtime/JSRunLoopTimer.cpp: (JSC::JSRunLoopTimer::Manager::PerVMData::PerVMData): (JSC::JSRunLoopTimer::Manager::registerVM): * runtime/PropertyMapHashTable.h: (JSC::PropertyTable::addDeletedOffset): * runtime/PropertyTable.cpp: (JSC::PropertyTable::PropertyTable): * runtime/RegExp.cpp: (JSC::RegExp::finishCreation): * runtime/RegExp.h: * runtime/ScriptExecutable.cpp: (JSC::ScriptExecutable::ensureTemplateObjectMapImpl): * runtime/Structure.cpp: (JSC::Structure::ensurePropertyReplacementWatchpointSet): * runtime/StructureRareData.cpp: (JSC::StructureRareData::setObjectToStringValue): * runtime/SymbolTable.cpp: (JSC::SymbolTable::localToEntry): (JSC::SymbolTable::cloneScopePart): (JSC::SymbolTable::prepareForTypeProfiling): (JSC::SymbolTable::setRareDataCodeBlock): * runtime/TypeSet.cpp: (JSC::StructureShape::propertyHash): * runtime/VM.cpp: (JSC::VM::VM): (JSC::VM::ensureHeapProfiler): (JSC::VM::enableTypeProfiler): (JSC::VM::enableControlFlowProfiler): (JSC::VM::queueMicrotask): (JSC::VM::ensureShadowChicken): * wasm/WasmAirIRGenerator.cpp: (JSC::Wasm::AirIRGenerator::emitPatchpoint): (JSC::Wasm::AirIRGenerator::emitCheck): (JSC::Wasm::parseAndCompileAir): * wasm/WasmB3IRGenerator.cpp: (JSC::Wasm::parseAndCompile): * wasm/WasmBBQPlan.cpp: (JSC::Wasm::BBQPlan::complete): * wasm/WasmOMGPlan.cpp: (JSC::Wasm::OMGPlan::work): * wasm/WasmWorklist.cpp: (JSC::Wasm::Worklist::Worklist): * wasm/js/JSToWasm.cpp: (JSC::Wasm::createJSToWasmWrapper): * yarr/YarrInterpreter.cpp: (JSC::Yarr::ByteCompiler::compile): (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd): (JSC::Yarr::ByteCompiler::regexBegin): * yarr/YarrJIT.cpp: (JSC::Yarr::YarrGenerator::compile): * yarr/YarrPattern.cpp: (JSC::Yarr::CharacterClassConstructor::charClass): (JSC::Yarr::YarrPatternConstructor::YarrPatternConstructor): (JSC::Yarr::YarrPatternConstructor::resetForReparsing): (JSC::Yarr::YarrPatternConstructor::atomParenthesesSubpatternBegin): (JSC::Yarr::YarrPatternConstructor::atomParentheticalAssertionBegin): (JSC::Yarr::YarrPatternConstructor::copyDisjunction): (JSC::Yarr::anycharCreate): * yarr/YarrPattern.h: (JSC::Yarr::PatternDisjunction::addNewAlternative): * yarr/create_regex_tables: * yarr/generateYarrUnicodePropertyTables.py: Source/WebCore: Reviewed by Geoff Garen. * Modules/applicationmanifest/ApplicationManifestParser.cpp: (WebCore::ApplicationManifestParser::logDeveloperWarning): * Modules/beacon/NavigatorBeacon.cpp: (WebCore::NavigatorBeacon::from): * Modules/cache/DOMWindowCaches.cpp: (WebCore::DOMWindowCaches::from): * Modules/cache/WorkerGlobalScopeCaches.cpp: (WebCore::WorkerGlobalScopeCaches::from): * Modules/credentialmanagement/NavigatorCredentials.cpp: (WebCore::NavigatorCredentials::from): * Modules/encryptedmedia/InitDataRegistry.cpp: (WebCore::InitDataRegistry::extractPsshBoxesFromCenc): * Modules/encryptedmedia/legacy/LegacyCDM.cpp: (WebCore::LegacyCDM::create): * Modules/encryptedmedia/legacy/LegacyCDMPrivateClearKey.cpp: (WebCore::LegacyCDMPrivateClearKey::createSession): * Modules/fetch/FetchBodyOwner.cpp: (WebCore::FetchBodyOwner::loadBlob): * Modules/fetch/FetchResponse.cpp: (WebCore::FetchResponse::fetch): (WebCore::FetchResponse::BodyLoader::start): * Modules/gamepad/NavigatorGamepad.cpp: (WebCore::NavigatorGamepad::from): * Modules/geolocation/GeolocationController.cpp: (WebCore::provideGeolocationTo): * Modules/geolocation/NavigatorGeolocation.cpp: (WebCore::NavigatorGeolocation::from): * Modules/indexeddb/DOMWindowIndexedDatabase.cpp: (WebCore::DOMWindowIndexedDatabase::from): * Modules/indexeddb/IDBObjectStore.cpp: (WebCore::IDBObjectStore::index): * Modules/indexeddb/IDBTransaction.cpp: (WebCore::IDBTransaction::objectStore): (WebCore::IDBTransaction::createObjectStore): (WebCore::IDBTransaction::createIndex): * Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.cpp: (WebCore::WorkerGlobalScopeIndexedDatabase::from): * Modules/indexeddb/client/IDBConnectionToServer.cpp: (WebCore::IDBClient::IDBConnectionToServer::IDBConnectionToServer): * Modules/indexeddb/client/TransactionOperation.cpp: (WebCore::IDBClient::TransactionOperation::TransactionOperation): * Modules/indexeddb/server/IDBServer.cpp: (WebCore::IDBServer::IDBServer::getOrCreateUniqueIDBDatabase): (WebCore::IDBServer::IDBServer::createBackingStore): (WebCore::IDBServer::IDBServer::ensureQuotaUser): * Modules/indexeddb/server/IndexValueStore.cpp: (WebCore::IDBServer::IndexValueStore::addRecord): * Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp: (WebCore::IDBServer::MemoryBackingStoreTransaction::create): (WebCore::IDBServer::MemoryBackingStoreTransaction::MemoryBackingStoreTransaction): (WebCore::IDBServer::MemoryBackingStoreTransaction::recordValueChanged): * Modules/indexeddb/server/MemoryIDBBackingStore.cpp: (WebCore::IDBServer::MemoryIDBBackingStore::create): (WebCore::IDBServer::MemoryIDBBackingStore::getOrEstablishDatabaseInfo): (WebCore::IDBServer::MemoryIDBBackingStore::setDatabaseInfo): * Modules/indexeddb/server/MemoryIndex.cpp: (WebCore::IDBServer::MemoryIndex::putIndexKey): (WebCore::IDBServer::MemoryIndex::maybeOpenCursor): * Modules/indexeddb/server/MemoryObjectStore.cpp: (WebCore::IDBServer::MemoryObjectStore::addRecord): (WebCore::IDBServer::MemoryObjectStore::maybeOpenCursor): * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp: (WebCore::IDBServer::SQLiteIDBBackingStore::createAndPopulateInitialDatabaseInfo): (WebCore::IDBServer::SQLiteIDBBackingStore::extractExistingDatabaseInfo): (WebCore::IDBServer::SQLiteIDBBackingStore::getOrEstablishDatabaseInfo): (WebCore::IDBServer::SQLiteIDBBackingStore::beginTransaction): (WebCore::IDBServer::SQLiteIDBBackingStore::cachedStatement): * Modules/indexeddb/server/SQLiteIDBCursor.cpp: (WebCore::IDBServer::SQLiteIDBCursor::maybeCreate): (WebCore::IDBServer::SQLiteIDBCursor::maybeCreateBackingStoreCursor): (WebCore::IDBServer::SQLiteIDBCursor::createSQLiteStatement): (WebCore::IDBServer::SQLiteIDBCursor::internalFetchNextRecord): * Modules/indexeddb/server/SQLiteIDBTransaction.cpp: (WebCore::IDBServer::SQLiteIDBTransaction::begin): * Modules/indexeddb/server/UniqueIDBDatabase.cpp: (WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore): (WebCore::IDBServer::UniqueIDBDatabase::didOpenBackingStore): (WebCore::IDBServer::UniqueIDBDatabase::didPerformAbortTransaction): * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp: (WebCore::IDBServer::UniqueIDBDatabaseTransaction::UniqueIDBDatabaseTransaction): * Modules/indexeddb/shared/IDBRequestData.cpp: (WebCore::IDBRequestData::IDBRequestData): (WebCore::IDBRequestData::isolatedCopy): * Modules/indexeddb/shared/IDBRequestData.h: (WebCore::IDBRequestData::decode): * Modules/indexeddb/shared/IDBResultData.cpp: (WebCore::IDBResultData::IDBResultData): (WebCore::IDBResultData::isolatedCopy): (WebCore::IDBResultData::openDatabaseSuccess): (WebCore::IDBResultData::openDatabaseUpgradeNeeded): (WebCore::IDBResultData::deleteDatabaseSuccess): (WebCore::IDBResultData::putOrAddSuccess): (WebCore::IDBResultData::getRecordSuccess): (WebCore::IDBResultData::getAllRecordsSuccess): (WebCore::IDBResultData::openCursorSuccess): (WebCore::IDBResultData::iterateCursorSuccess): * Modules/indexeddb/shared/IDBResultData.h: (WebCore::IDBResultData::decode): * Modules/indexeddb/shared/IDBTransactionInfo.cpp: (WebCore::IDBTransactionInfo::versionChange): (WebCore::IDBTransactionInfo::IDBTransactionInfo): (WebCore::IDBTransactionInfo::isolatedCopy): * Modules/indexeddb/shared/IDBTransactionInfo.h: (WebCore::IDBTransactionInfo::decode): * Modules/indexeddb/shared/InProcessIDBServer.cpp: (WebCore::InProcessIDBServer::quotaManager): * Modules/mediacapabilities/NavigatorMediaCapabilities.cpp: (WebCore::NavigatorMediaCapabilities::from): * Modules/mediasession/WebMediaSessionManager.cpp: (WebCore::WebMediaSessionManager::mockPicker): (WebCore::WebMediaSessionManager::addPlaybackTargetPickerClient): * Modules/mediasource/MediaSource.cpp: (WebCore::MediaSource::buffered const): (WebCore::MediaSource::setLiveSeekableRange): * Modules/mediastream/NavigatorMediaDevices.cpp: (WebCore::NavigatorMediaDevices::from): * Modules/mediastream/UserMediaController.cpp: (WebCore::provideUserMediaTo): * Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp: (WebCore::LibWebRTCDataChannelHandler::channelEvent): * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: (WebCore::LibWebRTCMediaEndpoint::addRemoteTrack): (WebCore::LibWebRTCMediaEndpoint::collectTransceivers): (WebCore::LibWebRTCMediaEndpoint::newTransceiver): (WebCore::LibWebRTCMediaEndpoint::createTransceiverBackends): (WebCore::LibWebRTCMediaEndpoint::transceiverBackendFromSender): (WebCore::LibWebRTCMediaEndpoint::createDataChannel): * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp: (WebCore::createLibWebRTCPeerConnectionBackend): (WebCore::LibWebRTCPeerConnectionBackend::videoReceiver): (WebCore::LibWebRTCPeerConnectionBackend::audioReceiver): (WebCore::LibWebRTCPeerConnectionBackend::addTrack): (WebCore::LibWebRTCPeerConnectionBackend::addTransceiver): * Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp: (WebCore::LibWebRTCRtpSenderBackend::createDTMFBackend): * Modules/mediastream/libwebrtc/LibWebRTCRtpTransceiverBackend.cpp: (WebCore::LibWebRTCRtpTransceiverBackend::createReceiverBackend): (WebCore::LibWebRTCRtpTransceiverBackend::createSenderBackend): * Modules/notifications/Notification.cpp: (WebCore::Notification::Notification): * Modules/notifications/NotificationController.cpp: (WebCore::provideNotification): * Modules/quota/DOMWindowQuota.cpp: (WebCore::DOMWindowQuota::from): * Modules/quota/NavigatorStorageQuota.cpp: (WebCore::NavigatorStorageQuota::from): * Modules/quota/WorkerNavigatorStorageQuota.cpp: (WebCore::WorkerNavigatorStorageQuota::from): * Modules/speech/DOMWindowSpeechSynthesis.cpp: (WebCore::DOMWindowSpeechSynthesis::from): * Modules/speech/SpeechSynthesis.cpp: (WebCore::SpeechSynthesis::ensurePlatformSpeechSynthesizer): * Modules/webaudio/AsyncAudioDecoder.cpp: (WebCore::AsyncAudioDecoder::decodeAsync): * Modules/webaudio/AudioBasicInspectorNode.cpp: (WebCore::AudioBasicInspectorNode::AudioBasicInspectorNode): * Modules/webaudio/AudioBasicProcessorNode.cpp: (WebCore::AudioBasicProcessorNode::AudioBasicProcessorNode): * Modules/webaudio/AudioBufferSourceNode.cpp: (WebCore::AudioBufferSourceNode::AudioBufferSourceNode): * Modules/webaudio/AudioContext.cpp: (WebCore::AudioContext::AudioContext): (WebCore::AudioContext::decodeAudioData): * Modules/webaudio/AudioDestinationNode.cpp: (WebCore::AudioDestinationNode::AudioDestinationNode): * Modules/webaudio/BiquadFilterNode.cpp: (WebCore::BiquadFilterNode::BiquadFilterNode): * Modules/webaudio/BiquadProcessor.cpp: (WebCore::BiquadProcessor::createKernel): (WebCore::BiquadProcessor::getFrequencyResponse): * Modules/webaudio/ChannelMergerNode.cpp: (WebCore::ChannelMergerNode::ChannelMergerNode): * Modules/webaudio/ChannelSplitterNode.cpp: (WebCore::ChannelSplitterNode::ChannelSplitterNode): * Modules/webaudio/ConvolverNode.cpp: (WebCore::ConvolverNode::ConvolverNode): (WebCore::ConvolverNode::setBuffer): * Modules/webaudio/DelayNode.cpp: (WebCore::DelayNode::DelayNode): * Modules/webaudio/DelayProcessor.cpp: (WebCore::DelayProcessor::createKernel): * Modules/webaudio/DynamicsCompressorNode.cpp: (WebCore::DynamicsCompressorNode::DynamicsCompressorNode): (WebCore::DynamicsCompressorNode::initialize): * Modules/webaudio/GainNode.cpp: (WebCore::GainNode::GainNode): * Modules/webaudio/MediaElementAudioSourceNode.cpp: (WebCore::MediaElementAudioSourceNode::MediaElementAudioSourceNode): (WebCore::MediaElementAudioSourceNode::setFormat): * Modules/webaudio/MediaStreamAudioSourceNode.cpp: (WebCore::MediaStreamAudioSourceNode::MediaStreamAudioSourceNode): (WebCore::MediaStreamAudioSourceNode::setFormat): * Modules/webaudio/OscillatorNode.cpp: (WebCore::OscillatorNode::OscillatorNode): * Modules/webaudio/PannerNode.cpp: (WebCore::PannerNode::PannerNode): * Modules/webaudio/PeriodicWave.cpp: (WebCore::PeriodicWave::createBandLimitedTables): * Modules/webaudio/RealtimeAnalyser.cpp: (WebCore::RealtimeAnalyser::RealtimeAnalyser): (WebCore::RealtimeAnalyser::setFftSize): * Modules/webaudio/ScriptProcessorNode.cpp: (WebCore::ScriptProcessorNode::ScriptProcessorNode): * Modules/webaudio/WaveShaperDSPKernel.cpp: (WebCore::WaveShaperDSPKernel::lazyInitializeOversampling): * Modules/webaudio/WaveShaperNode.cpp: (WebCore::WaveShaperNode::WaveShaperNode): * Modules/webaudio/WaveShaperProcessor.cpp: (WebCore::WaveShaperProcessor::createKernel): * Modules/webauthn/fido/FidoHidMessage.cpp: (fido::FidoHidMessage::FidoHidMessage): * Modules/webauthn/fido/FidoHidPacket.cpp: (fido::FidoHidInitPacket::createFromSerializedData): (fido::FidoHidContinuationPacket::createFromSerializedData): * Modules/webdatabase/Database.cpp: (WebCore::Database::openAndVerifyVersion): (WebCore::Database::close): (WebCore::Database::scheduleTransaction): (WebCore::Database::scheduleTransactionStep): (WebCore::Database::tableNames): * Modules/webdatabase/DatabaseThread.cpp: (WebCore::DatabaseThread::DatabaseThread): * Modules/webdatabase/DatabaseTracker.cpp: (WebCore::DatabaseTracker::addOpenDatabase): (WebCore::DatabaseTracker::recordCreatingDatabase): (WebCore::DatabaseTracker::recordDeletingDatabase): * Modules/webdatabase/SQLTransaction.cpp: (WebCore::SQLTransaction::executeSql): (WebCore::SQLTransaction::openTransactionAndPreflight): * Modules/webdriver/NavigatorWebDriver.cpp: (WebCore::NavigatorWebDriver::from): * Modules/webgpu/NavigatorGPU.cpp: (WebCore::NavigatorGPU::from): * Modules/webgpu/WHLSL/AST/WHLSLEnumerationDefinition.h: * Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h: * Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp: (WebCore::WHLSL::Metal::RenderFunctionDefinitionWriter::createEntryPointScaffolding): (WebCore::WHLSL::Metal::ComputeFunctionDefinitionWriter::createEntryPointScaffolding): * Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp: (WebCore::WHLSL::Metal::TypeNamer::createNameNode): * Modules/webgpu/WHLSL/WHLSLChecker.cpp: (WebCore::WHLSL::Checker::assignConcreteType): (WebCore::WHLSL::Checker::assignType): (WebCore::WHLSL::Checker::forwardType): * Modules/webgpu/WHLSL/WHLSLParser.cpp: (WebCore::WHLSL::Parser::parseSemantic): * Modules/webgpu/WorkerNavigatorGPU.cpp: (WebCore::WorkerNavigatorGPU::from): * Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp: (WebCore::ThreadableWebSocketChannelClientWrapper::didConnect): (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveMessage): (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveBinaryData): (WebCore::ThreadableWebSocketChannelClientWrapper::didUpdateBufferedAmount): (WebCore::ThreadableWebSocketChannelClientWrapper::didStartClosingHandshake): (WebCore::ThreadableWebSocketChannelClientWrapper::didClose): (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveMessageError): (WebCore::ThreadableWebSocketChannelClientWrapper::didUpgradeURL): * Modules/websockets/WebSocketChannel.cpp: (WebCore::WebSocketChannel::connect): (WebCore::WebSocketChannel::enqueueTextFrame): (WebCore::WebSocketChannel::enqueueRawFrame): (WebCore::WebSocketChannel::enqueueBlobFrame): (WebCore::WebSocketChannel::processOutgoingFrameQueue): * Modules/websockets/WebSocketDeflateFramer.cpp: (WebCore::WebSocketDeflateFramer::createExtensionProcessor): (WebCore::WebSocketDeflateFramer::enableDeflate): (WebCore::WebSocketDeflateFramer::deflate): (WebCore::WebSocketDeflateFramer::inflate): * Modules/websockets/WebSocketDeflater.cpp: (WebCore::WebSocketDeflater::WebSocketDeflater): (WebCore::WebSocketInflater::WebSocketInflater): * Modules/websockets/WorkerThreadableWebSocketChannel.cpp: (WebCore::WorkerThreadableWebSocketChannel::Bridge::mainThreadInitialize): * Modules/webvr/NavigatorWebVR.cpp: (WebCore::NavigatorWebVR::from): * accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::startCachingComputedObjectAttributesUntilTreeMutates): * animation/WebAnimation.cpp: (WebCore::WebAnimation::updateFinishedState): * bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBase::queueTaskToEventLoop): * bindings/js/JSEventTargetCustom.cpp: (WebCore::jsEventTargetCast): * bindings/js/JSWorkerGlobalScopeBase.cpp: (WebCore::JSWorkerGlobalScopeBase::queueTaskToEventLoop): * bindings/js/SerializedScriptValue.cpp: (WebCore::transferArrayBuffers): (WebCore::SerializedScriptValue::create): * bindings/js/SerializedScriptValue.h: (WebCore::SerializedScriptValue::decode): * bindings/js/WebCoreJSClientData.cpp: (WebCore::JSVMClientData::initNormalWorld): * bindings/js/WorkerScriptController.cpp: (WebCore::WorkerScriptController::initScript): * bridge/c/c_class.cpp: (JSC::Bindings::CClass::methodNamed const): (JSC::Bindings::CClass::fieldNamed const): * bridge/objc/objc_class.mm: (JSC::Bindings::ObjcClass::methodNamed const): (JSC::Bindings::ObjcClass::fieldNamed const): * bridge/objc/objc_runtime.mm: (JSC::Bindings::callObjCFallbackObject): * contentextensions/CombinedURLFilters.cpp: (WebCore::ContentExtensions::CombinedURLFilters::CombinedURLFilters): (WebCore::ContentExtensions::CombinedURLFilters::addPattern): * crypto/SubtleCrypto.cpp: (WebCore::normalizeCryptoAlgorithmParameters): (WebCore::crossThreadCopyImportParams): * css/CSSCalculationValue.cpp: (WebCore::determineCategory): * css/CSSDefaultStyleSheets.cpp: (WebCore::CSSDefaultStyleSheets::loadFullDefaultStyle): (WebCore::CSSDefaultStyleSheets::loadSimpleDefaultStyle): * css/CSSFontFace.cpp: (WebCore::CSSFontFace::appendSources): * css/CSSFontFaceSet.cpp: (WebCore::CSSFontFaceSet::ensureLocalFontFacesForFamilyRegistered): * css/CSSGroupingRule.cpp: (WebCore::CSSGroupingRule::cssRules const): * css/CSSImageGeneratorValue.cpp: (WebCore::CSSImageGeneratorValue::saveCachedImageForSize): * css/CSSKeyframesRule.cpp: (WebCore::CSSKeyframesRule::cssRules): * css/CSSStyleSheet.cpp: (WebCore::CSSStyleSheet::cssRules): * css/DOMCSSPaintWorklet.cpp: (WebCore::DOMCSSPaintWorklet::from): * css/DOMCSSRegisterCustomProperty.cpp: (WebCore::DOMCSSRegisterCustomProperty::from): * css/DocumentRuleSets.cpp: (WebCore::DocumentRuleSets::DocumentRuleSets): (WebCore::DocumentRuleSets::updateUserAgentMediaQueryStyleIfNeeded const): (WebCore::DocumentRuleSets::initializeUserStyle): (WebCore::makeRuleSet): (WebCore::DocumentRuleSets::resetAuthorStyle): (WebCore::ensureInvalidationRuleSets): * css/ElementRuleCollector.cpp: (WebCore::ElementRuleCollector::collectSlottedPseudoElementRulesForSlot): * css/FontFace.cpp: (WebCore::populateFontFaceWithArrayBuffer): * css/PropertySetCSSStyleDeclaration.cpp: (WebCore::PropertySetCSSStyleDeclaration::wrapForDeprecatedCSSOM): * css/RuleFeature.cpp: (WebCore::RuleFeatureSet::collectFeatures): (WebCore::RuleFeatureSet::add): * css/RuleSet.cpp: (WebCore::RuleSet::addToRuleSet): * css/StyleBuilderConverter.h: (WebCore::StyleBuilderConverter::convertTo100PercentMinusLength): * css/StyleBuilderCustom.h: (WebCore::StyleBuilderCustom::applyTextOrBoxShadowValue): (WebCore::StyleBuilderCustom::applyInheritTextShadow): (WebCore::StyleBuilderCustom::applyInheritBoxShadow): (WebCore::StyleBuilderCustom::applyValueContent): * css/StyleProperties.cpp: (WebCore::MutableStyleProperties::ensureCSSStyleDeclaration): (WebCore::MutableStyleProperties::ensureInlineCSSStyleDeclaration): * css/StyleResolver.cpp: (WebCore::StyleResolver::cascadedPropertiesForRollback): * css/makeprop.pl: (generateFillLayerPropertyInheritValueSetter): (generateFillLayerPropertyValueSetter): * css/parser/CSSParserImpl.cpp: (WebCore::CSSParserImpl::CSSParserImpl): (WebCore::CSSParserImpl::parsePageSelector): (WebCore::CSSParserImpl::consumeMediaRule): (WebCore::CSSParserImpl::consumeSupportsRule): (WebCore::CSSParserImpl::consumeKeyframesRule): * css/parser/CSSParserSelector.cpp: (WebCore::CSSParserSelector::parsePagePseudoSelector): (WebCore::CSSParserSelector::parsePseudoElementSelector): (WebCore::CSSParserSelector::parsePseudoClassSelector): (WebCore::CSSParserSelector::CSSParserSelector): (WebCore::CSSParserSelector::adoptSelectorVector): (WebCore::CSSParserSelector::prependTagSelector): * css/parser/CSSPropertyParser.cpp: (WebCore::consumeBasicShapePath): * css/parser/CSSSelectorParser.cpp: (WebCore::CSSSelectorParser::consumePseudo): * dom/CustomElementReactionQueue.cpp: (WebCore::CustomElementReactionQueue::ensureBackupQueue): * dom/DataTransfer.cpp: (WebCore::DataTransfer::items): (WebCore::DataTransfer::createForInputEvent): (WebCore::DataTransfer::createForDragStartEvent): (WebCore::DataTransfer::setDragImage): * dom/DeviceOrientationController.cpp: (WebCore::provideDeviceOrientationTo): * dom/Document.cpp: (WebCore::Document::Document): (WebCore::Document::buildAccessKeyCache): (WebCore::Document::implementation): (WebCore::Document::formController): (WebCore::Document::updateTextRenderer): (WebCore::Document::userAgentShadowTreeStyleResolver): (WebCore::Document::axObjectCache const): (WebCore::Document::setParsing): (WebCore::Document::accessSVGExtensions): (WebCore::Document::initSecurityContext): (WebCore::Document::textAutoSizing): (WebCore::Document::didAddWheelEventHandler): (WebCore::Document::didAddTouchEventHandler): (WebCore::Document::didLogMessage): (WebCore::Document::registerCSSProperty): (WebCore::Document::deviceOrientationAndMotionAccessController): (WebCore::Document::contentChangeObserver): (WebCore::Document::domTimerHoldingTank): * dom/Document.h: (WebCore::Document::createParserYieldToken): * dom/DocumentEventQueue.cpp: (WebCore::DocumentEventQueue::DocumentEventQueue): * dom/DocumentMarkerController.cpp: (WebCore::DocumentMarkerController::addMarker): * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): * dom/Element.cpp: (WebCore::Element::attributes const): (WebCore::Element::setIsDefinedCustomElement): (WebCore::Element::enqueueToUpgrade): (WebCore::Element::classList): (WebCore::Element::dataset): (WebCore::Element::ensureIntersectionObserverData): (WebCore::Element::ensureResizeObserverData): * dom/EventListenerMap.cpp: (WebCore::EventListenerMap::add): * dom/EventNames.h: * dom/EventPath.cpp: (WebCore::EventPath::buildPath): (WebCore::EventPath::EventPath): * dom/IdTargetObserverRegistry.cpp: (WebCore::IdTargetObserverRegistry::addObserver): * dom/KeyboardEvent.cpp: (WebCore::KeyboardEvent::KeyboardEvent): * dom/MutationObserver.cpp: (WebCore::queueMutationObserverCompoundMicrotask): * dom/MutationObserverInterestGroup.cpp: (WebCore::MutationObserverInterestGroup::createIfNeeded): * dom/MutationObserverRegistration.cpp: (WebCore::MutationObserverRegistration::observedSubtreeNodeWillDetach): * dom/Node.cpp: (WebCore::Node::materializeRareData): (WebCore::Node::ensureEventTargetData): (WebCore::Node::registerMutationObserver): * dom/NodeRareData.h: (WebCore::NodeRareData::ensureNodeLists): (WebCore::NodeRareData::ensureMutationObserverData): * dom/RadioButtonGroups.cpp: (WebCore::RadioButtonGroups::addButton): * dom/ScriptExecutionContext.cpp: (WebCore::ScriptExecutionContext::reportException): (WebCore::ScriptExecutionContext::reportUnhandledPromiseRejection): (WebCore::ScriptExecutionContext::ensureRejectedPromiseTrackerSlow): * dom/SelectorQuery.cpp: * dom/ShadowRoot.cpp: (WebCore::ShadowRoot::ShadowRoot): (WebCore::ShadowRoot::moveShadowRootToNewDocument): (WebCore::ShadowRoot::addSlotElementByName): * dom/SlotAssignment.cpp: (WebCore::SlotAssignment::addSlotElementByName): (WebCore::SlotAssignment::assignToSlot): * dom/TreeScope.cpp: (WebCore::TreeScope::TreeScope): (WebCore::TreeScope::addElementById): (WebCore::TreeScope::addElementByName): (WebCore::TreeScope::addImageMap): (WebCore::TreeScope::addImageElementByUsemap): (WebCore::TreeScope::labelElementForId): * editing/Editor.cpp: (WebCore::createDataTransferForClipboardEvent): (WebCore::Editor::Editor): * editing/ReplaceSelectionCommand.cpp: (WebCore::ReplaceSelectionCommand::ensureReplacementFragment): * editing/SelectionRectGatherer.cpp: (WebCore::SelectionRectGatherer::clearAndCreateNotifier): * editing/TextIterator.cpp: (WebCore::TextIterator::handleTextNode): * editing/cocoa/HTMLConverter.mm: (HTMLConverter::HTMLConverter): (HTMLConverterCaches::computedStylePropertyForElement): * editing/markup.cpp: (WebCore::createPageForSanitizingWebContent): * fileapi/AsyncFileStream.cpp: (WebCore::callOnFileThread): (WebCore::AsyncFileStream::AsyncFileStream): * fileapi/FileReader.cpp: (WebCore::FileReader::readInternal): * history/CachedFrame.cpp: (WebCore::CachedFrame::CachedFrame): * history/CachedPage.cpp: (WebCore::CachedPage::CachedPage): * history/PageCache.cpp: (WebCore::PageCache::addIfCacheable): * html/FileInputType.cpp: (WebCore::FileInputType::requestIcon): * html/FormAssociatedElement.cpp: (WebCore::FormAssociatedElement::resetFormAttributeTargetObserver): * html/FormController.cpp: (WebCore::SavedFormState::deserialize): (WebCore::FormController::createSavedFormStateMap): (WebCore::FormController::takeStateForFormElement): * html/HTMLAnchorElement.cpp: (WebCore::HTMLAnchorElement::relList const): * html/HTMLAreaElement.cpp: (WebCore::HTMLAreaElement::mapMouseEvent): * html/HTMLCanvasElement.cpp: (WebCore::HTMLCanvasElement::setImageBuffer const): * html/HTMLCollection.cpp: (WebCore::HTMLCollection::updateNamedElementCache const): * html/HTMLDetailsElement.cpp: (WebCore::HTMLDetailsElement::create): * html/HTMLFormControlElement.cpp: (WebCore::HTMLFormControlElement::updateVisibleValidationMessage): * html/HTMLFormControlsCollection.cpp: (WebCore::HTMLFormControlsCollection::updateNamedElementCache const): * html/HTMLFormElement.cpp: (WebCore::HTMLFormElement::addToPastNamesMap): * html/HTMLIFrameElement.cpp: (WebCore::HTMLIFrameElement::sandbox): * html/HTMLInputElement.cpp: (WebCore::HTMLInputElement::ensureImageLoader): (WebCore::HTMLInputElement::resetListAttributeTargetObserver): * html/HTMLLinkElement.cpp: (WebCore::HTMLLinkElement::sizes): (WebCore::HTMLLinkElement::relList): * html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::finishInitialization): (WebCore::HTMLMediaElement::seekWithTolerance): * html/HTMLOutputElement.cpp: (WebCore::HTMLOutputElement::htmlFor): * html/HTMLPlugInImageElement.cpp: (WebCore::HTMLPlugInImageElement::updateAfterStyleResolution): * html/HTMLSummaryElement.cpp: (WebCore::HTMLSummaryElement::create): * html/HTMLVideoElement.cpp: (WebCore::HTMLVideoElement::didAttachRenderers): (WebCore::HTMLVideoElement::parseAttribute): * html/PublicURLManager.cpp: (WebCore::PublicURLManager::create): * html/ValidationMessage.cpp: (WebCore::ValidationMessage::setMessage): (WebCore::ValidationMessage::setMessageDOMAndStartTimer): (WebCore::ValidationMessage::requestToHideMessage): * html/canvas/CanvasRenderingContext2DBase.cpp: (WebCore::DisplayListDrawingContext::DisplayListDrawingContext): (WebCore::CanvasRenderingContext2DBase::drawingContext const): * html/canvas/WebGL2RenderingContext.cpp: (WebCore::WebGL2RenderingContext::getExtension): * html/canvas/WebGLRenderingContext.cpp: (WebCore::WebGLRenderingContext::getExtension): * html/canvas/WebGLRenderingContextBase.cpp: (WebCore::WebGLRenderingContextBase::initializeNewContext): (WebCore::WebGLRenderingContextBase::compileShader): (WebCore::WebGLRenderingContextBase::printToConsole): * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::emitRule): * html/parser/HTMLConstructionSite.cpp: (WebCore::HTMLConstructionSite::insertHTMLElementOrFindCustomElementInterface): * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::HTMLDocumentParser): (WebCore::HTMLDocumentParser::pumpTokenizer): (WebCore::HTMLDocumentParser::insert): * html/parser/HTMLElementStack.cpp: (WebCore::HTMLElementStack::insertAbove): (WebCore::HTMLElementStack::pushCommon): * html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest): * html/parser/HTMLToken.h: (WebCore::HTMLToken::beginDOCTYPE): * html/parser/XSSAuditor.cpp: (WebCore::XSSAuditor::filterToken): (WebCore::XSSAuditor::decodedHTTPBodySuffixTree): * html/shadow/TextControlInnerElements.cpp: (WebCore::TextControlInnerTextElement::resolveCustomStyle): * html/track/InbandGenericTextTrack.cpp: (WebCore::InbandGenericTextTrack::parser): * html/track/InbandWebVTTTextTrack.cpp: (WebCore::InbandWebVTTTextTrack::parser): * html/track/LoadableTextTrack.cpp: (WebCore::LoadableTextTrack::loadTimerFired): * inspector/CommandLineAPIHost.cpp: (WebCore::CommandLineAPIHost::CommandLineAPIHost): (WebCore::CommandLineAPIHost::clearAllWrappers): * inspector/DOMEditor.cpp: (WebCore::DOMEditor::insertBefore): (WebCore::DOMEditor::removeChild): (WebCore::DOMEditor::setAttribute): (WebCore::DOMEditor::removeAttribute): (WebCore::DOMEditor::setOuterHTML): (WebCore::DOMEditor::insertAdjacentHTML): (WebCore::DOMEditor::replaceWholeText): (WebCore::DOMEditor::replaceChild): (WebCore::DOMEditor::setNodeValue): * inspector/DOMPatchSupport.cpp: (WebCore::DOMPatchSupport::createDigest): * inspector/InspectorController.cpp: (WebCore::InspectorController::InspectorController): (WebCore::InspectorController::createLazyAgents): (WebCore::InspectorController::ensureInspectorAgent): (WebCore::InspectorController::ensureDOMAgent): (WebCore::InspectorController::ensurePageAgent): * inspector/InspectorHistory.cpp: (WebCore::InspectorHistory::markUndoableState): * inspector/InspectorStyleSheet.cpp: (ParsedStyleSheet::setSourceData): (WebCore::InspectorStyleSheet::ensureSourceData): * inspector/NetworkResourcesData.cpp: (WebCore::NetworkResourcesData::resourceCreated): * inspector/WorkerInspectorController.cpp: (WebCore::WorkerInspectorController::WorkerInspectorController): (WebCore::WorkerInspectorController::connectFrontend): (WebCore::WorkerInspectorController::createLazyAgents): * inspector/agents/InspectorApplicationCacheAgent.cpp: (WebCore::InspectorApplicationCacheAgent::InspectorApplicationCacheAgent): * inspector/agents/InspectorCPUProfilerAgent.cpp: (WebCore::InspectorCPUProfilerAgent::InspectorCPUProfilerAgent): * inspector/agents/InspectorCSSAgent.cpp: (WebCore::InspectorCSSAgent::InspectorCSSAgent): (WebCore::InspectorCSSAgent::setStyleSheetText): (WebCore::InspectorCSSAgent::setStyleText): (WebCore::InspectorCSSAgent::setRuleSelector): (WebCore::InspectorCSSAgent::addRule): * inspector/agents/InspectorCanvasAgent.cpp: (WebCore::InspectorCanvasAgent::InspectorCanvasAgent): (WebCore::InspectorCanvasAgent::recordCanvasAction): * inspector/agents/InspectorDOMAgent.cpp: (WebCore::InspectorDOMAgent::InspectorDOMAgent): (WebCore::InspectorDOMAgent::didCreateFrontendAndBackend): (WebCore::InspectorDOMAgent::pushNodePathToFrontend): (WebCore::InspectorDOMAgent::highlightConfigFromInspectorObject): (WebCore::InspectorDOMAgent::highlightRect): (WebCore::InspectorDOMAgent::highlightQuad): (WebCore::InspectorDOMAgent::innerHighlightQuad): (WebCore::InspectorDOMAgent::highlightFrame): (WebCore::InspectorDOMAgent::setInspectedNode): (WebCore::InspectorDOMAgent::didInvalidateStyleAttr): * inspector/agents/InspectorDOMStorageAgent.cpp: (WebCore::InspectorDOMStorageAgent::InspectorDOMStorageAgent): * inspector/agents/InspectorDatabaseAgent.cpp: (WebCore::InspectorDatabaseAgent::InspectorDatabaseAgent): * inspector/agents/InspectorLayerTreeAgent.cpp: (WebCore::InspectorLayerTreeAgent::InspectorLayerTreeAgent): * inspector/agents/InspectorMemoryAgent.cpp: (WebCore::InspectorMemoryAgent::InspectorMemoryAgent): * inspector/agents/InspectorNetworkAgent.cpp: (WebCore::InspectorNetworkAgent::InspectorNetworkAgent): * inspector/agents/InspectorPageAgent.cpp: (WebCore::InspectorPageAgent::InspectorPageAgent): * inspector/agents/InspectorTimelineAgent.cpp: (WebCore::InspectorTimelineAgent::InspectorTimelineAgent): (WebCore::InspectorTimelineAgent::internalStart): (WebCore::InspectorTimelineAgent::startFromConsole): (WebCore::InspectorTimelineAgent::stopFromConsole): * inspector/agents/InspectorWorkerAgent.cpp: (WebCore::InspectorWorkerAgent::InspectorWorkerAgent): * inspector/agents/WebConsoleAgent.cpp: (WebCore::WebConsoleAgent::didReceiveResponse): (WebCore::WebConsoleAgent::didFailLoading): * inspector/agents/WebHeapAgent.cpp: (WebCore::WebHeapAgent::WebHeapAgent): * inspector/agents/page/PageRuntimeAgent.cpp: (WebCore::PageRuntimeAgent::PageRuntimeAgent): * inspector/agents/worker/WorkerDebuggerAgent.cpp: (WebCore::WorkerDebuggerAgent::breakpointActionLog): * layout/LayoutState.cpp: (WebCore::Layout::LayoutState::displayBoxForLayoutBox const): (WebCore::Layout::LayoutState::createFormattingStateForFormattingRootIfNeeded): (WebCore::Layout::LayoutState::createFormattingContext): * layout/inlineformatting/InlineFormattingContext.cpp: (WebCore::Layout::InlineFormattingContext::collectInlineContent const): * layout/inlineformatting/InlineFormattingContextLineLayout.cpp: (WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const): * layout/inlineformatting/InlineLine.cpp: (WebCore::Layout::Line::Line): (WebCore::Layout::Line::appendNonBreakableSpace): (WebCore::Layout::Line::appendTextContent): (WebCore::Layout::Line::appendNonReplacedInlineBox): (WebCore::Layout::Line::appendHardLineBreak): * layout/inlineformatting/InlineTextItem.cpp: (WebCore::Layout::InlineTextItem::createAndAppendTextItems): (WebCore::Layout::InlineTextItem::split const): * layout/layouttree/LayoutBox.cpp: (WebCore::Layout::Box::Box): (WebCore::Layout::Box::ensureRareData): * layout/layouttree/LayoutTreeBuilder.cpp: (WebCore::Layout::TreeBuilder::createLayoutBox): (WebCore::Layout::TreeBuilder::createTableStructure): (WebCore::Layout::printLayoutTreeForLiveDocuments): * layout/tableformatting/TableGrid.cpp: (WebCore::Layout::TableGrid::appendCell): * loader/ContentFilter.cpp: (WebCore::ContentFilter::create): * loader/CrossOriginAccessControl.cpp: (WebCore::validatePreflightResponse): * loader/DocumentLoader.cpp: (WebCore::DocumentLoader::DocumentLoader): (WebCore::DocumentLoader::loadApplicationManifest): (WebCore::DocumentLoader::addAllArchiveResources): (WebCore::DocumentLoader::addArchiveResource): (WebCore::DocumentLoader::loadMainResource): (WebCore::DocumentLoader::didGetLoadDecisionForIcon): * loader/EmptyClients.cpp: (WebCore::pageConfigurationWithEmptyClients): * loader/FrameLoader.cpp: (WebCore::FrameLoader::FrameLoader): (WebCore::FrameLoader::init): (WebCore::FrameLoader::initForSynthesizedDocument): (WebCore::FrameLoader::detachChildren): * loader/LinkLoader.cpp: (WebCore::createLinkPreloadResourceClient): * loader/NavigationScheduler.cpp: (WebCore::NavigationScheduler::scheduleRedirect): (WebCore::NavigationScheduler::scheduleLocationChange): (WebCore::NavigationScheduler::scheduleFormSubmission): (WebCore::NavigationScheduler::scheduleRefresh): (WebCore::NavigationScheduler::scheduleHistoryNavigation): (WebCore::NavigationScheduler::schedulePageBlock): * loader/ProgressTracker.cpp: (WebCore::ProgressTracker::incrementProgress): * loader/TextResourceDecoder.cpp: (WebCore::TextResourceDecoder::checkForHeadCharset): * loader/TextTrackLoader.cpp: (WebCore::TextTrackLoader::processNewCueData): * loader/WorkerThreadableLoader.cpp: (WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge): * loader/archive/cf/LegacyWebArchive.cpp: (WebCore::LegacyWebArchive::create): * loader/cache/CachedImage.cpp: (WebCore::CachedImage::setBodyDataFrom): (WebCore::CachedImage::createImage): * loader/cache/CachedRawResource.cpp: (WebCore::CachedRawResource::redirectReceived): * loader/cache/CachedResource.cpp: (WebCore::CachedResource::addClientToSet): * loader/cache/CachedResourceLoader.cpp: (WebCore::CachedResourceLoader::requestResource): (WebCore::CachedResourceLoader::preload): (WebCore::CachedResourceLoader::clearPreloads): * loader/cache/MemoryCache.cpp: (WebCore::MemoryCache::ensureSessionResourceMap): (WebCore::MemoryCache::addImageToCache): (WebCore::MemoryCache::lruListFor): * loader/ios/PreviewLoader.mm: (-[WebPreviewLoader initWithResourceLoader:resourceResponse:]): (-[WebPreviewLoader connection:didFailWithError:]): (WebCore::PreviewLoader::create): * page/ContextMenuController.cpp: (WebCore::ContextMenuController::maybeCreateContextMenu): * page/DebugPageOverlays.cpp: (WebCore::MouseWheelRegionOverlay::updateRegion): * page/EventHandler.cpp: (WebCore::EventHandler::EventHandler): * page/FrameView.cpp: (WebCore::FrameView::addEmbeddedObjectToUpdate): (WebCore::FrameView::addSlowRepaintObject): (WebCore::FrameView::addViewportConstrainedObject): (WebCore::FrameView::addScrollableArea): * page/FrameViewLayoutContext.cpp: (WebCore::FrameViewLayoutContext::pushLayoutState): (WebCore::FrameViewLayoutContext::pushLayoutStateForPaginationIfNeeded): * page/NavigatorBase.cpp: (WebCore::NavigatorBase::serviceWorker): * page/Page.cpp: (WebCore::Page::Page): (WebCore::Page::initGroup): (WebCore::Page::setResourceUsageOverlayVisible): * page/PageConsoleClient.cpp: (WebCore::PageConsoleClient::addMessage): (WebCore::PageConsoleClient::messageWithTypeAndLevel): (WebCore::PageConsoleClient::screenshot): * page/PageGroup.cpp: (WebCore::PageGroup::captionPreferences): * page/Performance.cpp: (WebCore::Performance::mark): (WebCore::Performance::clearMarks): (WebCore::Performance::measure): (WebCore::Performance::clearMeasures): * page/PrintContext.cpp: (WebCore::PrintContext::outputLinkedDestinations): * page/RenderingUpdateScheduler.cpp: (WebCore::RenderingUpdateScheduler::startTimer): * page/RenderingUpdateScheduler.h: (WebCore::RenderingUpdateScheduler::create): * page/SecurityPolicy.cpp: (WebCore::SecurityPolicy::addOriginAccessWhitelistEntry): * page/SettingsBase.cpp: (WebCore::SettingsBase::SettingsBase): * page/UserContentController.cpp: (WebCore::UserContentController::addUserScript): (WebCore::UserContentController::addUserStyleSheet): * page/WheelEventDeltaFilter.cpp: (WebCore::WheelEventDeltaFilter::create): * page/animation/CSSAnimationController.cpp: (WebCore::CSSAnimationController::CSSAnimationController): * page/animation/CSSPropertyAnimation.cpp: (WebCore::blendFunc): (WebCore::PropertyWrapperVisitedAffectedColor::PropertyWrapperVisitedAffectedColor): (WebCore::FillLayersPropertyWrapper::FillLayersPropertyWrapper): (WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap): * page/csp/ContentSecurityPolicy.cpp: (WebCore::ContentSecurityPolicy::updateSourceSelf): * page/csp/ContentSecurityPolicyDirectiveList.cpp: (WebCore::ContentSecurityPolicyDirectiveList::create): (WebCore::ContentSecurityPolicyDirectiveList::setCSPDirective): * page/linux/ResourceUsageOverlayLinux.cpp: (WebCore::ResourceUsageOverlay::platformInitialize): * page/mac/PageMac.mm: (WebCore::Page::addSchedulePair): * page/scrolling/AsyncScrollingCoordinator.cpp: (WebCore::AsyncScrollingCoordinator::AsyncScrollingCoordinator): * page/scrolling/ScrollingMomentumCalculator.cpp: (WebCore::ScrollingMomentumCalculator::create): * page/scrolling/ScrollingStateNode.cpp: (WebCore::ScrollingStateNode::appendChild): (WebCore::ScrollingStateNode::insertChild): * page/scrolling/ScrollingStateTree.cpp: (WebCore::ScrollingStateTree::commit): * page/scrolling/ScrollingTreeNode.cpp: (WebCore::ScrollingTreeNode::appendChild): * page/scrolling/mac/ScrollingMomentumCalculatorMac.mm: (WebCore::ScrollingMomentumCalculator::create): * platform/Length.cpp: (WebCore::convertTo100PercentMinusLength): (WebCore::blendMixedTypes): * platform/RemoteCommandListener.cpp: (WebCore::RemoteCommandListener::create): * platform/ScrollAnimator.cpp: (WebCore::ScrollAnimator::create): * platform/ScrollableArea.cpp: (WebCore::ScrollableArea::scrollAnimator const): (WebCore::ScrollableArea::ensureSnapOffsetsInfo): * platform/ThreadGlobalData.cpp: (WebCore::ThreadGlobalData::ThreadGlobalData): * platform/audio/AudioBus.cpp: (WebCore::AudioBus::AudioBus): (WebCore::AudioBus::copyWithGainFrom): * platform/audio/AudioChannel.h: * platform/audio/AudioResampler.cpp: (WebCore::AudioResampler::AudioResampler): (WebCore::AudioResampler::configureChannels): * platform/audio/DynamicsCompressor.cpp: (WebCore::DynamicsCompressor::setNumberOfChannels): * platform/audio/DynamicsCompressorKernel.cpp: (WebCore::DynamicsCompressorKernel::setNumberOfChannels): * platform/audio/FFTFrame.cpp: (WebCore::FFTFrame::createInterpolatedFrame): * platform/audio/HRTFDatabaseLoader.cpp: (WebCore::HRTFDatabaseLoader::load): * platform/audio/HRTFElevation.cpp: (WebCore::HRTFElevation::createForSubject): (WebCore::HRTFElevation::createByInterpolatingSlices): * platform/audio/HRTFKernel.cpp: (WebCore::HRTFKernel::HRTFKernel): (WebCore::HRTFKernel::createImpulseResponse): * platform/audio/MultiChannelResampler.cpp: (WebCore::MultiChannelResampler::MultiChannelResampler): * platform/audio/Panner.cpp: (WebCore::Panner::create): * platform/audio/PlatformMediaSession.cpp: (WebCore::PlatformMediaSession::create): * platform/audio/Reverb.cpp: (WebCore::Reverb::initialize): * platform/audio/ReverbConvolver.cpp: (WebCore::ReverbConvolver::ReverbConvolver): * platform/audio/ReverbConvolverStage.cpp: (WebCore::ReverbConvolverStage::ReverbConvolverStage): * platform/audio/gstreamer/AudioDestinationGStreamer.cpp: (WebCore::AudioDestination::create): * platform/audio/ios/AudioDestinationIOS.cpp: (WebCore::AudioDestination::create): * platform/audio/ios/AudioSessionIOS.mm: (WebCore::AudioSession::AudioSession): * platform/audio/mac/AudioDestinationMac.cpp: (WebCore::AudioDestination::create): * platform/audio/mac/AudioSampleDataSource.mm: (WebCore::AudioSampleDataSource::setInputFormat): (WebCore::AudioSampleDataSource::setOutputFormat): * platform/audio/mac/AudioSessionMac.cpp: (WebCore::AudioSession::AudioSession): * platform/cf/KeyedDecoderCF.cpp: (WebCore::KeyedDecoder::decoder): * platform/cf/KeyedEncoderCF.cpp: (WebCore::KeyedEncoder::encoder): * platform/cf/MainThreadSharedTimerCF.cpp: (WebCore::setupPowerObserver): * platform/cocoa/NetworkExtensionContentFilter.mm: (WebCore::NetworkExtensionContentFilter::create): * platform/cocoa/ParentalControlsContentFilter.mm: (WebCore::ParentalControlsContentFilter::create): * platform/cocoa/ScrollController.mm: (WebCore::ScrollController::updateScrollSnapPoints): * platform/encryptedmedia/clearkey/CDMClearKey.cpp: (WebCore::CDMFactoryClearKey::createCDM): * platform/gamepad/cocoa/GameControllerGamepadProvider.mm: (WebCore::GameControllerGamepadProvider::controllerDidConnect): * platform/gamepad/mac/HIDGamepadProvider.cpp: (WebCore::HIDGamepadProvider::deviceAdded): * platform/generic/KeyedDecoderGeneric.cpp: (WebCore::KeyedDecoderGeneric::Dictionary::add): (WebCore::KeyedDecoder::decoder): (WebCore::KeyedDecoderGeneric::KeyedDecoderGeneric): * platform/generic/KeyedEncoderGeneric.cpp: (WebCore::KeyedEncoder::encoder): * platform/generic/ScrollAnimatorGeneric.cpp: (WebCore::ScrollAnimator::create): (WebCore::ScrollAnimatorGeneric::ScrollAnimatorGeneric): (WebCore::ScrollAnimatorGeneric::ensureSmoothScrollingAnimation): * platform/glib/KeyedDecoderGlib.cpp: (WebCore::KeyedDecoder::decoder): * platform/glib/KeyedEncoderGlib.cpp: (WebCore::KeyedEncoder::encoder): * platform/graphics/BitmapImage.cpp: (WebCore::BitmapImage::startTimer): (WebCore::BitmapImage::decode): * platform/graphics/ComplexTextController.cpp: (WebCore::TextLayout::TextLayout): * platform/graphics/Font.cpp: (WebCore::Font::ensureDerivedFontData const): * platform/graphics/Font.h: (WebCore::Font::boundsForGlyph const): * platform/graphics/FontCache.cpp: (WebCore::FontCache::getCachedFontPlatformData): * platform/graphics/FontCascade.cpp: (WebCore::retrieveOrAddCachedFonts): (WebCore::FontCascade::displayListForTextRun const): * platform/graphics/FontCascadeFonts.cpp: (WebCore::FontCascadeFonts::GlyphPageCacheEntry::setGlyphDataForCharacter): * platform/graphics/GlyphMetricsMap.h: (WebCore::GlyphMetricsMap<T>::locatePageSlowCase): * platform/graphics/GraphicsLayer.cpp: (WebCore::GraphicsLayer::setTransform): (WebCore::GraphicsLayer::setChildrenTransform): * platform/graphics/GraphicsLayer.h: * platform/graphics/Image.cpp: (WebCore::Image::startAnimationAsynchronously): * platform/graphics/MediaPlayer.cpp: (WebCore::MediaPlayer::MediaPlayer): (WebCore::MediaPlayer::loadWithNextMediaEngine): * platform/graphics/MediaPlayerPrivate.h: (WebCore::MediaPlayerPrivateInterface::seekable const): * platform/graphics/PathUtilities.cpp: (WebCore::FloatPointGraph::findOrCreateNode): * platform/graphics/Region.cpp: (WebCore::Region::setShape): * platform/graphics/Region.h: (WebCore::Region::copyShape const): (WebCore::Region::decode): * platform/graphics/TextTrackRepresentation.cpp: (WebCore::TextTrackRepresentation::create): * platform/graphics/angle/GraphicsContext3DANGLE.cpp: (WebCore::GraphicsContext3D::getExtensions): * platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm: (WebCore::AudioSourceProviderAVFObjC::prepare): * platform/graphics/avfoundation/CDMFairPlayStreaming.cpp: (WebCore::CDMFactoryFairPlayStreaming::createCDM): * platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.mm: (WebCore::CDMPrivateMediaSourceAVFObjC::createSession): * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp: (WebCore::MediaPlayerPrivateAVFoundation::buffered const): * platform/graphics/avfoundation/WebMediaSessionManagerMac.cpp: (WebCore::WebMediaSessionManagerMac::platformPicker): * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp: (WebCore::MediaPlayerPrivateAVFoundationCF::registerMediaEngine): (WebCore::MediaPlayerPrivateAVFoundationCF::platformBufferedTimeRanges const): (WebCore::MediaPlayerPrivateAVFoundationCF::createSession): (WebCore::AVFWrapper::notificationCallback): (WebCore::AVFWrapper::legibleOutputCallback): (WebCore::AVFWrapper::resourceLoaderShouldWaitForLoadingOfRequestedResource): (WebCore::AVFWrapper::platformLayer): * platform/graphics/avfoundation/objc/AudioTrackPrivateAVFObjC.mm: (WebCore::AudioTrackPrivateAVFObjC::AudioTrackPrivateAVFObjC): (WebCore::AudioTrackPrivateAVFObjC::setPlayerItemTrack): (WebCore::AudioTrackPrivateAVFObjC::setAssetTrack): (WebCore::AudioTrackPrivateAVFObjC::setMediaSelectionOption): * platform/graphics/avfoundation/objc/AudioTrackPrivateMediaSourceAVFObjC.cpp: (WebCore::AudioTrackPrivateMediaSourceAVFObjC::AudioTrackPrivateMediaSourceAVFObjC): (WebCore::AudioTrackPrivateMediaSourceAVFObjC::setAssetTrack): * platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm: (WebCore::ImageDecoderAVFObjC::readTrackMetadata): * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::registerMediaEngine): (WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC): (WebCore::MediaPlayerPrivateAVFoundationObjC::platformBufferedTimeRanges const): (WebCore::MediaPlayerPrivateAVFoundationObjC::updateRotationSession): (WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastImage): (WebCore::MediaPlayerPrivateAVFoundationObjC::copyVideoTextureToPlatformTexture): (WebCore::MediaPlayerPrivateAVFoundationObjC::createSession): * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::registerMediaEngine): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekWithTolerance): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekable const): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::buffered const): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::updateLastImage): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::copyVideoTextureToPlatformTexture): * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC): (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::registerMediaEngine): (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::seekable const): (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::buffered const): (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateCurrentFrameImage): * platform/graphics/avfoundation/objc/VideoTrackPrivateAVFObjC.cpp: (WebCore::VideoTrackPrivateAVFObjC::VideoTrackPrivateAVFObjC): (WebCore::VideoTrackPrivateAVFObjC::setPlayerItemTrack): (WebCore::VideoTrackPrivateAVFObjC::setAssetTrack): (WebCore::VideoTrackPrivateAVFObjC::setMediaSelectonOption): * platform/graphics/avfoundation/objc/VideoTrackPrivateMediaSourceAVFObjC.mm: (WebCore::VideoTrackPrivateMediaSourceAVFObjC::VideoTrackPrivateMediaSourceAVFObjC): (WebCore::VideoTrackPrivateMediaSourceAVFObjC::setAssetTrack): * platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::recursiveCommitChanges): (WebCore::GraphicsLayerCA::ensureLayerAnimations): (WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes): * platform/graphics/ca/TileController.cpp: (WebCore::TileController::TileController): (WebCore::TileController::setContentsScale): (WebCore::TileController::adjustTileCoverageRectForScrolling): (WebCore::TileController::tiledScrollingIndicatorLayer): * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm: (WebCore::PlatformCALayerCocoa::commonInit): (WebCore::PlatformCALayerCocoa::setShapeRoundedRect): * platform/graphics/ca/cocoa/WebTiledBackingLayer.mm: (-[WebTiledBackingLayer createTileController:]): * platform/graphics/ca/win/PlatformCALayerWin.cpp: (PlatformCALayerWin::PlatformCALayerWin): * platform/graphics/ca/win/WebTiledBackingLayerWin.cpp: (WebTiledBackingLayerWin::createTileController): * platform/graphics/cairo/GraphicsContextImplCairo.cpp: (WebCore::GraphicsContextImplCairo::createFactory): (WebCore::m_private): * platform/graphics/cairo/ImageBufferCairo.cpp: (WebCore::ImageBufferData::swapBuffersIfNeeded): (WebCore::ImageBuffer::ImageBuffer): * platform/graphics/cg/ImageBufferCG.cpp: (WebCore::ImageBuffer::ImageBuffer): * platform/graphics/cocoa/FontCacheCoreText.cpp: (WebCore::FontCache::createFontPlatformData): * platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp: (WebCore::FontFamilySpecificationCoreText::fontRanges const): * platform/graphics/cocoa/GraphicsContext3DCocoa.mm: (WebCore::GraphicsContext3D::GraphicsContext3D): * platform/graphics/cocoa/IOSurface.mm: (WebCore::IOSurface::ensureGraphicsContext): * platform/graphics/cocoa/TextTrackRepresentationCocoa.mm: (TextTrackRepresentation::create): * platform/graphics/cv/TextureCacheCV.mm: (WebCore::TextureCacheCV::create): * platform/graphics/displaylists/DisplayListReplayer.cpp: (WebCore::DisplayList::Replayer::replay): * platform/graphics/filters/FilterOperation.cpp: (WebCore::ReferenceFilterOperation::loadExternalDocumentIfNeeded): * platform/graphics/freetype/FontCacheFreeType.cpp: (WebCore::FontCache::createFontPlatformData): * platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp: (WebCore::createFontCustomPlatformData): * platform/graphics/gpu/Texture.cpp: (WebCore::Texture::create): * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: (WebCore::MediaPlayerPrivateGStreamer::registerMediaEngine): (WebCore::MediaPlayerPrivateGStreamer::buffered const): (WebCore::MediaPlayerPrivateGStreamer::ensureAudioSourceProvider): * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: (WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor): (WebCore::MediaPlayerPrivateGStreamerBase::copyVideoTextureToPlatformTexture): (WebCore::MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime): (WebCore::MediaPlayerPrivateGStreamerBase::pushNextHolePunchBuffer): * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp: (webKitWebSrcMakeRequest): * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp: (WebCore::MediaPlayerPrivateGStreamerMSE::registerMediaEngine): (WebCore::MediaPlayerPrivateGStreamerMSE::buffered const): * platform/graphics/holepunch/MediaPlayerPrivateHolePunch.cpp: (WebCore::MediaPlayerPrivateHolePunch::pushNextHolePunchBuffer): (WebCore::MediaPlayerPrivateHolePunch::registerMediaEngine): * platform/graphics/holepunch/MediaPlayerPrivateHolePunch.h: * platform/graphics/iso/ISOProtectionSchemeInfoBox.cpp: (WebCore::ISOProtectionSchemeInfoBox::parse): * platform/graphics/iso/ISOSchemeInformationBox.cpp: (WebCore::ISOSchemeInformationBox::parse): * platform/graphics/mac/FontCustomPlatformData.cpp: (WebCore::createFontCustomPlatformData): * platform/graphics/nicosia/NicosiaSceneIntegration.cpp: (Nicosia::SceneIntegration::createUpdateScope): * platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp: (Nicosia::createCommand): * platform/graphics/nicosia/cairo/NicosiaPaintingContextCairo.cpp: (Nicosia::PaintingContextCairo::ForPainting::ForPainting): (Nicosia::PaintingContextCairo::ForRecording::ForRecording): * platform/graphics/nicosia/texmap/NicosiaBackingStoreTextureMapperImpl.cpp: (Nicosia::BackingStoreTextureMapperImpl::createFactory): * platform/graphics/nicosia/texmap/NicosiaCompositionLayerTextureMapperImpl.cpp: (Nicosia::CompositionLayerTextureMapperImpl::createFactory): * platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.cpp: (Nicosia::ContentLayerTextureMapperImpl::createFactory): * platform/graphics/nicosia/texmap/NicosiaGC3DLayer.cpp: (Nicosia::GC3DLayer::swapBuffersIfNeeded): * platform/graphics/nicosia/texmap/NicosiaImageBackingTextureMapperImpl.cpp: (Nicosia::ImageBackingTextureMapperImpl::createFactory): * platform/graphics/opengl/GraphicsContext3DOpenGL.cpp: (WebCore::GraphicsContext3D::getExtensions): * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: (WebCore::GraphicsContext3D::compileShader): (WebCore::GraphicsContext3D::mappedSymbolName): * platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp: (WebCore::GraphicsContext3D::getExtensions): (WebCore::GraphicsContext3D::GraphicsContext3D): * platform/graphics/texmap/GraphicsContext3DTextureMapper.cpp: (WebCore::GraphicsContext3D::GraphicsContext3D): (WebCore::GraphicsContext3D::getExtensions): * platform/graphics/texmap/TextureMapperGC3DPlatformLayer.cpp: (WebCore::TextureMapperGC3DPlatformLayer::swapBuffersIfNeeded): * platform/graphics/texmap/TextureMapperGL.cpp: (WebCore::TextureMapperGL::TextureMapperGL): (WebCore::TextureMapper::platformCreateAccelerated): * platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp: (WebCore::TextureMapperPlatformLayerBuffer::clone): * platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp: (WebCore::TextureMapperPlatformLayerProxy::activateOnCompositingThread): * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp: (WebCore::CoordinatedGraphicsLayer::updateContentBuffers): * platform/graphics/texmap/coordinated/TiledBackingStore.cpp: (WebCore::TiledBackingStore::createTiles): * platform/graphics/transforms/TransformState.cpp: (WebCore::TransformState::operator=): (WebCore::TransformState::applyTransform): (WebCore::TransformState::setLastPlanarSecondaryQuad): * platform/graphics/transforms/TransformState.h: (WebCore::TransformState::setSecondaryQuad): * platform/graphics/win/FontCacheWin.cpp: (WebCore::FontCache::createFontPlatformData): * platform/graphics/win/FontCustomPlatformData.cpp: (WebCore::createFontCustomPlatformData): * platform/graphics/win/FontCustomPlatformDataCairo.cpp: (WebCore::createFontCustomPlatformData): * platform/graphics/win/FullScreenController.cpp: (WebCore::FullScreenController::FullScreenController): (WebCore::FullScreenController::enterFullScreen): * platform/graphics/win/GraphicsContextCairoWin.cpp: (WebCore::GraphicsContext::platformInit): * platform/graphics/win/GraphicsContextDirect2D.cpp: (WebCore::GraphicsContext::GraphicsContext): (WebCore::GraphicsContext::platformInit): * platform/graphics/win/GraphicsContextImplDirect2D.cpp: (WebCore::GraphicsContextImplDirect2D::createFactory): (WebCore::m_private): * platform/graphics/win/GraphicsContextWin.cpp: (WebCore::GraphicsContext::createWindowsBitmap): * platform/graphics/win/ImageBufferDirect2D.cpp: (WebCore::ImageBuffer::ImageBuffer): * platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp: (WebCore::MediaPlayerPrivateMediaFoundation::registerMediaEngine): (WebCore::MediaPlayerPrivateMediaFoundation::buffered const): (WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::CustomVideoPresenter): * platform/graphics/win/WKCAImageQueue.cpp: (WebCore::WKCAImageQueue::WKCAImageQueue): * platform/gtk/PasteboardGtk.cpp: (WebCore::Pasteboard::createForCopyAndPaste): (WebCore::Pasteboard::createForGlobalSelection): (WebCore::Pasteboard::createForDragAndDrop): * platform/gtk/PasteboardHelper.cpp: (WebCore::PasteboardHelper::writeClipboardContents): * platform/gtk/RenderThemeGadget.cpp: (WebCore::RenderThemeGadget::create): * platform/gtk/RenderThemeWidget.cpp: (WebCore::RenderThemeWidget::getOrCreate): (WebCore::RenderThemeScrollbar::RenderThemeScrollbar): (WebCore::RenderThemeComboBox::RenderThemeComboBox): * platform/image-decoders/bmp/BMPImageDecoder.cpp: (WebCore::BMPImageDecoder::decodeHelper): * platform/image-decoders/gif/GIFImageDecoder.cpp: (WebCore::GIFImageDecoder::decode): * platform/image-decoders/gif/GIFImageReader.cpp: (GIFFrameContext::decode): (GIFImageReader::addFrameIfNecessary): * platform/image-decoders/ico/ICOImageDecoder.cpp: (WebCore::ICOImageDecoder::decodeAtIndex): * platform/image-decoders/jpeg/JPEGImageDecoder.cpp: (WebCore::JPEGImageDecoder::decode): * platform/image-decoders/png/PNGImageDecoder.cpp: (WebCore::PNGImageDecoder::decode): * platform/ios/LegacyTileCache.mm: (WebCore::LegacyTileCache::LegacyTileCache): (WebCore::LegacyTileCache::commitScaleChange): * platform/ios/PasteboardIOS.mm: (WebCore::Pasteboard::createForDragAndDrop): (WebCore::Pasteboard::createForCopyAndPaste): * platform/ios/QuickLook.mm: (WebCore::registerQLPreviewConverterIfNeeded): * platform/ios/RemoteCommandListenerIOS.mm: (WebCore::RemoteCommandListener::create): * platform/ios/ScrollAnimatorIOS.mm: (WebCore::ScrollAnimator::create): * platform/libwpe/PasteboardLibWPE.cpp: (WebCore::Pasteboard::createForCopyAndPaste): * platform/mac/PasteboardMac.mm: (WebCore::Pasteboard::createForCopyAndPaste): (WebCore::Pasteboard::createForDragAndDrop): * platform/mac/RemoteCommandListenerMac.mm: (WebCore::RemoteCommandListener::create): * platform/mac/ScrollAnimatorMac.mm: (WebCore::ScrollAnimator::create): * platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp: (WebCore::MediaRecorderPrivateAVFImpl::create): * platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp: (WebCore::m_capturer): (WebCore::GStreamerAudioCaptureSource::GStreamerAudioCaptureSource): * platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp: (WebCore::webkit_media_stream_src_init): * platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp: (WebCore::GStreamerVideoCaptureSource::GStreamerVideoCaptureSource): (WebCore::m_capturer): * platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp: (WebCore::GStreamerVideoEncoderFactory::CreateVideoEncoder): * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp: (WebCore::BasicPacketSocketFactory::BasicPacketSocketFactory): (WebCore::initializePeerConnectionFactoryAndThreads): (WebCore::LibWebRTCProvider::createPeerConnection): (WebCore::LibWebRTCProvider::certificateGenerator): * platform/mediastream/libwebrtc/LibWebRTCProviderGStreamer.cpp: (WebCore::LibWebRTCProviderGStreamer::createDecoderFactory): (WebCore::LibWebRTCProviderGStreamer::createEncoderFactory): * platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp: (WebCore::AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable): * platform/mediastream/mac/MockRealtimeAudioSourceMac.mm: (WebCore::MockRealtimeAudioSourceMac::reconfigure): * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.mm: (WebCore::RealtimeOutgoingVideoSourceCocoa::convertToYUV): (WebCore::RealtimeOutgoingVideoSourceCocoa::rotatePixelBuffer): * platform/mock/RTCNotifiersMock.cpp: (WebCore::RemoteDataChannelNotifier::fire): * platform/mock/mediasource/MockMediaPlayerMediaSource.cpp: (WebCore::MockMediaPlayerMediaSource::registerMediaEngine): (WebCore::MockMediaPlayerMediaSource::buffered const): * platform/network/BlobResourceHandle.cpp: * platform/network/DataURLDecoder.cpp: (WebCore::DataURLDecoder::createDecodeTask): * platform/network/ResourceHandle.cpp: (WebCore::ResourceHandle::ResourceHandle): * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp: (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::willSendRequest): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveData): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didFinishLoading): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didFail): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::willCacheResponse): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveChallenge): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didSendBodyData): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::canRespondToProtectionSpace): * platform/network/cocoa/WebCoreNSURLSession.mm: (-[WebCoreNSURLSessionDataTask _restart]): * platform/network/curl/CookieJarDB.cpp: (WebCore::CookieJarDB::searchCookies): (WebCore::CookieJarDB::createPrepareStatement): * platform/network/curl/CurlCacheManager.cpp: (WebCore::CurlCacheManager::loadIndex): (WebCore::CurlCacheManager::didReceiveResponse): * platform/network/curl/CurlContext.cpp: (WebCore::CurlContext::CurlContext): (WebCore::CurlHandle::willSetupSslCtx): * platform/network/curl/CurlFormDataStream.cpp: (WebCore::CurlFormDataStream::getPostData): * platform/network/curl/CurlMultipartHandle.cpp: (WebCore::CurlMultipartHandle::createIfNeeded): * platform/network/curl/CurlRequest.cpp: (WebCore::CurlRequest::runOnMainThread): (WebCore::CurlRequest::setupTransfer): * platform/network/curl/CurlRequestScheduler.cpp: (WebCore::CurlRequestScheduler::workerThread): * platform/network/curl/ResourceHandleCurl.cpp: (WebCore::ResourceHandle::delegate): * platform/network/curl/SocketStreamHandleImplCurl.cpp: (WebCore::SocketStreamHandleImpl::callOnWorkerThread): * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm: (-[WebCoreResourceHandleAsOperationQueueDelegate callFunctionOnMainThread:]): * platform/network/soup/DNSResolveQueueSoup.cpp: (WebCore::DNSResolveQueueSoup::resolve): * platform/network/soup/NetworkStorageSessionSoup.cpp: (WebCore::NetworkStorageSession::getCredentialFromPersistentStorage): * platform/text/BidiResolver.h: (WebCore::DerivedClass>::appendRunInternal): * platform/text/LocaleICU.cpp: (WebCore::Locale::create): (WebCore::LocaleICU::createLabelVector): (WebCore::createFallbackMonthLabels): (WebCore::createFallbackAMPMLabels): * platform/text/LocaleNone.cpp: (WebCore::Locale::create): * platform/text/TextCodecICU.cpp: (WebCore::TextCodecICU::registerCodecs): * platform/text/TextCodecLatin1.cpp: (WebCore::TextCodecLatin1::registerCodecs): * platform/text/TextCodecReplacement.cpp: (WebCore::TextCodecReplacement::registerCodecs): * platform/text/TextCodecUTF16.cpp: (WebCore::TextCodecUTF16::registerCodecs): * platform/text/TextCodecUTF8.cpp: (WebCore::TextCodecUTF8::registerCodecs): * platform/text/TextCodecUserDefined.cpp: (WebCore::TextCodecUserDefined::registerCodecs): * platform/text/mac/LocaleMac.mm: (WebCore::Locale::create): * platform/text/win/LocaleWin.cpp: (WebCore::Locale::create): * platform/text/win/TextCodecWin.cpp: (WebCore::newTextCodecWin): * platform/vr/openvr/VRPlatformManagerOpenVR.cpp: (WebCore::VRPlatformManagerOpenVR::create): (WebCore::VRPlatformManagerOpenVR::getVRDisplays): * platform/win/PasteboardWin.cpp: (WebCore::Pasteboard::createForCopyAndPaste): (WebCore::Pasteboard::createForDragAndDrop): * platform/win/SearchPopupMenuDB.cpp: (WebCore::SearchPopupMenuDB::createPreparedStatement): * platform/win/WCDataObject.cpp: (WebCore::WCDataObject::SetData): * rendering/CSSFilter.cpp: (WebCore::CSSFilter::buildReferenceFilter): * rendering/ComplexLineLayout.cpp: (WebCore::createRun): (WebCore::ComplexLineLayout::createRootInlineBox): (WebCore::ComplexLineLayout::handleTrailingSpaces): (WebCore::ComplexLineLayout::linkToEndLineIfNeeded): * rendering/FloatingObjects.cpp: (WebCore::FloatingObject::create): (WebCore::FloatingObject::copyToNewContainer const): (WebCore::FloatingObject::cloneForNewParent const): (WebCore::FloatingObjects::computePlacedFloatsTree): * rendering/Grid.cpp: (WebCore::GridIterator::nextEmptyGridArea): * rendering/GridBaselineAlignment.cpp: (WebCore::GridBaselineAlignment::updateBaselineAlignmentContext): * rendering/GridTrackSizingAlgorithm.cpp: (WebCore::GridTrackSizingAlgorithm::computeFlexFactorUnitSize const): (WebCore::GridTrackSizingAlgorithm::setup): * rendering/HitTestResult.cpp: (WebCore::HitTestResult::HitTestResult): (WebCore::HitTestResult::operator=): (WebCore::HitTestResult::listBasedTestResult const): (WebCore::HitTestResult::mutableListBasedTestResult): * rendering/InlineIterator.h: (WebCore::addPlaceholderRunForIsolatedInline): * rendering/LayerOverlapMap.cpp: (WebCore::LayerOverlapMap::pushCompositingContainer): * rendering/RenderBlock.cpp: (WebCore::insertIntoTrackedRendererMaps): (WebCore::PositionedDescendantsMap::addDescendant): (WebCore::RenderBlock::beginUpdateScrollInfoAfterLayoutTransaction): (WebCore::ensureBlockRareData): * rendering/RenderBlockFlow.cpp: (WebCore::RenderBlockFlow::layoutInlineChildren): (WebCore::RenderBlockFlow::layoutLineGridBox): (WebCore::RenderBlockFlow::createFloatingObjects): (WebCore::RenderBlockFlow::ensureLineBoxes): (WebCore::RenderBlockFlow::materializeRareBlockFlowData): * rendering/RenderBox.cpp: (WebCore::controlStatesForRenderer): (WebCore::RenderBox::createInlineBox): * rendering/RenderBoxModelObject.cpp: (WebCore::RenderBoxModelObject::ensureContinuationChainNode): * rendering/RenderCounter.cpp: (WebCore::makeCounterNode): * rendering/RenderFragmentContainer.cpp: (WebCore::RenderFragmentContainer::setRenderBoxFragmentInfo): * rendering/RenderFragmentedFlow.cpp: (WebCore::RenderFragmentedFlow::containingFragmentMap): * rendering/RenderGeometryMap.cpp: (WebCore::RenderGeometryMap::push): (WebCore::RenderGeometryMap::pushView): * rendering/RenderGrid.cpp: (WebCore::RenderGrid::computeEmptyTracksForAutoRepeat const): (WebCore::RenderGrid::createEmptyGridAreaAtSpecifiedPositionsOutsideGrid const): * rendering/RenderImage.cpp: (WebCore::RenderImage::RenderImage): * rendering/RenderInline.cpp: (WebCore::RenderInline::createInlineFlowBox): * rendering/RenderLayer.cpp: (WebCore::RenderLayer::updateNormalFlowList): (WebCore::RenderLayer::collectLayers): (WebCore::RenderLayer::updateTransform): (WebCore::RenderLayer::updateClipRects): (WebCore::RenderLayer::calculateClipRects const): * rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateAncestorClippingStack): (WebCore::RenderLayerBacking::startAnimation): (WebCore::RenderLayerBacking::startTransition): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::RenderLayerCompositor): (WebCore::RenderLayerCompositor::notifyFlushBeforeDisplayRefresh): (WebCore::LegacyWebKitScrollingLayerCoordinator::registerAllViewportConstrainedLayers): * rendering/RenderLayerModelObject.cpp: (WebCore::RenderLayerModelObject::createLayer): * rendering/RenderLineBreak.cpp: (WebCore::RenderLineBreak::createInlineBox): * rendering/RenderMultiColumnFlow.cpp: (WebCore::RenderMultiColumnFlow::RenderMultiColumnFlow): * rendering/RenderObject.cpp: (WebCore::RenderObject::ensureRareData): * rendering/RenderSnapshottedPlugIn.cpp: (WebCore::RenderSnapshottedPlugIn::RenderSnapshottedPlugIn): * rendering/RenderTable.cpp: (WebCore::RenderTable::styleDidChange): * rendering/RenderText.cpp: (WebCore::RenderText::createTextBox): (WebCore::RenderText::momentarilyRevealLastTypedCharacter): * rendering/RenderView.cpp: (WebCore::RenderView::repaintViewRectangle const): (WebCore::RenderView::compositor): (WebCore::RenderView::imageQualityController): (WebCore::RenderView::RepaintRegionAccumulator::RepaintRegionAccumulator): * rendering/RootInlineBox.cpp: (WebCore::RootInlineBox::placeEllipsis): * rendering/RootInlineBox.h: (WebCore::RootInlineBox::appendFloat): * rendering/SelectionRangeData.cpp: (WebCore::collect): (WebCore::SelectionRangeData::collectBounds const): (WebCore::SelectionRangeData::apply): * rendering/SimpleLineLayout.cpp: (WebCore::SimpleLineLayout::Layout::runResolver const): * rendering/SimpleLineLayoutFunctions.cpp: (WebCore::SimpleLineLayout::paintFlow): (WebCore::SimpleLineLayout::generateLineBoxTree): * rendering/TextAutoSizing.cpp: (WebCore::TextAutoSizing::addTextNode): * rendering/line/LineBreaker.cpp: (WebCore::LineBreaker::skipLeadingWhitespace): * rendering/shapes/RasterShape.cpp: (WebCore::RasterShapeIntervals::computeShapeMarginIntervals const): * rendering/shapes/Shape.cpp: (WebCore::createInsetShape): (WebCore::createCircleShape): (WebCore::createEllipseShape): (WebCore::createPolygonShape): (WebCore::Shape::createShape): (WebCore::Shape::createRasterShape): (WebCore::Shape::createBoxShape): * rendering/shapes/ShapeOutsideInfo.h: * rendering/style/BasicShapes.cpp: (WebCore::BasicShapePath::blend const): * rendering/style/ContentData.h: * rendering/style/FillLayer.cpp: (WebCore::FillLayer::FillLayer): (WebCore::FillLayer::operator=): * rendering/style/RenderStyle.cpp: (WebCore::RenderStyle::clonePtr): (WebCore::RenderStyle::addCachedPseudoStyle): (WebCore::RenderStyle::addCustomPaintWatchProperty): (WebCore::RenderStyle::setContent): (WebCore::RenderStyle::accessCounterDirectives): (WebCore::RenderStyle::ensureAnimations): (WebCore::RenderStyle::ensureTransitions): * rendering/style/SVGRenderStyleDefs.cpp: (WebCore::StyleShadowSVGData::StyleShadowSVGData): * rendering/style/ShadowData.cpp: (WebCore::ShadowData::ShadowData): * rendering/style/StyleRareInheritedData.cpp: (WebCore::StyleRareInheritedData::StyleRareInheritedData): * rendering/style/StyleRareNonInheritedData.cpp: (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData): * rendering/svg/RenderSVGImage.cpp: (WebCore::RenderSVGImage::RenderSVGImage): * rendering/svg/RenderSVGInline.cpp: (WebCore::RenderSVGInline::createInlineFlowBox): * rendering/svg/RenderSVGInlineText.cpp: (WebCore::RenderSVGInlineText::createTextBox): * rendering/svg/RenderSVGResourceFilter.cpp: (WebCore::RenderSVGResourceFilter::buildPrimitives const): (WebCore::RenderSVGResourceFilter::applyResource): * rendering/svg/RenderSVGResourceGradient.cpp: (WebCore::RenderSVGResourceGradient::applyResource): * rendering/svg/RenderSVGResourceMasker.cpp: (WebCore::RenderSVGResourceMasker::applyResource): * rendering/svg/RenderSVGResourcePattern.cpp: (WebCore::RenderSVGResourcePattern::buildPattern): * rendering/svg/RenderSVGShape.cpp: (WebCore::RenderSVGShape::updateShapeFromElement): * rendering/svg/SVGResources.cpp: (WebCore::SVGResources::setClipper): (WebCore::SVGResources::setFilter): (WebCore::SVGResources::setMarkerStart): (WebCore::SVGResources::setMarkerMid): (WebCore::SVGResources::setMarkerEnd): (WebCore::SVGResources::setMasker): (WebCore::SVGResources::setFill): (WebCore::SVGResources::setStroke): * rendering/svg/SVGResourcesCache.cpp: (WebCore::SVGResourcesCache::addResourcesFromRenderer): * rendering/svg/SVGTextMetricsBuilder.cpp: (WebCore::SVGTextMetricsBuilder::initializeMeasurementWithTextRenderer): * rendering/updating/RenderTreeBuilder.cpp: (WebCore::RenderTreeBuilder::RenderTreeBuilder): * rendering/updating/RenderTreeUpdater.cpp: (WebCore::RenderTreeUpdater::RenderTreeUpdater): * style/StyleInvalidator.cpp: (WebCore::Style::Invalidator::Invalidator): * style/StyleRelations.cpp: (WebCore::Style::commitRelationsToRenderStyle): * style/StyleScope.cpp: (WebCore::Style::Scope::resolver): (WebCore::Style::Scope::activeStyleSheetsContains const): * style/StyleTreeResolver.cpp: (WebCore::Style::TreeResolver::resolve): * svg/SVGDocumentExtensions.cpp: (WebCore::SVGDocumentExtensions::SVGDocumentExtensions): (WebCore::SVGDocumentExtensions::addPendingResource): (WebCore::SVGDocumentExtensions::addElementReferencingTarget): * svg/SVGElement.cpp: (WebCore::SVGElement::SVGElement): (WebCore::SVGElement::ensureSVGRareData): * svg/SVGGraphicsElement.cpp: (WebCore::SVGGraphicsElement::supplementalTransform): * svg/SVGPathByteStream.h: (WebCore::SVGPathByteStream::copy const): * svg/animation/SMILTimeContainer.cpp: (WebCore::SMILTimeContainer::schedule): * svg/graphics/SVGImage.cpp: (WebCore::SVGImage::dataChanged): * svg/properties/SVGAnimatedDecoratedProperty.h: (WebCore::SVGAnimatedDecoratedProperty::create): * svg/properties/SVGAnimatedPropertyAnimatorImpl.h: * svg/properties/SVGAnimatedPropertyPairAnimatorImpl.h: * svg/properties/SVGDecoratedEnumeration.h: (WebCore::SVGDecoratedEnumeration::create): * svg/properties/SVGPrimitivePropertyAnimator.h: (WebCore::SVGPrimitivePropertyAnimator::create): * svg/properties/SVGValuePropertyAnimatorImpl.h: * svg/properties/SVGValuePropertyListAnimatorImpl.h: * testing/InternalSettings.cpp: (WebCore::InternalSettings::from): * testing/Internals.cpp: (WebCore::InspectorStubFrontend::InspectorStubFrontend): (WebCore::Internals::Internals): (WebCore::Internals::enableMockSpeechSynthesizer): (WebCore::Internals::openDummyInspectorFrontend): (WebCore::Internals::setPrinting): (WebCore::Internals::initializeMockCDM): (WebCore::Internals::queueMicroTask): * testing/LegacyMockCDM.cpp: (WebCore::LegacyMockCDM::createSession): * testing/MockCDMFactory.cpp: (WebCore::MockCDMFactory::createCDM): * testing/MockContentFilter.cpp: (WebCore::MockContentFilter::create): * testing/MockGamepadProvider.cpp: (WebCore::MockGamepadProvider::setMockGamepadDetails): * workers/WorkerConsoleClient.cpp: (WebCore::WorkerConsoleClient::messageWithTypeAndLevel): * workers/WorkerEventQueue.cpp: (WebCore::WorkerEventQueue::enqueueEvent): * workers/WorkerGlobalScope.cpp: (WebCore::WorkerGlobalScope::WorkerGlobalScope): (WebCore::WorkerGlobalScope::addMessage): * workers/WorkerMessagingProxy.cpp: (WebCore::WorkerMessagingProxy::WorkerMessagingProxy): (WebCore::WorkerMessagingProxy::postMessageToWorkerGlobalScope): * workers/WorkerRunLoop.cpp: (WebCore::WorkerRunLoop::WorkerRunLoop): (WebCore::WorkerRunLoop::postTaskAndTerminate): (WebCore::WorkerRunLoop::postTaskForMode): * workers/WorkerScriptLoader.cpp: (WebCore::WorkerScriptLoader::loadAsynchronously): (WebCore::WorkerScriptLoader::createResourceRequest): * workers/WorkerThread.cpp: (WebCore::WorkerThread::WorkerThread): * workers/service/ServiceWorkerContainer.cpp: (WebCore::ServiceWorkerContainer::ready): (WebCore::ServiceWorkerContainer::addRegistration): (WebCore::ServiceWorkerContainer::removeRegistration): (WebCore::ServiceWorkerContainer::updateRegistration): (WebCore::ServiceWorkerContainer::getRegistration): (WebCore::ServiceWorkerContainer::getRegistrations): * workers/service/context/SWContextManager.cpp: (WebCore::SWContextManager::terminateWorker): * workers/service/context/ServiceWorkerThreadProxy.cpp: (WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy): (WebCore::ServiceWorkerThreadProxy::createBlobLoader): * workers/service/server/RegistrationDatabase.cpp: (WebCore::RegistrationDatabase::openSQLiteDatabase): * workers/service/server/SWServer.cpp: (WebCore::SWServer::addRegistrationFromStore): (WebCore::SWServer::SWServer): (WebCore::SWServer::scheduleJob): (WebCore::SWServer::unregisterServiceWorkerClient): * workers/service/server/SWServerJobQueue.cpp: (WebCore::SWServerJobQueue::runRegisterJob): * worklets/PaintWorkletGlobalScope.cpp: (WebCore::PaintWorkletGlobalScope::registerPaint): * worklets/WorkletConsoleClient.cpp: (WebCore::WorkletConsoleClient::messageWithTypeAndLevel): * worklets/WorkletGlobalScope.cpp: (WebCore::WorkletGlobalScope::WorkletGlobalScope): (WebCore::WorkletGlobalScope::addConsoleMessage): * worklets/WorkletScriptController.cpp: (WebCore::WorkletScriptController::initScriptWithSubclass): * xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::upload): * xml/XPathFunctions.cpp: * xml/XPathPredicate.cpp: (WebCore::XPath::evaluatePredicate): * xml/XSLStyleSheetLibxslt.cpp: (WebCore::XSLStyleSheet::loadChildSheet): * xml/parser/XMLDocumentParser.cpp: (WebCore::XMLDocumentParser::handleError): * xml/parser/XMLDocumentParserLibxml2.cpp: (WebCore::PendingCallbacks::appendStartElementNSCallback): (WebCore::PendingCallbacks::appendEndElementNSCallback): (WebCore::PendingCallbacks::appendCharactersCallback): (WebCore::PendingCallbacks::appendProcessingInstructionCallback): (WebCore::PendingCallbacks::appendCDATABlockCallback): (WebCore::PendingCallbacks::appendCommentCallback): (WebCore::PendingCallbacks::appendInternalSubsetCallback): (WebCore::PendingCallbacks::appendErrorCallback): (WebCore::XMLDocumentParser::XMLDocumentParser): (WebCore::XMLDocumentParser::doEnd): Source/WebCore/PAL: Reviewed by Geoffrey Garen. * pal/crypto/openssl/CryptoDigestOpenSSL.cpp: (PAL::CryptoDigestContextImpl::create): * pal/system/ClockGeneric.cpp: (PAL::Clock::create): * pal/system/mac/ClockCM.mm: (Clock::create): Source/WebDriver: Reviewed by Geoffrey Garen. * WebDriverService.cpp: (WebDriver::WebDriverService::connectToBrowser): * glib/SessionHostGlib.cpp: (WebDriver::SessionHost::launchBrowser): (WebDriver::SessionHost::sendMessageToBackend): Source/WebKit: Reviewed by Geoffrey Garen. * NetworkProcess/Classifier/ResourceLoadStatisticsPersistentStorage.cpp: (WebKit::ResourceLoadStatisticsPersistentStorage::startMonitoringDisk): (WebKit::ResourceLoadStatisticsPersistentStorage::monitorDirectoryForNewStatistics): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore): * NetworkProcess/CustomProtocols/soup/LegacyCustomProtocolManagerSoup.cpp: * NetworkProcess/Downloads/DownloadManager.cpp: (WebKit::DownloadManager::startDownload): (WebKit::DownloadManager::convertNetworkLoadToDownload): (WebKit::DownloadManager::resumeDownload): * NetworkProcess/Downloads/DownloadMap.cpp: (WebKit::DownloadMap::add): * NetworkProcess/Downloads/PendingDownload.cpp: (WebKit::PendingDownload::PendingDownload): * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::establishSWServerConnection): * NetworkProcess/NetworkContentRuleListManager.cpp: (WebKit::NetworkContentRuleListManager::addContentRuleLists): * NetworkProcess/NetworkDataTaskBlob.cpp: (WebKit::NetworkDataTaskBlob::NetworkDataTaskBlob): (WebKit::NetworkDataTaskBlob::download): * NetworkProcess/NetworkHTTPSUpgradeChecker.cpp: (WebKit::NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker): * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::didReceiveResponse): * NetworkProcess/NetworkLoadChecker.cpp: (WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight): (WebKit::NetworkLoadChecker::contentSecurityPolicy): * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::switchToNewTestingSession): (WebKit::NetworkProcess::ensureSession): (WebKit::NetworkProcess::swServerForSession): (WebKit::NetworkProcess::initializeQuotaUsers): (WebKit::NetworkProcess::storageQuotaManager): * NetworkProcess/NetworkProcess.h: (WebKit::NetworkProcess::addSupplement): * NetworkProcess/NetworkResourceLoader.cpp: (WebKit::m_shouldCaptureExtraNetworkLoadMetrics): (WebKit::NetworkResourceLoader::startNetworkLoad): * NetworkProcess/NetworkSocketChannel.cpp: (WebKit::NetworkSocketChannel::create): * NetworkProcess/PreconnectTask.cpp: * NetworkProcess/WebStorage/LocalStorageDatabase.cpp: (WebKit::LocalStorageDatabase::scheduleDatabaseUpdate): * NetworkProcess/WebStorage/LocalStorageNamespace.cpp: (WebKit::LocalStorageNamespace::getOrCreateStorageArea): * NetworkProcess/WebStorage/SessionStorageNamespace.cpp: (WebKit::SessionStorageNamespace::getOrCreateStorageArea): * NetworkProcess/WebStorage/StorageArea.cpp: (WebKit::StorageArea::clone const): * NetworkProcess/WebStorage/StorageManager.cpp: (WebKit::StorageManager::createSessionStorageNamespace): (WebKit::StorageManager::getOrCreateLocalStorageNamespace): (WebKit::StorageManager::getOrCreateTransientLocalStorageNamespace): (WebKit::StorageManager::getOrCreateSessionStorageNamespace): * NetworkProcess/WebStorage/StorageManagerSet.cpp: (WebKit::StorageManagerSet::add): * NetworkProcess/WebStorage/TransientLocalStorageNamespace.cpp: (WebKit::TransientLocalStorageNamespace::getOrCreateStorageArea): * NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::Cache::Cache): (WebKit::NetworkCache::Cache::makeEntry): (WebKit::NetworkCache::Cache::makeRedirectEntry): (WebKit::NetworkCache::Cache::update): * NetworkProcess/cache/NetworkCacheEntry.cpp: (WebKit::NetworkCache::Entry::decodeStorageRecord): * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: (WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad): * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: (WebKit::NetworkCache::SpeculativeLoadManager::PendingFrameLoad::registerSubresourceLoad): (WebKit::NetworkCache::SpeculativeLoadManager::retrieve): (WebKit::NetworkCache::SpeculativeLoadManager::addPreloadedEntry): (WebKit::NetworkCache::SpeculativeLoadManager::satisfyPendingRequests): (WebKit::NetworkCache::SpeculativeLoadManager::revalidateSubresource): (WebKit::NetworkCache::SpeculativeLoadManager::startSpeculativeRevalidation): * NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::Storage::synchronize): (WebKit::NetworkCache::Storage::readRecord): (WebKit::NetworkCache::retrieveFromMemory): (WebKit::NetworkCache::Storage::retrieve): (WebKit::NetworkCache::Storage::store): (WebKit::NetworkCache::Storage::traverse): * NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp: (WebKit::NetworkCache::SubresourcesEntry::decodeStorageRecord): * NetworkProcess/cache/PrefetchCache.cpp: (WebKit::PrefetchCache::store): (WebKit::PrefetchCache::storeRedirect): * NetworkProcess/cocoa/NetworkProcessCocoa.mm: (WebKit::NetworkProcess::platformCreateDefaultStorageSession const): (WebKit::NetworkProcess::networkHTTPSUpgradeChecker): * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:dataTask:didBecomeDownloadTask:]): (WebKit::NetworkSessionCocoa::create): (WebKit::NetworkSessionCocoa::createWebSocketTask): * NetworkProcess/curl/NetworkProcessCurl.cpp: (WebKit::NetworkProcess::platformCreateDefaultStorageSession const): * NetworkProcess/curl/NetworkSessionCurl.h: * NetworkProcess/ios/NetworkConnectionToWebProcessIOS.mm: (WebKit::NetworkConnectionToWebProcess::paymentCoordinator): (WebKit::NetworkConnectionToWebProcess::paymentCoordinatorAuthorizationPresenter): * NetworkProcess/soup/NetworkDataTaskSoup.cpp: (WebKit::NetworkDataTaskSoup::download): * NetworkProcess/soup/NetworkProcessSoup.cpp: (WebKit::NetworkProcess::platformCreateDefaultStorageSession const): * NetworkProcess/soup/NetworkSessionSoup.cpp: (WebKit::NetworkSessionSoup::NetworkSessionSoup): (WebKit::NetworkSessionSoup::createWebSocketTask): * NetworkProcess/soup/NetworkSessionSoup.h: * NetworkProcess/soup/WebKitSoupRequestInputStream.cpp: (webkitSoupRequestInputStreamReadAsync): * NetworkProcess/webrtc/NetworkMDNSRegister.cpp: (WebKit::NetworkMDNSRegister::registerMDNSName): * NetworkProcess/webrtc/NetworkRTCMonitor.cpp: (WebKit::NetworkRTCMonitor::startUpdating): * NetworkProcess/webrtc/NetworkRTCProvider.cpp: (WebKit::NetworkRTCProvider::NetworkRTCProvider): (WebKit::NetworkRTCProvider::createSocket): (WebKit::NetworkRTCProvider::wrapNewTCPConnection): * Platform/IPC/Connection.cpp: (IPC::Connection::dispatchWorkQueueMessageReceiverMessage): (IPC::Connection::createSyncMessageEncoder): (IPC::Connection::enableIncomingMessagesThrottling): (IPC::Connection::dispatchSyncMessage): * Platform/IPC/Connection.h: (IPC::Connection::send): (IPC::Connection::sendWithAsyncReply): * Platform/IPC/Decoder.cpp: (IPC::Decoder::unwrapForTesting): * Platform/IPC/HandleMessage.h: (IPC::handleMessageAsync): * Platform/IPC/MessageSender.h: * Platform/IPC/cocoa/ConnectionCocoa.mm: (IPC::ConnectionTerminationWatchdog::ConnectionTerminationWatchdog): (IPC::Connection::open): (IPC::createMessageDecoder): (IPC::Connection::receiveSourceEventHandler): * Platform/IPC/unix/ConnectionUnix.cpp: (IPC::Connection::processMessage): (IPC::Connection::sendOutputMessage): * Platform/IPC/win/ConnectionWin.cpp: (IPC::Connection::readEventHandler): * Platform/mac/LayerHostingContext.mm: (WebKit::LayerHostingContext::createForPort): (WebKit::LayerHostingContext::createForExternalHostingProcess): (WebKit::LayerHostingContext::createForExternalPluginHostingProcess): * PluginProcess/WebProcessConnection.cpp: (WebKit::WebProcessConnection::createPluginInternal): * Shared/API/APIURL.h: (API::URL::create): (API::URL::parseURLIfNecessary const): * Shared/API/Cocoa/RemoteObjectInvocation.mm: (WebKit::RemoteObjectInvocation::decode): * Shared/API/Cocoa/_WKRemoteObjectRegistry.mm: (-[_WKRemoteObjectRegistry _initWithWebPage:]): (-[_WKRemoteObjectRegistry _initWithWebPageProxy:]): (-[_WKRemoteObjectRegistry _sendInvocation:interface:]): * Shared/API/glib/WebKitContextMenuItem.cpp: (webkitContextMenuItemCreate): (webkit_context_menu_item_new): (webkit_context_menu_item_new_from_gaction): (webkit_context_menu_item_new_from_stock_action): (webkit_context_menu_item_new_from_stock_action_with_label): (webkit_context_menu_item_new_with_submenu): (webkit_context_menu_item_new_separator): * Shared/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm: (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI): * Shared/Cocoa/SandboxExtensionCocoa.mm: (WebKit::SandboxExtension::Handle::decode): * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp: (WebKit::texmapLayer): (WebKit::CoordinatedGraphicsScene::ensureRootLayer): * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp: (WebKit::ThreadedCompositor::ThreadedCompositor): * Shared/Plugins/NPRemoteObjectMap.cpp: (WebKit::NPRemoteObjectMap::registerNPObject): * Shared/Plugins/Netscape/NetscapePluginModule.cpp: (WebKit::NetscapePluginModule::tryLoad): * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm: (WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties): (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode): (WebKit::RemoteLayerTreeTransaction::decode): * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp: (WebKit::RemoteScrollingCoordinatorTransaction::decode): * Shared/cairo/ShareableBitmapCairo.cpp: (WebKit::ShareableBitmap::createGraphicsContext): * Shared/cg/ShareableBitmapCG.cpp: (WebKit::ShareableBitmap::createGraphicsContext): * Shared/win/ShareableBitmapDirect2D.cpp: (WebKit::ShareableBitmap::createGraphicsContext): * UIProcess/API/APIHTTPCookieStore.cpp: (API::HTTPCookieStore::registerObserver): * UIProcess/API/C/WKContext.cpp: (WKContextSetInjectedBundleClient): (WKContextSetHistoryClient): (WKContextSetDownloadClient): * UIProcess/API/C/WKGeolocationManager.cpp: (WKGeolocationManagerSetProvider): * UIProcess/API/C/WKNotificationManager.cpp: (WKNotificationManagerSetProvider): * UIProcess/API/C/WKPage.cpp: (WKPageSetPageContextMenuClient): (WKPageSetPageDiagnosticLoggingClient): (WKPageSetPageFindClient): (WKPageSetPageFindMatchesClient): (WKPageSetPageFormClient): (WKPageSetPageLoaderClient): (WKPageSetPagePolicyClient): (WKPageSetPageUIClient): (WKPageSetPageStateClient): * UIProcess/API/C/mac/WKPagePrivateMac.mm: (-[WKObservablePageState initWithPage:]): * UIProcess/API/C/wpe/WKView.cpp: (WKViewSetViewClient): * UIProcess/API/Cocoa/WKBrowsingContextController.mm: (-[WKBrowsingContextController _initWithPageRef:]): * UIProcess/API/Cocoa/WKHTTPCookieStore.mm: (-[WKHTTPCookieStore addObserver:]): * UIProcess/API/Cocoa/WKProcessPool.mm: (-[WKProcessPool _setDownloadDelegate:]): (-[WKProcessPool _setAutomationDelegate:]): * UIProcess/API/Cocoa/WKUserContentController.mm: (-[WKUserContentController addScriptMessageHandler:name:]): (-[WKUserContentController _addScriptMessageHandler:name:userContentWorld:]): * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): (-[WKWebView setAllowsBackForwardNavigationGestures:]): (-[WKWebView _setInputDelegate:]): * UIProcess/API/Cocoa/_WKAutomationSession.mm: (-[_WKAutomationSession setDelegate:]): * UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm: (-[_WKRemoteWebInspectorViewController init]): * UIProcess/API/glib/IconDatabase.cpp: (WebKit::readySQLiteStatement): * UIProcess/API/glib/WebKitAutomationSession.cpp: (webkitAutomationSessionConstructed): * UIProcess/API/glib/WebKitContextMenuClient.cpp: (attachContextMenuClientToView): * UIProcess/API/glib/WebKitCustomProtocolManagerClient.cpp: (attachCustomProtocolManagerClientToContext): * UIProcess/API/glib/WebKitDownloadClient.cpp: (attachDownloadClientToContext): * UIProcess/API/glib/WebKitFaviconDatabase.cpp: (webkitFaviconDatabaseOpen): * UIProcess/API/glib/WebKitFindController.cpp: (webkitFindControllerConstructed): * UIProcess/API/glib/WebKitFormClient.cpp: (attachFormClientToView): * UIProcess/API/glib/WebKitGeolocationManager.cpp: (webkitGeolocationManagerCreate): * UIProcess/API/glib/WebKitIconLoadingClient.cpp: (attachIconLoadingClientToView): * UIProcess/API/glib/WebKitInjectedBundleClient.cpp: (attachInjectedBundleClientToContext): * UIProcess/API/glib/WebKitNotificationProvider.cpp: (WebKitNotificationProvider::WebKitNotificationProvider): * UIProcess/API/glib/WebKitUIClient.cpp: (attachUIClientToView): * UIProcess/API/glib/WebKitUserContentManager.cpp: (webkit_user_content_manager_register_script_message_handler): (webkit_user_content_manager_register_script_message_handler_in_world): * UIProcess/API/glib/WebKitWebContext.cpp: (webkitWebContextConstructed): (webkit_web_context_set_automation_allowed): * UIProcess/API/glib/WebKitWebView.cpp: (webkitWebViewConstructed): * UIProcess/API/gtk/PageClientImpl.cpp: (WebKit::PageClientImpl::createDrawingAreaProxy): * UIProcess/API/gtk/WebKitEmojiChooser.cpp: (webkitEmojiChooserSetupEmojiSections): * UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp: (WebKit::RemoteInspectorProtocolHandler::handleRequest): * UIProcess/API/gtk/WebKitWebInspector.cpp: (webkitWebInspectorCreate): * UIProcess/API/gtk/WebKitWebViewBase.cpp: (webkitWebViewBaseConstructed): (webkitWebViewBaseGestureController): (webkitWebViewBaseDragAndDropHandler): (webkitWebViewBaseDidRelaunchWebProcess): * UIProcess/API/mac/WKView.mm: (-[WKView maybeInstallIconLoadingClient]): (-[WKView initWithFrame:processPool:configuration:]): * UIProcess/API/wpe/PageClientImpl.cpp: (WebKit::PageClientImpl::PageClientImpl): (WebKit::PageClientImpl::createDrawingAreaProxy): * UIProcess/API/wpe/WPEView.cpp: (WKWPE::View::View): (WKWPE::View::setClient): * UIProcess/API/wpe/qt/WPEQtView.cpp: (WPEQtView::notifyLoadChangedCallback): (WPEQtView::notifyLoadFailedCallback): (WPEQtView::runJavaScript): * UIProcess/API/wpe/qt/WPEQtViewBackend.cpp: (WPEQtViewBackend::create): * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::WebAutomationSession): * UIProcess/AuxiliaryProcessProxy.h: (WebKit::AuxiliaryProcessProxy::send): * UIProcess/Cocoa/IconLoadingDelegate.mm: (WebKit::IconLoadingDelegate::createIconLoadingClient): * UIProcess/Cocoa/UIDelegate.mm: (WebKit::UIDelegate::createContextMenuClient): (WebKit::UIDelegate::createUIClient): * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp: (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints): * UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformInitialize): (WebKit::WebProcessPool::startDisplayLink): * UIProcess/Cocoa/WebProcessProxyCocoa.mm: (WebKit::WebProcessProxy::processWasUnexpectedlyUnsuspended): * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::WebViewImpl): (WebKit::WebViewImpl::createDrawingAreaProxy): (WebKit::WebViewImpl::setTextIndicator): (WebKit::WebViewImpl::ensureGestureController): * UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp: (WebKit::DrawingAreaProxyCoordinatedGraphics::incorporateUpdate): (WebKit::DrawingAreaProxyCoordinatedGraphics::dispatchAfterEnsuringDrawing): * UIProcess/DeviceIdHashSaltStorage.cpp: (WebKit::DeviceIdHashSaltStorage::getDataFromDecoder const): (WebKit::DeviceIdHashSaltStorage::completeDeviceIdHashSaltForOriginCall): * UIProcess/Downloads/DownloadProxyMap.cpp: (WebKit::DownloadProxyMap::createDownloadProxy): * UIProcess/Gamepad/UIGamepadProvider.cpp: (WebKit::UIGamepadProvider::setInitialConnectedGamepads): (WebKit::UIGamepadProvider::platformGamepadConnected): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::createDownloadProxy): (WebKit::NetworkProcessProxy::takeUploadAssertion): * UIProcess/Notifications/WebNotificationManagerProxy.cpp: (WebKit::WebNotificationManagerProxy::WebNotificationManagerProxy): (WebKit::WebNotificationManagerProxy::setProvider): * UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp: (WebKit::pluginRequiresGtk2): * UIProcess/ProcessThrottler.cpp: (WebKit::ProcessThrottler::didConnectToProcess): * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy): (WebKit::RemoteLayerTreeDrawingAreaProxy::initializeDebugIndicator): * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm: (WebKit::RemoteLayerTreeHost::makeNode): * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm: (WebKit::RemoteLayerTreeNode::createWithPlainLayer): * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm: (WebKit::RemoteLayerTreeHost::makeNode): * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm: (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateBeforeChildren): * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm: (WebKit::ScrollingTreeOverflowScrollingNodeIOS::ScrollingTreeOverflowScrollingNodeIOS): * UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.cpp: (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::ScrollingTreeFrameScrollingNodeRemoteMac): * UIProcess/RemoteLayerTree/mac/ScrollingTreeOverflowScrollingNodeRemoteMac.cpp: (WebKit::ScrollingTreeOverflowScrollingNodeRemoteMac::ScrollingTreeOverflowScrollingNodeRemoteMac): * UIProcess/WebAuthentication/Cocoa/HidService.mm: (WebKit::HidService::deviceAdded): * UIProcess/WebGeolocationManagerProxy.cpp: (WebKit::WebGeolocationManagerProxy::WebGeolocationManagerProxy): (WebKit::WebGeolocationManagerProxy::setProvider): * UIProcess/WebMediaSessionFocusManager.cpp: (WebKit::WebMediaSessionFocusManager::setFocusedMediaElement): * UIProcess/WebPageInspectorController.cpp: (WebKit::WebPageInspectorController::WebPageInspectorController): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::WebPageProxy): (WebKit::m_resetRecentCrashCountTimer): (WebKit::WebPageProxy::setFormClient): (WebKit::WebPageProxy::setUIClient): (WebKit::WebPageProxy::setIconLoadingClient): (WebKit::WebPageProxy::setFindClient): (WebKit::WebPageProxy::setFindMatchesClient): (WebKit::WebPageProxy::setContextMenuClient): (WebKit::WebPageProxy::setInjectedBundleClient): (WebKit::WebPageProxy::suspendCurrentPageIfPossible): (WebKit::WebPageProxy::didAttachToRunningProcess): (WebKit::WebPageProxy::setDrawingArea): (WebKit::WebPageProxy::close): (WebKit::WebPageProxy::loadData): (WebKit::WebPageProxy::handleWheelEvent): (WebKit::WebPageProxy::processNextQueuedWheelEvent): (WebKit::WebPageProxy::continueNavigationInNewProcess): (WebKit::WebPageProxy::setFullscreenClient): (WebKit::WebPageProxy::userMediaPermissionRequestManager): (WebKit::WebPageProxy::setScrollPerformanceDataCollectionEnabled): (WebKit::WebPageProxy::speechSynthesisData): * UIProcess/WebProcessCache.cpp: (WebKit::WebProcessCache::addProcessIfPossible): * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::WebProcessPool): (WebKit::WebProcessPool::setInjectedBundleClient): (WebKit::WebProcessPool::setHistoryClient): (WebKit::WebProcessPool::setDownloadClient): (WebKit::WebProcessPool::setAutomationClient): (WebKit::WebProcessPool::setLegacyCustomProtocolManagerClient): (WebKit::WebProcessPool::ensureNetworkProcess): (WebKit::WebProcessPool::didCollectPrewarmInformation): (WebKit::WebProcessPool::setWebProcessHasUploads): (WebKit::WebProcessPool::setWebProcessIsPlayingAudibleMedia): * UIProcess/WebProcessProxy.cpp: * UIProcess/cairo/BackingStoreCairo.cpp: (WebKit::BackingStore::createBackend): * UIProcess/glib/RemoteInspectorClient.cpp: (WebKit::RemoteInspectorClient::inspect): * UIProcess/gtk/AcceleratedBackingStoreWayland.cpp: (WebKit::AcceleratedBackingStoreWayland::checkRequirements): * UIProcess/gtk/DragAndDropHandler.cpp: (WebKit::DragAndDropHandler::dragDataSelection): * UIProcess/gtk/WaylandCompositor.cpp: (WebKit::WaylandCompositor::initializeEGL): * UIProcess/ios/EditableImageController.mm: (WebKit::EditableImageController::ensureEditableImage): * UIProcess/ios/WKApplicationStateTrackingView.mm: (-[WKApplicationStateTrackingView didMoveToWindow]): * UIProcess/ios/WKContentView.mm: (-[WKContentView _commonInitializationWithProcessPool:configuration:]): (-[WKContentView initWithFrame:processPool:configuration:webView:]): (-[WKContentView _createDrawingAreaProxy:]): * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView setupInteraction]): (-[WKContentView becomeFirstResponderForWebView]): (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]): * UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::elementDidFocus): (WebKit::WebPageProxy::paymentCoordinatorAuthorizationPresenter): * UIProcess/mac/PageClientImplMac.mm: (WebKit::PageClientImpl::PageClientImpl): * UIProcess/mac/WKFullScreenWindowController.mm: (-[WKFullScreenWindowController initWithWindow:webView:page:]): * UIProcess/mac/WKTextFinderClient.mm: (-[WKTextFinderClient initWithPage:view:usePlatformFindUI:]): * UIProcess/socket/RemoteInspectorClient.cpp: (WebKit::RemoteInspectorClient::inspect): * UIProcess/socket/RemoteInspectorProtocolHandler.cpp: (WebKit::RemoteInspectorProtocolHandler::platformStartTask): * UIProcess/win/BackingStoreDirect2D.cpp: (WebKit::BackingStore::createBackend): * UIProcess/win/PageClientImpl.cpp: (WebKit::PageClientImpl::createDrawingAreaProxy): * UIProcess/win/WebView.cpp: (WebKit::WebView::WebView): * WebProcess/Gamepad/WebGamepadProvider.cpp: (WebKit::WebGamepadProvider::setInitialGamepads): (WebKit::WebGamepadProvider::gamepadConnected): * WebProcess/InjectedBundle/API/c/WKBundle.cpp: (WKBundleSetClient): * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: (WKBundlePageSetContextMenuClient): (WKBundlePageSetEditorClient): (WKBundlePageSetFormClient): (WKBundlePageSetPageLoaderClient): (WKBundlePageSetResourceLoadClient): (WKBundlePageSetUIClient): * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp: (WKBundlePageOverlayCreate): * WebProcess/InjectedBundle/API/c/mac/WKBundlePageBannerMac.mm: (WKBundlePageBannerCreateBannerWithCALayer): * WebProcess/InjectedBundle/API/glib/DOM/DOMObjectCache.cpp: (WebKit::getOrCreateDOMObjectCacheFrameObserver): (WebKit::DOMObjectCache::put): * WebProcess/InjectedBundle/API/glib/WebKitExtensionManager.cpp: (WebKit::WebKitExtensionManager::initialize): * WebProcess/InjectedBundle/API/glib/WebKitWebEditor.cpp: (webkitWebEditorCreate): * WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp: (webkitWebExtensionCreate): * WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp: (webkitFrameGetOrCreate): (webkitWebPageCreate): * WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.mm: (-[WKDOMTextIterator initWithRange:]): * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm: (-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]): (-[WKWebProcessPlugInBrowserContextController _setEditingDelegate:]): * WebProcess/InjectedBundle/InjectedBundle.cpp: (WebKit::InjectedBundle::InjectedBundle): (WebKit::InjectedBundle::setClient): * WebProcess/Network/WebSocketChannel.cpp: (WebKit::PendingMessage::PendingMessage): (WebKit::WebSocketChannel::send): * WebProcess/Network/webrtc/LibWebRTCProvider.cpp: (WebKit::LibWebRTCProvider::createPeerConnection): (WebKit::LibWebRTCProvider::createSocketFactory): * WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp: (WebKit::LibWebRTCSocketFactory::createServerTcpSocket): (WebKit::LibWebRTCSocketFactory::createUdpSocket): (WebKit::LibWebRTCSocketFactory::createClientTcpSocket): (WebKit::LibWebRTCSocketFactory::createNewConnectionSocket): (WebKit::LibWebRTCSocketFactory::createAsyncResolver): * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: (WebKit::PluginDestructionProtector::PluginDestructionProtector): * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: (WebKit::NetscapePlugin::scheduleTimer): * WebProcess/Plugins/Netscape/NetscapePluginStream.cpp: (WebKit::NetscapePluginStream::deliverData): * WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp: (WebKit::NetscapePluginX11::create): * WebProcess/Plugins/PluginProxy.cpp: (WebKit::PluginProxy::initialize): * WebProcess/Plugins/PluginView.cpp: (WebKit::PluginView::createWebEvent const): * WebProcess/Storage/WebSWContextManagerConnection.cpp: (WebKit::WebSWContextManagerConnection::installServiceWorker): * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::createColorChooser): (WebKit::WebChromeClient::createDataListSuggestionPicker): * WebProcess/WebCoreSupport/WebInspectorClient.cpp: (WebKit::WebInspectorClient::showPaintRect): * WebProcess/WebCoreSupport/WebPasteboardOverrides.cpp: (WebKit::WebPasteboardOverrides::addOverride): * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp: (WebKit::DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode): * WebProcess/WebPage/DrawingArea.cpp: (WebKit::DrawingArea::create): * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp: (WebKit::PlatformCALayerRemote::ensureBackingStore): (WebKit::PlatformCALayerRemote::setTransform): (WebKit::PlatformCALayerRemote::setSublayerTransform): (WebKit::PlatformCALayerRemote::setFilters): (WebKit::PlatformCALayerRemote::setShapeRoundedRect): * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteTiledBacking.cpp: (WebKit::PlatformCALayerRemoteTiledBacking::PlatformCALayerRemoteTiledBacking): * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea): (WebKit::RemoteLayerTreeDrawingArea::flushLayers): * WebProcess/WebPage/WebFrame.cpp: (WebKit::WebFrame::createSubframe): * WebProcess/WebPage/WebPage.cpp: (WebKit::m_textAutoSizingAdjustmentTimer): (WebKit::WebPage::setInjectedBundleContextMenuClient): (WebKit::WebPage::setInjectedBundleEditorClient): (WebKit::WebPage::setInjectedBundleFormClient): (WebKit::WebPage::setInjectedBundlePageLoaderClient): (WebKit::WebPage::setInjectedBundleResourceLoadClient): (WebKit::WebPage::setInjectedBundleUIClient): (WebKit::WebPage::close): (WebKit::WebPage::beginPrinting): * WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp: (WebKit::WebPrintOperationGtk::print): * WebProcess/WebPage/ios/FindControllerIOS.mm: (WebKit::FindController::updateFindIndicator): * WebProcess/WebPage/mac/DrawingAreaMac.cpp: (WebKit::DisplayRefreshMonitorMac::requestRefreshCallback): * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea): * WebProcess/WebProcess.cpp: (WebKit::WebProcess::markAllLayersVolatile): (WebKit::WebProcess::ensureAutomationSessionProxy): (WebKit::WebProcess::libWebRTCNetwork): (WebKit::WebProcess::establishWorkerContextConnectionToNetworkProcess): * WebProcess/WebProcess.h: (WebKit::WebProcess::addSupplement): * WebProcess/cocoa/UserMediaCaptureManager.cpp: (WebKit::UserMediaCaptureManager::Source::Source): * WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::processTaskStateDidChange): (WebKit::WebProcess::updateCPUMonitorState): Source/WebKitLegacy: Reviewed by Geoffrey Garen. * Storage/StorageSyncManager.cpp: (WebCore::StorageSyncManager::StorageSyncManager): * Storage/StorageThread.cpp: (WebCore::StorageThread::dispatch): (WebCore::StorageThread::terminate): * Storage/StorageTracker.cpp: (WebKit::StorageTracker::StorageTracker): * WebCoreSupport/NetworkStorageSessionMap.cpp: (NetworkStorageSessionMap::defaultStorageSession): (NetworkStorageSessionMap::switchToNewTestingSession): (NetworkStorageSessionMap::ensureSession): Source/WebKitLegacy/cf: Reviewed by Geoffrey Garen. * WebCoreSupport/WebInspectorClientCF.cpp: (WebInspectorClient::createFrontendSettings): Source/WebKitLegacy/ios: Reviewed by Geoffrey Garen. * WebCoreSupport/WebFixedPositionContent.mm: (-[WebFixedPositionContent setViewportConstrainedLayers:stickyContainerMap:]): Source/WebKitLegacy/mac: Reviewed by Geoffrey Garen. * History/WebHistory.mm: (-[WebHistoryPrivate init]): * History/WebHistoryItem.mm: (-[WebHistoryItem initFromDictionaryRepresentation:]): * Plugins/Hosted/NetscapePluginHostProxy.mm: (WKPCGetScriptableNPObjectReply): (WKPCBooleanReply): (WKPCBooleanAndDataReply): (WKPCInstantiatePluginReply): * Plugins/Hosted/ProxyInstance.mm: (WebKit::ProxyInstance::methodNamed): (WebKit::ProxyInstance::fieldNamed): * Plugins/Hosted/WebHostedNetscapePluginView.mm: (-[WebHostedNetscapePluginView createPlugin]): * Plugins/WebNetscapePluginEventHandler.mm: (WebNetscapePluginEventHandler::create): * Plugins/WebNetscapePluginView.mm: (-[WebNetscapePluginView scheduleTimerWithInterval:repeat:timerFunc:]): * Storage/WebDatabaseManagerClient.mm: (DidModifyOriginData::dispatchToMainThread): * WebCoreSupport/WebFrameLoaderClient.mm: (addRedirectURL): (WebFrameLoaderClient::savePlatformDataToCachedFrame): * WebCoreSupport/WebInspectorClient.mm: (WebInspectorClient::openLocalFrontend): * WebView/WebDeviceOrientationProviderMock.mm: * WebView/WebFrame.mm: (-[WebFrame _attachScriptDebugger]): * WebView/WebMediaPlaybackTargetPicker.mm: (WebMediaPlaybackTargetPicker::create): * WebView/WebTextIterator.mm: (-[WebTextIterator initWithRange:]): * WebView/WebView.mm: (-[WebView _injectOutlookQuirksScript]): (-[WebView _commonInitializationWithFrameName:groupName:]): (+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:injectedFrames:]): (+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:injectedFrames:]): (-[WebView _selectionServiceController]): (-[WebView _setTextIndicator:withLifetime:]): * WebView/WebViewData.mm: (WebViewLayerFlushScheduler::WebViewLayerFlushScheduler): (-[WebViewPrivate init]): Source/WebKitLegacy/win: Reviewed by Geoffrey Garen. * FullscreenVideoController.cpp: (FullscreenVideoController::FullscreenVideoController): * Plugins/PluginStream.cpp: (WebCore::PluginStream::didReceiveData): * Plugins/PluginView.cpp: (WebCore::PluginView::load): * Plugins/PluginViewWin.cpp: (WebCore::PluginView::wndProc): * WebCoreSupport/WebChromeClient.cpp: (WebChromeClient::WebChromeClient): * WebCoreSupport/WebFrameLoaderClient.cpp: (WebFrameLoaderClient::WebFrameLoaderClient): (WebFrameLoaderClient::savePlatformDataToCachedFrame): * WebCoreSupport/WebInspectorClient.cpp: (WebInspectorClient::openLocalFrontend): (WebInspectorClient::highlight): * WebElementPropertyBag.cpp: (WebElementPropertyBag::WebElementPropertyBag): * WebHistoryItem.cpp: (WebHistoryItem::initFromDictionaryRepresentation): * WebKitQuartzCoreAdditions/CAD3DRenderer.cpp: (WKQCA::CAD3DRenderer::createD3DPostProcessingContext): * WebNotificationCenter.cpp: (WebNotificationCenter::WebNotificationCenter): * WebView.cpp: (WebView::handleMouseEvent): (WebView::registerEmbeddedViewMIMEType): (WebView::enterVideoFullscreenForVideoElement): (WebView::addUserScriptToGroup): (WebView::addUserStyleSheetToGroup): (WebView::setAcceleratedCompositing): Source/WTF: Reviewed by Geoff Garen. This patch is second part of bug 200620 patch. I split I split it into three pieces to make roll-out easy. his part, we convert std::make_unique to WTF::makeUnique or WTF::makeUniqueWithoutFastMallocCheck. In the third patch, we will add a static_assert to makeUnique, which ensures the given class T is FastMalloced or IsoHeaped. This patch adds `WTF::makeUnique<T>` and `WTF::makeUniqueWithoutFastMallocCheck<T>` as drop-in replacement for `std::make_unique<T>`. `WTF::makeUnique<T>` has one additional `static_assert` check which ensures `T` FastMalloc / IsoHeap annotated. If it is not, the compile error happens. In this patch, I tried using this everywhere in WebKit as much as possible. And we found that surprisingly many classes are missing FastMalloc annotation and allocated from system-malloc. Using WTF::makeUnique enforces classes / structs to use FastMalloc. WTF::makeUniqueWithoutFastMallocCheck is offered for the corner cases. This is identical to std::make_unique. We use this for classes that are offered by non-WebKit code base, like, zlib. This clear name can make us easily find this allocation is intentionally done by system-malloc. We do not take the following direction, `WTF::makeUnique` automatically allocates FastMalloc even if FastMalloc annotation is not attached. Since default deleter is performing `delete` and this is not what we want for FastMalloced ones, we need to return std::unique_ptr<T, FastFreeDeleter> for T if T does not have FastMalloc-annotation. Automatically doing this sounds a bit dangerous. auto pointer = WTF::makeUnique<T>(); // Super dangerous, but sometimes it is required... auto* rawPointer = pointer.release(); // Passing rawPointer to somewhere, and delete rawPointer; The above one becomes invalid because pointer may start requiring non `delete` destroying function. In the above case, the correct way becomes the following. rawPointer->~T(); fastFree(rawPointer); This looks non-intuitive. And having two ways to destroying objects (`delete` or the above one) can be error-prone. If we have WTF_MAKE_FAST_ALLOCATED for T, we do not need to care about this. "new" and "delete" operators are defined, and C++ way works. The simple invariant, "makeUnique just does `new` internally. And `delete` operator does `delete`. default deleter is just doing `delete`", is kept. While we need to annotate many classes with WTF_MAKE_FAST_ALLOCATED, it is one time cost when we add a class. And, by introducing `WTF::makeUnique<>`, we no longer forget adding this. makeUnique(...) static_assert(T is FastMalloced or IsoHeaped); return make_unique<T>(...) * benchmarks/LockFairnessTest.cpp: * benchmarks/LockSpeedTest.cpp: * wtf/ConcurrentVector.h: * wtf/CrossThreadTaskHandler.cpp: (WTF::CrossThreadTaskHandler::taskRunLoop): * wtf/FilePrintStream.cpp: (WTF::FilePrintStream::open): * wtf/Function.h: (WTF::Function<Out): * wtf/HashTable.h: (WTF::KeyTraits>::HashTable): * wtf/MemoryPressureHandler.cpp: (WTF::MemoryPressureHandler::setShouldUsePeriodicMemoryMonitor): * wtf/StdLibExtras.h: (WTF::makeUnique): (WTF::makeUniqueWithoutFastMallocCheck): * wtf/StreamBuffer.h: (WTF::StreamBuffer::append): * wtf/UniqueRef.h: (WTF::makeUniqueRefWithoutFastMallocCheck): (WTF::makeUniqueRef): * wtf/glib/RunLoopGLib.cpp: (WTF::RunLoop::dispatchAfter): * wtf/text/StringView.cpp: (WTF::StringView::GraphemeClusters::Iterator::Iterator): Tools: Reviewed by Geoffrey Garen. * DumpRenderTree/TestRunner.cpp: (addURLToRedirectCallback): (setWillSendRequestClearHeaderCallback): (TestRunner::setAccummulateLogsForChannel): (TestRunner::runUIScript): (TestRunner::setOpenPanelFiles): * DumpRenderTree/mac/DumpRenderTree.mm: (dumpFramesAsText): * DumpRenderTree/mac/EventSendingController.mm: (eventPressedMouseButtonsSwizzlerForViewAndEvent): * DumpRenderTree/win/DRTDataObject.cpp: (DRTDataObject::SetData): * DumpRenderTree/win/FrameLoadDelegate.cpp: (FrameLoadDelegate::FrameLoadDelegate): * DumpRenderTree/win/UIDelegate.cpp: (DRTUndoManager::DRTUndoManager): (UIDelegate::UIDelegate): (UIDelegate::resetUndoManager): * TestWebKitAPI/JavaScriptTest.cpp: (TestWebKitAPI::runJSTest): * TestWebKitAPI/PlatformUtilities.cpp: (TestWebKitAPI::Util::toSTD): * TestWebKitAPI/Tests/WTF/Expected.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/HashCountedSet.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/HashMap.cpp: (TestWebKitAPI::TEST): (TestWebKitAPI::testMovingUsingEnsure): (TestWebKitAPI::testMovingUsingAdd): * TestWebKitAPI/Tests/WTF/HashSet.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/ListHashSet.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/Lock.cpp: (TestWebKitAPI::runLockTest): * TestWebKitAPI/Tests/WTF/ParkingLot.cpp: * TestWebKitAPI/Tests/WTF/RefCounter.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/ThreadGroup.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/Variant.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/WeakPtr.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WebCore/CARingBuffer.cpp: (TestWebKitAPI::CARingBufferTest::SetUp): * TestWebKitAPI/Tests/WebCore/CalculationValue.cpp: (TestWebKitAPI::createTestValue): * TestWebKitAPI/Tests/WebCore/FidoHidMessageTest.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WebCore/FileMonitor.cpp: (TestWebKitAPI::TEST_F): * TestWebKitAPI/Tests/WebCore/curl/Cookies.cpp: * TestWebKitAPI/Tests/WebKit/CloseFromWithinCreatePage.cpp: (TestWebKitAPI::createNewPage): * TestWebKitAPI/Tests/WebKit/ModalAlertsSPI.cpp: (TestWebKitAPI::createNewPage): * TestWebKitAPI/Tests/WebKit/TextFieldDidBeginAndEndEditing.cpp: * TestWebKitAPI/Tests/WebKit/UserMessage.cpp: (TestWebKitAPI::WebKit2UserMessageRoundTripTest::SetUp): * TestWebKitAPI/Tests/WebKit/WillLoad.cpp: (TestWebKitAPI::WebKit2WillLoadTest::SetUp): * TestWebKitAPI/Tests/WebKit/mac/ForceLightAppearanceInBundle_Bundle.mm: (TestWebKitAPI::ForceLightAppearanceInBundleTest::didReceiveMessage): * TestWebKitAPI/Tests/WebKitGLib/TestAuthentication.cpp: (serverCallback): (testWebViewAuthenticationProxyHTTPS): * TestWebKitAPI/Tests/WebKitGtk/DOMDOMWindowTest.cpp: (WebKitDOMDOMWindowTest::create): * TestWebKitAPI/cocoa/PlatformUtilitiesCocoa.mm: (TestWebKitAPI::Util::toSTD): * TestWebKitAPI/cocoa/TestWKWebView.mm: (applyWorkaroundToAllowWritingAttributedStringsToItemProviders): (-[TestWKWebView initWithFrame:configuration:addToWindow:]): * TestWebKitAPI/mac/TestFontOptions.mm: (-[TestFontOptions initWithFontOptions:]): * WebKitTestRunner/InjectedBundle/EventSendingController.cpp: (WTR::EventSendingController::callAfterScrollingCompletes): * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp: (WTR::InjectedBundle::didCreatePage): * WebKitTestRunner/InjectedBundle/TestRunner.cpp: (WTR::TestRunner::setOpenPanelFiles): * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp: * WebKitTestRunner/StringFunctions.h: (WTR::toSTD): (WTR::toWTFString): * WebKitTestRunner/TestController.cpp: (WTR::TestController::initialize): (WTR::TestController::generatePageConfiguration): (WTR::TestController::resetStateToConsistentValues): (WTR::createTestURL): (WTR::TestController::runTest): (WTR::TestController::platformCreateWebView): * WebKitTestRunner/TestInvocation.cpp: (WTR::TestInvocation::runUISideScript): * WebKitTestRunner/cocoa/TestControllerCocoa.mm: (WTR::TestController::platformCreateWebView): (WTR::TestController::setDefaultCalendarType): * WebKitTestRunner/gtk/EventSenderProxyGtk.cpp: (WTR::getGDKKeySymForKeyRef): * WebKitTestRunner/ios/TestControllerIOS.mm: (WTR::TestController::platformResetStateToConsistentValues): (WTR::TestController::setKeyboardInputModeIdentifier): * WebKitTestRunner/mac/EventSenderProxy.mm: (WTR::EventSenderProxy::mouseDown): (WTR::EventSenderProxy::mouseUp): (WTR::EventSenderProxy::mouseMoveTo): * WebKitTestRunner/wpe/EventSenderProxyWPE.cpp: (WTR::wpeKeySymForKeyRef): Canonical link: https://commits.webkit.org/214609@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@248846 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-08-19 06:59:40 +00:00
m_overlapStack.append(makeUnique<OverlapMapContainer>(m_rootLayer));
Move RenderLayerCompositor's OverlapMap to its own file https://bugs.webkit.org/show_bug.cgi?id=197915 Reviewed by Alex Christensen. Move OverlapMap to its own file. Make use of RectList, which was in the file but unused! Allocate OverlapMapContainer on the heap both to avoid header pollution of internals, and because they will get bigger in future. No behavior change. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * rendering/LayerOverlapMap.cpp: Added. (WebCore::RectList::append): (WebCore::RectList::intersects const): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::unite): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): * rendering/LayerOverlapMap.h: Added. (WebCore::LayerOverlapMap::isEmpty const): (WebCore::LayerOverlapMap::geometryMap const): (WebCore::LayerOverlapMap::geometryMap): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::RenderLayerCompositor::addToOverlapMap): (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): (WebCore::OverlapMapContainer::add): Deleted. (WebCore::OverlapMapContainer::overlapsLayers const): Deleted. (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::OverlapMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::add): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::isEmpty const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::pushCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::append): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects const): Deleted. * rendering/RenderLayerCompositor.h: Canonical link: https://commits.webkit.org/212039@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245326 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-15 15:59:21 +00:00
}
void LayerOverlapMap::popCompositingContainer()
{
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes https://bugs.webkit.org/show_bug.cgi?id=198091 <rdar://problem/49403082> Reviewed by Antti Koivisto. Source/WebCore: When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller. All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure of the z-order and compositing trees). Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test against container N-1. To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds are computed unclipped. Between them, bounds are tested clipped. Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside composited overflow scroll (just like the old code). When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous container. Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html * rendering/LayerOverlapMap.cpp: (WebCore::operator<<): (WebCore::OverlapMapContainer::OverlapMapContainer): (WebCore::OverlapMapContainer::ClippingScope::ClippingScope): (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const): (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds): (WebCore::OverlapMapContainer::ClippingScope::addChild): (WebCore::OverlapMapContainer::ClippingScope::appendRect): (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive): (WebCore::OverlapMapContainer::scopeContainingLayer const): (WebCore::OverlapMapContainer::rootScope const): (WebCore::OverlapMapContainer::rootScope): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::mergeClippingScopesRecursive): (WebCore::OverlapMapContainer::append): (WebCore::OverlapMapContainer::ensureClippingScopeForLayers): (WebCore::OverlapMapContainer::findClippingScopeForLayers const): (WebCore::OverlapMapContainer::recursiveOutputToStream const): (WebCore::OverlapMapContainer::dump const): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::OverlapMapContainer::rectList const): Deleted. * rendering/LayerOverlapMap.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::createsClippingScope): (WebCore::enclosingClippingScopes): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::layerOverlaps const): * rendering/RenderLayerCompositor.h: Source/WebCore/../../LayoutTests: * TestExpectations: * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added. * platform/ios-wk2/TestExpectations: * platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/212178@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245602 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 00:12:49 +00:00
m_overlapStack[m_overlapStack.size() - 2]->append(WTFMove(m_overlapStack.last()));
Move RenderLayerCompositor's OverlapMap to its own file https://bugs.webkit.org/show_bug.cgi?id=197915 Reviewed by Alex Christensen. Move OverlapMap to its own file. Make use of RectList, which was in the file but unused! Allocate OverlapMapContainer on the heap both to avoid header pollution of internals, and because they will get bigger in future. No behavior change. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * rendering/LayerOverlapMap.cpp: Added. (WebCore::RectList::append): (WebCore::RectList::intersects const): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::unite): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): * rendering/LayerOverlapMap.h: Added. (WebCore::LayerOverlapMap::isEmpty const): (WebCore::LayerOverlapMap::geometryMap const): (WebCore::LayerOverlapMap::geometryMap): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::RenderLayerCompositor::addToOverlapMap): (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): (WebCore::OverlapMapContainer::add): Deleted. (WebCore::OverlapMapContainer::overlapsLayers const): Deleted. (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::OverlapMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::add): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::isEmpty const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::pushCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::append): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects const): Deleted. * rendering/RenderLayerCompositor.h: Canonical link: https://commits.webkit.org/212039@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245326 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-15 15:59:21 +00:00
m_overlapStack.removeLast();
}
static TextStream& operator<<(TextStream& ts, const OverlapMapContainer& container)
{
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes https://bugs.webkit.org/show_bug.cgi?id=198091 <rdar://problem/49403082> Reviewed by Antti Koivisto. Source/WebCore: When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller. All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure of the z-order and compositing trees). Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test against container N-1. To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds are computed unclipped. Between them, bounds are tested clipped. Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside composited overflow scroll (just like the old code). When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous container. Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html * rendering/LayerOverlapMap.cpp: (WebCore::operator<<): (WebCore::OverlapMapContainer::OverlapMapContainer): (WebCore::OverlapMapContainer::ClippingScope::ClippingScope): (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const): (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds): (WebCore::OverlapMapContainer::ClippingScope::addChild): (WebCore::OverlapMapContainer::ClippingScope::appendRect): (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive): (WebCore::OverlapMapContainer::scopeContainingLayer const): (WebCore::OverlapMapContainer::rootScope const): (WebCore::OverlapMapContainer::rootScope): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::mergeClippingScopesRecursive): (WebCore::OverlapMapContainer::append): (WebCore::OverlapMapContainer::ensureClippingScopeForLayers): (WebCore::OverlapMapContainer::findClippingScopeForLayers const): (WebCore::OverlapMapContainer::recursiveOutputToStream const): (WebCore::OverlapMapContainer::dump const): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::OverlapMapContainer::rectList const): Deleted. * rendering/LayerOverlapMap.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::createsClippingScope): (WebCore::enclosingClippingScopes): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::layerOverlaps const): * rendering/RenderLayerCompositor.h: Source/WebCore/../../LayoutTests: * TestExpectations: * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added. * platform/ios-wk2/TestExpectations: * platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/212178@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245602 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 00:12:49 +00:00
ts << container.dump(ts.indent());
return ts;
}
TextStream& operator<<(TextStream& ts, const LayerOverlapMap& overlapMap)
{
TextStream multilineStream;
TextStream::GroupScope scope(ts);
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes https://bugs.webkit.org/show_bug.cgi?id=198091 <rdar://problem/49403082> Reviewed by Antti Koivisto. Source/WebCore: When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller. All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure of the z-order and compositing trees). Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test against container N-1. To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds are computed unclipped. Between them, bounds are tested clipped. Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside composited overflow scroll (just like the old code). When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous container. Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html * rendering/LayerOverlapMap.cpp: (WebCore::operator<<): (WebCore::OverlapMapContainer::OverlapMapContainer): (WebCore::OverlapMapContainer::ClippingScope::ClippingScope): (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const): (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds): (WebCore::OverlapMapContainer::ClippingScope::addChild): (WebCore::OverlapMapContainer::ClippingScope::appendRect): (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive): (WebCore::OverlapMapContainer::scopeContainingLayer const): (WebCore::OverlapMapContainer::rootScope const): (WebCore::OverlapMapContainer::rootScope): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::mergeClippingScopesRecursive): (WebCore::OverlapMapContainer::append): (WebCore::OverlapMapContainer::ensureClippingScopeForLayers): (WebCore::OverlapMapContainer::findClippingScopeForLayers const): (WebCore::OverlapMapContainer::recursiveOutputToStream const): (WebCore::OverlapMapContainer::dump const): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::OverlapMapContainer::rectList const): Deleted. * rendering/LayerOverlapMap.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::createsClippingScope): (WebCore::enclosingClippingScopes): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::layerOverlaps const): * rendering/RenderLayerCompositor.h: Source/WebCore/../../LayoutTests: * TestExpectations: * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added. * platform/ios-wk2/TestExpectations: * platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/212178@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245602 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 00:12:49 +00:00
multilineStream << "LayerOverlapMap\n";
multilineStream.increaseIndent(2);
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes https://bugs.webkit.org/show_bug.cgi?id=198091 <rdar://problem/49403082> Reviewed by Antti Koivisto. Source/WebCore: When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller. All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure of the z-order and compositing trees). Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test against container N-1. To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds are computed unclipped. Between them, bounds are tested clipped. Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside composited overflow scroll (just like the old code). When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous container. Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html * rendering/LayerOverlapMap.cpp: (WebCore::operator<<): (WebCore::OverlapMapContainer::OverlapMapContainer): (WebCore::OverlapMapContainer::ClippingScope::ClippingScope): (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const): (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds): (WebCore::OverlapMapContainer::ClippingScope::addChild): (WebCore::OverlapMapContainer::ClippingScope::appendRect): (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive): (WebCore::OverlapMapContainer::scopeContainingLayer const): (WebCore::OverlapMapContainer::rootScope const): (WebCore::OverlapMapContainer::rootScope): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::mergeClippingScopesRecursive): (WebCore::OverlapMapContainer::append): (WebCore::OverlapMapContainer::ensureClippingScopeForLayers): (WebCore::OverlapMapContainer::findClippingScopeForLayers const): (WebCore::OverlapMapContainer::recursiveOutputToStream const): (WebCore::OverlapMapContainer::dump const): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::OverlapMapContainer::rectList const): Deleted. * rendering/LayerOverlapMap.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::createsClippingScope): (WebCore::enclosingClippingScopes): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::layerOverlaps const): * rendering/RenderLayerCompositor.h: Source/WebCore/../../LayoutTests: * TestExpectations: * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added. * platform/ios-wk2/TestExpectations: * platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/212178@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245602 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 00:12:49 +00:00
bool needNewline = false;
for (auto& container : overlapMap.overlapStack()) {
if (needNewline)
multilineStream << "\n";
else
needNewline = true;
multilineStream << indent << *container;
}
ts << multilineStream.release();
return ts;
}
Move RenderLayerCompositor's OverlapMap to its own file https://bugs.webkit.org/show_bug.cgi?id=197915 Reviewed by Alex Christensen. Move OverlapMap to its own file. Make use of RectList, which was in the file but unused! Allocate OverlapMapContainer on the heap both to avoid header pollution of internals, and because they will get bigger in future. No behavior change. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * rendering/LayerOverlapMap.cpp: Added. (WebCore::RectList::append): (WebCore::RectList::intersects const): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::unite): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): * rendering/LayerOverlapMap.h: Added. (WebCore::LayerOverlapMap::isEmpty const): (WebCore::LayerOverlapMap::geometryMap const): (WebCore::LayerOverlapMap::geometryMap): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::RenderLayerCompositor::addToOverlapMap): (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): (WebCore::OverlapMapContainer::add): Deleted. (WebCore::OverlapMapContainer::overlapsLayers const): Deleted. (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::OverlapMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::add): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::isEmpty const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::pushCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::append): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects const): Deleted. * rendering/RenderLayerCompositor.h: Canonical link: https://commits.webkit.org/212039@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245326 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-15 15:59:21 +00:00
} // namespace WebCore
Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes https://bugs.webkit.org/show_bug.cgi?id=198091 <rdar://problem/49403082> Reviewed by Antti Koivisto. Source/WebCore: When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller. All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure of the z-order and compositing trees). Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test against container N-1. To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds are computed unclipped. Between them, bounds are tested clipped. Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside composited overflow scroll (just like the old code). When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous container. Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html * rendering/LayerOverlapMap.cpp: (WebCore::operator<<): (WebCore::OverlapMapContainer::OverlapMapContainer): (WebCore::OverlapMapContainer::ClippingScope::ClippingScope): (WebCore::OverlapMapContainer::ClippingScope::childWithLayer const): (WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds): (WebCore::OverlapMapContainer::ClippingScope::addChild): (WebCore::OverlapMapContainer::ClippingScope::appendRect): (WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive): (WebCore::OverlapMapContainer::scopeContainingLayer const): (WebCore::OverlapMapContainer::rootScope const): (WebCore::OverlapMapContainer::rootScope): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::mergeClippingScopesRecursive): (WebCore::OverlapMapContainer::append): (WebCore::OverlapMapContainer::ensureClippingScopeForLayers): (WebCore::OverlapMapContainer::findClippingScopeForLayers const): (WebCore::OverlapMapContainer::recursiveOutputToStream const): (WebCore::OverlapMapContainer::dump const): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer): (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::OverlapMapContainer::rectList const): Deleted. * rendering/LayerOverlapMap.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::createsClippingScope): (WebCore::enclosingClippingScopes): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::layerOverlaps const): * rendering/RenderLayerCompositor.h: Source/WebCore/../../LayoutTests: * TestExpectations: * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added. * platform/ios-wk2/TestExpectations: * platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added. * platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added. * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/212178@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245602 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 00:12:49 +00:00