Commit 4b21f5cb authored by Xiaocheng Hu's avatar Xiaocheng Hu Committed by Commit Bot

Make LocalCaretRectTest verify more linebreak related cases

LocalCaretRectTest has parameterization for LayoutNG. However, test
case |AfterLineBreak| uses contenteditable unnecessarily, which forces
legacy layout and invalidates the parameterization. This patch fixes
it.

This patch also adds two similar test cases for line breaks in
'white-space: pre' style, verifying that NG LocalCaretRect impl
handles consecutive line breaks at block end correctly.

Bug: 812535
Change-Id: Iaba4bcc616078f35f73fca23565b6628f04f7271
Reviewed-on: https://chromium-review.googlesource.com/974909
Commit-Queue: Xiaocheng Hu <xiaochengh@chromium.org>
Reviewed-by: default avatarYoshifumi Inoue <yosin@chromium.org>
Reviewed-by: default avatarYoichi Osato <yoichio@chromium.org>
Cr-Commit-Position: refs/heads/master@{#546014}
parent 5cf437b0
......@@ -695,8 +695,7 @@ TEST_P(ParameterizedLocalCaretRectTest, FloatFirstLetter) {
TEST_P(ParameterizedLocalCaretRectTest, AfterLineBreak) {
LoadAhem();
SetBodyContent(
"<div style='font: 10px/10px Ahem;' contenteditable>foo<br><br></div>");
SetBodyContent("<div style='font: 10px/10px Ahem;'>foo<br><br></div>");
const Node* div = GetDocument().body()->firstChild();
const Node* foo = div->firstChild();
const Node* first_br = foo->nextSibling();
......@@ -704,16 +703,64 @@ TEST_P(ParameterizedLocalCaretRectTest, AfterLineBreak) {
EXPECT_EQ(LocalCaretRect(foo->GetLayoutObject(), LayoutRect(30, 0, 1, 10)),
LocalCaretRectOfPosition(PositionWithAffinity(
Position::AfterNode(*foo), TextAffinity::kDownstream)));
// TODO(yoichio): Following should return valid rect: crbug.com/812535.
EXPECT_EQ(LocalCaretRect(first_br->GetLayoutObject(), LayoutRect(0, 0, 0, 0)),
// TODO(yoichio): Legacy should return valid rect: crbug.com/812535.
EXPECT_EQ(LayoutNGEnabled() ? LocalCaretRect(second_br->GetLayoutObject(),
LayoutRect(0, 10, 1, 10))
: LocalCaretRect(first_br->GetLayoutObject(),
LayoutRect(0, 0, 0, 0)),
LocalCaretRectOfPosition(PositionWithAffinity(
Position::AfterNode(*first_br), TextAffinity::kDownstream)));
EXPECT_EQ(
LocalCaretRect(second_br->GetLayoutObject(), LayoutRect(0, 0, 0, 0)),
EXPECT_EQ(LocalCaretRect(second_br->GetLayoutObject(),
LayoutNGEnabled() ? LayoutRect(0, 10, 1, 10)
: LayoutRect(0, 0, 0, 0)),
LocalCaretRectOfPosition(PositionWithAffinity(
Position::AfterNode(*second_br), TextAffinity::kDownstream)));
}
TEST_P(ParameterizedLocalCaretRectTest, AfterLineBreakInPre) {
LoadAhem();
SetBodyContent("<pre style='font: 10px/10px Ahem;'>foo\n\n</pre>");
const Node* pre = GetDocument().body()->firstChild();
const Node* foo = pre->firstChild();
EXPECT_EQ(LocalCaretRect(foo->GetLayoutObject(), LayoutRect(30, 0, 1, 10)),
LocalCaretRectOfPosition(PositionWithAffinity(
Position(foo, 3), TextAffinity::kDownstream)));
EXPECT_EQ(LocalCaretRect(foo->GetLayoutObject(), LayoutRect(0, 10, 1, 10)),
LocalCaretRectOfPosition(PositionWithAffinity(
Position(foo, 4), TextAffinity::kDownstream)));
// TODO(yoichio): Legacy should return valid rect: crbug.com/812535.
EXPECT_EQ(LocalCaretRect(foo->GetLayoutObject(),
LayoutNGEnabled() ? LayoutRect(0, 10, 1, 10)
: LayoutRect(0, 0, 0, 0)),
LocalCaretRectOfPosition(PositionWithAffinity(
Position(foo, 5), TextAffinity::kDownstream)));
}
TEST_P(ParameterizedLocalCaretRectTest, AfterLineBreakInPre2) {
LoadAhem();
// This test case simulates the rendering of the inner editor of
// <textarea>foo\n</textarea> without using text control element.
SetBodyContent("<pre style='font: 10px/10px Ahem;'>foo\n<br></pre>");
const Node* pre = GetDocument().body()->firstChild();
const Node* foo = pre->firstChild();
const Node* br = foo->nextSibling();
EXPECT_EQ(LocalCaretRect(foo->GetLayoutObject(), LayoutRect(30, 0, 1, 10)),
LocalCaretRectOfPosition(PositionWithAffinity(
Position(foo, 3), TextAffinity::kDownstream)));
// TODO(yoichio): Legacy should return valid rect: crbug.com/812535.
EXPECT_EQ(
LayoutNGEnabled()
? LocalCaretRect(br->GetLayoutObject(), LayoutRect(0, 10, 1, 10))
: LocalCaretRect(foo->GetLayoutObject(), LayoutRect(0, 0, 0, 0)),
LocalCaretRectOfPosition(
PositionWithAffinity(Position(foo, 4), TextAffinity::kDownstream)));
EXPECT_EQ(LocalCaretRect(br->GetLayoutObject(), LayoutNGEnabled()
? LayoutRect(0, 10, 1, 10)
: LayoutRect(0, 0, 0, 0)),
LocalCaretRectOfPosition(PositionWithAffinity(
Position::AfterNode(*br), TextAffinity::kDownstream)));
}
TEST_P(ParameterizedLocalCaretRectTest, AfterLineBreakTextArea) {
LoadAhem();
SetBodyContent("<textarea style='font: 10px/10px Ahem; '>foo\n\n</textarea>");
......
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