Chromium Code Reviews| OLD | NEW | 
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "core/paint/PaintLayerPainter.h" | 5 #include "core/paint/PaintLayerPainter.h" | 
| 6 | 6 | 
| 7 #include "core/frame/LocalFrame.h" | 7 #include "core/frame/LocalFrame.h" | 
| 8 #include "core/layout/LayoutView.h" | 8 #include "core/layout/LayoutView.h" | 
| 9 #include "core/paint/ClipPathClipper.h" | 9 #include "core/paint/ClipPathClipper.h" | 
| 10 #include "core/paint/FilterPainter.h" | 10 #include "core/paint/FilterPainter.h" | 
| (...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 320 // These helpers output clip and compositing operations using a RAII pattern. | 320 // These helpers output clip and compositing operations using a RAII pattern. | 
| 321 // Stack-allocated-varibles are destructed in the reverse order of | 321 // Stack-allocated-varibles are destructed in the reverse order of | 
| 322 // construction, so they are nested properly. | 322 // construction, so they are nested properly. | 
| 323 Optional<ClipPathClipper> clipPathClipper; | 323 Optional<ClipPathClipper> clipPathClipper; | 
| 324 // Clip-path, like border radius, must not be applied to the contents of a | 324 // Clip-path, like border radius, must not be applied to the contents of a | 
| 325 // composited-scrolling container. It must, however, still be applied to the | 325 // composited-scrolling container. It must, however, still be applied to the | 
| 326 // mask layer, so that the compositor can properly mask the | 326 // mask layer, so that the compositor can properly mask the | 
| 327 // scrolling contents and scrollbars. | 327 // scrolling contents and scrollbars. | 
| 328 if (m_paintLayer.layoutObject()->hasClipPath() && | 328 if (m_paintLayer.layoutObject()->hasClipPath() && | 
| 329 (!m_paintLayer.needsCompositedScrolling() || | 329 (!m_paintLayer.needsCompositedScrolling() || | 
| 330 (paintFlags & PaintLayerPaintingChildClippingMaskPhase))) { | 330 (paintFlags & (PaintLayerPaintingChildClippingMaskPhase | | 
| 331 PaintLayerPaintingAncestorClippingMaskPhase)))) { | |
| 331 paintingInfo.ancestorHasClipPathClipping = true; | 332 paintingInfo.ancestorHasClipPathClipping = true; | 
| 332 | 333 | 
| 333 LayoutRect referenceBox(m_paintLayer.boxForClipPath()); | 334 LayoutRect referenceBox(m_paintLayer.boxForClipPath()); | 
| 334 // Note that this isn't going to work correctly if crossing a column | 335 // Note that this isn't going to work correctly if crossing a column | 
| 335 // boundary. The reference box should be determined per-fragment, and hence | 336 // boundary. The reference box should be determined per-fragment, and hence | 
| 336 // this ought to be performed after fragmentation. | 337 // this ought to be performed after fragmentation. | 
| 337 if (m_paintLayer.enclosingPaginationLayer()) | 338 if (m_paintLayer.enclosingPaginationLayer()) | 
| 338 m_paintLayer.convertFromFlowThreadToVisualBoundingBoxInAncestor( | 339 m_paintLayer.convertFromFlowThreadToVisualBoundingBoxInAncestor( | 
| 339 paintingInfo.rootLayer, referenceBox); | 340 paintingInfo.rootLayer, referenceBox); | 
| 340 else | 341 else | 
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 377 isPaintingOverlayScrollbars) { | 378 isPaintingOverlayScrollbars) { | 
| 378 // Collect the fragments. This will compute the clip rectangles and paint | 379 // Collect the fragments. This will compute the clip rectangles and paint | 
| 379 // offsets for each layer fragment. | 380 // offsets for each layer fragment. | 
| 380 ClipRectsCacheSlot cacheSlot = (paintFlags & PaintLayerUncachedClipRects) | 381 ClipRectsCacheSlot cacheSlot = (paintFlags & PaintLayerUncachedClipRects) | 
| 381 ? UncachedClipRects | 382 ? UncachedClipRects | 
| 382 : PaintingClipRects; | 383 : PaintingClipRects; | 
| 383 // TODO(trchen): We haven't decided how to handle visual fragmentation with | 384 // TODO(trchen): We haven't decided how to handle visual fragmentation with | 
| 384 // SPv2. Related thread | 385 // SPv2. Related thread | 
| 385 // https://groups.google.com/a/chromium.org/forum/#!topic/graphics-dev/81XuW Ff-mxM | 386 // https://groups.google.com/a/chromium.org/forum/#!topic/graphics-dev/81XuW Ff-mxM | 
| 386 if (fragmentPolicy == ForceSingleFragment || | 387 if (fragmentPolicy == ForceSingleFragment || | 
| 387 RuntimeEnabledFeatures::slimmingPaintV2Enabled()) | 388 RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { | 
| 388 m_paintLayer.appendSingleFragmentIgnoringPagination( | 389 m_paintLayer.appendSingleFragmentIgnoringPagination( | 
| 389 layerFragments, localPaintingInfo.rootLayer, | 390 layerFragments, localPaintingInfo.rootLayer, | 
| 390 localPaintingInfo.paintDirtyRect, cacheSlot, | 391 localPaintingInfo.paintDirtyRect, cacheSlot, | 
| 391 IgnoreOverlayScrollbarSize, respectOverflowClip, &offsetFromRoot, | 392 IgnoreOverlayScrollbarSize, respectOverflowClip, | 
| 392 localPaintingInfo.subPixelAccumulation); | 393 paintFlags & PaintLayerPaintingAncestorClippingMaskPhase, | 
| 393 else | 394 &offsetFromRoot, localPaintingInfo.subPixelAccumulation); | 
| 394 m_paintLayer.collectFragments(layerFragments, localPaintingInfo.rootLayer, | 395 } else { | 
| 395 localPaintingInfo.paintDirtyRect, cacheSlot, | 396 m_paintLayer.collectFragments( | 
| 396 IgnoreOverlayScrollbarSize, | 397 layerFragments, localPaintingInfo.rootLayer, | 
| 397 respectOverflowClip, &offsetFromRoot, | 398 localPaintingInfo.paintDirtyRect, cacheSlot, | 
| 398 localPaintingInfo.subPixelAccumulation); | 399 IgnoreOverlayScrollbarSize, respectOverflowClip, | 
| 400 paintFlags & PaintLayerPaintingAncestorClippingMaskPhase, | |
| 401 &offsetFromRoot, localPaintingInfo.subPixelAccumulation); | |
| 402 } | |
| 399 | 403 | 
| 400 if (shouldPaintContent) { | 404 if (shouldPaintContent) { | 
| 401 // TODO(wangxianzhu): This is for old slow scrolling. Implement similar | 405 // TODO(wangxianzhu): This is for old slow scrolling. Implement similar | 
| 402 // optimization for slimming paint v2. | 406 // optimization for slimming paint v2. | 
| 403 shouldPaintContent = atLeastOneFragmentIntersectsDamageRect( | 407 shouldPaintContent = atLeastOneFragmentIntersectsDamageRect( | 
| 404 layerFragments, localPaintingInfo, paintFlags, offsetFromRoot); | 408 layerFragments, localPaintingInfo, paintFlags, offsetFromRoot); | 
| 405 if (!shouldPaintContent) | 409 if (!shouldPaintContent) | 
| 406 result = MayBeClippedByPaintDirtyRect; | 410 result = MayBeClippedByPaintDirtyRect; | 
| 407 } | 411 } | 
| 408 } | 412 } | 
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 485 if (shouldPaintOverlayScrollbars) | 489 if (shouldPaintOverlayScrollbars) | 
| 486 paintOverflowControlsForFragments(layerFragments, context, | 490 paintOverflowControlsForFragments(layerFragments, context, | 
| 487 localPaintingInfo, paintFlags); | 491 localPaintingInfo, paintFlags); | 
| 488 } // FilterPainter block | 492 } // FilterPainter block | 
| 489 | 493 | 
| 490 bool shouldPaintMask = | 494 bool shouldPaintMask = | 
| 491 (paintFlags & PaintLayerPaintingCompositingMaskPhase) && | 495 (paintFlags & PaintLayerPaintingCompositingMaskPhase) && | 
| 492 shouldPaintContent && m_paintLayer.layoutObject()->hasMask() && | 496 shouldPaintContent && m_paintLayer.layoutObject()->hasMask() && | 
| 493 !selectionOnly; | 497 !selectionOnly; | 
| 494 bool shouldPaintClippingMask = | 498 bool shouldPaintClippingMask = | 
| 495 (paintFlags & PaintLayerPaintingChildClippingMaskPhase) && | 499 (paintFlags & (PaintLayerPaintingChildClippingMaskPhase | | 
| 500 PaintLayerPaintingAncestorClippingMaskPhase)) && | |
| 496 shouldPaintContent && !selectionOnly; | 501 shouldPaintContent && !selectionOnly; | 
| 497 | 502 | 
| 498 if (shouldPaintMask) | 503 if (shouldPaintMask) | 
| 499 paintMaskForFragments(layerFragments, context, localPaintingInfo, | 504 paintMaskForFragments(layerFragments, context, localPaintingInfo, | 
| 500 paintFlags); | 505 paintFlags); | 
| 501 if (shouldPaintClippingMask) { | 506 if (shouldPaintClippingMask) { | 
| 502 // Paint the border radius mask for the fragments. | 507 // Paint the border radius mask for the fragments. | 
| 503 paintChildClippingMaskForFragments(layerFragments, context, | 508 paintChildClippingMaskForFragments(layerFragments, context, | 
| 504 localPaintingInfo, paintFlags); | 509 localPaintingInfo, paintFlags); | 
| 505 } | 510 } | 
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 564 // its parent. | 569 // its parent. | 
| 565 PaintLayer* parentLayer = m_paintLayer.parent(); | 570 PaintLayer* parentLayer = m_paintLayer.parent(); | 
| 566 | 571 | 
| 567 LayoutObject* object = m_paintLayer.layoutObject(); | 572 LayoutObject* object = m_paintLayer.layoutObject(); | 
| 568 LayoutView* view = object->view(); | 573 LayoutView* view = object->view(); | 
| 569 bool isFixedPosObjectInPagedMedia = | 574 bool isFixedPosObjectInPagedMedia = | 
| 570 object->style()->position() == FixedPosition && | 575 object->style()->position() == FixedPosition && | 
| 571 object->container() == view && view->pageLogicalHeight(); | 576 object->container() == view && view->pageLogicalHeight(); | 
| 572 PaintLayer* paginationLayer = m_paintLayer.enclosingPaginationLayer(); | 577 PaintLayer* paginationLayer = m_paintLayer.enclosingPaginationLayer(); | 
| 573 PaintLayerFragments fragments; | 578 PaintLayerFragments fragments; | 
| 579 | |
| 574 // TODO(crbug.com/619094): Figure out the correct behaviour for fixed position | 580 // TODO(crbug.com/619094): Figure out the correct behaviour for fixed position | 
| 575 // objects in paged media with vertical writing modes. | 581 // objects in paged media with vertical writing modes. | 
| 576 if (isFixedPosObjectInPagedMedia && view->isHorizontalWritingMode()) { | 582 if (isFixedPosObjectInPagedMedia && view->isHorizontalWritingMode()) { | 
| 577 // "For paged media, boxes with fixed positions are repeated on every page." | 583 // "For paged media, boxes with fixed positions are repeated on every page." | 
| 578 // https://www.w3.org/TR/2011/REC-CSS2-20110607/visuren.html#fixed-positioni ng | 584 // https://www.w3.org/TR/2011/REC-CSS2-20110607/visuren.html#fixed-positioni ng | 
| 579 unsigned pages = | 585 unsigned pages = | 
| 580 ceilf(view->documentRect().height() / view->pageLogicalHeight()); | 586 ceilf(view->documentRect().height() / view->pageLogicalHeight()); | 
| 581 LayoutPoint paginationOffset; | 587 LayoutPoint paginationOffset; | 
| 582 | 588 | 
| 583 // The fixed position object is offset from the top of the page, so remove | 589 // The fixed position object is offset from the top of the page, so remove | 
| (...skipping 21 matching lines...) Expand all Loading... | |
| 605 // Calculate the transformed bounding box in the current coordinate space, | 611 // Calculate the transformed bounding box in the current coordinate space, | 
| 606 // to figure out which fragmentainers (e.g. columns) we need to visit. | 612 // to figure out which fragmentainers (e.g. columns) we need to visit. | 
| 607 LayoutRect transformedExtent = PaintLayer::transparencyClipBox( | 613 LayoutRect transformedExtent = PaintLayer::transparencyClipBox( | 
| 608 &m_paintLayer, paginationLayer, PaintLayer::PaintingTransparencyClipBox, | 614 &m_paintLayer, paginationLayer, PaintLayer::PaintingTransparencyClipBox, | 
| 609 PaintLayer::RootOfTransparencyClipBox, | 615 PaintLayer::RootOfTransparencyClipBox, | 
| 610 paintingInfo.subPixelAccumulation, paintingInfo.getGlobalPaintFlags()); | 616 paintingInfo.subPixelAccumulation, paintingInfo.getGlobalPaintFlags()); | 
| 611 // FIXME: we don't check if paginationLayer is within paintingInfo.rootLayer | 617 // FIXME: we don't check if paginationLayer is within paintingInfo.rootLayer | 
| 612 // here. | 618 // here. | 
| 613 paginationLayer->collectFragments( | 619 paginationLayer->collectFragments( | 
| 614 fragments, paintingInfo.rootLayer, paintingInfo.paintDirtyRect, | 620 fragments, paintingInfo.rootLayer, paintingInfo.paintDirtyRect, | 
| 615 cacheSlot, IgnoreOverlayScrollbarSize, respectOverflowClip, 0, | 621 cacheSlot, IgnoreOverlayScrollbarSize, respectOverflowClip, false, 0, | 
| 616 paintingInfo.subPixelAccumulation, &transformedExtent); | 622 paintingInfo.subPixelAccumulation, &transformedExtent); | 
| 617 } else { | 623 } else { | 
| 618 // We don't need to collect any fragments in the regular way here. We have | 624 // We don't need to collect any fragments in the regular way here. We have | 
| 619 // already calculated a clip rectangle for the ancestry if it was needed, | 625 // already calculated a clip rectangle for the ancestry if it was needed, | 
| 620 // and clipping this layer is something that can be done further down the | 626 // and clipping this layer is something that can be done further down the | 
| 621 // path, when the transform has been applied. | 627 // path, when the transform has been applied. | 
| 622 PaintLayerFragment fragment; | 628 PaintLayerFragment fragment; | 
| 623 fragment.backgroundRect = paintingInfo.paintDirtyRect; | 629 fragment.backgroundRect = paintingInfo.paintDirtyRect; | 
| 624 fragments.append(fragment); | 630 fragments.append(fragment); | 
| 625 } | 631 } | 
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 821 | 827 | 
| 822 // We pass IntPoint() as the paint offset here, because | 828 // We pass IntPoint() as the paint offset here, because | 
| 823 // ScrollableArea::paintOverflowControls just ignores it and uses the | 829 // ScrollableArea::paintOverflowControls just ignores it and uses the | 
| 824 // offset found in a previous pass. | 830 // offset found in a previous pass. | 
| 825 CullRect snappedCullRect(pixelSnappedIntRect(cullRect)); | 831 CullRect snappedCullRect(pixelSnappedIntRect(cullRect)); | 
| 826 ScrollableAreaPainter(*scrollableArea) | 832 ScrollableAreaPainter(*scrollableArea) | 
| 827 .paintOverflowControls(context, IntPoint(), snappedCullRect, true); | 833 .paintOverflowControls(context, IntPoint(), snappedCullRect, true); | 
| 828 } | 834 } | 
| 829 } | 835 } | 
| 830 | 836 | 
| 837 LayoutPoint PaintLayerPainter::fragmentOffsetForAncestorClipMask( | |
| 838 const LayoutPoint& originalFragmentOffset) { | |
| 839 // The clipping container that will be used to define the clip and the | |
| 840 // child layer with respect to which the fragment offset is defined share | |
| 841 // a layer root. When the clip is recorded we will be using the clipping | |
| 842 // container's layer's offset to the root to position the clip. Hence we | |
| 843 // must convert the fragment offset into a corresponding offset in the | |
| 844 // clipping container's layer coordinates. To do that, we find the | |
| 845 // originalFragmentOffset's coordinate in the root layer, fragmentDelta. | |
| 846 // We also find the offset of the clipping container's origin in the root | |
| 847 // layer's coordinates, clippingDelta. clippingDelta - fragmentDelta gives | |
| 848 // the fragment's position in the root layer. But we need the position in | |
| 849 // the clipping layer coords, and we subtract clippingDelta to get that. The | |
| 850 // resulting offset is -fragmentDelta. | |
| 851 DCHECK_EQ(m_paintLayer.root(), | |
| 852 m_paintLayer.clippingContainer()->enclosingLayer()->root()); | |
| 853 LayoutPoint fragmentDelta(originalFragmentOffset); | |
| 854 m_paintLayer.convertToLayerCoords(m_paintLayer.root(), fragmentDelta); | |
| 855 return LayoutPoint(-fragmentDelta.x(), -fragmentDelta.y()); | |
| 856 } | |
| 857 | |
| 831 void PaintLayerPainter::paintFragmentWithPhase( | 858 void PaintLayerPainter::paintFragmentWithPhase( | 
| 832 PaintPhase phase, | 859 PaintPhase phase, | 
| 833 const PaintLayerFragment& fragment, | 860 const PaintLayerFragment& fragment, | 
| 834 GraphicsContext& context, | 861 GraphicsContext& context, | 
| 835 const ClipRect& clipRect, | 862 const ClipRect& clipRect, | 
| 836 const PaintLayerPaintingInfo& paintingInfo, | 863 const PaintLayerPaintingInfo& paintingInfo, | 
| 837 PaintLayerFlags paintFlags, | 864 PaintLayerFlags paintFlags, | 
| 838 ClipState clipState) { | 865 ClipState clipState) { | 
| 839 DCHECK(m_paintLayer.isSelfPaintingLayer()); | 866 DCHECK(m_paintLayer.isSelfPaintingLayer()); | 
| 840 | 867 | 
| 841 Optional<LayerClipRecorder> clipRecorder; | 868 Optional<LayerClipRecorder> clipRecorder; | 
| 842 if (clipState != HasClipped && paintingInfo.clipToDirtyRect && | 869 if (clipState != HasClipped && paintingInfo.clipToDirtyRect && | 
| 843 needsToClip(paintingInfo, clipRect)) { | 870 needsToClip(paintingInfo, clipRect)) { | 
| 844 DisplayItem::Type clipType = | 871 DisplayItem::Type clipType = | 
| 845 DisplayItem::paintPhaseToClipLayerFragmentType(phase); | 872 DisplayItem::paintPhaseToClipLayerFragmentType(phase); | 
| 846 LayerClipRecorder::BorderRadiusClippingRule clippingRule; | 873 LayerClipRecorder::BorderRadiusClippingRule clippingRule; | 
| 847 switch (phase) { | 874 switch (phase) { | 
| 848 case PaintPhaseSelfBlockBackgroundOnly: // Background painting will | 875 case PaintPhaseSelfBlockBackgroundOnly: // Background painting will | 
| 849 // handle clipping to self. | 876 // handle clipping to self. | 
| 850 case PaintPhaseSelfOutlineOnly: | 877 case PaintPhaseSelfOutlineOnly: | 
| 851 case PaintPhaseMask: // Mask painting will handle clipping to self. | 878 case PaintPhaseMask: // Mask painting will handle clipping to self. | 
| 852 clippingRule = LayerClipRecorder::DoNotIncludeSelfForBorderRadius; | 879 clippingRule = LayerClipRecorder::DoNotIncludeSelfForBorderRadius; | 
| 853 break; | 880 break; | 
| 854 default: | 881 default: | 
| 855 clippingRule = LayerClipRecorder::IncludeSelfForBorderRadius; | 882 clippingRule = LayerClipRecorder::IncludeSelfForBorderRadius; | 
| 856 break; | 883 break; | 
| 857 } | 884 } | 
| 858 | 885 | 
| 859 clipRecorder.emplace(context, *m_paintLayer.layoutObject(), clipType, | 886 // When painting the clipping mask for a composited child, we pass | 
| 860 clipRect, &paintingInfo, fragment.paginationOffset, | 887 // the clipping container object as the layoutObject to provide the clip. | 
| 861 paintFlags, clippingRule); | 888 // The recorder assumes the fragment is positioned in that objects's | 
| 889 // layer coordinates, so we also convert that. | |
| 890 if (paintFlags & PaintLayerPaintingAncestorClippingMaskPhase) { | |
| 891 clipRecorder.emplace( | |
| 892 context, *(toLayoutBoxModelObject(m_paintLayer.clippingContainer())), | |
| 893 clipType, clipRect, &paintingInfo, | |
| 894 fragmentOffsetForAncestorClipMask(fragment.paginationOffset), | |
| 895 paintFlags, clippingRule); | |
| 896 } else { | |
| 897 clipRecorder.emplace(context, *m_paintLayer.layoutObject(), clipType, | |
| 898 clipRect, &paintingInfo, fragment.paginationOffset, | |
| 899 paintFlags, clippingRule); | |
| 900 } | |
| 862 } | 901 } | 
| 863 | 902 | 
| 864 LayoutRect newCullRect(clipRect.rect()); | 903 LayoutRect newCullRect(clipRect.rect()); | 
| 865 Optional<ScrollRecorder> scrollRecorder; | 904 Optional<ScrollRecorder> scrollRecorder; | 
| 866 LayoutPoint paintOffset = -m_paintLayer.layoutBoxLocation(); | 905 LayoutPoint paintOffset = -m_paintLayer.layoutBoxLocation(); | 
| 867 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { | 906 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { | 
| 868 const auto* objectPaintProperties = | 907 const auto* objectPaintProperties = | 
| 869 m_paintLayer.layoutObject()->paintProperties(); | 908 m_paintLayer.layoutObject()->paintProperties(); | 
| 870 DCHECK(objectPaintProperties && | 909 DCHECK(objectPaintProperties && | 
| 871 objectPaintProperties->localBorderBoxProperties()); | 910 objectPaintProperties->localBorderBoxProperties()); | 
| (...skipping 13 matching lines...) Expand all Loading... | |
| 885 | 924 | 
| 886 newCullRect.move(paintingInfo.scrollOffsetAccumulation); | 925 newCullRect.move(paintingInfo.scrollOffsetAccumulation); | 
| 887 scrollRecorder.emplace(context, *m_paintLayer.layoutObject(), phase, | 926 scrollRecorder.emplace(context, *m_paintLayer.layoutObject(), phase, | 
| 888 paintingInfo.scrollOffsetAccumulation); | 927 paintingInfo.scrollOffsetAccumulation); | 
| 889 } | 928 } | 
| 890 } | 929 } | 
| 891 PaintInfo paintInfo(context, pixelSnappedIntRect(newCullRect), phase, | 930 PaintInfo paintInfo(context, pixelSnappedIntRect(newCullRect), phase, | 
| 892 paintingInfo.getGlobalPaintFlags(), paintFlags, | 931 paintingInfo.getGlobalPaintFlags(), paintFlags, | 
| 893 paintingInfo.rootLayer->layoutObject()); | 932 paintingInfo.rootLayer->layoutObject()); | 
| 894 | 933 | 
| 934 // TODO(schenney): This is the wrong object for painting AncestorClippingMask. | |
| 
 
Stephen Chennney
2016/11/08 21:42:52
No it's not. It's the wrong object for all the cli
 
 | |
| 895 m_paintLayer.layoutObject()->paint(paintInfo, paintOffset); | 935 m_paintLayer.layoutObject()->paint(paintInfo, paintOffset); | 
| 896 } | 936 } | 
| 897 | 937 | 
| 898 void PaintLayerPainter::paintBackgroundForFragments( | 938 void PaintLayerPainter::paintBackgroundForFragments( | 
| 899 const PaintLayerFragments& layerFragments, | 939 const PaintLayerFragments& layerFragments, | 
| 900 GraphicsContext& context, | 940 GraphicsContext& context, | 
| 901 const LayoutRect& transparencyPaintDirtyRect, | 941 const LayoutRect& transparencyPaintDirtyRect, | 
| 902 const PaintLayerPaintingInfo& localPaintingInfo, | 942 const PaintLayerPaintingInfo& localPaintingInfo, | 
| 903 PaintLayerFlags paintFlags) { | 943 PaintLayerFlags paintFlags) { | 
| 904 Optional<DisplayItemCacheSkipper> cacheSkipper; | 944 Optional<DisplayItemCacheSkipper> cacheSkipper; | 
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1070 | 1110 | 
| 1071 PaintLayerPaintingInfo paintingInfo(&m_paintLayer, | 1111 PaintLayerPaintingInfo paintingInfo(&m_paintLayer, | 
| 1072 LayoutRect(enclosingIntRect(damageRect)), | 1112 LayoutRect(enclosingIntRect(damageRect)), | 
| 1073 paintFlags, LayoutSize()); | 1113 paintFlags, LayoutSize()); | 
| 1074 paintLayer(context, paintingInfo, PaintLayerPaintingOverlayScrollbars); | 1114 paintLayer(context, paintingInfo, PaintLayerPaintingOverlayScrollbars); | 
| 1075 | 1115 | 
| 1076 m_paintLayer.setContainsDirtyOverlayScrollbars(false); | 1116 m_paintLayer.setContainsDirtyOverlayScrollbars(false); | 
| 1077 } | 1117 } | 
| 1078 | 1118 | 
| 1079 } // namespace blink | 1119 } // namespace blink | 
| OLD | NEW |