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

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

Issue 2770123003: Replace ASSERT with DCHECK in core/layout/ excluding subdirs (Closed)
Patch Set: Split some DCHECKs and add DCHECK_ops wherever possible Created 3 years, 8 months 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) 2005 Allan Sandfeld Jensen (kde@carewolf.com) 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com)
5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com)
6 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
7 * Copyright (C) 2010 Google Inc. All rights reserved. 7 * Copyright (C) 2010 Google Inc. All rights reserved.
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public 10 * modify it under the terms of the GNU Library General Public
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 89
90 class FloatStateForStyleChange { 90 class FloatStateForStyleChange {
91 public: 91 public:
92 static void setWasFloating(LayoutBoxModelObject* boxModelObject, 92 static void setWasFloating(LayoutBoxModelObject* boxModelObject,
93 bool wasFloating) { 93 bool wasFloating) {
94 s_wasFloating = wasFloating; 94 s_wasFloating = wasFloating;
95 s_boxModelObject = boxModelObject; 95 s_boxModelObject = boxModelObject;
96 } 96 }
97 97
98 static bool wasFloating(LayoutBoxModelObject* boxModelObject) { 98 static bool wasFloating(LayoutBoxModelObject* boxModelObject) {
99 ASSERT(boxModelObject == s_boxModelObject); 99 DCHECK_EQ(boxModelObject, s_boxModelObject);
100 return s_wasFloating; 100 return s_wasFloating;
101 } 101 }
102 102
103 private: 103 private:
104 // Used to store state between styleWillChange and styleDidChange 104 // Used to store state between styleWillChange and styleDidChange
105 static bool s_wasFloating; 105 static bool s_wasFloating;
106 static LayoutBoxModelObject* s_boxModelObject; 106 static LayoutBoxModelObject* s_boxModelObject;
107 }; 107 };
108 108
109 bool FloatStateForStyleChange::s_wasFloating = false; 109 bool FloatStateForStyleChange::s_wasFloating = false;
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 continue; 227 continue;
228 } 228 }
229 } 229 }
230 return BackgroundPaintInGraphicsLayer; 230 return BackgroundPaintInGraphicsLayer;
231 } 231 }
232 return paintLocation; 232 return paintLocation;
233 } 233 }
234 234
235 LayoutBoxModelObject::~LayoutBoxModelObject() { 235 LayoutBoxModelObject::~LayoutBoxModelObject() {
236 // Our layer should have been destroyed and cleared by now 236 // Our layer should have been destroyed and cleared by now
237 ASSERT(!hasLayer()); 237 DCHECK(!hasLayer());
238 ASSERT(!m_layer); 238 DCHECK(!m_layer);
239 } 239 }
240 240
241 void LayoutBoxModelObject::willBeDestroyed() { 241 void LayoutBoxModelObject::willBeDestroyed() {
242 ImageQualityController::remove(*this); 242 ImageQualityController::remove(*this);
243 243
244 // A continuation of this LayoutObject should be destroyed at subclasses. 244 // A continuation of this LayoutObject should be destroyed at subclasses.
245 ASSERT(!continuation()); 245 DCHECK(!continuation());
246 246
247 if (isPositioned()) { 247 if (isPositioned()) {
248 // Don't use this->view() because the document's layoutView has been set to 248 // Don't use this->view() because the document's layoutView has been set to
249 // 0 during destruction. 249 // 0 during destruction.
250 if (LocalFrame* frame = this->frame()) { 250 if (LocalFrame* frame = this->frame()) {
251 if (FrameView* frameView = frame->view()) { 251 if (FrameView* frameView = frame->view()) {
252 if (style()->hasViewportConstrainedPosition()) 252 if (style()->hasViewportConstrainedPosition())
253 frameView->removeViewportConstrainedObject(*this); 253 frameView->removeViewportConstrainedObject(*this);
254 } 254 }
255 } 255 }
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 // as if we have saved constraints for this layer they were saved in the 493 // as if we have saved constraints for this layer they were saved in the
494 // previous frame. 494 // previous frame.
495 DisableCompositingQueryAsserts disabler; 495 DisableCompositingQueryAsserts disabler;
496 if (const PaintLayer* ancestorOverflowLayer = 496 if (const PaintLayer* ancestorOverflowLayer =
497 enclosing->ancestorOverflowLayer()) 497 enclosing->ancestorOverflowLayer())
498 ancestorOverflowLayer->getScrollableArea() 498 ancestorOverflowLayer->getScrollableArea()
499 ->invalidateAllStickyConstraints(); 499 ->invalidateAllStickyConstraints();
500 } 500 }
501 501
502 void LayoutBoxModelObject::createLayer() { 502 void LayoutBoxModelObject::createLayer() {
503 ASSERT(!m_layer); 503 DCHECK(!m_layer);
504 m_layer = WTF::makeUnique<PaintLayer>(*this); 504 m_layer = WTF::makeUnique<PaintLayer>(*this);
505 setHasLayer(true); 505 setHasLayer(true);
506 m_layer->insertOnlyThisLayerAfterStyleChange(); 506 m_layer->insertOnlyThisLayerAfterStyleChange();
507 } 507 }
508 508
509 void LayoutBoxModelObject::destroyLayer() { 509 void LayoutBoxModelObject::destroyLayer() {
510 setHasLayer(false); 510 setHasLayer(false);
511 m_layer = nullptr; 511 m_layer = nullptr;
512 } 512 }
513 513
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
660 object = object->nextInPreOrder(object)) { 660 object = object->nextInPreOrder(object)) {
661 if (object->isBox()) { 661 if (object->isBox()) {
662 const LayoutBox& box = toLayoutBox(*object); 662 const LayoutBox& box = toLayoutBox(*object);
663 if (box.logicalHeight() && box.logicalWidth()) 663 if (box.logicalHeight() && box.logicalWidth())
664 return true; 664 return true;
665 } else if (object->isLayoutInline()) { 665 } else if (object->isLayoutInline()) {
666 const LayoutInline& layoutInline = toLayoutInline(*object); 666 const LayoutInline& layoutInline = toLayoutInline(*object);
667 if (!layoutInline.linesBoundingBox().isEmpty()) 667 if (!layoutInline.linesBoundingBox().isEmpty())
668 return true; 668 return true;
669 } else { 669 } else {
670 ASSERT(object->isText()); 670 DCHECK(object->isText());
671 } 671 }
672 } 672 }
673 } 673 }
674 return false; 674 return false;
675 } 675 }
676 676
677 void LayoutBoxModelObject::absoluteQuadsForSelf( 677 void LayoutBoxModelObject::absoluteQuadsForSelf(
678 Vector<FloatQuad>& quads, 678 Vector<FloatQuad>& quads,
679 MapCoordinatesFlags mode) const { 679 MapCoordinatesFlags mode) const {
680 NOTREACHED(); 680 NOTREACHED();
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after
1215 LayoutUnit LayoutBoxModelObject::containingBlockLogicalWidthForContent() const { 1215 LayoutUnit LayoutBoxModelObject::containingBlockLogicalWidthForContent() const {
1216 return containingBlock()->availableLogicalWidth(); 1216 return containingBlock()->availableLogicalWidth();
1217 } 1217 }
1218 1218
1219 LayoutBoxModelObject* LayoutBoxModelObject::continuation() const { 1219 LayoutBoxModelObject* LayoutBoxModelObject::continuation() const {
1220 return (!continuationMap) ? nullptr : continuationMap->at(this); 1220 return (!continuationMap) ? nullptr : continuationMap->at(this);
1221 } 1221 }
1222 1222
1223 void LayoutBoxModelObject::setContinuation(LayoutBoxModelObject* continuation) { 1223 void LayoutBoxModelObject::setContinuation(LayoutBoxModelObject* continuation) {
1224 if (continuation) { 1224 if (continuation) {
1225 ASSERT(continuation->isLayoutInline() || continuation->isLayoutBlockFlow()); 1225 DCHECK(continuation->isLayoutInline() || continuation->isLayoutBlockFlow());
1226 if (!continuationMap) 1226 if (!continuationMap)
1227 continuationMap = new ContinuationMap; 1227 continuationMap = new ContinuationMap;
1228 continuationMap->set(this, continuation); 1228 continuationMap->set(this, continuation);
1229 } else { 1229 } else {
1230 if (continuationMap) 1230 if (continuationMap)
1231 continuationMap->erase(this); 1231 continuationMap->erase(this);
1232 } 1232 }
1233 } 1233 }
1234 1234
1235 void LayoutBoxModelObject::computeLayerHitTestRects( 1235 void LayoutBoxModelObject::computeLayerHitTestRects(
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
1320 height; 1320 height;
1321 LayoutUnit y = paddingTop() + borderTop() + (verticalSpace / 2); 1321 LayoutUnit y = paddingTop() + borderTop() + (verticalSpace / 2);
1322 return currentStyle.isHorizontalWritingMode() 1322 return currentStyle.isHorizontalWritingMode()
1323 ? LayoutRect(x, y, caretWidth, height) 1323 ? LayoutRect(x, y, caretWidth, height)
1324 : LayoutRect(y, x, height, caretWidth); 1324 : LayoutRect(y, x, height, caretWidth);
1325 } 1325 }
1326 1326
1327 const LayoutObject* LayoutBoxModelObject::pushMappingToContainer( 1327 const LayoutObject* LayoutBoxModelObject::pushMappingToContainer(
1328 const LayoutBoxModelObject* ancestorToStopAt, 1328 const LayoutBoxModelObject* ancestorToStopAt,
1329 LayoutGeometryMap& geometryMap) const { 1329 LayoutGeometryMap& geometryMap) const {
1330 ASSERT(ancestorToStopAt != this); 1330 DCHECK_NE(ancestorToStopAt, this);
1331 1331
1332 AncestorSkipInfo skipInfo(ancestorToStopAt); 1332 AncestorSkipInfo skipInfo(ancestorToStopAt);
1333 LayoutObject* container = this->container(&skipInfo); 1333 LayoutObject* container = this->container(&skipInfo);
1334 if (!container) 1334 if (!container)
1335 return nullptr; 1335 return nullptr;
1336 1336
1337 bool isInline = isLayoutInline(); 1337 bool isInline = isLayoutInline();
1338 bool isFixedPos = !isInline && style()->position() == EPosition::kFixed; 1338 bool isFixedPos = !isInline && style()->position() == EPosition::kFixed;
1339 bool containsFixedPosition = canContainFixedPositionObjects(); 1339 bool containsFixedPosition = canContainFixedPositionObjects();
1340 1340
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1382 return skipInfo.ancestorSkipped() ? ancestorToStopAt : container; 1382 return skipInfo.ancestorSkipped() ? ancestorToStopAt : container;
1383 } 1383 }
1384 1384
1385 void LayoutBoxModelObject::moveChildTo(LayoutBoxModelObject* toBoxModelObject, 1385 void LayoutBoxModelObject::moveChildTo(LayoutBoxModelObject* toBoxModelObject,
1386 LayoutObject* child, 1386 LayoutObject* child,
1387 LayoutObject* beforeChild, 1387 LayoutObject* beforeChild,
1388 bool fullRemoveInsert) { 1388 bool fullRemoveInsert) {
1389 // We assume that callers have cleared their positioned objects list for child 1389 // We assume that callers have cleared their positioned objects list for child
1390 // moves (!fullRemoveInsert) so the positioned layoutObject maps don't become 1390 // moves (!fullRemoveInsert) so the positioned layoutObject maps don't become
1391 // stale. It would be too slow to do the map lookup on each call. 1391 // stale. It would be too slow to do the map lookup on each call.
1392 ASSERT(!fullRemoveInsert || !isLayoutBlock() || 1392 DCHECK(!fullRemoveInsert || !isLayoutBlock() ||
1393 !toLayoutBlock(this)->hasPositionedObjects()); 1393 !toLayoutBlock(this)->hasPositionedObjects());
1394 1394
1395 ASSERT(this == child->parent()); 1395 DCHECK_EQ(this, child->parent());
1396 ASSERT(!beforeChild || toBoxModelObject == beforeChild->parent()); 1396 DCHECK(!beforeChild || toBoxModelObject == beforeChild->parent());
1397 1397
1398 // If a child is moving from a block-flow to an inline-flow parent then any 1398 // If a child is moving from a block-flow to an inline-flow parent then any
1399 // floats currently intruding into the child can no longer do so. This can 1399 // floats currently intruding into the child can no longer do so. This can
1400 // happen if a block becomes floating or out-of-flow and is moved to an 1400 // happen if a block becomes floating or out-of-flow and is moved to an
1401 // anonymous block. Remove all floats from their float-lists immediately as 1401 // anonymous block. Remove all floats from their float-lists immediately as
1402 // markAllDescendantsWithFloatsForLayout won't attempt to remove floats from 1402 // markAllDescendantsWithFloatsForLayout won't attempt to remove floats from
1403 // parents that have inline-flow if we try later. 1403 // parents that have inline-flow if we try later.
1404 if (child->isLayoutBlockFlow() && toBoxModelObject->childrenInline() && 1404 if (child->isLayoutBlockFlow() && toBoxModelObject->childrenInline() &&
1405 !childrenInline()) { 1405 !childrenInline()) {
1406 toLayoutBlockFlow(child)->removeFloatingObjectsFromDescendants(); 1406 toLayoutBlockFlow(child)->removeFloatingObjectsFromDescendants();
1407 ASSERT(!toLayoutBlockFlow(child)->containsFloats()); 1407 DCHECK(!toLayoutBlockFlow(child)->containsFloats());
1408 } 1408 }
1409 1409
1410 if (fullRemoveInsert && isLayoutBlock() && child->isBox()) 1410 if (fullRemoveInsert && isLayoutBlock() && child->isBox())
1411 toLayoutBox(child)->removeFromPercentHeightContainer(); 1411 toLayoutBox(child)->removeFromPercentHeightContainer();
1412 1412
1413 if (fullRemoveInsert && (toBoxModelObject->isLayoutBlock() || 1413 if (fullRemoveInsert && (toBoxModelObject->isLayoutBlock() ||
1414 toBoxModelObject->isLayoutInline())) { 1414 toBoxModelObject->isLayoutInline())) {
1415 // Takes care of adding the new child correctly if toBlock and fromBlock 1415 // Takes care of adding the new child correctly if toBlock and fromBlock
1416 // have different kind of children (block vs inline). 1416 // have different kind of children (block vs inline).
1417 toBoxModelObject->addChild(virtualChildren()->removeChildNode(this, child), 1417 toBoxModelObject->addChild(virtualChildren()->removeChildNode(this, child),
(...skipping 16 matching lines...) Expand all
1434 // anonymous blocks which can no longer carry positioned objects (see r120761) 1434 // anonymous blocks which can no longer carry positioned objects (see r120761)
1435 // or when fullRemoveInsert is false. 1435 // or when fullRemoveInsert is false.
1436 if (fullRemoveInsert && isLayoutBlock()) { 1436 if (fullRemoveInsert && isLayoutBlock()) {
1437 LayoutBlock* block = toLayoutBlock(this); 1437 LayoutBlock* block = toLayoutBlock(this);
1438 block->removePositionedObjects(nullptr); 1438 block->removePositionedObjects(nullptr);
1439 block->removeFromPercentHeightContainer(); 1439 block->removeFromPercentHeightContainer();
1440 if (block->isLayoutBlockFlow()) 1440 if (block->isLayoutBlockFlow())
1441 toLayoutBlockFlow(block)->removeFloatingObjects(); 1441 toLayoutBlockFlow(block)->removeFloatingObjects();
1442 } 1442 }
1443 1443
1444 ASSERT(!beforeChild || toBoxModelObject == beforeChild->parent()); 1444 DCHECK(!beforeChild || toBoxModelObject == beforeChild->parent());
1445 for (LayoutObject* child = startChild; child && child != endChild;) { 1445 for (LayoutObject* child = startChild; child && child != endChild;) {
1446 // Save our next sibling as moveChildTo will clear it. 1446 // Save our next sibling as moveChildTo will clear it.
1447 LayoutObject* nextSibling = child->nextSibling(); 1447 LayoutObject* nextSibling = child->nextSibling();
1448 moveChildTo(toBoxModelObject, child, beforeChild, fullRemoveInsert); 1448 moveChildTo(toBoxModelObject, child, beforeChild, fullRemoveInsert);
1449 child = nextSibling; 1449 child = nextSibling;
1450 } 1450 }
1451 } 1451 }
1452 1452
1453 bool LayoutBoxModelObject::backgroundStolenForBeingBody( 1453 bool LayoutBoxModelObject::backgroundStolenForBeingBody(
1454 const ComputedStyle* rootElementStyle) const { 1454 const ComputedStyle* rootElementStyle) const {
(...skipping 13 matching lines...) Expand all
1468 if (rootElementStyle->hasBackground()) 1468 if (rootElementStyle->hasBackground())
1469 return false; 1469 return false;
1470 1470
1471 if (node() != document().firstBodyElement()) 1471 if (node() != document().firstBodyElement())
1472 return false; 1472 return false;
1473 1473
1474 return true; 1474 return true;
1475 } 1475 }
1476 1476
1477 } // namespace blink 1477 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutBox.cpp ('k') | third_party/WebKit/Source/core/layout/LayoutButton.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698