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/ObjectPainter.h" | 5 #include "core/paint/ObjectPainter.h" |
6 | 6 |
7 #include "core/layout/LayoutBlock.h" | 7 #include "core/layout/LayoutBlock.h" |
8 #include "core/layout/LayoutInline.h" | 8 #include "core/layout/LayoutInline.h" |
9 #include "core/layout/LayoutObject.h" | 9 #include "core/layout/LayoutObject.h" |
10 #include "core/layout/LayoutTheme.h" | 10 #include "core/layout/LayoutTheme.h" |
(...skipping 681 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
692 m_layoutObject.paint(info, paintOffset); | 692 m_layoutObject.paint(info, paintOffset); |
693 info.phase = PaintPhaseOutline; | 693 info.phase = PaintPhaseOutline; |
694 m_layoutObject.paint(info, paintOffset); | 694 m_layoutObject.paint(info, paintOffset); |
695 } | 695 } |
696 | 696 |
697 #if DCHECK_IS_ON() | 697 #if DCHECK_IS_ON() |
698 void ObjectPainter::doCheckPaintOffset(const PaintInfo& paintInfo, | 698 void ObjectPainter::doCheckPaintOffset(const PaintInfo& paintInfo, |
699 const LayoutPoint& paintOffset) { | 699 const LayoutPoint& paintOffset) { |
700 DCHECK(RuntimeEnabledFeatures::slimmingPaintV2Enabled()); | 700 DCHECK(RuntimeEnabledFeatures::slimmingPaintV2Enabled()); |
701 | 701 |
702 // TODO(pdr,wangxianzhu): Refactor to avoid the special treatment for SVGText, | 702 // Actual paint offsets of SVGInline and SVGInlineText include location() |
703 // SVGInline, SVGInlineText and SVGForeignObject. | 703 // of the containing SVGText, but PaintPropertyTreeBuilder doesn't output |
704 if (m_layoutObject.isSVG() && !m_layoutObject.isSVGRoot() && | 704 // the paint offsets. TODO(wangxianzhu): Avoid the special treatment. |
705 !m_layoutObject.isSVGForeignObject()) { | 705 if (m_layoutObject.isSVGInline() || m_layoutObject.isSVGInlineText()) |
706 if (!m_layoutObject.isSVGInline() && !m_layoutObject.isSVGInlineText()) | |
707 DCHECK(paintOffset == LayoutPoint()); | |
708 return; | 706 return; |
709 } | |
710 | 707 |
711 // TODO(pdr): Let painter and paint property tree builder generate the same | 708 // TODO(pdr): Let painter and paint property tree builder generate the same |
712 // paint offset for LayoutScrollbarPart. crbug.com/664249. | 709 // paint offset for LayoutScrollbarPart. crbug.com/664249. |
713 if (m_layoutObject.isLayoutScrollbarPart()) | 710 if (m_layoutObject.isLayoutScrollbarPart()) |
714 return; | 711 return; |
715 | 712 |
716 LayoutPoint adjustedPaintOffset = paintOffset; | 713 LayoutPoint adjustedPaintOffset = paintOffset; |
717 if (m_layoutObject.isBox()) | 714 // TODO(wangxianzhu): Avoid the special treatment for SVGText. |
| 715 if (m_layoutObject.isBox() && !m_layoutObject.isSVGText()) |
718 adjustedPaintOffset += toLayoutBox(m_layoutObject).location(); | 716 adjustedPaintOffset += toLayoutBox(m_layoutObject).location(); |
719 DCHECK(m_layoutObject.previousPaintOffset() == adjustedPaintOffset); | 717 DCHECK(m_layoutObject.previousPaintOffset() == adjustedPaintOffset) |
| 718 << " Paint offset mismatch: " << m_layoutObject.debugName() |
| 719 << " from PaintPropertyTreeBuilder: " |
| 720 << m_layoutObject.previousPaintOffset().toString() |
| 721 << " from painter: " << adjustedPaintOffset.toString(); |
720 } | 722 } |
721 #endif | 723 #endif |
722 | 724 |
723 } // namespace blink | 725 } // namespace blink |
OLD | NEW |