Index: third_party/WebKit/Source/core/layout/ng/inline/ng_inline_node_test.cc |
diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_node_test.cc b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_node_test.cc |
index 114e1ae1c7dff8e3e4786742eb27f4fc70d3e21a..4b7e752e4213663790e4d429334d32848e2664d6 100644 |
--- a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_node_test.cc |
+++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_node_test.cc |
@@ -86,13 +86,16 @@ class NGInlineNodeTest : public RenderingTest { |
SetupHtml("t", "<div id=t style='font:10px Ahem'>test</div>"); |
} |
- NGInlineNodeForTest* CreateInlineNode() { |
+ NGInlineNodeForTest CreateInlineNode() { |
if (!layout_block_flow_) |
SetupHtml("t", "<div id=t style='font:10px'>test</div>"); |
- return new NGInlineNodeForTest(layout_object_, layout_block_flow_); |
+ NGInlineNodeForTest node(layout_block_flow_, |
+ layout_block_flow_->FirstChild()); |
+ node.InvalidatePrepareLayout(); |
+ return node; |
} |
- void CreateLine(NGInlineNode* node, |
+ void CreateLine(NGInlineNode node, |
Vector<RefPtr<const NGPhysicalTextFragment>>* fragments_out) { |
RefPtr<NGConstraintSpace> constraint_space = |
NGConstraintSpaceBuilder(kHorizontalTopBottom) |
@@ -134,9 +137,9 @@ class NGInlineNodeTest : public RenderingTest { |
TEST_F(NGInlineNodeTest, CollectInlinesText) { |
SetupHtml("t", "<div id=t>Hello <span>inline</span> world.</div>"); |
- NGInlineNodeForTest* node = CreateInlineNode(); |
- node->CollectInlines(layout_object_, layout_block_flow_); |
- Vector<NGInlineItem>& items = node->Items(); |
+ NGInlineNodeForTest node = CreateInlineNode(); |
+ node.CollectInlines(layout_object_, layout_block_flow_); |
+ Vector<NGInlineItem>& items = node.Items(); |
TEST_ITEM_TYPE_OFFSET(items[0], kText, 0u, 6u); |
TEST_ITEM_TYPE_OFFSET(items[1], kOpenTag, 6u, 6u); |
TEST_ITEM_TYPE_OFFSET(items[2], kText, 6u, 12u); |
@@ -147,10 +150,10 @@ TEST_F(NGInlineNodeTest, CollectInlinesText) { |
TEST_F(NGInlineNodeTest, CollectInlinesBR) { |
SetupHtml("t", u"<div id=t>Hello<br>World</div>"); |
- NGInlineNodeForTest* node = CreateInlineNode(); |
- node->CollectInlines(layout_object_, layout_block_flow_); |
- EXPECT_EQ("Hello\nWorld", node->Text()); |
- Vector<NGInlineItem>& items = node->Items(); |
+ NGInlineNodeForTest node = CreateInlineNode(); |
+ node.CollectInlines(layout_object_, layout_block_flow_); |
+ EXPECT_EQ("Hello\nWorld", node.Text()); |
+ Vector<NGInlineItem>& items = node.Items(); |
TEST_ITEM_TYPE_OFFSET(items[0], kText, 0u, 5u); |
TEST_ITEM_TYPE_OFFSET(items[1], kControl, 5u, 6u); |
TEST_ITEM_TYPE_OFFSET(items[2], kText, 6u, 11u); |
@@ -159,12 +162,12 @@ TEST_F(NGInlineNodeTest, CollectInlinesBR) { |
TEST_F(NGInlineNodeTest, CollectInlinesRtlText) { |
SetupHtml("t", u"<div id=t dir=rtl>\u05E2 <span>\u05E2</span> \u05E2</div>"); |
- NGInlineNodeForTest* node = CreateInlineNode(); |
- node->CollectInlines(layout_object_, layout_block_flow_); |
- EXPECT_TRUE(node->IsBidiEnabled()); |
- node->SegmentText(); |
- EXPECT_TRUE(node->IsBidiEnabled()); |
- Vector<NGInlineItem>& items = node->Items(); |
+ NGInlineNodeForTest node = CreateInlineNode(); |
+ node.CollectInlines(layout_object_, layout_block_flow_); |
+ EXPECT_TRUE(node.IsBidiEnabled()); |
+ node.SegmentText(); |
+ EXPECT_TRUE(node.IsBidiEnabled()); |
+ Vector<NGInlineItem>& items = node.Items(); |
TEST_ITEM_TYPE_OFFSET_LEVEL(items[0], kText, 0u, 2u, 1u); |
TEST_ITEM_TYPE_OFFSET_LEVEL(items[1], kOpenTag, 2u, 2u, 1u); |
TEST_ITEM_TYPE_OFFSET_LEVEL(items[2], kText, 2u, 3u, 1u); |
@@ -175,12 +178,12 @@ TEST_F(NGInlineNodeTest, CollectInlinesRtlText) { |
TEST_F(NGInlineNodeTest, CollectInlinesMixedText) { |
SetupHtml("t", u"<div id=t>Hello, \u05E2 <span>\u05E2</span></div>"); |
- NGInlineNodeForTest* node = CreateInlineNode(); |
- node->CollectInlines(layout_object_, layout_block_flow_); |
- EXPECT_TRUE(node->IsBidiEnabled()); |
- node->SegmentText(); |
- EXPECT_TRUE(node->IsBidiEnabled()); |
- Vector<NGInlineItem>& items = node->Items(); |
+ NGInlineNodeForTest node = CreateInlineNode(); |
+ node.CollectInlines(layout_object_, layout_block_flow_); |
+ EXPECT_TRUE(node.IsBidiEnabled()); |
+ node.SegmentText(); |
+ EXPECT_TRUE(node.IsBidiEnabled()); |
+ Vector<NGInlineItem>& items = node.Items(); |
TEST_ITEM_TYPE_OFFSET_LEVEL(items[0], kText, 0u, 7u, 0u); |
TEST_ITEM_TYPE_OFFSET_LEVEL(items[1], kText, 7u, 9u, 1u); |
TEST_ITEM_TYPE_OFFSET_LEVEL(items[2], kOpenTag, 9u, 9u, 1u); |
@@ -191,12 +194,12 @@ TEST_F(NGInlineNodeTest, CollectInlinesMixedText) { |
TEST_F(NGInlineNodeTest, CollectInlinesMixedTextEndWithON) { |
SetupHtml("t", u"<div id=t>Hello, \u05E2 <span>\u05E2!</span></div>"); |
- NGInlineNodeForTest* node = CreateInlineNode(); |
- node->CollectInlines(layout_object_, layout_block_flow_); |
- EXPECT_TRUE(node->IsBidiEnabled()); |
- node->SegmentText(); |
- EXPECT_TRUE(node->IsBidiEnabled()); |
- Vector<NGInlineItem>& items = node->Items(); |
+ NGInlineNodeForTest node = CreateInlineNode(); |
+ node.CollectInlines(layout_object_, layout_block_flow_); |
+ EXPECT_TRUE(node.IsBidiEnabled()); |
+ node.SegmentText(); |
+ EXPECT_TRUE(node.IsBidiEnabled()); |
+ Vector<NGInlineItem>& items = node.Items(); |
TEST_ITEM_TYPE_OFFSET_LEVEL(items[0], kText, 0u, 7u, 0u); |
TEST_ITEM_TYPE_OFFSET_LEVEL(items[1], kText, 7u, 9u, 1u); |
TEST_ITEM_TYPE_OFFSET_LEVEL(items[2], kOpenTag, 9u, 9u, 1u); |
@@ -207,42 +210,42 @@ TEST_F(NGInlineNodeTest, CollectInlinesMixedTextEndWithON) { |
} |
TEST_F(NGInlineNodeTest, SegmentASCII) { |
- NGInlineNodeForTest* node = CreateInlineNode(); |
- node->Append("Hello"); |
- node->SegmentText(); |
- Vector<NGInlineItem>& items = node->Items(); |
+ NGInlineNodeForTest node = CreateInlineNode(); |
+ node.Append("Hello"); |
+ node.SegmentText(); |
+ Vector<NGInlineItem>& items = node.Items(); |
ASSERT_EQ(1u, items.size()); |
TEST_ITEM_OFFSET_DIR(items[0], 0u, 5u, TextDirection::kLtr); |
} |
TEST_F(NGInlineNodeTest, SegmentHebrew) { |
- NGInlineNodeForTest* node = CreateInlineNode(); |
- node->Append(u"\u05E2\u05D1\u05E8\u05D9\u05EA"); |
- node->SegmentText(); |
- ASSERT_EQ(1u, node->Items().size()); |
- Vector<NGInlineItem>& items = node->Items(); |
+ NGInlineNodeForTest node = CreateInlineNode(); |
+ node.Append(u"\u05E2\u05D1\u05E8\u05D9\u05EA"); |
+ node.SegmentText(); |
+ ASSERT_EQ(1u, node.Items().size()); |
+ Vector<NGInlineItem>& items = node.Items(); |
ASSERT_EQ(1u, items.size()); |
TEST_ITEM_OFFSET_DIR(items[0], 0u, 5u, TextDirection::kRtl); |
} |
TEST_F(NGInlineNodeTest, SegmentSplit1To2) { |
- NGInlineNodeForTest* node = CreateInlineNode(); |
- node->Append(u"Hello \u05E2\u05D1\u05E8\u05D9\u05EA"); |
- node->SegmentText(); |
- ASSERT_EQ(2u, node->Items().size()); |
- Vector<NGInlineItem>& items = node->Items(); |
+ NGInlineNodeForTest node = CreateInlineNode(); |
+ node.Append(u"Hello \u05E2\u05D1\u05E8\u05D9\u05EA"); |
+ node.SegmentText(); |
+ ASSERT_EQ(2u, node.Items().size()); |
+ Vector<NGInlineItem>& items = node.Items(); |
ASSERT_EQ(2u, items.size()); |
TEST_ITEM_OFFSET_DIR(items[0], 0u, 6u, TextDirection::kLtr); |
TEST_ITEM_OFFSET_DIR(items[1], 6u, 11u, TextDirection::kRtl); |
} |
TEST_F(NGInlineNodeTest, SegmentSplit3To4) { |
- NGInlineNodeForTest* node = CreateInlineNode(); |
- node->Append("Hel"); |
- node->Append(u"lo \u05E2"); |
- node->Append(u"\u05D1\u05E8\u05D9\u05EA"); |
- node->SegmentText(); |
- Vector<NGInlineItem>& items = node->Items(); |
+ NGInlineNodeForTest node = CreateInlineNode(); |
+ node.Append("Hel"); |
+ node.Append(u"lo \u05E2"); |
+ node.Append(u"\u05D1\u05E8\u05D9\u05EA"); |
+ node.SegmentText(); |
+ Vector<NGInlineItem>& items = node.Items(); |
ASSERT_EQ(4u, items.size()); |
TEST_ITEM_OFFSET_DIR(items[0], 0u, 3u, TextDirection::kLtr); |
TEST_ITEM_OFFSET_DIR(items[1], 3u, 6u, TextDirection::kLtr); |
@@ -251,13 +254,13 @@ TEST_F(NGInlineNodeTest, SegmentSplit3To4) { |
} |
TEST_F(NGInlineNodeTest, SegmentBidiOverride) { |
- NGInlineNodeForTest* node = CreateInlineNode(); |
- node->Append("Hello "); |
- node->Append(kRightToLeftOverrideCharacter); |
- node->Append("ABC"); |
- node->Append(kPopDirectionalFormattingCharacter); |
- node->SegmentText(); |
- Vector<NGInlineItem>& items = node->Items(); |
+ NGInlineNodeForTest node = CreateInlineNode(); |
+ node.Append("Hello "); |
+ node.Append(kRightToLeftOverrideCharacter); |
+ node.Append("ABC"); |
+ node.Append(kPopDirectionalFormattingCharacter); |
+ node.SegmentText(); |
+ Vector<NGInlineItem>& items = node.Items(); |
ASSERT_EQ(4u, items.size()); |
TEST_ITEM_OFFSET_DIR(items[0], 0u, 6u, TextDirection::kLtr); |
TEST_ITEM_OFFSET_DIR(items[1], 6u, 7u, TextDirection::kRtl); |
@@ -265,26 +268,26 @@ TEST_F(NGInlineNodeTest, SegmentBidiOverride) { |
TEST_ITEM_OFFSET_DIR(items[3], 10u, 11u, TextDirection::kLtr); |
} |
-static NGInlineNodeForTest* CreateBidiIsolateNode(NGInlineNodeForTest* node, |
- const ComputedStyle* style, |
- LayoutObject* layout_object) { |
- node->Append("Hello ", style, layout_object); |
- node->Append(kRightToLeftIsolateCharacter); |
- node->Append(u"\u05E2\u05D1\u05E8\u05D9\u05EA ", style, layout_object); |
- node->Append(kLeftToRightIsolateCharacter); |
- node->Append("A", style, layout_object); |
- node->Append(kPopDirectionalIsolateCharacter); |
- node->Append(u"\u05E2\u05D1\u05E8\u05D9\u05EA", style, layout_object); |
- node->Append(kPopDirectionalIsolateCharacter); |
- node->Append(" World", style, layout_object); |
- node->SegmentText(); |
+static NGInlineNodeForTest CreateBidiIsolateNode(NGInlineNodeForTest node, |
+ const ComputedStyle* style, |
+ LayoutObject* layout_object) { |
+ node.Append("Hello ", style, layout_object); |
+ node.Append(kRightToLeftIsolateCharacter); |
+ node.Append(u"\u05E2\u05D1\u05E8\u05D9\u05EA ", style, layout_object); |
+ node.Append(kLeftToRightIsolateCharacter); |
+ node.Append("A", style, layout_object); |
+ node.Append(kPopDirectionalIsolateCharacter); |
+ node.Append(u"\u05E2\u05D1\u05E8\u05D9\u05EA", style, layout_object); |
+ node.Append(kPopDirectionalIsolateCharacter); |
+ node.Append(" World", style, layout_object); |
+ node.SegmentText(); |
return node; |
} |
TEST_F(NGInlineNodeTest, SegmentBidiIsolate) { |
- NGInlineNodeForTest* node = |
+ NGInlineNodeForTest node = |
CreateBidiIsolateNode(CreateInlineNode(), style_.Get(), layout_object_); |
- Vector<NGInlineItem>& items = node->Items(); |
+ Vector<NGInlineItem>& items = node.Items(); |
ASSERT_EQ(9u, items.size()); |
TEST_ITEM_OFFSET_DIR(items[0], 0u, 6u, TextDirection::kLtr); |
TEST_ITEM_OFFSET_DIR(items[1], 6u, 7u, TextDirection::kLtr); |
@@ -303,16 +306,16 @@ TEST_F(NGInlineNodeTest, SegmentBidiIsolate) { |
EXPECT_EQ(index, fragment->ItemIndex()); \ |
EXPECT_EQ(start_offset, fragment->StartOffset()); \ |
EXPECT_EQ(end_offset, fragment->EndOffset()); \ |
- EXPECT_EQ(dir, node->Items()[fragment->ItemIndex()].Direction()) |
+ EXPECT_EQ(dir, node.Items()[fragment->ItemIndex()].Direction()) |
TEST_F(NGInlineNodeTest, CreateLineBidiIsolate) { |
UseLayoutObjectAndAhem(); |
RefPtr<ComputedStyle> style = ComputedStyle::Create(); |
style->SetLineHeight(Length(1, kFixed)); |
style->GetFont().Update(nullptr); |
- NGInlineNodeForTest* node = |
+ NGInlineNodeForTest node = |
CreateBidiIsolateNode(CreateInlineNode(), style.Get(), layout_object_); |
- node->ShapeText(); |
+ node.ShapeText(); |
Vector<RefPtr<const NGPhysicalTextFragment>> fragments; |
CreateLine(node, &fragments); |
ASSERT_EQ(5u, fragments.size()); |
@@ -325,21 +328,21 @@ TEST_F(NGInlineNodeTest, CreateLineBidiIsolate) { |
TEST_F(NGInlineNodeTest, MinMaxContentSize) { |
UseLayoutObjectAndAhem(); |
- NGInlineNodeForTest* node = CreateInlineNode(); |
- node->Append("AB CDEF", style_.Get(), layout_object_); |
- node->ShapeText(); |
- MinMaxContentSize sizes = node->ComputeMinMaxContentSize(); |
+ NGInlineNodeForTest node = CreateInlineNode(); |
+ node.Append("AB CDEF", style_.Get(), layout_object_); |
+ node.ShapeText(); |
+ MinMaxContentSize sizes = node.ComputeMinMaxContentSize(); |
EXPECT_EQ(40, sizes.min_content); |
EXPECT_EQ(70, sizes.max_content); |
} |
TEST_F(NGInlineNodeTest, MinMaxContentSizeElementBoundary) { |
UseLayoutObjectAndAhem(); |
- NGInlineNodeForTest* node = CreateInlineNode(); |
- node->Append("A B", style_.Get(), layout_object_); |
- node->Append("C D", style_.Get(), layout_object_); |
- node->ShapeText(); |
- MinMaxContentSize sizes = node->ComputeMinMaxContentSize(); |
+ NGInlineNodeForTest node = CreateInlineNode(); |
+ node.Append("A B", style_.Get(), layout_object_); |
+ node.Append("C D", style_.Get(), layout_object_); |
+ node.ShapeText(); |
+ MinMaxContentSize sizes = node.ComputeMinMaxContentSize(); |
// |min_content| should be the width of "BC" because there is an element |
// boundary between "B" and "C" but no break opportunities. |
EXPECT_EQ(20, sizes.min_content); |