diff options
Diffstat (limited to 'WebCore/rendering/RenderTreeAsText.cpp')
| -rw-r--r-- | WebCore/rendering/RenderTreeAsText.cpp | 42 |
1 files changed, 31 insertions, 11 deletions
diff --git a/WebCore/rendering/RenderTreeAsText.cpp b/WebCore/rendering/RenderTreeAsText.cpp index 164a656..75c35ba 100644 --- a/WebCore/rendering/RenderTreeAsText.cpp +++ b/WebCore/rendering/RenderTreeAsText.cpp @@ -28,7 +28,6 @@ #include "CSSMutableStyleDeclaration.h" #include "CharacterNames.h" -#include "CString.h" #include "Document.h" #include "Frame.h" #include "FrameView.h" @@ -38,6 +37,7 @@ #include "RenderBR.h" #include "RenderFileUploadControl.h" #include "RenderInline.h" +#include "RenderListItem.h" #include "RenderListMarker.h" #include "RenderPart.h" #include "RenderTableCell.h" @@ -178,10 +178,13 @@ String quoteAndEscapeNonPrintables(const String& s) return String::adopt(result); } -static TextStream &operator<<(TextStream& ts, const RenderObject& o) +static void writeRenderObject(TextStream& ts, const RenderObject& o, RenderAsTextBehavior behavior) { ts << o.renderName(); + if (behavior & RenderAsTextShowAddresses) + ts << " " << &o; + if (o.style() && o.style()->zIndex()) ts << " zI: " << o.style()->zIndex(); @@ -254,7 +257,7 @@ static TextStream &operator<<(TextStream& ts, const RenderObject& o) ts << " [textStrokeWidth=" << o.style()->textStrokeWidth() << "]"; if (!o.isBoxModelObject()) - return ts; + return; const RenderBoxModelObject& box = *toRenderBoxModelObject(&o); if (box.borderTop() || box.borderRight() || box.borderBottom() || box.borderLeft()) { @@ -367,8 +370,6 @@ static TextStream &operator<<(TextStream& ts, const RenderObject& o) } } #endif - - return ts; } static void writeTextRun(TextStream& ts, const RenderText& o, const InlineTextBox& run) @@ -388,7 +389,7 @@ static void writeTextRun(TextStream& ts, const RenderText& o, const InlineTextBo << "\n"; } -void write(TextStream& ts, const RenderObject& o, int indent) +void write(TextStream& ts, const RenderObject& o, int indent, RenderAsTextBehavior behavior) { #if ENABLE(SVG) if (o.isRenderPath()) { @@ -422,7 +423,8 @@ void write(TextStream& ts, const RenderObject& o, int indent) writeIndent(ts, indent); - ts << o << "\n"; + writeRenderObject(ts, o, behavior); + ts << "\n"; if (o.isText() && !o.isBR()) { const RenderText& text = *toRenderText(&o); @@ -435,7 +437,7 @@ void write(TextStream& ts, const RenderObject& o, int indent) for (RenderObject* child = o.firstChild(); child; child = child->nextSibling()) { if (child->hasLayer()) continue; - write(ts, *child, indent + 1); + write(ts, *child, indent + 1, behavior); } if (o.isWidget()) { @@ -447,7 +449,7 @@ void write(TextStream& ts, const RenderObject& o, int indent) view->layout(); RenderLayer* l = root->layer(); if (l) - writeLayers(ts, l, l, IntRect(l->x(), l->y(), l->width(), l->height()), indent + 1); + writeLayers(ts, l, l, IntRect(l->x(), l->y(), l->width(), l->height()), indent + 1, behavior); } } } @@ -465,7 +467,12 @@ static void write(TextStream& ts, RenderLayer& l, { writeIndent(ts, indent); - ts << "layer " << layerBounds; + ts << "layer "; + + if (behavior & RenderAsTextShowAddresses) + ts << &l << " "; + + ts << layerBounds; if (!layerBounds.isEmpty()) { if (!backgroundClipRect.contains(layerBounds)) @@ -504,7 +511,7 @@ static void write(TextStream& ts, RenderLayer& l, ts << "\n"; if (paintPhase != LayerPaintPhaseBackground) - write(ts, *l.renderer(), indent + 1); + write(ts, *l.renderer(), indent + 1, behavior); } static void writeLayers(TextStream& ts, const RenderLayer* rootLayer, RenderLayer* l, @@ -654,4 +661,17 @@ String counterValueForElement(Element* element) return stream.release(); } +String markerTextForListItem(Element* element) +{ + // Make sure the element is not freed during the layout. + RefPtr<Element> elementRef(element); + element->document()->updateLayout(); + + RenderObject* renderer = element->renderer(); + if (!renderer || !renderer->isListItem()) + return String(); + + return toRenderListItem(renderer)->markerText(); +} + } // namespace WebCore |
