Changeset 259557 in webkit
- Timestamp:
- Apr 5, 2020 4:23:59 PM (4 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r259553 r259557 1 2020-04-05 Simon Fraser <simon.fraser@apple.com> 2 3 Make RenderObject TextStream-loggable 4 https://bugs.webkit.org/show_bug.cgi?id=210035 5 6 Reviewed by Zalan Bujtas. 7 8 Add operator<<(TextStream, const RenderObject&) and add virtual debugDescription() functions on 9 Node and RenderObject which should eventually replace the awkward formatForDebugger(char* buffer, unsigned length). 10 11 Convert RenderLayer to use renderer's debug description. 12 13 * dom/Element.cpp: 14 (WebCore::Element::debugDescription const): 15 * dom/Element.h: 16 * dom/Node.cpp: 17 (WebCore::Node::debugDescription const): 18 (WebCore::operator<<): 19 * dom/Node.h: 20 * rendering/RenderLayer.cpp: 21 (WebCore::RenderLayer::name const): 22 * rendering/RenderObject.cpp: 23 (WebCore::RenderObject::debugDescription const): 24 (WebCore::operator<<): 25 * rendering/RenderObject.h: 26 1 27 2020-04-05 Zan Dobersek <zdobersek@igalia.com> 2 28 -
trunk/Source/WebCore/dom/Element.cpp
r259401 r259557 2642 2642 } 2643 2643 2644 String Element::debugDescription() const 2645 { 2646 StringBuilder builder; 2647 2648 builder.append(nodeName()); 2649 2650 if (hasID()) { 2651 builder.appendLiteral(" id=\'"); 2652 builder.append(getIdAttribute()); 2653 builder.append('\''); 2654 } 2655 2656 if (hasClass()) { 2657 builder.appendLiteral(" class=\'"); 2658 size_t classNamesToDump = classNames().size(); 2659 const size_t maxNumClassNames = 7; 2660 bool addEllipsis = false; 2661 if (classNamesToDump > maxNumClassNames) { 2662 classNamesToDump = maxNumClassNames; 2663 addEllipsis = true; 2664 } 2665 2666 for (size_t i = 0; i < classNamesToDump; ++i) { 2667 if (i > 0) 2668 builder.append(' '); 2669 builder.append(classNames()[i]); 2670 } 2671 if (addEllipsis) 2672 builder.append("..."); 2673 builder.append('\''); 2674 } 2675 2676 return builder.toString(); 2677 } 2678 2644 2679 #if ENABLE(TREE_DEBUGGING) 2645 2680 -
trunk/Source/WebCore/dom/Element.h
r258834 r259557 616 616 ElementIdentifier createElementIdentifier(); 617 617 618 String debugDescription() const override; 619 618 620 protected: 619 621 Element(const QualifiedName&, Document&, ConstructionType); … … 687 689 LayoutRect absoluteEventBounds(bool& boundsIncludeAllDescendantElements, bool& includesFixedPositionElements); 688 690 LayoutRect absoluteEventBoundsOfElementAndDescendants(bool& includesFixedPositionElements); 689 691 690 692 #if ENABLE(TREE_DEBUGGING) 691 693 void formatForDebugger(char* buffer, unsigned length) const override; -
trunk/Source/WebCore/dom/Node.cpp
r259376 r259557 1752 1752 } 1753 1753 1754 String Node::debugDescription() const 1755 { 1756 StringBuilder builder; 1757 1758 builder.append(nodeName()); 1759 1760 if (isTextNode()) { 1761 String value = nodeValue(); 1762 value.replaceWithLiteral('\\', "\\\\"); 1763 value.replaceWithLiteral('\n', "\\n"); 1764 1765 const size_t maxDumpLength = 30; 1766 if (value.length() > maxDumpLength) { 1767 value.truncate(maxDumpLength - 10); 1768 value.append("..."_s); 1769 } 1770 1771 builder.append(' '); 1772 builder.append('\"'); 1773 builder.append(value); 1774 builder.append('\"'); 1775 } 1776 1777 return builder.toString(); 1778 } 1779 1754 1780 #if ENABLE(TREE_DEBUGGING) 1755 1781 … … 2620 2646 TextStream& operator<<(TextStream& ts, const Node& node) 2621 2647 { 2622 #if ENABLE(TREE_DEBUGGING) 2623 const size_t FormatBufferSize = 512; 2624 char s[FormatBufferSize]; 2625 node.formatForDebugger(s, FormatBufferSize); 2626 ts << "node " << &node << " " << s; 2627 #else 2628 ts << "node " << &node << " " << node.nodeName(); 2629 #endif 2630 2648 ts << "node " << &node << " " << node.debugDescription(); 2631 2649 return ts; 2632 2650 } -
trunk/Source/WebCore/dom/Node.h
r259435 r259557 432 432 virtual void removedFromAncestor(RemovalType, ContainerNode& oldParentOfRemovedTree); 433 433 434 virtual String debugDescription() const; 435 434 436 #if ENABLE(TREE_DEBUGGING) 435 437 virtual void formatForDebugger(char* buffer, unsigned length) const; -
trunk/Source/WebCore/rendering/RenderLayer.cpp
r259445 r259557 831 831 { 832 832 StringBuilder name; 833 834 if (Element* element = renderer().element()) { 835 name.append(" <"); 836 name.append(element->tagName().convertToLowercaseWithoutLocale()); 837 name.append('>'); 838 839 if (element->hasID()) { 840 name.appendLiteral(" id=\'"); 841 name.append(element->getIdAttribute()); 842 name.append('\''); 843 } 844 845 if (element->hasClass()) { 846 name.appendLiteral(" class=\'"); 847 size_t classNamesToDump = element->classNames().size(); 848 const size_t maxNumClassNames = 7; 849 bool addEllipsis = false; 850 if (classNamesToDump > maxNumClassNames) { 851 classNamesToDump = maxNumClassNames; 852 addEllipsis = true; 853 } 854 855 for (size_t i = 0; i < classNamesToDump; ++i) { 856 if (i > 0) 857 name.append(' '); 858 name.append(element->classNames()[i]); 859 } 860 if (addEllipsis) 861 name.append("..."); 862 name.append('\''); 863 } 864 } else 865 name.append(renderer().renderName()); 833 name.append(renderer().debugDescription()); 866 834 867 835 if (isReflection()) -
trunk/Source/WebCore/rendering/RenderObject.cpp
r258508 r259557 72 72 #include <algorithm> 73 73 #include <stdio.h> 74 #include <wtf/HexNumber.h> 74 75 #include <wtf/IsoMallocInlines.h> 75 76 #include <wtf/RefCountedLeakCounter.h> … … 1908 1909 } 1909 1910 1911 String RenderObject::debugDescription() const 1912 { 1913 StringBuilder builder; 1914 1915 builder.append(renderName()); 1916 builder.append(" 0x"_s); 1917 builder.append(hex(reinterpret_cast<uintptr_t>(this), Lowercase)); 1918 builder.append(' '); 1919 1920 if (node()) 1921 builder.append(node()->debugDescription()); 1922 1923 return builder.toString(); 1924 } 1925 1926 TextStream& operator<<(TextStream& ts, const RenderObject& renderer) 1927 { 1928 ts << renderer.debugDescription(); 1929 return ts; 1930 } 1931 1910 1932 #if ENABLE(TREE_DEBUGGING) 1911 1933 -
trunk/Source/WebCore/rendering/RenderObject.h
r258508 r259557 39 39 #include <wtf/IsoMalloc.h> 40 40 #include <wtf/WeakPtr.h> 41 42 namespace WTF { 43 class TextStream; 44 } 41 45 42 46 namespace WebCore { … … 779 783 void initializeFragmentedFlowStateOnInsertion(); 780 784 virtual void insertedIntoTree(); 785 786 virtual String debugDescription() const; 781 787 782 788 protected: … … 1107 1113 inline void Node::setRenderer(RenderObject* renderer) { m_rendererWithStyleFlags.setPointer(renderer); } 1108 1114 1115 WTF::TextStream& operator<<(WTF::TextStream&, const RenderObject&); 1116 1109 1117 #if ENABLE(TREE_DEBUGGING) 1110 1118 void printRenderTreeForLiveDocuments();
Note: See TracChangeset
for help on using the changeset viewer.