[New Multicolumn] Let a spanner's containing block be the multicol container.

This helps avoid some cheating and tightrope walking that we would
have to perform when laying out spanners while canceling out all ill
effects that the pagination code could cause. A spanner is no longer
part of the flow thread (although it is a descendant), much like
absolutely positioned descendants whose containing block is outside
the multicol container. It's no longer laid out during flow thread
layout.

RenderMultiColumnSpannerSet has never really been a "set", and now it
doesn't even inherit from RenderMultiColumnSet, so a rename seemed
prudent. It's now called RenderMultiColumnSpannerPlaceholder. The
placeholder will be in charge of laying out the spanner and
positioning it correctly. It will also be in charge of invalidating,
painting and hit-testing the spanner.

Instead of a hashmap that maps column-span:all renderers to their
corresponding placeholder, store a pointer directly in the rare-data
of the RenderBox that is column-span:all. A spanner isn't part of the
flow thread anymore, so locating the spanner's flow thread is a
meaningless or hacky task, so storing this map in the flow thread
would just be messy.

This change contains the bare minimum to avoid assertions during
layout and paint invalidation. There's no actual support for laying
out (or painting, etc.) spanners properly yet.

BUG=347325
R=jchaffraix@chromium.org

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

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