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

Side by Side Diff: Source/core/paint/DeprecatedPaintLayer.cpp

Issue 1198273003: Get rid of old flow thread comments and asserts in accumulateOffsetTowardsAncestor(). (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
3 * 3 *
4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation.
5 * 5 *
6 * Other contributors: 6 * Other contributors:
7 * Robert O'Callahan <roc+@cs.cmu.edu> 7 * Robert O'Callahan <roc+@cs.cmu.edu>
8 * David Baron <dbaron@fas.harvard.edu> 8 * David Baron <dbaron@fas.harvard.edu>
9 * Christian Biesinger <cbiesinger@web.de> 9 * Christian Biesinger <cbiesinger@web.de>
10 * Randall Jesup <rjesup@wgate.com> 10 * Randall Jesup <rjesup@wgate.com>
(...skipping 1248 matching lines...) Expand 10 before | Expand all | Expand 10 after
1259 } 1259 }
1260 1260
1261 // Returns the layer reached on the walk up towards the ancestor. 1261 // Returns the layer reached on the walk up towards the ancestor.
1262 static inline const DeprecatedPaintLayer* accumulateOffsetTowardsAncestor(const DeprecatedPaintLayer* layer, const DeprecatedPaintLayer* ancestorLayer, LayoutPo int& location) 1262 static inline const DeprecatedPaintLayer* accumulateOffsetTowardsAncestor(const DeprecatedPaintLayer* layer, const DeprecatedPaintLayer* ancestorLayer, LayoutPo int& location)
1263 { 1263 {
1264 ASSERT(ancestorLayer != layer); 1264 ASSERT(ancestorLayer != layer);
1265 1265
1266 const LayoutBoxModelObject* layoutObject = layer->layoutObject(); 1266 const LayoutBoxModelObject* layoutObject = layer->layoutObject();
1267 EPosition position = layoutObject->style()->position(); 1267 EPosition position = layoutObject->style()->position();
1268 1268
1269 // FIXME: Positioning of out-of-flow(fixed, absolute) elements collected in a LayoutFlowThread
mstensho (USE GERRIT) 2015/06/22 19:56:44 Comment from the early development stages in WebKi
1270 // may need to be revisited in a future patch.
1271 // If the fixed layoutObject is inside a LayoutFlowThread, we should not com pute location using localToAbsolute,
mstensho (USE GERRIT) 2015/06/22 19:56:44 This is a comment that survived the https://codere
1272 // since localToAbsolute maps the coordinates from flow thread to column set coordinates and column sets can be
1273 // positioned in a completely different place in the viewport (LayoutView).
1274 if (position == FixedPosition && (!ancestorLayer || ancestorLayer == layoutO bject->view()->layer())) { 1269 if (position == FixedPosition && (!ancestorLayer || ancestorLayer == layoutO bject->view()->layer())) {
1275 // If the fixed layer's container is the root, just add in the offset of the view. We can obtain this by calling 1270 // If the fixed layer's container is the root, just add in the offset of the view. We can obtain this by calling
1276 // localToAbsolute() on the LayoutView. 1271 // localToAbsolute() on the LayoutView.
1277 FloatPoint absPos = layoutObject->localToAbsolute(FloatPoint(), IsFixed) ; 1272 FloatPoint absPos = layoutObject->localToAbsolute(FloatPoint(), IsFixed) ;
1278 location += LayoutSize(absPos.x(), absPos.y()); 1273 location += LayoutSize(absPos.x(), absPos.y());
1279 return ancestorLayer; 1274 return ancestorLayer;
1280 } 1275 }
1281 1276
1282 // For the fixed positioned elements inside a layout flow thread, we should also skip the code path below
mstensho (USE GERRIT) 2015/06/22 19:56:44 Leftovers from https://codereview.chromium.org/616
1283 // Otherwise, for the case of ancestorLayer == rootLayer and fixed positione d element child of a transformed
1284 // element in layout flow thread, we will hit the fixed positioned container before hitting the ancestor layer.
1285 if (position == FixedPosition) { 1277 if (position == FixedPosition) {
1286 // For a fixed layers, we need to walk up to the root to see if there's a fixed position container 1278 // For a fixed layers, we need to walk up to the root to see if there's a fixed position container
1287 // (e.g. a transformed layer). It's an error to call convertToLayerCoord s() across a layer with a transform, 1279 // (e.g. a transformed layer). It's an error to call convertToLayerCoord s() across a layer with a transform,
1288 // so we should always find the ancestor at or before we find the fixed position container, if 1280 // so we should always find the ancestor at or before we find the fixed position container, if
1289 // the container is transformed. 1281 // the container is transformed.
1290 DeprecatedPaintLayer* fixedPositionContainerLayer = 0; 1282 DeprecatedPaintLayer* fixedPositionContainerLayer = 0;
1291 bool foundAncestor = false; 1283 bool foundAncestor = false;
1292 for (DeprecatedPaintLayer* currLayer = layer->parent(); currLayer; currL ayer = currLayer->parent()) { 1284 for (DeprecatedPaintLayer* currLayer = layer->parent(); currLayer; currL ayer = currLayer->parent()) {
1293 if (currLayer == ancestorLayer) 1285 if (currLayer == ancestorLayer)
1294 foundAncestor = true; 1286 foundAncestor = true;
(...skipping 30 matching lines...) Expand all
1325 } 1317 }
1326 return foundAncestor ? ancestorLayer : fixedPositionContainerLayer; 1318 return foundAncestor ? ancestorLayer : fixedPositionContainerLayer;
1327 } 1319 }
1328 1320
1329 DeprecatedPaintLayer* parentLayer; 1321 DeprecatedPaintLayer* parentLayer;
1330 if (position == AbsolutePosition) { 1322 if (position == AbsolutePosition) {
1331 // Do what enclosingPositionedAncestor() does, but check for ancestorLay er along the way. 1323 // Do what enclosingPositionedAncestor() does, but check for ancestorLay er along the way.
1332 parentLayer = layer->parent(); 1324 parentLayer = layer->parent();
1333 bool foundAncestorFirst = false; 1325 bool foundAncestorFirst = false;
1334 while (parentLayer) { 1326 while (parentLayer) {
1335 // LayoutFlowThread is a positioned container, child of LayoutView, positioned at (0,0).
mstensho (USE GERRIT) 2015/06/22 19:56:44 CSS regions stuff. Those flow threads used to be d
1336 // This implies that, for out-of-flow positioned elements inside a L ayoutFlowThread,
1337 // we are bailing out before reaching root layer.
1338 if (parentLayer->isPositionedContainer()) 1327 if (parentLayer->isPositionedContainer())
1339 break; 1328 break;
1340 1329
1341 if (parentLayer == ancestorLayer) { 1330 if (parentLayer == ancestorLayer) {
1342 foundAncestorFirst = true; 1331 foundAncestorFirst = true;
1343 break; 1332 break;
1344 } 1333 }
1345 1334
1346 parentLayer = parentLayer->parent(); 1335 parentLayer = parentLayer->parent();
1347 } 1336 }
1348 1337
1349 // We should not reach LayoutView layer past the LayoutFlowThread layer for any
mstensho (USE GERRIT) 2015/06/22 19:56:44 Nothing incorrect in this assertion as such, but i
1350 // children of the LayoutFlowThread.
1351 ASSERT(!layoutObject->flowThreadContainingBlock() || parentLayer != layo utObject->view()->layer());
1352
1353 if (foundAncestorFirst) { 1338 if (foundAncestorFirst) {
1354 // Found ancestorLayer before the abs. positioned container, so comp ute offset of both relative 1339 // Found ancestorLayer before the abs. positioned container, so comp ute offset of both relative
1355 // to enclosingPositionedAncestor and subtract. 1340 // to enclosingPositionedAncestor and subtract.
1356 DeprecatedPaintLayer* positionedAncestor = parentLayer->enclosingPos itionedAncestor(); 1341 DeprecatedPaintLayer* positionedAncestor = parentLayer->enclosingPos itionedAncestor();
1357 1342
1358 LayoutPoint thisCoords; 1343 LayoutPoint thisCoords;
1359 layer->convertToLayerCoords(positionedAncestor, thisCoords); 1344 layer->convertToLayerCoords(positionedAncestor, thisCoords);
1360 1345
1361 LayoutPoint ancestorCoords; 1346 LayoutPoint ancestorCoords;
1362 ancestorLayer->convertToLayerCoords(positionedAncestor, ancestorCoor ds); 1347 ancestorLayer->convertToLayerCoords(positionedAncestor, ancestorCoor ds);
(...skipping 1392 matching lines...) Expand 10 before | Expand all | Expand 10 after
2755 2740
2756 void showLayerTree(const blink::LayoutObject* layoutObject) 2741 void showLayerTree(const blink::LayoutObject* layoutObject)
2757 { 2742 {
2758 if (!layoutObject) { 2743 if (!layoutObject) {
2759 fprintf(stderr, "Cannot showLayerTree. Root is (nil)\n"); 2744 fprintf(stderr, "Cannot showLayerTree. Root is (nil)\n");
2760 return; 2745 return;
2761 } 2746 }
2762 showLayerTree(layoutObject->enclosingLayer()); 2747 showLayerTree(layoutObject->enclosingLayer());
2763 } 2748 }
2764 #endif 2749 #endif
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698