| 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/PartPainter.h" | 5 #include "core/paint/PartPainter.h" |
| 6 | 6 |
| 7 #include "core/layout/LayoutPart.h" | 7 #include "core/layout/LayoutPart.h" |
| 8 #include "core/paint/BoxPainter.h" | 8 #include "core/paint/BoxPainter.h" |
| 9 #include "core/paint/LayoutObjectDrawingRecorder.h" | 9 #include "core/paint/LayoutObjectDrawingRecorder.h" |
| 10 #include "core/paint/ObjectPainter.h" | 10 #include "core/paint/ObjectPainter.h" |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 BoxPainter(m_layoutPart).paintMask(paintInfo, adjustedPaintOffset); | 62 BoxPainter(m_layoutPart).paintMask(paintInfo, adjustedPaintOffset); |
| 63 return; | 63 return; |
| 64 } | 64 } |
| 65 | 65 |
| 66 if (shouldPaintSelfOutline(paintInfo.phase)) | 66 if (shouldPaintSelfOutline(paintInfo.phase)) |
| 67 ObjectPainter(m_layoutPart).paintOutline(paintInfo, adjustedPaintOffset); | 67 ObjectPainter(m_layoutPart).paintOutline(paintInfo, adjustedPaintOffset); |
| 68 | 68 |
| 69 if (paintInfo.phase != PaintPhaseForeground) | 69 if (paintInfo.phase != PaintPhaseForeground) |
| 70 return; | 70 return; |
| 71 | 71 |
| 72 if (m_layoutPart.frameViewBase()) { | 72 if (m_layoutPart.pluginOrFrame()) { |
| 73 // TODO(schenney) crbug.com/93805 Speculative release assert to verify that | 73 // TODO(schenney) crbug.com/93805 Speculative release assert to verify that |
| 74 // the crashes we see in FrameViewBase painting are due to a destroyed | 74 // the crashes we see in FrameViewBase painting are due to a destroyed |
| 75 // LayoutPart object. | 75 // LayoutPart object. |
| 76 CHECK(m_layoutPart.node()); | 76 CHECK(m_layoutPart.node()); |
| 77 Optional<RoundedInnerRectClipper> clipper; | 77 Optional<RoundedInnerRectClipper> clipper; |
| 78 if (m_layoutPart.style()->hasBorderRadius()) { | 78 if (m_layoutPart.style()->hasBorderRadius()) { |
| 79 if (borderRect.isEmpty()) | 79 if (borderRect.isEmpty()) |
| 80 return; | 80 return; |
| 81 | 81 |
| 82 FloatRoundedRect roundedInnerRect = | 82 FloatRoundedRect roundedInnerRect = |
| (...skipping 28 matching lines...) Expand all Loading... |
| 111 if (m_layoutPart.canResize()) | 111 if (m_layoutPart.canResize()) |
| 112 ScrollableAreaPainter(*m_layoutPart.layer()->getScrollableArea()) | 112 ScrollableAreaPainter(*m_layoutPart.layer()->getScrollableArea()) |
| 113 .paintResizer(paintInfo.context, roundedIntPoint(adjustedPaintOffset), | 113 .paintResizer(paintInfo.context, roundedIntPoint(adjustedPaintOffset), |
| 114 paintInfo.cullRect()); | 114 paintInfo.cullRect()); |
| 115 } | 115 } |
| 116 | 116 |
| 117 void PartPainter::paintContents(const PaintInfo& paintInfo, | 117 void PartPainter::paintContents(const PaintInfo& paintInfo, |
| 118 const LayoutPoint& paintOffset) { | 118 const LayoutPoint& paintOffset) { |
| 119 LayoutPoint adjustedPaintOffset = paintOffset + m_layoutPart.location(); | 119 LayoutPoint adjustedPaintOffset = paintOffset + m_layoutPart.location(); |
| 120 | 120 |
| 121 FrameViewBase* frameViewBase = m_layoutPart.frameViewBase(); | 121 FrameViewBase* frameViewBase = m_layoutPart.pluginOrFrame(); |
| 122 CHECK(frameViewBase); | 122 CHECK(frameViewBase); |
| 123 | 123 |
| 124 IntPoint paintLocation(roundedIntPoint( | 124 IntPoint paintLocation(roundedIntPoint( |
| 125 adjustedPaintOffset + m_layoutPart.replacedContentRect().location())); | 125 adjustedPaintOffset + m_layoutPart.replacedContentRect().location())); |
| 126 | 126 |
| 127 // FrameViewBases don't support painting with a paint offset, but instead | 127 // FrameViewBases don't support painting with a paint offset, but instead |
| 128 // offset themselves using the frame rect location. To paint FrameViewBases at | 128 // offset themselves using the frame rect location. To paint FrameViewBases at |
| 129 // our desired location, we need to apply paint offset as a transform, with | 129 // our desired location, we need to apply paint offset as a transform, with |
| 130 // the frame rect neutralized. | 130 // the frame rect neutralized. |
| 131 IntSize frameViewBasePaintOffset = | 131 IntSize frameViewBasePaintOffset = |
| 132 paintLocation - frameViewBase->frameRect().location(); | 132 paintLocation - frameViewBase->frameRect().location(); |
| 133 TransformRecorder transform( | 133 TransformRecorder transform( |
| 134 paintInfo.context, m_layoutPart, | 134 paintInfo.context, m_layoutPart, |
| 135 AffineTransform::translation(frameViewBasePaintOffset.width(), | 135 AffineTransform::translation(frameViewBasePaintOffset.width(), |
| 136 frameViewBasePaintOffset.height())); | 136 frameViewBasePaintOffset.height())); |
| 137 CullRect adjustedCullRect(paintInfo.cullRect(), -frameViewBasePaintOffset); | 137 CullRect adjustedCullRect(paintInfo.cullRect(), -frameViewBasePaintOffset); |
| 138 frameViewBase->paint(paintInfo.context, adjustedCullRect); | 138 frameViewBase->paint(paintInfo.context, adjustedCullRect); |
| 139 } | 139 } |
| 140 | 140 |
| 141 } // namespace blink | 141 } // namespace blink |
| OLD | NEW |