Perform SVG text chunk processing on-the-fly

Instead of building a vector of chunks, and then process that vector,
process the chunks as they are formed. The chunks themselves are
independent units, so this is reasonably straight-forward. The main
change is that instead of creating and adding an SVGTextChunk to a
vector, the data used to create the chunk is passed to a handler
method. Because of how <textPath> is handled, this handler currently
needs to be a virtual method. Because of that, a SVGTextChunkBuilder
is subclassed to SVGTextPathChunkBuilder for the text-on-path
processing.

Using the PerfTestRunner.measurePageLoadTime harness with
separate-x.svg from the bug give the following results locally:

       Before:     After:
avg    100.5 ms -> 89.5 ms
median 100.5 ms -> 88.7 ms
stdev    2.1 ms ->  3.2 ms

BUG=486669

Review URL: https://codereview.chromium.org/1155293005

git-svn-id: svn://svn.chromium.org/blink/trunk@196040 bbb929c8-8fbe-4397-9dbb-9b2b20218538
3 files changed
tree: 15c0d320df00cf4efc857c7753f28438ea878b43
  1. third_party/