Include the whole outline into visual overflow

This is another preparation CL for combining outline and focus ring
paths (https://codereview.chromium.org/1224933002/).

Not including the whole outline into visual overflow caused
incorrect layout and painting of outlines when the element having
outline has clipping or is composited because the overflow doesn't
cover the whole outline.

Not including outlines of block continuations into visual overflow
required us to
- propagate outline style to block continuations on style change;
- paint outlines for block continuations separately, causing
  unconnected or duplicated outline edges.
Both of the above caused complex code.

With this CL, we always include the whole outline into visual
overflow of the object having outline style.
- For LayoutBoxes, combine code paths about overflow for focus ring
  and outline;
- For LayoutBlockFlows, we need to include the visual overflow of
  descendant LayoutInlines having continuation and outline. Let the
  containing LayoutBlockFlow record LayoutInlines with outline and
  continuation, and include the outline rects of continuations
  into visual overflow of the block.

(FYI, cases that we already included outlines into visual overflow:
 - LayoutBlockFlow containing descendant LayoutInlines having outline
   but not continuation: we already included such outlines in visual
   overflow of InlineFlowBoxes and in turn into the LayoutBlockFlow;
 - LayoutInlines having outline: previously we include outlines by
   calling rectWithOutlineForPaintInvalidation(); with this CL we
   call addOutlineRects().)

This CL will have real effect with
https://codereview.chromium.org/1224933002/.

BUG=506669

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

git-svn-id: svn://svn.chromium.org/blink/trunk@201418 bbb929c8-8fbe-4397-9dbb-9b2b20218538
17 files changed