Floated elements inside a white-space:nowrap container should still wrap.

This behavior matches Firefox and fixes the min-content bug exposed by
http://trac.webkit.org/changeset/143479.

All the new layout test baselines match Firefox except for fast/css/word-space-extra.html.
We incorrectly compute the minPreferredLogicalWidth when there is word-spacing involved.
In this case, our old behavior was also wrong. Now it's just slightly worse.
I spent 3 days trying to fix our word-spacing implementation to make sense and
gave up eventually. Hopefully, as we go through and clean up the code involved
it will be come easier to fix this in the future.

modified:   Source/core/rendering/RenderBlock.cpp
The old code here was wrong. In the presence of floats, the minLogicalWidth
of a nowrap container can be smaller than it's maxLogicalWidth.
Unfortunately, fixing this exposes some bugs in our minLogicalWidth computation.

modified:   Source/core/rendering/RenderText.cpp
This fixes one of the bugs exposed by removing the code in RenderBlock.
m_hasBreakableStart and m_hasBreakableEnd are eventually exposed to
RenderBlock::computeInlinePreferredLogicalWidths. They are only used
in order to determine if the beginning/end of the RenderText is a possible
wrapping location. In a nowrap container, spaces do *not* represent
wrapping locations, so these bools should be false in that case.

But, to make this more fun, we still need to track whether the RenderText
ends in spaces or newlines so that we can correctly set the stripFrontSpaces
bool, which controls stripping the leading spaces in the *next* RenderText.

BUG=244777

Review URL: https://chromiumcodereview.appspot.com/17072005

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