Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(19)

Side by Side Diff: third_party/WebKit/Source/core/paint/PaintLayer.cpp

Issue 2484153003: Use an SVGElementProxy in ReferenceClipPathOperation (Closed)
Patch Set: Rebase; fix comments; findElement Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights
3 * reserved. 3 * reserved.
4 * 4 *
5 * Portions are Copyright (C) 1998 Netscape Communications Corporation. 5 * Portions are Copyright (C) 1998 Netscape Communications Corporation.
6 * 6 *
7 * Other contributors: 7 * Other contributors:
8 * Robert O'Callahan <roc+@cs.cmu.edu> 8 * Robert O'Callahan <roc+@cs.cmu.edu>
9 * David Baron <dbaron@fas.harvard.edu> 9 * David Baron <dbaron@fas.harvard.edu>
10 * Christian Biesinger <cbiesinger@web.de> 10 * Christian Biesinger <cbiesinger@web.de>
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 struct { 103 struct {
104 IntSize size; 104 IntSize size;
105 void* pointer; 105 void* pointer;
106 LayoutRect rect; 106 LayoutRect rect;
107 } previousPaintStatus; 107 } previousPaintStatus;
108 }; 108 };
109 109
110 static_assert(sizeof(PaintLayer) == sizeof(SameSizeAsPaintLayer), 110 static_assert(sizeof(PaintLayer) == sizeof(SameSizeAsPaintLayer),
111 "PaintLayer should stay small"); 111 "PaintLayer should stay small");
112 112
113 bool isReferenceClipPath(const ClipPathOperation* clipOperation) {
114 return clipOperation && clipOperation->type() == ClipPathOperation::REFERENCE;
115 }
116
113 } // namespace 117 } // namespace
114 118
115 using namespace HTMLNames; 119 using namespace HTMLNames;
116 120
117 PaintLayerRareData::PaintLayerRareData() 121 PaintLayerRareData::PaintLayerRareData()
118 : enclosingPaginationLayer(nullptr), 122 : enclosingPaginationLayer(nullptr),
119 potentialCompositingReasonsFromStyle(CompositingReasonNone), 123 potentialCompositingReasonsFromStyle(CompositingReasonNone),
120 compositingReasons(CompositingReasonNone), 124 compositingReasons(CompositingReasonNone),
121 squashingDisallowedReasons(SquashingDisallowedReasonsNone), 125 squashingDisallowedReasons(SquashingDisallowedReasonsNone),
122 groupedMapping(nullptr) {} 126 groupedMapping(nullptr) {}
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 if (!layoutObject->slowFirstChild() && layoutObject->style()) { 176 if (!layoutObject->slowFirstChild() && layoutObject->style()) {
173 m_isVisibleContentDirty = false; 177 m_isVisibleContentDirty = false;
174 m_hasVisibleContent = 178 m_hasVisibleContent =
175 layoutObject->style()->visibility() == EVisibility::Visible; 179 layoutObject->style()->visibility() == EVisibility::Visible;
176 } 180 }
177 181
178 updateScrollableArea(); 182 updateScrollableArea();
179 } 183 }
180 184
181 PaintLayer::~PaintLayer() { 185 PaintLayer::~PaintLayer() {
182 if (m_rareData && m_rareData->filterInfo) { 186 if (m_rareData && m_rareData->resourceInfo) {
183 layoutObject()->styleRef().filter().removeClient(m_rareData->filterInfo); 187 const ComputedStyle& style = layoutObject()->styleRef();
184 m_rareData->filterInfo->clearLayer(); 188 if (style.hasFilter())
189 style.filter().removeClient(m_rareData->resourceInfo);
190 if (isReferenceClipPath(style.clipPath())) {
191 toReferenceClipPathOperation(style.clipPath())
192 ->removeClient(m_rareData->resourceInfo);
193 }
194 m_rareData->resourceInfo->clearLayer();
185 } 195 }
186 if (layoutObject()->frame() && layoutObject()->frame()->page()) { 196 if (layoutObject()->frame() && layoutObject()->frame()->page()) {
187 if (ScrollingCoordinator* scrollingCoordinator = 197 if (ScrollingCoordinator* scrollingCoordinator =
188 layoutObject()->frame()->page()->scrollingCoordinator()) 198 layoutObject()->frame()->page()->scrollingCoordinator())
189 scrollingCoordinator->willDestroyLayer(this); 199 scrollingCoordinator->willDestroyLayer(this);
190 } 200 }
191 201
192 if (groupedMapping()) { 202 if (groupedMapping()) {
193 DisableCompositingQueryAsserts disabler; 203 DisableCompositingQueryAsserts disabler;
194 setGroupedMapping(0, InvalidateLayerAndRemoveFromMapping); 204 setGroupedMapping(0, InvalidateLayerAndRemoveFromMapping);
(...skipping 2172 matching lines...) Expand 10 before | Expand all | Expand 10 after
2367 FloatPoint point(hitTestLocation.point()); 2377 FloatPoint point(hitTestLocation.point());
2368 2378
2369 ClipPathOperation* clipPathOperation = layoutObject()->style()->clipPath(); 2379 ClipPathOperation* clipPathOperation = layoutObject()->style()->clipPath();
2370 DCHECK(clipPathOperation); 2380 DCHECK(clipPathOperation);
2371 if (clipPathOperation->type() == ClipPathOperation::SHAPE) { 2381 if (clipPathOperation->type() == ClipPathOperation::SHAPE) {
2372 ShapeClipPathOperation* clipPath = 2382 ShapeClipPathOperation* clipPath =
2373 toShapeClipPathOperation(clipPathOperation); 2383 toShapeClipPathOperation(clipPathOperation);
2374 return !clipPath->path(FloatRect(referenceBox)).contains(point); 2384 return !clipPath->path(FloatRect(referenceBox)).contains(point);
2375 } 2385 }
2376 DCHECK_EQ(clipPathOperation->type(), ClipPathOperation::REFERENCE); 2386 DCHECK_EQ(clipPathOperation->type(), ClipPathOperation::REFERENCE);
2377 ReferenceClipPathOperation* referenceClipPathOperation = 2387 Node* targetNode = layoutObject()->node();
2378 toReferenceClipPathOperation(clipPathOperation); 2388 if (!targetNode)
2379 Element* element = layoutObject()->document().getElementById( 2389 return false;
2380 referenceClipPathOperation->fragment()); 2390 const ReferenceClipPathOperation& referenceClipPathOperation =
2391 toReferenceClipPathOperation(*clipPathOperation);
2392 SVGElement* element =
2393 referenceClipPathOperation.findElement(targetNode->treeScope());
2381 if (!isSVGClipPathElement(element) || !element->layoutObject()) 2394 if (!isSVGClipPathElement(element) || !element->layoutObject())
2382 return false; 2395 return false;
2383 LayoutSVGResourceClipper* clipper = toLayoutSVGResourceClipper( 2396 LayoutSVGResourceClipper* clipper = toLayoutSVGResourceClipper(
2384 toLayoutSVGResourceContainer(element->layoutObject())); 2397 toLayoutSVGResourceContainer(element->layoutObject()));
2385 // If the clipPath is using "userspace on use" units, then the origin of 2398 // If the clipPath is using "userspace on use" units, then the origin of
2386 // the coordinate system is the top-left of the reference box, so adjust 2399 // the coordinate system is the top-left of the reference box, so adjust
2387 // the point accordingly. 2400 // the point accordingly.
2388 if (clipper->clipPathUnits() == SVGUnitTypes::kSvgUnitTypeUserspaceonuse) 2401 if (clipper->clipPathUnits() == SVGUnitTypes::kSvgUnitTypeUserspaceonuse)
2389 point.moveBy(-referenceBox.location()); 2402 point.moveBy(-referenceBox.location());
2390 return !clipper->hitTestClipContent(FloatRect(referenceBox), point); 2403 return !clipper->hitTestClipContent(FloatRect(referenceBox), point);
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
2638 2651
2639 void PaintLayer::ensureCompositedLayerMapping() { 2652 void PaintLayer::ensureCompositedLayerMapping() {
2640 if (m_rareData && m_rareData->compositedLayerMapping) 2653 if (m_rareData && m_rareData->compositedLayerMapping)
2641 return; 2654 return;
2642 2655
2643 ensureRareData().compositedLayerMapping = 2656 ensureRareData().compositedLayerMapping =
2644 wrapUnique(new CompositedLayerMapping(*this)); 2657 wrapUnique(new CompositedLayerMapping(*this));
2645 m_rareData->compositedLayerMapping->setNeedsGraphicsLayerUpdate( 2658 m_rareData->compositedLayerMapping->setNeedsGraphicsLayerUpdate(
2646 GraphicsLayerUpdateSubtree); 2659 GraphicsLayerUpdateSubtree);
2647 2660
2648 if (PaintLayerFilterInfo* filterInfo = this->filterInfo()) 2661 if (PaintLayerResourceInfo* resourceInfo = this->resourceInfo())
2649 filterInfo->invalidateFilterChain(); 2662 resourceInfo->invalidateFilterChain();
2650 } 2663 }
2651 2664
2652 void PaintLayer::clearCompositedLayerMapping(bool layerBeingDestroyed) { 2665 void PaintLayer::clearCompositedLayerMapping(bool layerBeingDestroyed) {
2653 if (!layerBeingDestroyed) { 2666 if (!layerBeingDestroyed) {
2654 // We need to make sure our decendants get a geometry update. In principle, 2667 // We need to make sure our decendants get a geometry update. In principle,
2655 // we could call setNeedsGraphicsLayerUpdate on our children, but that would 2668 // we could call setNeedsGraphicsLayerUpdate on our children, but that would
2656 // require walking the z-order lists to find them. Instead, we 2669 // require walking the z-order lists to find them. Instead, we
2657 // over-invalidate by marking our parent as needing a geometry update. 2670 // over-invalidate by marking our parent as needing a geometry update.
2658 if (PaintLayer* compositingParent = 2671 if (PaintLayer* compositingParent =
2659 enclosingLayerWithCompositedLayerMapping(ExcludeSelf)) 2672 enclosingLayerWithCompositedLayerMapping(ExcludeSelf))
2660 compositingParent->compositedLayerMapping()->setNeedsGraphicsLayerUpdate( 2673 compositingParent->compositedLayerMapping()->setNeedsGraphicsLayerUpdate(
2661 GraphicsLayerUpdateSubtree); 2674 GraphicsLayerUpdateSubtree);
2662 } 2675 }
2663 2676
2664 if (m_rareData) 2677 if (m_rareData)
2665 m_rareData->compositedLayerMapping.reset(); 2678 m_rareData->compositedLayerMapping.reset();
2666 2679
2667 if (layerBeingDestroyed) 2680 if (layerBeingDestroyed)
2668 return; 2681 return;
2669 2682
2670 if (PaintLayerFilterInfo* filterInfo = this->filterInfo()) 2683 if (PaintLayerResourceInfo* resourceInfo = this->resourceInfo())
2671 filterInfo->invalidateFilterChain(); 2684 resourceInfo->invalidateFilterChain();
2672 } 2685 }
2673 2686
2674 void PaintLayer::setGroupedMapping(CompositedLayerMapping* groupedMapping, 2687 void PaintLayer::setGroupedMapping(CompositedLayerMapping* groupedMapping,
2675 SetGroupMappingOptions options) { 2688 SetGroupMappingOptions options) {
2676 CompositedLayerMapping* oldGroupedMapping = this->groupedMapping(); 2689 CompositedLayerMapping* oldGroupedMapping = this->groupedMapping();
2677 if (groupedMapping == oldGroupedMapping) 2690 if (groupedMapping == oldGroupedMapping)
2678 return; 2691 return;
2679 2692
2680 if (options == InvalidateLayerAndRemoveFromMapping && oldGroupedMapping) { 2693 if (options == InvalidateLayerAndRemoveFromMapping && oldGroupedMapping) {
2681 oldGroupedMapping->setNeedsGraphicsLayerUpdate(GraphicsLayerUpdateSubtree); 2694 oldGroupedMapping->setNeedsGraphicsLayerUpdate(GraphicsLayerUpdateSubtree);
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
2864 return false; 2877 return false;
2865 2878
2866 return hasBoxDecorationsOrBackground() || hasOverflowControls(); 2879 return hasBoxDecorationsOrBackground() || hasOverflowControls();
2867 } 2880 }
2868 2881
2869 void PaintLayer::updateFilters(const ComputedStyle* oldStyle, 2882 void PaintLayer::updateFilters(const ComputedStyle* oldStyle,
2870 const ComputedStyle& newStyle) { 2883 const ComputedStyle& newStyle) {
2871 if (!newStyle.hasFilterInducingProperty() && 2884 if (!newStyle.hasFilterInducingProperty() &&
2872 (!oldStyle || !oldStyle->hasFilterInducingProperty())) 2885 (!oldStyle || !oldStyle->hasFilterInducingProperty()))
2873 return; 2886 return;
2874 const bool hadFilterInfo = filterInfo(); 2887 const bool hadResourceInfo = resourceInfo();
2875 if (newStyle.hasFilterInducingProperty()) 2888 if (newStyle.hasFilterInducingProperty())
2876 newStyle.filter().addClient(&ensureFilterInfo()); 2889 newStyle.filter().addClient(&ensureResourceInfo());
2877 if (hadFilterInfo && oldStyle) 2890 if (hadResourceInfo && oldStyle)
2878 oldStyle->filter().removeClient(filterInfo()); 2891 oldStyle->filter().removeClient(resourceInfo());
2879 if (!newStyle.hasFilterInducingProperty()) { 2892 if (PaintLayerResourceInfo* resourceInfo = this->resourceInfo())
2880 removeFilterInfo(); 2893 resourceInfo->invalidateFilterChain();
2894 }
2895
2896 void PaintLayer::updateClipPath(const ComputedStyle* oldStyle,
2897 const ComputedStyle& newStyle) {
2898 ClipPathOperation* newClipOperation = newStyle.clipPath();
2899 ClipPathOperation* oldClipOperation =
2900 oldStyle ? oldStyle->clipPath() : nullptr;
2901 if (!newClipOperation && !oldClipOperation)
2881 return; 2902 return;
2903 const bool hadResourceInfo = resourceInfo();
2904 if (isReferenceClipPath(newClipOperation)) {
2905 toReferenceClipPathOperation(newClipOperation)
2906 ->addClient(&ensureResourceInfo());
2882 } 2907 }
2883 if (PaintLayerFilterInfo* filterInfo = this->filterInfo()) 2908 if (hadResourceInfo && isReferenceClipPath(oldClipOperation)) {
2884 filterInfo->invalidateFilterChain(); 2909 toReferenceClipPathOperation(oldClipOperation)
2910 ->removeClient(resourceInfo());
2911 }
2885 } 2912 }
2886 2913
2887 bool PaintLayer::attemptDirectCompositingUpdate(StyleDifference diff, 2914 bool PaintLayer::attemptDirectCompositingUpdate(StyleDifference diff,
2888 const ComputedStyle* oldStyle) { 2915 const ComputedStyle* oldStyle) {
2889 CompositingReasons oldPotentialCompositingReasonsFromStyle = 2916 CompositingReasons oldPotentialCompositingReasonsFromStyle =
2890 potentialCompositingReasonsFromStyle(); 2917 potentialCompositingReasonsFromStyle();
2891 compositor()->updatePotentialCompositingReasonsFromStyle(this); 2918 compositor()->updatePotentialCompositingReasonsFromStyle(this);
2892 2919
2893 // This function implements an optimization for transforms and opacity. 2920 // This function implements an optimization for transforms and opacity.
2894 // A common pattern is for a touchmove handler to update the transform 2921 // A common pattern is for a touchmove handler to update the transform
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
2960 m_scrollableArea->updateAfterStyleChange(oldStyle); 2987 m_scrollableArea->updateAfterStyleChange(oldStyle);
2961 2988
2962 // Overlay scrollbars can make this layer self-painting so we need 2989 // Overlay scrollbars can make this layer self-painting so we need
2963 // to recompute the bit once scrollbars have been updated. 2990 // to recompute the bit once scrollbars have been updated.
2964 updateSelfPaintingLayer(); 2991 updateSelfPaintingLayer();
2965 2992
2966 updateDescendantDependentFlags(); 2993 updateDescendantDependentFlags();
2967 2994
2968 updateTransform(oldStyle, layoutObject()->styleRef()); 2995 updateTransform(oldStyle, layoutObject()->styleRef());
2969 updateFilters(oldStyle, layoutObject()->styleRef()); 2996 updateFilters(oldStyle, layoutObject()->styleRef());
2997 updateClipPath(oldStyle, layoutObject()->styleRef());
2970 2998
2971 setNeedsCompositingInputsUpdate(); 2999 setNeedsCompositingInputsUpdate();
2972 } 3000 }
2973 3001
2974 bool PaintLayer::scrollsOverflow() const { 3002 bool PaintLayer::scrollsOverflow() const {
2975 if (PaintLayerScrollableArea* scrollableArea = this->getScrollableArea()) 3003 if (PaintLayerScrollableArea* scrollableArea = this->getScrollableArea())
2976 return scrollableArea->scrollsOverflow(); 3004 return scrollableArea->scrollsOverflow();
2977 3005
2978 return false; 3006 return false;
2979 } 3007 }
(...skipping 24 matching lines...) Expand all
3004 PaintLayer::createCompositorFilterOperationsForBackdropFilter( 3032 PaintLayer::createCompositorFilterOperationsForBackdropFilter(
3005 const ComputedStyle& style) { 3033 const ComputedStyle& style) {
3006 FloatRect zoomedReferenceBox; 3034 FloatRect zoomedReferenceBox;
3007 if (style.backdropFilter().hasReferenceFilter()) 3035 if (style.backdropFilter().hasReferenceFilter())
3008 zoomedReferenceBox = boxForFilter(); 3036 zoomedReferenceBox = boxForFilter();
3009 FilterEffectBuilder builder(enclosingNode(), zoomedReferenceBox, 3037 FilterEffectBuilder builder(enclosingNode(), zoomedReferenceBox,
3010 style.effectiveZoom()); 3038 style.effectiveZoom());
3011 return builder.buildFilterOperations(style.backdropFilter()); 3039 return builder.buildFilterOperations(style.backdropFilter());
3012 } 3040 }
3013 3041
3014 PaintLayerFilterInfo& PaintLayer::ensureFilterInfo() { 3042 PaintLayerResourceInfo& PaintLayer::ensureResourceInfo() {
3015 PaintLayerRareData& rareData = ensureRareData(); 3043 PaintLayerRareData& rareData = ensureRareData();
3016 if (!rareData.filterInfo) 3044 if (!rareData.resourceInfo)
3017 rareData.filterInfo = new PaintLayerFilterInfo(this); 3045 rareData.resourceInfo = new PaintLayerResourceInfo(this);
3018 return *rareData.filterInfo; 3046 return *rareData.resourceInfo;
3019 }
3020
3021 void PaintLayer::removeFilterInfo() {
3022 if (!m_rareData || !m_rareData->filterInfo)
3023 return;
3024 m_rareData->filterInfo->clearLayer();
3025 m_rareData->filterInfo = nullptr;
3026 } 3047 }
3027 3048
3028 void PaintLayer::removeAncestorOverflowLayer(const PaintLayer* removedLayer) { 3049 void PaintLayer::removeAncestorOverflowLayer(const PaintLayer* removedLayer) {
3029 // If the current ancestor overflow layer does not match the removed layer 3050 // If the current ancestor overflow layer does not match the removed layer
3030 // the ancestor overflow layer has changed so we can stop searching. 3051 // the ancestor overflow layer has changed so we can stop searching.
3031 if (ancestorOverflowLayer() && ancestorOverflowLayer() != removedLayer) 3052 if (ancestorOverflowLayer() && ancestorOverflowLayer() != removedLayer)
3032 return; 3053 return;
3033 3054
3034 if (ancestorOverflowLayer()) { 3055 if (ancestorOverflowLayer()) {
3035 // TODO(pdr): When slimming paint v2 is enabled, we will need to 3056 // TODO(pdr): When slimming paint v2 is enabled, we will need to
3036 // invalidate the scroll paint property subtree for this so main 3057 // invalidate the scroll paint property subtree for this so main
3037 // thread scroll reasons are recomputed. 3058 // thread scroll reasons are recomputed.
3038 ancestorOverflowLayer() 3059 ancestorOverflowLayer()
3039 ->getScrollableArea() 3060 ->getScrollableArea()
3040 ->invalidateStickyConstraintsFor(this); 3061 ->invalidateStickyConstraintsFor(this);
3041 } 3062 }
3042 updateAncestorOverflowLayer(nullptr); 3063 updateAncestorOverflowLayer(nullptr);
3043 PaintLayer* current = m_first; 3064 PaintLayer* current = m_first;
3044 while (current) { 3065 while (current) {
3045 current->removeAncestorOverflowLayer(removedLayer); 3066 current->removeAncestorOverflowLayer(removedLayer);
3046 current = current->nextSibling(); 3067 current = current->nextSibling();
3047 } 3068 }
3048 } 3069 }
3049 3070
3050 FilterEffect* PaintLayer::lastFilterEffect() const { 3071 FilterEffect* PaintLayer::lastFilterEffect() const {
3051 // TODO(chrishtr): ensure (and assert) that compositing is clean here. 3072 // TODO(chrishtr): ensure (and assert) that compositing is clean here.
3052 if (!paintsWithFilters()) 3073 if (!paintsWithFilters())
3053 return nullptr; 3074 return nullptr;
3054 PaintLayerFilterInfo* filterInfo = this->filterInfo(); 3075 PaintLayerResourceInfo* resourceInfo = this->resourceInfo();
3055 DCHECK(filterInfo); 3076 DCHECK(resourceInfo);
3056 3077
3057 if (filterInfo->lastEffect()) 3078 if (resourceInfo->lastEffect())
3058 return filterInfo->lastEffect(); 3079 return resourceInfo->lastEffect();
3059 3080
3060 const ComputedStyle& style = layoutObject()->styleRef(); 3081 const ComputedStyle& style = layoutObject()->styleRef();
3061 FloatRect zoomedReferenceBox; 3082 FloatRect zoomedReferenceBox;
3062 if (style.filter().hasReferenceFilter()) 3083 if (style.filter().hasReferenceFilter())
3063 zoomedReferenceBox = boxForFilter(); 3084 zoomedReferenceBox = boxForFilter();
3064 FilterEffectBuilder builder(enclosingNode(), zoomedReferenceBox, 3085 FilterEffectBuilder builder(enclosingNode(), zoomedReferenceBox,
3065 style.effectiveZoom()); 3086 style.effectiveZoom());
3066 filterInfo->setLastEffect( 3087 resourceInfo->setLastEffect(
3067 builder.buildFilterEffect(addReflectionToFilterOperations(style))); 3088 builder.buildFilterEffect(addReflectionToFilterOperations(style)));
3068 return filterInfo->lastEffect(); 3089 return resourceInfo->lastEffect();
3069 } 3090 }
3070 3091
3071 FloatRect PaintLayer::mapRectForFilter(const FloatRect& rect) const { 3092 FloatRect PaintLayer::mapRectForFilter(const FloatRect& rect) const {
3072 if (!hasFilterThatMovesPixels()) 3093 if (!hasFilterThatMovesPixels())
3073 return rect; 3094 return rect;
3074 3095
3075 // Ensure the filter-chain is refreshed wrt reference filters. 3096 // Ensure the filter-chain is refreshed wrt reference filters.
3076 // TODO(fs): Avoid having this side-effect inducing call. 3097 // TODO(fs): Avoid having this side-effect inducing call.
3077 lastFilterEffect(); 3098 lastFilterEffect();
3078 3099
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
3229 } 3250 }
3230 3251
3231 void showLayerTree(const blink::LayoutObject* layoutObject) { 3252 void showLayerTree(const blink::LayoutObject* layoutObject) {
3232 if (!layoutObject) { 3253 if (!layoutObject) {
3233 LOG(INFO) << "Cannot showLayerTree. Root is (nil)"; 3254 LOG(INFO) << "Cannot showLayerTree. Root is (nil)";
3234 return; 3255 return;
3235 } 3256 }
3236 showLayerTree(layoutObject->enclosingLayer()); 3257 showLayerTree(layoutObject->enclosingLayer());
3237 } 3258 }
3238 #endif 3259 #endif
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/paint/PaintLayer.h ('k') | third_party/WebKit/Source/core/paint/PaintLayerFilterInfo.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698