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

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutObject.cpp

Issue 1537133002: Renaming: distinguish ancestor, container and paintInvalidationContainer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@SelectionInvalidation
Patch Set: Created 5 years 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) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2000 Dirk Mueller (mueller@kde.org) 4 * (C) 2000 Dirk Mueller (mueller@kde.org)
5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv ed. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv ed.
7 * Copyright (C) 2009 Google Inc. All rights reserved. 7 * Copyright (C) 2009 Google Inc. All rights reserved.
8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) 8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/)
9 * 9 *
10 * This library is free software; you can redistribute it and/or 10 * This library is free software; you can redistribute it and/or
(...skipping 1013 matching lines...) Expand 10 before | Expand all | Expand 10 after
1024 IntRect result = rects[0]; 1024 IntRect result = rects[0];
1025 for (size_t i = 1; i < n; ++i) 1025 for (size_t i = 1; i < n; ++i)
1026 result.unite(rects[i]); 1026 result.unite(rects[i]);
1027 return result; 1027 return result;
1028 } 1028 }
1029 1029
1030 IntRect LayoutObject::absoluteElementBoundingBoxRect() const 1030 IntRect LayoutObject::absoluteElementBoundingBoxRect() const
1031 { 1031 {
1032 Vector<LayoutRect> rects; 1032 Vector<LayoutRect> rects;
1033 const LayoutBoxModelObject* container = enclosingLayer()->layoutObject(); 1033 const LayoutBoxModelObject* container = enclosingLayer()->layoutObject();
1034 addElementVisualOverflowRects(rects, LayoutPoint(localToContainerPoint(Float Point(), container))); 1034 addElementVisualOverflowRects(rects, LayoutPoint(localToAncestorPoint(FloatP oint(), container)));
1035 return container->localToAbsoluteQuad(FloatQuad(FloatRect(unionRect(rects))) ).enclosingBoundingBox(); 1035 return container->localToAbsoluteQuad(FloatQuad(FloatRect(unionRect(rects))) ).enclosingBoundingBox();
1036 } 1036 }
1037 1037
1038 FloatRect LayoutObject::absoluteBoundingBoxRectForRange(const Range* range) 1038 FloatRect LayoutObject::absoluteBoundingBoxRectForRange(const Range* range)
1039 { 1039 {
1040 if (!range || !range->startContainer()) 1040 if (!range || !range->startContainer())
1041 return FloatRect(); 1041 return FloatRect();
1042 1042
1043 range->ownerDocument().updateLayout(); 1043 range->ownerDocument().updateLayout();
1044 1044
(...skipping 535 matching lines...) Expand 10 before | Expand all | Expand 10 after
1580 { 1580 {
1581 return clippedOverflowRectForPaintInvalidation(view()); 1581 return clippedOverflowRectForPaintInvalidation(view());
1582 } 1582 }
1583 1583
1584 LayoutRect LayoutObject::clippedOverflowRectForPaintInvalidation(const LayoutBox ModelObject*, const PaintInvalidationState*) const 1584 LayoutRect LayoutObject::clippedOverflowRectForPaintInvalidation(const LayoutBox ModelObject*, const PaintInvalidationState*) const
1585 { 1585 {
1586 ASSERT_NOT_REACHED(); 1586 ASSERT_NOT_REACHED();
1587 return LayoutRect(); 1587 return LayoutRect();
1588 } 1588 }
1589 1589
1590 void LayoutObject::mapToVisibleRectInContainerSpace(const LayoutBoxModelObject* paintInvalidationContainer, LayoutRect& rect, const PaintInvalidationState* pain tInvalidationState) const 1590 void LayoutObject::mapToVisibleRectInAncestorSpace(const LayoutBoxModelObject* a ncestor, LayoutRect& rect, const PaintInvalidationState* paintInvalidationState) const
1591 { 1591 {
1592 if (paintInvalidationContainer == this) 1592 if (ancestor == this)
1593 return; 1593 return;
1594 1594
1595 if (paintInvalidationState && paintInvalidationState->canMapToContainer(pain tInvalidationContainer)) { 1595 if (paintInvalidationState && paintInvalidationState->canMapToContainer(ance stor)) {
1596 rect.move(paintInvalidationState->paintOffset()); 1596 rect.move(paintInvalidationState->paintOffset());
1597 if (paintInvalidationState->isClipped()) 1597 if (paintInvalidationState->isClipped())
1598 rect.intersect(paintInvalidationState->clipRect()); 1598 rect.intersect(paintInvalidationState->clipRect());
1599 return; 1599 return;
1600 } 1600 }
1601 1601
1602 if (LayoutObject* o = parent()) { 1602 if (LayoutObject* parent = this->parent()) {
1603 if (o->hasOverflowClip()) { 1603 if (parent->hasOverflowClip()) {
1604 LayoutBox* boxParent = toLayoutBox(o); 1604 LayoutBox* parentBox = toLayoutBox(parent);
1605 if (o == paintInvalidationContainer) 1605 parentBox->mapScrollingContentsRectToBoxSpace(rect);
1606 boxParent->applyCachedScrollOffsetForPaintInvalidation(rect); 1606 if (parent != ancestor)
1607 else 1607 parentBox->applyOverflowClip(rect);
1608 boxParent->applyCachedClipAndScrollOffsetForPaintInvalidation(re ct);
1609 if (rect.isEmpty()) 1608 if (rect.isEmpty())
1610 return; 1609 return;
1611 } 1610 }
1612 1611
1613 o->mapToVisibleRectInContainerSpace(paintInvalidationContainer, rect, pa intInvalidationState); 1612 parent->mapToVisibleRectInAncestorSpace(ancestor, rect, paintInvalidatio nState);
1614 } 1613 }
1615 } 1614 }
1616 1615
1617 void LayoutObject::dirtyLinesFromChangedChild(LayoutObject*) 1616 void LayoutObject::dirtyLinesFromChangedChild(LayoutObject*)
1618 { 1617 {
1619 } 1618 }
1620 1619
1621 #ifndef NDEBUG 1620 #ifndef NDEBUG
1622 1621
1623 void LayoutObject::showTreeForThis() const 1622 void LayoutObject::showTreeForThis() const
(...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after
2135 } 2134 }
2136 2135
2137 LayoutRect LayoutObject::viewRect() const 2136 LayoutRect LayoutObject::viewRect() const
2138 { 2137 {
2139 return view()->viewRect(); 2138 return view()->viewRect();
2140 } 2139 }
2141 2140
2142 FloatPoint LayoutObject::localToAbsolute(const FloatPoint& localPoint, MapCoordi natesFlags mode) const 2141 FloatPoint LayoutObject::localToAbsolute(const FloatPoint& localPoint, MapCoordi natesFlags mode) const
2143 { 2142 {
2144 TransformState transformState(TransformState::ApplyTransformDirection, local Point); 2143 TransformState transformState(TransformState::ApplyTransformDirection, local Point);
2145 mapLocalToContainer(0, transformState, mode | ApplyContainerFlip); 2144 mapLocalToAncestor(0, transformState, mode | ApplyContainerFlip);
2146 transformState.flatten(); 2145 transformState.flatten();
2147 2146
2148 return transformState.lastPlanarPoint(); 2147 return transformState.lastPlanarPoint();
2149 } 2148 }
2150 2149
2151 FloatPoint LayoutObject::absoluteToLocal(const FloatPoint& containerPoint, MapCo ordinatesFlags mode) const 2150 FloatPoint LayoutObject::absoluteToLocal(const FloatPoint& containerPoint, MapCo ordinatesFlags mode) const
2152 { 2151 {
2153 TransformState transformState(TransformState::UnapplyInverseTransformDirecti on, containerPoint); 2152 TransformState transformState(TransformState::UnapplyInverseTransformDirecti on, containerPoint);
2154 mapAbsoluteToLocalPoint(mode, transformState); 2153 mapAbsoluteToLocalPoint(mode, transformState);
2155 transformState.flatten(); 2154 transformState.flatten();
2156 2155
2157 return transformState.lastPlanarPoint(); 2156 return transformState.lastPlanarPoint();
2158 } 2157 }
2159 2158
2160 FloatQuad LayoutObject::absoluteToLocalQuad(const FloatQuad& quad, MapCoordinate sFlags mode) const 2159 FloatQuad LayoutObject::absoluteToLocalQuad(const FloatQuad& quad, MapCoordinate sFlags mode) const
2161 { 2160 {
2162 TransformState transformState(TransformState::UnapplyInverseTransformDirecti on, quad.boundingBox().center(), quad); 2161 TransformState transformState(TransformState::UnapplyInverseTransformDirecti on, quad.boundingBox().center(), quad);
2163 mapAbsoluteToLocalPoint(mode, transformState); 2162 mapAbsoluteToLocalPoint(mode, transformState);
2164 transformState.flatten(); 2163 transformState.flatten();
2165 return transformState.lastPlanarQuad(); 2164 return transformState.lastPlanarQuad();
2166 } 2165 }
2167 2166
2168 void LayoutObject::mapLocalToContainer(const LayoutBoxModelObject* paintInvalida tionContainer, TransformState& transformState, MapCoordinatesFlags mode, bool* w asFixed, const PaintInvalidationState* paintInvalidationState) const 2167 void LayoutObject::mapLocalToAncestor(const LayoutBoxModelObject* ancestor, Tran sformState& transformState, MapCoordinatesFlags mode, bool* wasFixed, const Pain tInvalidationState* paintInvalidationState) const
2169 { 2168 {
2170 if (paintInvalidationContainer == this) 2169 if (ancestor == this)
2171 return; 2170 return;
2172 2171
2173 LayoutObject* o = parent(); 2172 LayoutObject* o = parent();
2174 if (!o) 2173 if (!o)
2175 return; 2174 return;
2176 2175
2177 // FIXME: this should call offsetFromContainer to share code, but I'm not su re it's ever called. 2176 // FIXME: this should call offsetFromContainer to share code, but I'm not su re it's ever called.
2178 LayoutPoint centerPoint = roundedLayoutPoint(transformState.mappedPoint()); 2177 LayoutPoint centerPoint = roundedLayoutPoint(transformState.mappedPoint());
2179 if (mode & ApplyContainerFlip && o->isBox()) { 2178 if (mode & ApplyContainerFlip && o->isBox()) {
2180 if (o->style()->isFlippedBlocksWritingMode()) 2179 if (o->style()->isFlippedBlocksWritingMode())
2181 transformState.move(toLayoutBox(o)->flipForWritingMode(roundedLayout Point(transformState.mappedPoint())) - centerPoint); 2180 transformState.move(toLayoutBox(o)->flipForWritingMode(roundedLayout Point(transformState.mappedPoint())) - centerPoint);
2182 mode &= ~ApplyContainerFlip; 2181 mode &= ~ApplyContainerFlip;
2183 } 2182 }
2184 2183
2185 transformState.move(o->columnOffset(roundedLayoutPoint(transformState.mapped Point()))); 2184 transformState.move(o->columnOffset(roundedLayoutPoint(transformState.mapped Point())));
2186 2185
2187 if (o->hasOverflowClip()) 2186 if (o->hasOverflowClip())
2188 transformState.move(-toLayoutBox(o)->scrolledContentOffset()); 2187 transformState.move(-toLayoutBox(o)->scrolledContentOffset());
2189 2188
2190 o->mapLocalToContainer(paintInvalidationContainer, transformState, mode, was Fixed, paintInvalidationState); 2189 o->mapLocalToAncestor(ancestor, transformState, mode, wasFixed, paintInvalid ationState);
2191 } 2190 }
2192 2191
2193 const LayoutObject* LayoutObject::pushMappingToContainer(const LayoutBoxModelObj ect* ancestorToStopAt, LayoutGeometryMap& geometryMap) const 2192 const LayoutObject* LayoutObject::pushMappingToContainer(const LayoutBoxModelObj ect* ancestorToStopAt, LayoutGeometryMap& geometryMap) const
2194 { 2193 {
2195 ASSERT_NOT_REACHED(); 2194 ASSERT_NOT_REACHED();
2196 return nullptr; 2195 return nullptr;
2197 } 2196 }
2198 2197
2199 void LayoutObject::mapAbsoluteToLocalPoint(MapCoordinatesFlags mode, TransformSt ate& transformState) const 2198 void LayoutObject::mapAbsoluteToLocalPoint(MapCoordinatesFlags mode, TransformSt ate& transformState) const
2200 { 2199 {
(...skipping 27 matching lines...) Expand all
2228 2227
2229 TransformationMatrix perspectiveMatrix; 2228 TransformationMatrix perspectiveMatrix;
2230 perspectiveMatrix.applyPerspective(containerObject->style()->perspective ()); 2229 perspectiveMatrix.applyPerspective(containerObject->style()->perspective ());
2231 2230
2232 transform.translateRight3d(-perspectiveOrigin.x(), -perspectiveOrigin.y( ), 0); 2231 transform.translateRight3d(-perspectiveOrigin.x(), -perspectiveOrigin.y( ), 0);
2233 transform = perspectiveMatrix * transform; 2232 transform = perspectiveMatrix * transform;
2234 transform.translateRight3d(perspectiveOrigin.x(), perspectiveOrigin.y(), 0); 2233 transform.translateRight3d(perspectiveOrigin.x(), perspectiveOrigin.y(), 0);
2235 } 2234 }
2236 } 2235 }
2237 2236
2238 FloatQuad LayoutObject::localToContainerQuad(const FloatQuad& localQuad, const L ayoutBoxModelObject* paintInvalidationContainer, MapCoordinatesFlags mode, bool* wasFixed) const 2237 FloatQuad LayoutObject::localToAncestorQuad(const FloatQuad& localQuad, const La youtBoxModelObject* ancestor, MapCoordinatesFlags mode, bool* wasFixed) const
2239 { 2238 {
2240 // Track the point at the center of the quad's bounding box. As mapLocalToCo ntainer() calls offsetFromContainer(), 2239 // Track the point at the center of the quad's bounding box. As mapLocalToAn cestor() calls offsetFromContainer(),
2241 // it will use that point as the reference point to decide which column's tr ansform to apply in multiple-column blocks. 2240 // it will use that point as the reference point to decide which column's tr ansform to apply in multiple-column blocks.
2242 TransformState transformState(TransformState::ApplyTransformDirection, local Quad.boundingBox().center(), localQuad); 2241 TransformState transformState(TransformState::ApplyTransformDirection, local Quad.boundingBox().center(), localQuad);
2243 mapLocalToContainer(paintInvalidationContainer, transformState, mode | Apply ContainerFlip | UseTransforms, wasFixed); 2242 mapLocalToAncestor(ancestor, transformState, mode | ApplyContainerFlip | Use Transforms, wasFixed);
2244 transformState.flatten(); 2243 transformState.flatten();
2245 2244
2246 return transformState.lastPlanarQuad(); 2245 return transformState.lastPlanarQuad();
2247 } 2246 }
2248 2247
2249 FloatPoint LayoutObject::localToContainerPoint(const FloatPoint& localPoint, con st LayoutBoxModelObject* paintInvalidationContainer, MapCoordinatesFlags mode, b ool* wasFixed, const PaintInvalidationState* paintInvalidationState) const 2248 FloatPoint LayoutObject::localToAncestorPoint(const FloatPoint& localPoint, cons t LayoutBoxModelObject* ancestor, MapCoordinatesFlags mode, bool* wasFixed, cons t PaintInvalidationState* paintInvalidationState) const
2250 { 2249 {
2251 TransformState transformState(TransformState::ApplyTransformDirection, local Point); 2250 TransformState transformState(TransformState::ApplyTransformDirection, local Point);
2252 mapLocalToContainer(paintInvalidationContainer, transformState, mode | Apply ContainerFlip | UseTransforms, wasFixed, paintInvalidationState); 2251 mapLocalToAncestor(ancestor, transformState, mode | ApplyContainerFlip | Use Transforms, wasFixed, paintInvalidationState);
2253 transformState.flatten(); 2252 transformState.flatten();
2254 2253
2255 return transformState.lastPlanarPoint(); 2254 return transformState.lastPlanarPoint();
2256 } 2255 }
2257 2256
2258 void LayoutObject::localToContainerRects(Vector<LayoutRect>& rects, const Layout BoxModelObject* paintInvalidationContainer, const LayoutPoint& preOffset, const LayoutPoint& postOffset) const 2257 void LayoutObject::localToAncestorRects(Vector<LayoutRect>& rects, const LayoutB oxModelObject* ancestor, const LayoutPoint& preOffset, const LayoutPoint& postOf fset) const
2259 { 2258 {
2260 for (size_t i = 0; i < rects.size(); ++i) { 2259 for (size_t i = 0; i < rects.size(); ++i) {
2261 LayoutRect& rect = rects[i]; 2260 LayoutRect& rect = rects[i];
2262 rect.moveBy(preOffset); 2261 rect.moveBy(preOffset);
2263 FloatQuad containerQuad = localToContainerQuad(FloatQuad(FloatRect(rect) ), paintInvalidationContainer); 2262 FloatQuad containerQuad = localToAncestorQuad(FloatQuad(FloatRect(rect)) , ancestor);
2264 LayoutRect containerRect = LayoutRect(containerQuad.boundingBox()); 2263 LayoutRect containerRect = LayoutRect(containerQuad.boundingBox());
2265 if (containerRect.isEmpty()) { 2264 if (containerRect.isEmpty()) {
2266 rects.remove(i--); 2265 rects.remove(i--);
2267 continue; 2266 continue;
2268 } 2267 }
2269 containerRect.moveBy(postOffset); 2268 containerRect.moveBy(postOffset);
2270 rects[i] = containerRect; 2269 rects[i] = containerRect;
2271 } 2270 }
2272 } 2271 }
2273 2272
2274 FloatPoint LayoutObject::localToInvalidationBackingPoint(const LayoutPoint& loca lPoint, PaintLayer** backingLayer) 2273 FloatPoint LayoutObject::localToInvalidationBackingPoint(const LayoutPoint& loca lPoint, PaintLayer** backingLayer)
2275 { 2274 {
2276 const LayoutBoxModelObject& paintInvalidationContainer = containerForPaintIn validation(); 2275 const LayoutBoxModelObject& paintInvalidationContainer = containerForPaintIn validation();
2277 ASSERT(paintInvalidationContainer.layer()); 2276 ASSERT(paintInvalidationContainer.layer());
2278 2277
2279 if (backingLayer) 2278 if (backingLayer)
2280 *backingLayer = paintInvalidationContainer.layer(); 2279 *backingLayer = paintInvalidationContainer.layer();
2281 FloatPoint containerPoint = localToContainerPoint(FloatPoint(localPoint), &p aintInvalidationContainer, TraverseDocumentBoundaries); 2280 FloatPoint containerPoint = localToAncestorPoint(FloatPoint(localPoint), &pa intInvalidationContainer, TraverseDocumentBoundaries);
2282 2281
2283 // A layoutObject can have no invalidation backing if it is from a detached frame, 2282 // A layoutObject can have no invalidation backing if it is from a detached frame,
2284 // or when forced compositing is disabled. 2283 // or when forced compositing is disabled.
2285 if (paintInvalidationContainer.layer()->compositingState() == NotComposited) 2284 if (paintInvalidationContainer.layer()->compositingState() == NotComposited)
2286 return containerPoint; 2285 return containerPoint;
2287 2286
2288 PaintLayer::mapPointToPaintBackingCoordinates(&paintInvalidationContainer, c ontainerPoint); 2287 PaintLayer::mapPointToPaintBackingCoordinates(&paintInvalidationContainer, c ontainerPoint);
2289 return containerPoint; 2288 return containerPoint;
2290 } 2289 }
2291 2290
2292 LayoutSize LayoutObject::offsetFromContainer(const LayoutObject* o, const Layout Point& point, bool* offsetDependsOnPoint) const 2291 LayoutSize LayoutObject::offsetFromContainer(const LayoutObject* o, const Layout Point& point, bool* offsetDependsOnPoint) const
2293 { 2292 {
2294 ASSERT(o == container()); 2293 ASSERT(o == container());
2295 2294
2296 LayoutSize offset = o->columnOffset(point); 2295 LayoutSize offset = o->columnOffset(point);
2297 2296
2298 if (o->hasOverflowClip()) 2297 if (o->hasOverflowClip())
2299 offset -= toLayoutBox(o)->scrolledContentOffset(); 2298 offset -= toLayoutBox(o)->scrolledContentOffset();
2300 2299
2301 if (offsetDependsOnPoint) 2300 if (offsetDependsOnPoint)
2302 *offsetDependsOnPoint = o->isLayoutFlowThread(); 2301 *offsetDependsOnPoint = o->isLayoutFlowThread();
2303 2302
2304 return offset; 2303 return offset;
2305 } 2304 }
2306 2305
2307 LayoutSize LayoutObject::offsetFromAncestorContainer(const LayoutObject* contain er) const 2306 LayoutSize LayoutObject::offsetFromAncestorContainer(const LayoutObject* ancesto rContainer) const
2308 { 2307 {
2309 if (container == this) 2308 if (ancestorContainer == this)
2310 return LayoutSize(); 2309 return LayoutSize();
2311 2310
2312 LayoutSize offset; 2311 LayoutSize offset;
2313 LayoutPoint referencePoint; 2312 LayoutPoint referencePoint;
2314 const LayoutObject* currContainer = this; 2313 const LayoutObject* currContainer = this;
2315 do { 2314 do {
2316 const LayoutObject* nextContainer = currContainer->container(); 2315 const LayoutObject* nextContainer = currContainer->container();
2317 ASSERT(nextContainer); // This means we reached the top without finding container. 2316 ASSERT(nextContainer); // This means we reached the top without finding container.
2318 if (!nextContainer) 2317 if (!nextContainer)
2319 break; 2318 break;
2320 ASSERT(!currContainer->hasTransformRelatedProperty()); 2319 ASSERT(!currContainer->hasTransformRelatedProperty());
2321 LayoutSize currentOffset = currContainer->offsetFromContainer(nextContai ner, referencePoint); 2320 LayoutSize currentOffset = currContainer->offsetFromContainer(nextContai ner, referencePoint);
2322 offset += currentOffset; 2321 offset += currentOffset;
2323 referencePoint.move(currentOffset); 2322 referencePoint.move(currentOffset);
2324 currContainer = nextContainer; 2323 currContainer = nextContainer;
2325 } while (currContainer != container); 2324 } while (currContainer != ancestorContainer);
2326 2325
2327 return offset; 2326 return offset;
2328 } 2327 }
2329 2328
2330 LayoutRect LayoutObject::localCaretRect(InlineBox*, int, LayoutUnit* extraWidthT oEndOfLine) 2329 LayoutRect LayoutObject::localCaretRect(InlineBox*, int, LayoutUnit* extraWidthT oEndOfLine)
2331 { 2330 {
2332 if (extraWidthToEndOfLine) 2331 if (extraWidthToEndOfLine)
2333 *extraWidthToEndOfLine = 0; 2332 *extraWidthToEndOfLine = 0;
2334 2333
2335 return LayoutRect(); 2334 return LayoutRect();
(...skipping 1182 matching lines...) Expand 10 before | Expand all | Expand 10 after
3518 const blink::LayoutObject* root = object1; 3517 const blink::LayoutObject* root = object1;
3519 while (root->parent()) 3518 while (root->parent())
3520 root = root->parent(); 3519 root = root->parent();
3521 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0); 3520 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0);
3522 } else { 3521 } else {
3523 fprintf(stderr, "Cannot showLayoutTree. Root is (nil)\n"); 3522 fprintf(stderr, "Cannot showLayoutTree. Root is (nil)\n");
3524 } 3523 }
3525 } 3524 }
3526 3525
3527 #endif 3526 #endif
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutObject.h ('k') | third_party/WebKit/Source/core/layout/LayoutObjectTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698