diff options
Diffstat (limited to 'src/3rdparty/webkit/WebCore/rendering/RenderTreeAsText.cpp')
-rw-r--r-- | src/3rdparty/webkit/WebCore/rendering/RenderTreeAsText.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderTreeAsText.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderTreeAsText.cpp index 5c6e738d2b..b7ab191d7d 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderTreeAsText.cpp +++ b/src/3rdparty/webkit/WebCore/rendering/RenderTreeAsText.cpp @@ -28,6 +28,7 @@ #include "CSSMutableStyleDeclaration.h" #include "CharacterNames.h" +#include "CString.h" #include "Document.h" #include "Frame.h" #include "FrameView.h" @@ -553,4 +554,31 @@ String externalRepresentation(RenderObject* o) return ts.release(); } +static void writeCounterValuesFromChildren(TextStream& stream, RenderObject* parent) +{ + for (RenderObject* child = parent->firstChild(); child; child = child->nextSibling()) { + if (child->isCounter()) { + String str(toRenderText(child)->text()); + stream << str; + } + } +} + +String counterValueForElement(Element* element) +{ + // Make sure the element is not freed during the layout. + RefPtr<Element> elementRef(element); + element->document()->updateLayout(); + TextStream stream; + // The counter renderers should be children of anonymous children + // (i.e., :before or :after pseudo-elements). + if (RenderObject* renderer = element->renderer()) { + for (RenderObject* child = renderer->firstChild(); child; child = child->nextSibling()) { + if (child->isAnonymous()) + writeCounterValuesFromChildren(stream, child); + } + } + return stream.release(); +} + } // namespace WebCore |