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