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 746 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
757 if (layer_fragments.size() > 1) | 757 if (layer_fragments.size() > 1) |
758 result = kMayBeClippedByPaintDirtyRect; | 758 result = kMayBeClippedByPaintDirtyRect; |
759 } | 759 } |
760 | 760 |
761 Optional<DisplayItemCacheSkipper> cache_skipper; | 761 Optional<DisplayItemCacheSkipper> cache_skipper; |
762 if (layer_fragments.size() > 1) | 762 if (layer_fragments.size() > 1) |
763 cache_skipper.emplace(context); | 763 cache_skipper.emplace(context); |
764 | 764 |
765 ClipRect ancestor_background_clip_rect; | 765 ClipRect ancestor_background_clip_rect; |
766 if (!RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { | 766 if (!RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { |
767 if (parent_layer) { | 767 if (painting_info.root_layer == &paint_layer_) { |
| 768 // This works around a bug in squashed-layer painting. |
| 769 // Squashed layers paint into a backing in its compositing container's |
| 770 // space, but painting_info.root_layer points to the squashed layer |
| 771 // itself, thus PaintLayerClipper would return a clip rect in the |
| 772 // squashed layer's local space, instead of the backing's space. |
| 773 // Fortunately, CompositedLayerMapping::DoPaintTask already applied |
| 774 // appropriate ancestor clip for us, we can simply skip it. |
| 775 DCHECK_EQ(paint_layer_.GetCompositingState(), kPaintsIntoGroupedBacking); |
| 776 ancestor_background_clip_rect.SetRect(FloatClipRect()); |
| 777 } else if (parent_layer) { |
768 // Calculate the clip rectangle that the ancestors establish. | 778 // Calculate the clip rectangle that the ancestors establish. |
769 ClipRectsContext clip_rects_context( | 779 ClipRectsContext clip_rects_context( |
770 painting_info.root_layer, | 780 painting_info.root_layer, |
771 (paint_flags & kPaintLayerUncachedClipRects) ? kUncachedClipRects | 781 (paint_flags & kPaintLayerUncachedClipRects) ? kUncachedClipRects |
772 : kPaintingClipRects, | 782 : kPaintingClipRects, |
773 kIgnorePlatformOverlayScrollbarSize); | 783 kIgnorePlatformOverlayScrollbarSize); |
774 if (ShouldRespectOverflowClip(paint_flags, | 784 if (ShouldRespectOverflowClip(paint_flags, |
775 paint_layer_.GetLayoutObject()) == | 785 paint_layer_.GetLayoutObject()) == |
776 kIgnoreOverflowClip) | 786 kIgnoreOverflowClip) |
777 clip_rects_context.SetIgnoreOverflowClip(); | 787 clip_rects_context.SetIgnoreOverflowClip(); |
(...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1241 context, layout_object, kPaintPhaseClippingMask)) | 1251 context, layout_object, kPaintPhaseClippingMask)) |
1242 return; | 1252 return; |
1243 | 1253 |
1244 IntRect snapped_clip_rect = PixelSnappedIntRect(clip_rect.Rect()); | 1254 IntRect snapped_clip_rect = PixelSnappedIntRect(clip_rect.Rect()); |
1245 LayoutObjectDrawingRecorder drawing_recorder( | 1255 LayoutObjectDrawingRecorder drawing_recorder( |
1246 context, layout_object, kPaintPhaseClippingMask, snapped_clip_rect); | 1256 context, layout_object, kPaintPhaseClippingMask, snapped_clip_rect); |
1247 context.FillRect(snapped_clip_rect, Color::kBlack); | 1257 context.FillRect(snapped_clip_rect, Color::kBlack); |
1248 } | 1258 } |
1249 | 1259 |
1250 } // namespace blink | 1260 } // namespace blink |
OLD | NEW |