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 "config.h" | 5 #include "config.h" |
6 #include "core/paint/LayerPainter.h" | 6 #include "core/paint/LayerPainter.h" |
7 | 7 |
8 #include "core/frame/Settings.h" | 8 #include "core/frame/Settings.h" |
9 #include "core/layout/Layer.h" | 9 #include "core/layout/Layer.h" |
10 #include "core/page/Page.h" | 10 #include "core/page/Page.h" |
(...skipping 21 matching lines...) Expand all Loading... |
32 { | 32 { |
33 // Avoid painting descendants of the root layer when stylesheets haven't loa
ded. This eliminates FOUC. | 33 // Avoid painting descendants of the root layer when stylesheets haven't loa
ded. This eliminates FOUC. |
34 // It's ok not to draw, because later on, when all the stylesheets do load,
updateStyleSelector on the Document | 34 // It's ok not to draw, because later on, when all the stylesheets do load,
updateStyleSelector on the Document |
35 // will do a full paintInvalidationForWholeRenderer(). | 35 // will do a full paintInvalidationForWholeRenderer(). |
36 if (layer->renderer()->document().didLayoutWithPendingStylesheets() && !laye
r->isRootLayer() && !layer->renderer()->isDocumentElement()) | 36 if (layer->renderer()->document().didLayoutWithPendingStylesheets() && !laye
r->isRootLayer() && !layer->renderer()->isDocumentElement()) |
37 return true; | 37 return true; |
38 | 38 |
39 return false; | 39 return false; |
40 } | 40 } |
41 | 41 |
42 void LayerPainter::paint(GraphicsContext* context, const LayoutRect& damageRect,
PaintBehavior paintBehavior, RenderObject* paintingRoot, PaintLayerFlags paintF
lags) | 42 void LayerPainter::paint(GraphicsContext* context, const LayoutRect& damageRect,
PaintBehavior paintBehavior, LayoutObject* paintingRoot, PaintLayerFlags paintF
lags) |
43 { | 43 { |
44 LayerPaintingInfo paintingInfo(&m_renderLayer, enclosingIntRect(damageRect),
paintBehavior, LayoutSize(), paintingRoot); | 44 LayerPaintingInfo paintingInfo(&m_renderLayer, enclosingIntRect(damageRect),
paintBehavior, LayoutSize(), paintingRoot); |
45 if (shouldPaintLayerInSoftwareMode(paintingInfo, paintFlags)) | 45 if (shouldPaintLayerInSoftwareMode(paintingInfo, paintFlags)) |
46 paintLayer(context, paintingInfo, paintFlags); | 46 paintLayer(context, paintingInfo, paintFlags); |
47 } | 47 } |
48 | 48 |
49 static ShouldRespectOverflowClip shouldRespectOverflowClip(PaintLayerFlags paint
Flags, const RenderObject* renderer) | 49 static ShouldRespectOverflowClip shouldRespectOverflowClip(PaintLayerFlags paint
Flags, const LayoutObject* renderer) |
50 { | 50 { |
51 return (paintFlags & PaintLayerPaintingOverflowContents || (paintFlags & Pai
ntLayerPaintingChildClippingMaskPhase && renderer->hasClipPath())) ? IgnoreOverf
lowClip : RespectOverflowClip; | 51 return (paintFlags & PaintLayerPaintingOverflowContents || (paintFlags & Pai
ntLayerPaintingChildClippingMaskPhase && renderer->hasClipPath())) ? IgnoreOverf
lowClip : RespectOverflowClip; |
52 } | 52 } |
53 | 53 |
54 void LayerPainter::paintLayer(GraphicsContext* context, const LayerPaintingInfo&
paintingInfo, PaintLayerFlags paintFlags) | 54 void LayerPainter::paintLayer(GraphicsContext* context, const LayerPaintingInfo&
paintingInfo, PaintLayerFlags paintFlags) |
55 { | 55 { |
56 // https://code.google.com/p/chromium/issues/detail?id=343772 | 56 // https://code.google.com/p/chromium/issues/detail?id=343772 |
57 DisableCompositingQueryAsserts disabler; | 57 DisableCompositingQueryAsserts disabler; |
58 | 58 |
59 if (m_renderLayer.compositingState() != NotComposited) { | 59 if (m_renderLayer.compositingState() != NotComposited) { |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
234 shouldRespectOverflowClip(paintFlags, m_renderLayer.renderer()), &of
fsetFromRoot, localPaintingInfo.subPixelAccumulation); | 234 shouldRespectOverflowClip(paintFlags, m_renderLayer.renderer()), &of
fsetFromRoot, localPaintingInfo.subPixelAccumulation); |
235 if (shouldPaintContent) | 235 if (shouldPaintContent) |
236 shouldPaintContent = atLeastOneFragmentIntersectsDamageRect(layerFra
gments, localPaintingInfo, paintFlags, offsetFromRoot); | 236 shouldPaintContent = atLeastOneFragmentIntersectsDamageRect(layerFra
gments, localPaintingInfo, paintFlags, offsetFromRoot); |
237 } | 237 } |
238 | 238 |
239 bool selectionOnly = localPaintingInfo.paintBehavior & PaintBehaviorSelectio
nOnly; | 239 bool selectionOnly = localPaintingInfo.paintBehavior & PaintBehaviorSelectio
nOnly; |
240 // If this layer's renderer is a child of the paintingRoot, we render uncond
itionally, which | 240 // If this layer's renderer is a child of the paintingRoot, we render uncond
itionally, which |
241 // is done by passing a nil paintingRoot down to our renderer (as if no pain
tingRoot was ever set). | 241 // is done by passing a nil paintingRoot down to our renderer (as if no pain
tingRoot was ever set). |
242 // Else, our renderer tree may or may not contain the painting root, so we p
ass that root along | 242 // Else, our renderer tree may or may not contain the painting root, so we p
ass that root along |
243 // so it will be tested against as we descend through the renderers. | 243 // so it will be tested against as we descend through the renderers. |
244 RenderObject* paintingRootForRenderer = 0; | 244 LayoutObject* paintingRootForRenderer = 0; |
245 if (localPaintingInfo.paintingRoot && !m_renderLayer.renderer()->isDescendan
tOf(localPaintingInfo.paintingRoot)) | 245 if (localPaintingInfo.paintingRoot && !m_renderLayer.renderer()->isDescendan
tOf(localPaintingInfo.paintingRoot)) |
246 paintingRootForRenderer = localPaintingInfo.paintingRoot; | 246 paintingRootForRenderer = localPaintingInfo.paintingRoot; |
247 | 247 |
248 { // Begin block for the lifetime of any filter. | 248 { // Begin block for the lifetime of any filter. |
249 FilterPainter filterPainter(m_renderLayer, context, offsetFromRoot, laye
rFragments.isEmpty() ? ClipRect() : layerFragments[0].backgroundRect, localPaint
ingInfo, paintFlags, | 249 FilterPainter filterPainter(m_renderLayer, context, offsetFromRoot, laye
rFragments.isEmpty() ? ClipRect() : layerFragments[0].backgroundRect, localPaint
ingInfo, paintFlags, |
250 rootRelativeBounds, rootRelativeBoundsComputed); | 250 rootRelativeBounds, rootRelativeBoundsComputed); |
251 | 251 |
252 ASSERT(!(localPaintingInfo.paintBehavior & PaintBehaviorForceBlackText))
; | 252 ASSERT(!(localPaintingInfo.paintBehavior & PaintBehaviorForceBlackText))
; |
253 | 253 |
254 bool shouldPaintBackground = isPaintingCompositedBackground && shouldPai
ntContent && !selectionOnly; | 254 bool shouldPaintBackground = isPaintingCompositedBackground && shouldPai
ntContent && !selectionOnly; |
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
596 | 596 |
597 // Move to the next position. | 597 // Move to the next position. |
598 LayoutUnit blockDelta = isHorizontal ? colRect.height() : colRect.width(
); | 598 LayoutUnit blockDelta = isHorizontal ? colRect.height() : colRect.width(
); |
599 if (columnBlock->style()->isFlippedBlocksWritingMode()) | 599 if (columnBlock->style()->isFlippedBlocksWritingMode()) |
600 currLogicalTopOffset += blockDelta; | 600 currLogicalTopOffset += blockDelta; |
601 else | 601 else |
602 currLogicalTopOffset -= blockDelta; | 602 currLogicalTopOffset -= blockDelta; |
603 } | 603 } |
604 } | 604 } |
605 | 605 |
606 void LayerPainter::paintFragmentWithPhase(PaintPhase phase, const LayerFragment&
fragment, GraphicsContext* context, const ClipRect& clipRect, const LayerPainti
ngInfo& paintingInfo, PaintBehavior paintBehavior, RenderObject* paintingRootFor
Renderer, PaintLayerFlags paintFlags, ClipState clipState) | 606 void LayerPainter::paintFragmentWithPhase(PaintPhase phase, const LayerFragment&
fragment, GraphicsContext* context, const ClipRect& clipRect, const LayerPainti
ngInfo& paintingInfo, PaintBehavior paintBehavior, LayoutObject* paintingRootFor
Renderer, PaintLayerFlags paintFlags, ClipState clipState) |
607 { | 607 { |
608 OwnPtr<LayerClipRecorder> clipRecorder; | 608 OwnPtr<LayerClipRecorder> clipRecorder; |
609 if (clipState != HasClipped && paintingInfo.clipToDirtyRect && needsToClip(p
aintingInfo, clipRect)) { | 609 if (clipState != HasClipped && paintingInfo.clipToDirtyRect && needsToClip(p
aintingInfo, clipRect)) { |
610 DisplayItem::Type clipType = DisplayItem::paintPhaseToClipLayerFragmentT
ype(phase); | 610 DisplayItem::Type clipType = DisplayItem::paintPhaseToClipLayerFragmentT
ype(phase); |
611 LayerClipRecorder::BorderRadiusClippingRule clippingRule; | 611 LayerClipRecorder::BorderRadiusClippingRule clippingRule; |
612 switch (phase) { | 612 switch (phase) { |
613 case PaintPhaseBlockBackground: // Background painting will handle clipp
ing to self. | 613 case PaintPhaseBlockBackground: // Background painting will handle clipp
ing to self. |
614 case PaintPhaseSelfOutline: | 614 case PaintPhaseSelfOutline: |
615 case PaintPhaseMask: // Mask painting will handle clipping to self. | 615 case PaintPhaseMask: // Mask painting will handle clipping to self. |
616 clippingRule = LayerClipRecorder::DoNotIncludeSelfForBorderRadius; | 616 clippingRule = LayerClipRecorder::DoNotIncludeSelfForBorderRadius; |
617 break; | 617 break; |
618 default: | 618 default: |
619 clippingRule = LayerClipRecorder::IncludeSelfForBorderRadius; | 619 clippingRule = LayerClipRecorder::IncludeSelfForBorderRadius; |
620 break; | 620 break; |
621 } | 621 } |
622 | 622 |
623 clipRecorder = adoptPtr(new LayerClipRecorder(m_renderLayer.renderer(),
context, clipType, clipRect, &paintingInfo, fragment.paginationOffset, paintFlag
s, clippingRule)); | 623 clipRecorder = adoptPtr(new LayerClipRecorder(m_renderLayer.renderer(),
context, clipType, clipRect, &paintingInfo, fragment.paginationOffset, paintFlag
s, clippingRule)); |
624 } | 624 } |
625 | 625 |
626 PaintInfo paintInfo(context, pixelSnappedIntRect(clipRect.rect()), phase, pa
intBehavior, paintingRootForRenderer, 0, paintingInfo.rootLayer->renderer()); | 626 PaintInfo paintInfo(context, pixelSnappedIntRect(clipRect.rect()), phase, pa
intBehavior, paintingRootForRenderer, 0, paintingInfo.rootLayer->renderer()); |
627 m_renderLayer.renderer()->paint(paintInfo, toPoint(fragment.layerBounds.loca
tion() - m_renderLayer.renderBoxLocation() + subPixelAccumulationIfNeeded(painti
ngInfo.subPixelAccumulation, m_renderLayer.compositingState()))); | 627 m_renderLayer.renderer()->paint(paintInfo, toPoint(fragment.layerBounds.loca
tion() - m_renderLayer.renderBoxLocation() + subPixelAccumulationIfNeeded(painti
ngInfo.subPixelAccumulation, m_renderLayer.compositingState()))); |
628 } | 628 } |
629 | 629 |
630 void LayerPainter::paintBackgroundForFragments(const LayerFragments& layerFragme
nts, GraphicsContext* context, | 630 void LayerPainter::paintBackgroundForFragments(const LayerFragments& layerFragme
nts, GraphicsContext* context, |
631 const LayoutRect& transparencyPaintDirtyRect, const LayerPaintingInfo& local
PaintingInfo, PaintBehavior paintBehavior, | 631 const LayoutRect& transparencyPaintDirtyRect, const LayerPaintingInfo& local
PaintingInfo, PaintBehavior paintBehavior, |
632 RenderObject* paintingRootForRenderer, PaintLayerFlags paintFlags) | 632 LayoutObject* paintingRootForRenderer, PaintLayerFlags paintFlags) |
633 { | 633 { |
634 for (const auto& fragment: layerFragments) { | 634 for (const auto& fragment: layerFragments) { |
635 paintFragmentWithPhase(PaintPhaseBlockBackground, fragment, context, fra
gment.backgroundRect, localPaintingInfo, paintBehavior, paintingRootForRenderer,
paintFlags, HasNotClipped); | 635 paintFragmentWithPhase(PaintPhaseBlockBackground, fragment, context, fra
gment.backgroundRect, localPaintingInfo, paintBehavior, paintingRootForRenderer,
paintFlags, HasNotClipped); |
636 } | 636 } |
637 } | 637 } |
638 | 638 |
639 void LayerPainter::paintForegroundForFragments(const LayerFragments& layerFragme
nts, GraphicsContext* context, | 639 void LayerPainter::paintForegroundForFragments(const LayerFragments& layerFragme
nts, GraphicsContext* context, |
640 const LayoutRect& transparencyPaintDirtyRect, const LayerPaintingInfo& local
PaintingInfo, PaintBehavior paintBehavior, | 640 const LayoutRect& transparencyPaintDirtyRect, const LayerPaintingInfo& local
PaintingInfo, PaintBehavior paintBehavior, |
641 RenderObject* paintingRootForRenderer, bool selectionOnly, PaintLayerFlags p
aintFlags) | 641 LayoutObject* paintingRootForRenderer, bool selectionOnly, PaintLayerFlags p
aintFlags) |
642 { | 642 { |
643 // Optimize clipping for the single fragment case. | 643 // Optimize clipping for the single fragment case. |
644 bool shouldClip = localPaintingInfo.clipToDirtyRect && layerFragments.size()
== 1 && !layerFragments[0].foregroundRect.isEmpty(); | 644 bool shouldClip = localPaintingInfo.clipToDirtyRect && layerFragments.size()
== 1 && !layerFragments[0].foregroundRect.isEmpty(); |
645 ClipState clipState = HasNotClipped; | 645 ClipState clipState = HasNotClipped; |
646 OwnPtr<LayerClipRecorder> clipRecorder; | 646 OwnPtr<LayerClipRecorder> clipRecorder; |
647 if (shouldClip && needsToClip(localPaintingInfo, layerFragments[0].foregroun
dRect)) { | 647 if (shouldClip && needsToClip(localPaintingInfo, layerFragments[0].foregroun
dRect)) { |
648 clipRecorder = adoptPtr(new LayerClipRecorder(m_renderLayer.renderer(),
context, DisplayItem::ClipLayerForeground, layerFragments[0].foregroundRect, &lo
calPaintingInfo, layerFragments[0].paginationOffset, paintFlags)); | 648 clipRecorder = adoptPtr(new LayerClipRecorder(m_renderLayer.renderer(),
context, DisplayItem::ClipLayerForeground, layerFragments[0].foregroundRect, &lo
calPaintingInfo, layerFragments[0].paginationOffset, paintFlags)); |
649 clipState = HasClipped; | 649 clipState = HasClipped; |
650 } | 650 } |
651 | 651 |
652 // We have to loop through every fragment multiple times, since we have to i
ssue paint invalidations in each specific phase in order for | 652 // We have to loop through every fragment multiple times, since we have to i
ssue paint invalidations in each specific phase in order for |
653 // interleaving of the fragments to work properly. | 653 // interleaving of the fragments to work properly. |
654 paintForegroundForFragmentsWithPhase(selectionOnly ? PaintPhaseSelection : P
aintPhaseChildBlockBackgrounds, layerFragments, | 654 paintForegroundForFragmentsWithPhase(selectionOnly ? PaintPhaseSelection : P
aintPhaseChildBlockBackgrounds, layerFragments, |
655 context, localPaintingInfo, paintBehavior, paintingRootForRenderer, pain
tFlags, clipState); | 655 context, localPaintingInfo, paintBehavior, paintingRootForRenderer, pain
tFlags, clipState); |
656 | 656 |
657 if (!selectionOnly) { | 657 if (!selectionOnly) { |
658 paintForegroundForFragmentsWithPhase(PaintPhaseFloat, layerFragments, co
ntext, localPaintingInfo, paintBehavior, paintingRootForRenderer, paintFlags, cl
ipState); | 658 paintForegroundForFragmentsWithPhase(PaintPhaseFloat, layerFragments, co
ntext, localPaintingInfo, paintBehavior, paintingRootForRenderer, paintFlags, cl
ipState); |
659 paintForegroundForFragmentsWithPhase(PaintPhaseForeground, layerFragment
s, context, localPaintingInfo, paintBehavior, paintingRootForRenderer, paintFlag
s, clipState); | 659 paintForegroundForFragmentsWithPhase(PaintPhaseForeground, layerFragment
s, context, localPaintingInfo, paintBehavior, paintingRootForRenderer, paintFlag
s, clipState); |
660 paintForegroundForFragmentsWithPhase(PaintPhaseChildOutlines, layerFragm
ents, context, localPaintingInfo, paintBehavior, paintingRootForRenderer, paintF
lags, clipState); | 660 paintForegroundForFragmentsWithPhase(PaintPhaseChildOutlines, layerFragm
ents, context, localPaintingInfo, paintBehavior, paintingRootForRenderer, paintF
lags, clipState); |
661 } | 661 } |
662 } | 662 } |
663 | 663 |
664 void LayerPainter::paintForegroundForFragmentsWithPhase(PaintPhase phase, const
LayerFragments& layerFragments, GraphicsContext* context, | 664 void LayerPainter::paintForegroundForFragmentsWithPhase(PaintPhase phase, const
LayerFragments& layerFragments, GraphicsContext* context, |
665 const LayerPaintingInfo& localPaintingInfo, PaintBehavior paintBehavior, Ren
derObject* paintingRootForRenderer, PaintLayerFlags paintFlags, ClipState clipSt
ate) | 665 const LayerPaintingInfo& localPaintingInfo, PaintBehavior paintBehavior, Lay
outObject* paintingRootForRenderer, PaintLayerFlags paintFlags, ClipState clipSt
ate) |
666 { | 666 { |
667 for (const auto& fragment: layerFragments) { | 667 for (const auto& fragment: layerFragments) { |
668 if (!fragment.foregroundRect.isEmpty()) | 668 if (!fragment.foregroundRect.isEmpty()) |
669 paintFragmentWithPhase(phase, fragment, context, fragment.foreground
Rect, localPaintingInfo, paintBehavior, paintingRootForRenderer, paintFlags, cli
pState); | 669 paintFragmentWithPhase(phase, fragment, context, fragment.foreground
Rect, localPaintingInfo, paintBehavior, paintingRootForRenderer, paintFlags, cli
pState); |
670 } | 670 } |
671 } | 671 } |
672 | 672 |
673 void LayerPainter::paintOutlineForFragments(const LayerFragments& layerFragments
, GraphicsContext* context, const LayerPaintingInfo& localPaintingInfo, | 673 void LayerPainter::paintOutlineForFragments(const LayerFragments& layerFragments
, GraphicsContext* context, const LayerPaintingInfo& localPaintingInfo, |
674 PaintBehavior paintBehavior, RenderObject* paintingRootForRenderer, PaintLay
erFlags paintFlags) | 674 PaintBehavior paintBehavior, LayoutObject* paintingRootForRenderer, PaintLay
erFlags paintFlags) |
675 { | 675 { |
676 for (const auto& fragment: layerFragments) { | 676 for (const auto& fragment: layerFragments) { |
677 if (!fragment.outlineRect.isEmpty()) | 677 if (!fragment.outlineRect.isEmpty()) |
678 paintFragmentWithPhase(PaintPhaseSelfOutline, fragment, context, fra
gment.outlineRect, localPaintingInfo, paintBehavior, paintingRootForRenderer, pa
intFlags, HasNotClipped); | 678 paintFragmentWithPhase(PaintPhaseSelfOutline, fragment, context, fra
gment.outlineRect, localPaintingInfo, paintBehavior, paintingRootForRenderer, pa
intFlags, HasNotClipped); |
679 } | 679 } |
680 } | 680 } |
681 | 681 |
682 void LayerPainter::paintMaskForFragments(const LayerFragments& layerFragments, G
raphicsContext* context, const LayerPaintingInfo& localPaintingInfo, | 682 void LayerPainter::paintMaskForFragments(const LayerFragments& layerFragments, G
raphicsContext* context, const LayerPaintingInfo& localPaintingInfo, |
683 RenderObject* paintingRootForRenderer, PaintLayerFlags paintFlags) | 683 LayoutObject* paintingRootForRenderer, PaintLayerFlags paintFlags) |
684 { | 684 { |
685 for (const auto& fragment: layerFragments) | 685 for (const auto& fragment: layerFragments) |
686 paintFragmentWithPhase(PaintPhaseMask, fragment, context, fragment.backg
roundRect, localPaintingInfo, PaintBehaviorNormal, paintingRootForRenderer, pain
tFlags, HasNotClipped); | 686 paintFragmentWithPhase(PaintPhaseMask, fragment, context, fragment.backg
roundRect, localPaintingInfo, PaintBehaviorNormal, paintingRootForRenderer, pain
tFlags, HasNotClipped); |
687 } | 687 } |
688 | 688 |
689 void LayerPainter::paintChildClippingMaskForFragments(const LayerFragments& laye
rFragments, GraphicsContext* context, const LayerPaintingInfo& localPaintingInfo
, | 689 void LayerPainter::paintChildClippingMaskForFragments(const LayerFragments& laye
rFragments, GraphicsContext* context, const LayerPaintingInfo& localPaintingInfo
, |
690 RenderObject* paintingRootForRenderer, PaintLayerFlags paintFlags) | 690 LayoutObject* paintingRootForRenderer, PaintLayerFlags paintFlags) |
691 { | 691 { |
692 for (const auto& fragment: layerFragments) | 692 for (const auto& fragment: layerFragments) |
693 paintFragmentWithPhase(PaintPhaseClippingMask, fragment, context, fragme
nt.foregroundRect, localPaintingInfo, PaintBehaviorNormal, paintingRootForRender
er, paintFlags, HasNotClipped); | 693 paintFragmentWithPhase(PaintPhaseClippingMask, fragment, context, fragme
nt.foregroundRect, localPaintingInfo, PaintBehaviorNormal, paintingRootForRender
er, paintFlags, HasNotClipped); |
694 } | 694 } |
695 | 695 |
696 void LayerPainter::paintOverlayScrollbars(GraphicsContext* context, const Layout
Rect& damageRect, PaintBehavior paintBehavior, RenderObject* paintingRoot) | 696 void LayerPainter::paintOverlayScrollbars(GraphicsContext* context, const Layout
Rect& damageRect, PaintBehavior paintBehavior, LayoutObject* paintingRoot) |
697 { | 697 { |
698 if (!m_renderLayer.containsDirtyOverlayScrollbars()) | 698 if (!m_renderLayer.containsDirtyOverlayScrollbars()) |
699 return; | 699 return; |
700 | 700 |
701 LayerPaintingInfo paintingInfo(&m_renderLayer, enclosingIntRect(damageRect),
paintBehavior, LayoutSize(), paintingRoot); | 701 LayerPaintingInfo paintingInfo(&m_renderLayer, enclosingIntRect(damageRect),
paintBehavior, LayoutSize(), paintingRoot); |
702 paintLayer(context, paintingInfo, PaintLayerPaintingOverlayScrollbars); | 702 paintLayer(context, paintingInfo, PaintLayerPaintingOverlayScrollbars); |
703 | 703 |
704 m_renderLayer.setContainsDirtyOverlayScrollbars(false); | 704 m_renderLayer.setContainsDirtyOverlayScrollbars(false); |
705 } | 705 } |
706 | 706 |
707 } // namespace blink | 707 } // namespace blink |
OLD | NEW |