Commit ec917131 authored by Yoshifumi Inoue's avatar Yoshifumi Inoue Committed by Commit Bot

Record current behavior of NGInlineNode::CollectInlines() with inline-block and float

This patch introduces tests for hanling of "inline-block" and "float" of
|NGInlineNode::CollectInlines()| to avoid regression for improving code health.

This patch is a preparation the patch[1].

[1] http://crrev.com/c/737981 Simplify word granularity handling

Bug: 778507
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_layout_ng
Change-Id: Ifead65d6df83a19dbe2b82b509ef39427b56962c
Reviewed-on: https://chromium-review.googlesource.com/979751
Commit-Queue: Yoshifumi Inoue <yosin@chromium.org>
Commit-Queue: Koji Ishii <kojii@chromium.org>
Reviewed-by: default avatarKoji Ishii <kojii@chromium.org>
Cr-Commit-Position: refs/heads/master@{#545735}
parent 062b4653
......@@ -22,7 +22,7 @@ class NGInlineNodeForTest : public NGInlineNode {
public:
using NGInlineNode::NGInlineNode;
String& Text() { return MutableData()->text_content_; }
std::string Text() const { return Data().text_content_.Utf8().data(); }
Vector<NGInlineItem>& Items() { return MutableData()->items_; }
static Vector<NGInlineItem>& Items(NGInlineNodeData& data) {
return data.items_;
......@@ -173,6 +173,44 @@ TEST_F(NGInlineNodeTest, CollectInlinesBR) {
EXPECT_EQ(3u, items.size());
}
TEST_F(NGInlineNodeTest, CollectInlinesFloat) {
SetupHtml("t",
"<div id=t>"
"abc"
"<span style='float:right'>DEF</span>"
"ghi"
"<span style='float:left'>JKL</span>"
"mno"
"</div>");
NGInlineNodeForTest node = CreateInlineNode();
node.CollectInlines();
EXPECT_EQ(u8"abc\uFFFCghi\uFFFCmno", node.Text())
<< "floats are appeared as an object replacement character";
Vector<NGInlineItem>& items = node.Items();
ASSERT_EQ(5u, items.size());
TEST_ITEM_TYPE_OFFSET(items[0], kText, 0u, 3u);
TEST_ITEM_TYPE_OFFSET(items[1], kFloating, 3u, 4u);
TEST_ITEM_TYPE_OFFSET(items[2], kText, 4u, 7u);
TEST_ITEM_TYPE_OFFSET(items[3], kFloating, 7u, 8u);
TEST_ITEM_TYPE_OFFSET(items[4], kText, 8u, 11u);
}
TEST_F(NGInlineNodeTest, CollectInlinesInlineBlock) {
SetupHtml("t",
"<div id=t>"
"abc<span style='display:inline-block'>DEF</span>jkl"
"</div>");
NGInlineNodeForTest node = CreateInlineNode();
node.CollectInlines();
EXPECT_EQ(u8"abc\uFFFCjkl", node.Text())
<< "inline-block is appeared as an object replacement character";
Vector<NGInlineItem>& items = node.Items();
ASSERT_EQ(3u, items.size());
TEST_ITEM_TYPE_OFFSET(items[0], kText, 0u, 3u);
TEST_ITEM_TYPE_OFFSET(items[1], kAtomicInline, 3u, 4u);
TEST_ITEM_TYPE_OFFSET(items[2], kText, 4u, 7u);
}
TEST_F(NGInlineNodeTest, CollectInlinesUTF16) {
SetupHtml("t", u"<div id=t>Hello \u3042</div>");
NGInlineNodeForTest node = CreateInlineNode();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment