Skip to content
Permalink
Browse files
Simple line layout: Add <br> support.
https://bugs.webkit.org/show_bug.cgi?id=139012

This patch enables RenderBlockFlows to use simple line layout on text content when <br> is present.
Simple text with <br> is a fairly common pattern on discussion(forum)-like web pages. This patch reduces memory usage
and speeds up layout for such content.

Source/WebCore:

PerformanceTest/layout/line-layout-simple.html shows more than 2x speedup, when each paragraph is modified by appending <br> to the end.
With <br> support enabled:
  mean: 70.02391461289068 runs/s
  median: 70.47986488932318 runs/s

While with <br> support disabled:
  mean: 30.417295049468184 runs/s
  median: 30.36517778760357 runs/s

Reviewed by Antti Koivisto.

Test: fast/text/simple-line-with-br.html

* editing/TextIterator.cpp:
(WebCore::TextIterator::handleTextNode):
* rendering/RenderBlock.h:
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::setSelectionState):
(WebCore::RenderBlockFlow::deleteLineBoxesBeforeSimpleLineLayout):
* rendering/RenderBlockFlow.h:
* rendering/RenderLineBreak.cpp:
(WebCore::simpleLineLayout):
(WebCore::ensureLineBoxes):
(WebCore::RenderLineBreak::deleteLineBoxesBeforeSimpleLineLayout):
(WebCore::RenderLineBreak::positionForPoint):
(WebCore::RenderLineBreak::setSelectionState):
(WebCore::RenderLineBreak::linesBoundingBox):
(WebCore::RenderLineBreak::absoluteRects):
(WebCore::RenderLineBreak::absoluteQuads):
(WebCore::RenderLineBreak::collectSelectionRects):
* rendering/RenderLineBreak.h:
* rendering/RenderText.cpp:
(WebCore::RenderText::absoluteRects):
(WebCore::RenderText::absoluteQuadsClippedToEllipsis):
(WebCore::RenderText::absoluteQuads):
(WebCore::RenderText::linesBoundingBox):
(WebCore::RenderText::caretMinOffset):
(WebCore::RenderText::caretMaxOffset):
(WebCore::RenderText::containsCaretOffset):
(WebCore::RenderText::hasRenderedText):
* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::canUseFor):
(WebCore::SimpleLineLayout::LineState::removeTrailingWhitespace):
(WebCore::SimpleLineLayout::removeTrailingWhitespace):
(WebCore::SimpleLineLayout::consumeLineBreakIfNeeded):
(WebCore::SimpleLineLayout::skipWhitespaceIfNeeded):
(WebCore::SimpleLineLayout::firstFragment):
(WebCore::SimpleLineLayout::forceFragmentToLine):
(WebCore::SimpleLineLayout::createLineRuns):
(WebCore::SimpleLineLayout::create):
* rendering/SimpleLineLayoutFlowContents.cpp:
(WebCore::SimpleLineLayout::initializeSegments):
(WebCore::SimpleLineLayout::FlowContents::segmentForRenderer): Deleted.
* rendering/SimpleLineLayoutFlowContents.h:
* rendering/SimpleLineLayoutFunctions.cpp:
(WebCore::SimpleLineLayout::paintFlow):
(WebCore::SimpleLineLayout::hitTestFlow):
(WebCore::SimpleLineLayout::showLineLayoutForFlow):
* rendering/SimpleLineLayoutResolver.cpp:
(WebCore::SimpleLineLayout::RunResolver::Run::rect):
(WebCore::SimpleLineLayout::RunResolver::RunResolver):
(WebCore::SimpleLineLayout::RunResolver::rangeForRenderer):
* rendering/SimpleLineLayoutResolver.h:
(WebCore::SimpleLineLayout::RunResolver::Iterator::inQuirksMode):
(WebCore::SimpleLineLayout::RunResolver::Iterator::operator--):
* rendering/SimpleLineLayoutTextFragmentIterator.cpp:
(WebCore::SimpleLineLayout::TextFragmentIterator::nextTextFragment):
(WebCore::SimpleLineLayout::TextFragmentIterator::findNextTextFragment):
(WebCore::SimpleLineLayout::TextFragmentIterator::revertToFragment):
(WebCore::SimpleLineLayout::TextFragmentIterator::skipToNextPosition):
* rendering/SimpleLineLayoutTextFragmentIterator.h:
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::isLastInRenderer):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::isLineBreak):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::isEmpty):
(WebCore::SimpleLineLayout::TextFragmentIterator::isSoftLineBreak):
(WebCore::SimpleLineLayout::TextFragmentIterator::isHardLineBreak):
(WebCore::SimpleLineLayout::TextFragmentIterator::isLineBreak): Deleted.

LayoutTests:

Test output changes in 2 different ways:
1. Repositioned RenderLineBreak elements. (1px wide <br> is the result of integral pixel snapping)
2. Removed empty content (<br>).

Reviewed by Antti Koivisto.

* fast/text/simple-line-with-br-expected.html: Added.
* fast/text/simple-line-with-br.html: Added.
* platform/mac-mavericks/fast/parser/open-comment-in-textarea-expected.txt:
* platform/mac-mavericks/http/tests/navigation/javascriptlink-frames-expected.txt:
* platform/mac/editing/pasteboard/5761530-1-expected.txt: Added.
* platform/mac/fast/css/text-overflow-ellipsis-bidi-expected.txt:
* platform/mac/fast/dom/focus-contenteditable-expected.txt:
* platform/mac/fast/forms/range/slider-padding-expected.txt: Added.
* platform/mac/fast/forms/textarea-scroll-height-expected.txt:
* platform/mac/fast/parser/open-comment-in-textarea-expected.txt:
* platform/mac/fast/text/international/bidi-layout-across-linebreak-expected.txt:
* platform/mac/fast/text/svg-font-face-with-kerning-expected.txt: Added.
* platform/mac/http/tests/navigation/javascriptlink-frames-expected.txt:
* platform/mac/http/tests/navigation/postredirect-basic-expected.txt:
* platform/mac/http/tests/navigation/postredirect-goback1-expected.txt:
* platform/mac/printing/single-line-must-not-be-split-into-two-pages-expected.txt:
* platform/mac/svg/wicd/test-rightsizing-b-expected.txt:
* platform/mac/tables/mozilla/bugs/bug106795-expected.txt:
* platform/mac/tables/mozilla/bugs/bug1224-expected.txt:
* platform/mac/tables/mozilla/bugs/bug131020-expected.txt:
* platform/mac/tables/mozilla/bugs/bug131020_iframe-expected.txt:
* platform/mac/tables/mozilla/bugs/bug1430-expected.txt:
* platform/mac/tables/mozilla/bugs/bug16252-expected.txt:
* platform/mac/tables/mozilla/bugs/bug19599-expected.txt:
* platform/mac/tables/mozilla/bugs/bug20579-expected.txt:
* platform/mac/tables/mozilla/bugs/bug32205-3-expected.txt:
* platform/mac/tables/mozilla/bugs/bug82946-2-expected.txt:
* platform/mac/tables/mozilla/bugs/bug92143-expected.txt:
* platform/mac/tables/mozilla/marvin/tables_cellpadding-expected.txt:
* platform/mac/tables/mozilla/marvin/tables_cellspacing-expected.txt:
* platform/mac/tables/mozilla/other/wa_table_thtd_rowspan-expected.txt:
* platform/mac/tables/mozilla_expected_failures/bugs/bug1262-expected.txt:
* platform/mac/tables/mozilla_expected_failures/bugs/bug56024-expected.txt:
* platform/mac/tables/mozilla_expected_failures/other/test4-expected.txt:


Canonical link: https://commits.webkit.org/161618@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@182620 268f45cc-cd09-0410-ab3c-d52691b4dbfc
  • Loading branch information
alanbujtas committed Apr 10, 2015
1 parent 4a2263d commit b8dbb0185170675569a086f8c258345e6c5ccbd5
Showing with 952 additions and 568 deletions.
  1. +50 −0 LayoutTests/ChangeLog
  2. +40 −0 LayoutTests/fast/text/simple-line-with-br-expected.html
  3. +38 −0 LayoutTests/fast/text/simple-line-with-br.html
  4. +1 −4 LayoutTests/platform/mac-mavericks/fast/parser/open-comment-in-textarea-expected.txt
  5. +0 −1 LayoutTests/platform/mac-mavericks/http/tests/navigation/javascriptlink-frames-expected.txt
  6. +3 −0 LayoutTests/platform/mac/editing/pasteboard/5761530-1-expected.txt
  7. +1 −1 LayoutTests/platform/mac/fast/css/text-overflow-ellipsis-bidi-expected.txt
  8. +1 −1 LayoutTests/platform/mac/fast/dom/focus-contenteditable-expected.txt
  9. +16 −0 LayoutTests/platform/mac/fast/forms/range/slider-padding-expected.txt
  10. +0 −16 LayoutTests/platform/mac/fast/forms/textarea-scroll-height-expected.txt
  11. +1 −4 LayoutTests/platform/mac/fast/parser/open-comment-in-textarea-expected.txt
  12. +1 −1 LayoutTests/platform/mac/fast/text/international/bidi-layout-across-linebreak-expected.txt
  13. +14 −0 LayoutTests/platform/mac/fast/text/svg-font-face-with-kerning-expected.txt
  14. +0 −1 LayoutTests/platform/mac/http/tests/navigation/javascriptlink-frames-expected.txt
  15. +5 −5 LayoutTests/platform/mac/http/tests/navigation/postredirect-basic-expected.txt
  16. +5 −5 LayoutTests/platform/mac/http/tests/navigation/postredirect-goback1-expected.txt
  17. +400 −400 LayoutTests/platform/mac/printing/single-line-must-not-be-split-into-two-pages-expected.txt
  18. +1 −1 LayoutTests/platform/mac/svg/wicd/test-rightsizing-b-expected.txt
  19. +2 −2 LayoutTests/platform/mac/tables/mozilla/bugs/bug106795-expected.txt
  20. +2 −2 LayoutTests/platform/mac/tables/mozilla/bugs/bug1224-expected.txt
  21. +1 −1 LayoutTests/platform/mac/tables/mozilla/bugs/bug131020-expected.txt
  22. +1 −1 LayoutTests/platform/mac/tables/mozilla/bugs/bug131020_iframe-expected.txt
  23. +1 −1 LayoutTests/platform/mac/tables/mozilla/bugs/bug1430-expected.txt
  24. +1 −1 LayoutTests/platform/mac/tables/mozilla/bugs/bug16252-expected.txt
  25. +1 −1 LayoutTests/platform/mac/tables/mozilla/bugs/bug19599-expected.txt
  26. +1 −1 LayoutTests/platform/mac/tables/mozilla/bugs/bug20579-expected.txt
  27. +3 −3 LayoutTests/platform/mac/tables/mozilla/bugs/bug32205-3-expected.txt
  28. +1 −1 LayoutTests/platform/mac/tables/mozilla/bugs/bug82946-2-expected.txt
  29. +1 −1 LayoutTests/platform/mac/tables/mozilla/bugs/bug92143-expected.txt
  30. +1 −1 LayoutTests/platform/mac/tables/mozilla/marvin/tables_cellpadding-expected.txt
  31. +1 −1 LayoutTests/platform/mac/tables/mozilla/marvin/tables_cellspacing-expected.txt
  32. +11 −11 LayoutTests/platform/mac/tables/mozilla/other/wa_table_thtd_rowspan-expected.txt
  33. +1 −1 LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1262-expected.txt
  34. +1 −1 LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug56024-expected.txt
  35. +2 −2 LayoutTests/platform/mac/tables/mozilla_expected_failures/other/test4-expected.txt
  36. +87 −0 Source/WebCore/ChangeLog
  37. +5 −1 Source/WebCore/editing/TextIterator.cpp
  38. +3 −4 Source/WebCore/rendering/RenderBlock.h
  39. +16 −3 Source/WebCore/rendering/RenderBlockFlow.cpp
  40. +1 −0 Source/WebCore/rendering/RenderBlockFlow.h
  41. +37 −0 Source/WebCore/rendering/RenderLineBreak.cpp
  42. +1 −0 Source/WebCore/rendering/RenderLineBreak.h
  43. +8 −8 Source/WebCore/rendering/RenderText.cpp
  44. +80 −37 Source/WebCore/rendering/SimpleLineLayout.cpp
  45. +9 −12 Source/WebCore/rendering/SimpleLineLayoutFlowContents.cpp
  46. +0 −1 Source/WebCore/rendering/SimpleLineLayoutFlowContents.h
  47. +12 −7 Source/WebCore/rendering/SimpleLineLayoutFunctions.cpp
  48. +37 −8 Source/WebCore/rendering/SimpleLineLayoutResolver.cpp
  49. +11 −0 Source/WebCore/rendering/SimpleLineLayoutResolver.h
  50. +20 −10 Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.cpp
  51. +16 −5 Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.h
@@ -1,3 +1,53 @@
2015-04-09 Zalan Bujtas <zalan@apple.com>

Simple line layout: Add <br> support.
https://bugs.webkit.org/show_bug.cgi?id=139012

This patch enables RenderBlockFlows to use simple line layout on text content when <br> is present.
Simple text with <br> is a fairly common pattern on discussion(forum)-like web pages. This patch reduces memory usage
and speeds up layout for such content.

Test output changes in 2 different ways:
1. Repositioned RenderLineBreak elements. (1px wide <br> is the result of integral pixel snapping)
2. Removed empty content (<br>).

Reviewed by Antti Koivisto.

* fast/text/simple-line-with-br-expected.html: Added.
* fast/text/simple-line-with-br.html: Added.
* platform/mac-mavericks/fast/parser/open-comment-in-textarea-expected.txt:
* platform/mac-mavericks/http/tests/navigation/javascriptlink-frames-expected.txt:
* platform/mac/editing/pasteboard/5761530-1-expected.txt: Added.
* platform/mac/fast/css/text-overflow-ellipsis-bidi-expected.txt:
* platform/mac/fast/dom/focus-contenteditable-expected.txt:
* platform/mac/fast/forms/range/slider-padding-expected.txt: Added.
* platform/mac/fast/forms/textarea-scroll-height-expected.txt:
* platform/mac/fast/parser/open-comment-in-textarea-expected.txt:
* platform/mac/fast/text/international/bidi-layout-across-linebreak-expected.txt:
* platform/mac/fast/text/svg-font-face-with-kerning-expected.txt: Added.
* platform/mac/http/tests/navigation/javascriptlink-frames-expected.txt:
* platform/mac/http/tests/navigation/postredirect-basic-expected.txt:
* platform/mac/http/tests/navigation/postredirect-goback1-expected.txt:
* platform/mac/printing/single-line-must-not-be-split-into-two-pages-expected.txt:
* platform/mac/svg/wicd/test-rightsizing-b-expected.txt:
* platform/mac/tables/mozilla/bugs/bug106795-expected.txt:
* platform/mac/tables/mozilla/bugs/bug1224-expected.txt:
* platform/mac/tables/mozilla/bugs/bug131020-expected.txt:
* platform/mac/tables/mozilla/bugs/bug131020_iframe-expected.txt:
* platform/mac/tables/mozilla/bugs/bug1430-expected.txt:
* platform/mac/tables/mozilla/bugs/bug16252-expected.txt:
* platform/mac/tables/mozilla/bugs/bug19599-expected.txt:
* platform/mac/tables/mozilla/bugs/bug20579-expected.txt:
* platform/mac/tables/mozilla/bugs/bug32205-3-expected.txt:
* platform/mac/tables/mozilla/bugs/bug82946-2-expected.txt:
* platform/mac/tables/mozilla/bugs/bug92143-expected.txt:
* platform/mac/tables/mozilla/marvin/tables_cellpadding-expected.txt:
* platform/mac/tables/mozilla/marvin/tables_cellspacing-expected.txt:
* platform/mac/tables/mozilla/other/wa_table_thtd_rowspan-expected.txt:
* platform/mac/tables/mozilla_expected_failures/bugs/bug1262-expected.txt:
* platform/mac/tables/mozilla_expected_failures/bugs/bug56024-expected.txt:
* platform/mac/tables/mozilla_expected_failures/other/test4-expected.txt:

2015-04-09 Matthew Mirman <mmirman@apple.com>

Updated expectations on a few tests to account for error
@@ -0,0 +1,40 @@
<!DOCTYPE html>
<html>
<head>
<title>Test that text content with <br> works fine with simple line layout.</title>
</head>
<body>
<script>
function injectTextNodes(container, style)
{
container.appendChild(document.createElement("br"));
container.appendChild(document.createElement("br"));
container.appendChild(document.createTextNode(" "));
container.appendChild(document.createElement("br"));
container.appendChild(document.createTextNode("This tests"));
container.appendChild(document.createTextNode(" "));
container.appendChild(document.createTextNode("line breaking"));
container.appendChild(document.createElement("br"));
container.appendChild(document.createTextNode(" with "));
container.appendChild(document.createElement("br"));
container.appendChild(document.createElement("br"));
container.appendChild(document.createTextNode("multiple "));
container.appendChild(document.createElement("br"));
container.appendChild(document.createElement("br"));
container.appendChild(document.createTextNode("renderers."));
container.style.cssText = style;
document.body.appendChild(container);
}

if (window.internals)
internals.settings.setSimpleLineLayoutEnabled(false)
injectTextNodes(document.createElement("div"));
injectTextNodes(document.createElement("div"), "width: 0px");
injectTextNodes(document.createElement("div"), "width: 10px");
injectTextNodes(document.createElement("div"), "width: 100px");
injectTextNodes(document.createElement("pre"));
injectTextNodes(document.createElement("pre"), "white-space: pre-wrap");
injectTextNodes(document.createElement("pre"), "white-space: pre-wrap; width: 100px");
</script>
</body>
</html>
@@ -0,0 +1,38 @@
<!DOCTYPE html>
<html>
<head>
<title>Test that text content with <br> works fine with simple line layout.</title>
</head>
<body>
<script>
function injectTextNodes(container, style)
{
container.appendChild(document.createElement("br"));
container.appendChild(document.createElement("br"));
container.appendChild(document.createTextNode(" "));
container.appendChild(document.createElement("br"));
container.appendChild(document.createTextNode("This tests"));
container.appendChild(document.createTextNode(" "));
container.appendChild(document.createTextNode("line breaking"));
container.appendChild(document.createElement("br"));
container.appendChild(document.createTextNode(" with "));
container.appendChild(document.createElement("br"));
container.appendChild(document.createElement("br"));
container.appendChild(document.createTextNode("multiple "));
container.appendChild(document.createElement("br"));
container.appendChild(document.createElement("br"));
container.appendChild(document.createTextNode("renderers."));
container.style.cssText = style;
document.body.appendChild(container);
}

injectTextNodes(document.createElement("div"));
injectTextNodes(document.createElement("div"), "width: 0px");
injectTextNodes(document.createElement("div"), "width: 10px");
injectTextNodes(document.createElement("div"), "width: 100px");
injectTextNodes(document.createElement("pre"));
injectTextNodes(document.createElement("pre"), "white-space: pre-wrap");
injectTextNodes(document.createElement("pre"), "white-space: pre-wrap; width: 100px");
</script>
</body>
</html>
@@ -8,11 +8,8 @@ layer at (0,0) size 800x600
layer at (10,10) size 161x32 clip at (11,11) size 144x30 scrollHeight 56
RenderTextControl {TEXTAREA} at (2,2) size 161x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
RenderBlock {DIV} at (3,3) size 140x52
RenderText {#text} at (0,0) size 140x39
RenderText {#text} at (0,0) size 138x39
text run at (0,0) width 26: "<!--"
text run at (25,0) width 1: " "
text run at (0,13) width 138: "This should be part of the"
text run at (137,13) width 3: " "
text run at (0,26) width 47: "textarea."
text run at (46,26) width 1: " "
RenderBR {BR} at (0,39) size 0x13
@@ -108,7 +108,6 @@ layer at (0,0) size 800x600
RenderBlock {DIV} at (3,3) size 224x26
RenderText {#text} at (0,0) size 184x13
text run at (0,0) width 184: "More initial text before user input."
text run at (183,0) width 1: " "
RenderBR {BR} at (0,13) size 0x13
RenderFrame {FRAME} at (0,540) size 800x60
layer at (0,0) size 785x90
@@ -0,0 +1,3 @@
This tests to see that tabs are put into tab spans when they are copied individually. The pasted tab should be inside of a tab span, not a style span. To run the test manually, paste and then inspect the editable region, and ensure that there is a tab span at the beginning of the editable div.

<span class="Apple-tab-span" style="white-space: pre;"> </span><span class="Apple-tab-span" style="white-space:pre;"> </span>xxx
@@ -9,7 +9,7 @@ layer at (0,0) size 800x200
RenderBR {BR} at (579,0) size 1x18
RenderText {#text} at (0,18) size 547x18
text run at (0,18) width 547: "The ellipsis should appear on the left for the RTL case and on the right for LTR case. "
RenderBR {BR} at (0,0) size 0x0
RenderBR {BR} at (546,18) size 1x18
RenderBR {BR} at (0,36) size 0x18
RenderText {#text} at (0,54) size 62x18
text run at (0,54) width 62: "RTL text:"
@@ -6,7 +6,7 @@ layer at (0,0) size 785x894
RenderBlock (anonymous) at (0,0) size 769x36
RenderText {#text} at (0,0) size 509x18
text run at (0,0) width 509: "This test will try to call focus() on a contenteditable div, and then a normal div. "
RenderBR {BR} at (0,0) size 0x0
RenderBR {BR} at (508,14) size 1x0
RenderText {#text} at (0,18) size 379x18
text run at (0,18) width 379: "The window should scroll to reveal the contenteditable div."
RenderBlock {DIV} at (0,36) size 500x800
@@ -0,0 +1,16 @@
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 800x600
RenderBlock {HTML} at (0,0) size 800x600
RenderBody {BODY} at (8,8) size 784x579
RenderBlock (anonymous) at (0,0) size 784x18
RenderText {#text} at (0,0) size 330x18
text run at (0,0) width 330: "This tests that the slider control considers padding. "
RenderBR {BR} at (329,14) size 1x0
RenderBlock {DIV} at (0,18) size 784x39 [bgcolor=#ADD8E6]
RenderSlider {INPUT} at (2,2) size 100x35 [color=#909090] [bgcolor=#FFFFFF]
RenderFlexibleBox {DIV} at (10,10) size 80x15
RenderBlock {DIV} at (0,0) size 80x15
RenderBlock {DIV} at (0,0) size 15x15
RenderText {#text} at (0,0) size 0x0
RenderBlock {PRE} at (0,70) size 784x0
@@ -12,42 +12,26 @@ layer at (8,8) size 200x200 clip at (9,9) size 183x198 scrollHeight 316
RenderBlock {DIV} at (3,3) size 179x312
RenderText {#text} at (0,0) size 84x299
text run at (0,0) width 84: "Lots of content."
text run at (83,0) width 1: " "
text run at (0,13) width 84: "Lots of content."
text run at (83,13) width 1: " "
text run at (0,26) width 84: "Lots of content."
text run at (83,26) width 1: " "
text run at (0,39) width 84: "Lots of content."
text run at (83,39) width 1: " "
text run at (0,52) width 0: " "
text run at (0,65) width 84: "Lots of content."
text run at (83,65) width 1: " "
text run at (0,78) width 84: "Lots of content."
text run at (83,78) width 1: " "
text run at (0,91) width 0: " "
text run at (0,104) width 84: "Lots of content."
text run at (83,104) width 1: " "
text run at (0,117) width 84: "Lots of content."
text run at (83,117) width 1: " "
text run at (0,130) width 0: " "
text run at (0,143) width 84: "Lots of content."
text run at (83,143) width 1: " "
text run at (0,156) width 84: "Lots of content."
text run at (83,156) width 1: " "
text run at (0,169) width 0: " "
text run at (0,182) width 84: "Lots of content."
text run at (83,182) width 1: " "
text run at (0,195) width 84: "Lots of content."
text run at (83,195) width 1: " "
text run at (0,208) width 0: " "
text run at (0,221) width 84: "Lots of content."
text run at (83,221) width 1: " "
text run at (0,234) width 84: "Lots of content."
text run at (83,234) width 1: " "
text run at (0,247) width 0: " "
text run at (0,260) width 84: "Lots of content."
text run at (83,260) width 1: " "
text run at (0,273) width 84: "Lots of content."
text run at (83,273) width 1: " "
text run at (0,286) width 0: " "
RenderBR {BR} at (0,299) size 0x13
@@ -8,11 +8,8 @@ layer at (0,0) size 800x600
layer at (10,10) size 152x32 clip at (11,11) size 135x30 scrollHeight 56
RenderTextControl {TEXTAREA} at (2,2) size 152x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
RenderBlock {DIV} at (3,3) size 131x52
RenderText {#text} at (0,0) size 119x39
RenderText {#text} at (0,0) size 116x39
text run at (0,0) width 20: "<!--"
text run at (19,0) width 1: " "
text run at (0,13) width 116: "This should be part of"
text run at (115,13) width 4: " "
text run at (0,26) width 67: "the textarea."
text run at (66,26) width 1: " "
RenderBR {BR} at (0,39) size 0x13
@@ -165,7 +165,7 @@ layer at (0,0) size 800x492
RenderTableCell {TD} at (49,269) size 45x41 [border: (1px solid #008000)] [r=7 c=1 rs=1 cs=1]
RenderText {#text} at (3,3) size 20x18
text run at (3,3) width 20: "a ("
RenderBR {BR} at (22,18) size 1x0
RenderBR {BR} at (22,3) size 1x18
RenderText {#text} at (3,21) size 21x18
text run at (3,21) width 21: "] b"
RenderTableCell {TD} at (94,269) size 33x41 [border: (1px solid #008000)] [r=7 c=2 rs=1 cs=1]
@@ -0,0 +1,14 @@
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 800x600
RenderBlock {HTML} at (0,0) size 800x600
RenderBody {BODY} at (8,8) size 784x584
RenderBlock {DIV} at (0,0) size 230x90
RenderText {#text} at (0,1) size 207x34
text run at (0,1) width 207: "This is a test of kerning when"
text run at (0,19) width 157: "using SVG web fonts. "
RenderBR {BR} at (156,32) size 1x0
RenderBR {BR} at (0,37) size 0x16
RenderText {#text} at (0,55) size 230x34
text run at (0,55) width 230: "Wow, The V/A Team's Task Was"
text run at (0,73) width 85: "on Youtube."
@@ -108,7 +108,6 @@ layer at (0,0) size 800x600
RenderBlock {DIV} at (3,3) size 211x26
RenderText {#text} at (0,0) size 179x13
text run at (0,0) width 179: "More initial text before user input."
text run at (178,0) width 1: " "
RenderBR {BR} at (0,13) size 0x13
RenderFrame {FRAME} at (0,540) size 800x60
layer at (0,0) size 785x90
@@ -6,18 +6,18 @@ layer at (0,0) size 800x600
RenderText {#text} at (0,0) size 750x74
text run at (0,0) width 750: "This is just a minimal page that we navigate in response to"
text run at (0,37) width 217: "an HTTP POST. "
RenderBR {BR} at (0,0) size 0x0
RenderBR {BR} at (216,66) size 1x0
RenderBR {BR} at (0,74) size 0x37
RenderText {#text} at (0,111) size 766x111
RenderText {#text} at (0,111) size 765x111
text run at (0,111) width 743: "If the next line is empty after the colon, it probably means"
text run at (0,148) width 179: "that we made "
text run at (178,148) width 588: "a mistake and requested this page with a GET"
text run at (178,148) width 587: "a mistake and requested this page with a GET"
text run at (0,185) width 434: "with no query instead of a POST. "
RenderBR {BR} at (0,0) size 0x0
RenderBR {BR} at (433,214) size 1x0
RenderBR {BR} at (0,222) size 0x37
RenderText {#text} at (0,259) size 704x37
text run at (0,259) width 704: "The first text field contained: New form text from user "
RenderBR {BR} at (0,0) size 0x0
RenderBR {BR} at (703,288) size 1x0
RenderText {#text} at (0,296) size 574x37
text run at (0,296) width 574: "This page was requested with an HTTP GET"

@@ -6,18 +6,18 @@ layer at (0,0) size 800x600
RenderText {#text} at (0,0) size 750x74
text run at (0,0) width 750: "This is just a minimal page that we navigate in response to"
text run at (0,37) width 217: "an HTTP POST. "
RenderBR {BR} at (0,0) size 0x0
RenderBR {BR} at (216,66) size 1x0
RenderBR {BR} at (0,74) size 0x37
RenderText {#text} at (0,111) size 766x111
RenderText {#text} at (0,111) size 765x111
text run at (0,111) width 743: "If the next line is empty after the colon, it probably means"
text run at (0,148) width 179: "that we made "
text run at (178,148) width 588: "a mistake and requested this page with a GET"
text run at (178,148) width 587: "a mistake and requested this page with a GET"
text run at (0,185) width 434: "with no query instead of a POST. "
RenderBR {BR} at (0,0) size 0x0
RenderBR {BR} at (433,214) size 1x0
RenderBR {BR} at (0,222) size 0x37
RenderText {#text} at (0,259) size 704x37
text run at (0,259) width 704: "The first text field contained: New form text from user "
RenderBR {BR} at (0,0) size 0x0
RenderBR {BR} at (703,288) size 1x0
RenderText {#text} at (0,296) size 574x37
text run at (0,296) width 574: "This page was requested with an HTTP GET"

0 comments on commit b8dbb01

Please sign in to comment.