| OLD | NEW |
| 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 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 // FIXME: Remove incremental compositing updates after fixing the | 288 // FIXME: Remove incremental compositing updates after fixing the |
| 289 // chicken/egg issues, https://crbug.com/343756 | 289 // chicken/egg issues, https://crbug.com/343756 |
| 290 DisableCompositingQueryAsserts disabler; | 290 DisableCompositingQueryAsserts disabler; |
| 291 updatePaginationRecursive(enclosingPaginationLayer()); | 291 updatePaginationRecursive(enclosingPaginationLayer()); |
| 292 } | 292 } |
| 293 } | 293 } |
| 294 | 294 |
| 295 void PaintLayer::updateLayerPositionRecursive() { | 295 void PaintLayer::updateLayerPositionRecursive() { |
| 296 updateLayerPosition(); | 296 updateLayerPosition(); |
| 297 | 297 |
| 298 // FIXME(400589): We would like to do this in | |
| 299 // PaintLayerScrollableArea::updateAfterLayout, but it depends on the size | |
| 300 // computed by updateLayerPosition. | |
| 301 if (m_scrollableArea) { | |
| 302 if (ScrollAnimatorBase* scrollAnimator = | |
| 303 m_scrollableArea->existingScrollAnimator()) | |
| 304 scrollAnimator->updateAfterLayout(); | |
| 305 } | |
| 306 | |
| 307 for (PaintLayer* child = firstChild(); child; child = child->nextSibling()) | 298 for (PaintLayer* child = firstChild(); child; child = child->nextSibling()) |
| 308 child->updateLayerPositionRecursive(); | 299 child->updateLayerPositionRecursive(); |
| 309 } | 300 } |
| 310 | 301 |
| 311 void PaintLayer::updateHasSelfPaintingLayerDescendant() const { | 302 void PaintLayer::updateHasSelfPaintingLayerDescendant() const { |
| 312 DCHECK(m_hasSelfPaintingLayerDescendantDirty); | 303 DCHECK(m_hasSelfPaintingLayerDescendantDirty); |
| 313 | 304 |
| 314 m_hasSelfPaintingLayerDescendant = false; | 305 m_hasSelfPaintingLayerDescendant = false; |
| 315 | 306 |
| 316 for (PaintLayer* child = firstChild(); child; child = child->nextSibling()) { | 307 for (PaintLayer* child = firstChild(); child; child = child->nextSibling()) { |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 371 (layoutObject()->style()->position() == StickyPosition && | 362 (layoutObject()->style()->position() == StickyPosition && |
| 372 (!ancestorScrollingLayer() || ancestorScrollingLayer() == root())); | 363 (!ancestorScrollingLayer() || ancestorScrollingLayer() == root())); |
| 373 } | 364 } |
| 374 | 365 |
| 375 bool PaintLayer::scrollsWithRespectTo(const PaintLayer* other) const { | 366 bool PaintLayer::scrollsWithRespectTo(const PaintLayer* other) const { |
| 376 if (sticksToViewport() != other->sticksToViewport()) | 367 if (sticksToViewport() != other->sticksToViewport()) |
| 377 return true; | 368 return true; |
| 378 return ancestorScrollingLayer() != other->ancestorScrollingLayer(); | 369 return ancestorScrollingLayer() != other->ancestorScrollingLayer(); |
| 379 } | 370 } |
| 380 | 371 |
| 381 void PaintLayer::updateLayerPositionsAfterOverflowScroll( | 372 void PaintLayer::updateLayerPositionsAfterOverflowScroll() { |
| 382 const DoubleSize& scrollDelta) { | |
| 383 clipper().clearClipRectsIncludingDescendants(); | 373 clipper().clearClipRectsIncludingDescendants(); |
| 384 updateLayerPositionsAfterScrollRecursive(scrollDelta, | 374 updateLayerPositionRecursive(); |
| 385 isPaintInvalidationContainer()); | |
| 386 } | |
| 387 | |
| 388 void PaintLayer::updateLayerPositionsAfterScrollRecursive( | |
| 389 const DoubleSize& scrollDelta, | |
| 390 bool paintInvalidationContainerWasScrolled) { | |
| 391 updateLayerPosition(); | |
| 392 if (paintInvalidationContainerWasScrolled && | |
| 393 !isPaintInvalidationContainer()) { | |
| 394 // Paint invalidation rects are in the coordinate space of the paint | |
| 395 // invalidation container. If it has scrolled, the rect must be adjusted. | |
| 396 // Note that it is not safe to reset it to the current bounds rect, as the | |
| 397 // LayoutObject may have moved since the | |
| 398 // last invalidation. | |
| 399 // FIXME(416535): Ideally, pending invalidations of scrolling content should | |
| 400 // be stored in the coordinate space of the scrolling content layer, so that | |
| 401 // they need no adjustment. | |
| 402 m_layoutObject->adjustPreviousPaintInvalidationForScrollIfNeeded( | |
| 403 scrollDelta); | |
| 404 } | |
| 405 for (PaintLayer* child = firstChild(); child; child = child->nextSibling()) { | |
| 406 child->updateLayerPositionsAfterScrollRecursive( | |
| 407 scrollDelta, paintInvalidationContainerWasScrolled && | |
| 408 !child->isPaintInvalidationContainer()); | |
| 409 } | |
| 410 } | 375 } |
| 411 | 376 |
| 412 void PaintLayer::updateTransformationMatrix() { | 377 void PaintLayer::updateTransformationMatrix() { |
| 413 if (TransformationMatrix* transform = this->transform()) { | 378 if (TransformationMatrix* transform = this->transform()) { |
| 414 LayoutBox* box = layoutBox(); | 379 LayoutBox* box = layoutBox(); |
| 415 DCHECK(box); | 380 DCHECK(box); |
| 416 transform->makeIdentity(); | 381 transform->makeIdentity(); |
| 417 box->style()->applyTransform( | 382 box->style()->applyTransform( |
| 418 *transform, box->size(), ComputedStyle::IncludeTransformOrigin, | 383 *transform, box->size(), ComputedStyle::IncludeTransformOrigin, |
| 419 ComputedStyle::IncludeMotionPath, | 384 ComputedStyle::IncludeMotionPath, |
| (...skipping 2869 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3289 } | 3254 } |
| 3290 | 3255 |
| 3291 void showLayerTree(const blink::LayoutObject* layoutObject) { | 3256 void showLayerTree(const blink::LayoutObject* layoutObject) { |
| 3292 if (!layoutObject) { | 3257 if (!layoutObject) { |
| 3293 LOG(INFO) << "Cannot showLayerTree. Root is (nil)"; | 3258 LOG(INFO) << "Cannot showLayerTree. Root is (nil)"; |
| 3294 return; | 3259 return; |
| 3295 } | 3260 } |
| 3296 showLayerTree(layoutObject->enclosingLayer()); | 3261 showLayerTree(layoutObject->enclosingLayer()); |
| 3297 } | 3262 } |
| 3298 #endif | 3263 #endif |
| OLD | NEW |