| Index: third_party/WebKit/Source/core/editing/EditingUtilitiesTest.cpp
|
| diff --git a/third_party/WebKit/Source/core/editing/EditingUtilitiesTest.cpp b/third_party/WebKit/Source/core/editing/EditingUtilitiesTest.cpp
|
| index 43b15b2826ceeedf74ad2ff5011b1c8978d5a806..c3056a5c32943aeb33757e08050ea4f243c34f03 100644
|
| --- a/third_party/WebKit/Source/core/editing/EditingUtilitiesTest.cpp
|
| +++ b/third_party/WebKit/Source/core/editing/EditingUtilitiesTest.cpp
|
| @@ -156,8 +156,8 @@ TEST_F(EditingUtilitiesTest, NextNodeIndex)
|
| Node* host = document().getElementById("host");
|
| Node* two = document().getElementById("two");
|
|
|
| - EXPECT_EQ(Position(host, 3), nextPositionOf(Position(two, 2), PositionMoveType::CodeUnit));
|
| - EXPECT_EQ(PositionInFlatTree(host, 1), nextPositionOf(PositionInFlatTree(two, 2), PositionMoveType::CodeUnit));
|
| + EXPECT_EQ(Position(host, 3), nextPositionOf(Position(two, 2), PositionMoveType::CodePoint));
|
| + EXPECT_EQ(PositionInFlatTree(host, 1), nextPositionOf(PositionInFlatTree(two, 2), PositionMoveType::CodePoint));
|
| }
|
|
|
| TEST_F(EditingUtilitiesTest, NextVisuallyDistinctCandidate)
|
| @@ -261,12 +261,10 @@ TEST_F(EditingUtilitiesTest, uncheckedPreviousNextOffset)
|
| setBodyContent("<p id='target'>a
b</p>");
|
| node = document().getElementById("target")->firstChild();
|
| EXPECT_EQ(3, uncheckedPreviousOffset(node, 4));
|
| - // TODO(nona) : Enable following expectation.
|
| - // EXPECT_EQ(1, uncheckedPreviousOffset(node, 3));
|
| + EXPECT_EQ(1, uncheckedPreviousOffset(node, 3));
|
| EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - // TODO(nona) : Enable following expectation.
|
| - // EXPECT_EQ(3, uncheckedNextOffset(node, 1));
|
| + EXPECT_EQ(3, uncheckedNextOffset(node, 1));
|
| EXPECT_EQ(4, uncheckedNextOffset(node, 3));
|
|
|
| // GB4,GB5: Break before and after CR/LF/Control.
|
| @@ -396,12 +394,11 @@ TEST_F(EditingUtilitiesTest, uncheckedPreviousNextOffset)
|
| node = document().getElementById("target")->firstChild();
|
| EXPECT_EQ(16, uncheckedPreviousOffset(node, 17));
|
| EXPECT_EQ(12, uncheckedPreviousOffset(node, 16));
|
| - // TODO(nona): Enable following expectations.
|
| - // EXPECT_EQ(8, uncheckedPreviousOffset(node, 12));
|
| - // EXPECT_EQ(4, uncheckedPreviousOffset(node, 8));
|
| - // EXPECT_EQ(0, uncheckedPreviousOffset(node, 4));
|
| - // EXPECT_EQ(4, uncheckedNextOffset(node, 0));
|
| - // EXPECT_EQ(8, uncheckedNextOffset(node, 4));
|
| + EXPECT_EQ(8, uncheckedPreviousOffset(node, 12));
|
| + EXPECT_EQ(4, uncheckedPreviousOffset(node, 8));
|
| + EXPECT_EQ(0, uncheckedPreviousOffset(node, 4));
|
| + EXPECT_EQ(4, uncheckedNextOffset(node, 0));
|
| + EXPECT_EQ(8, uncheckedNextOffset(node, 4));
|
| EXPECT_EQ(12, uncheckedNextOffset(node, 8));
|
| EXPECT_EQ(16, uncheckedNextOffset(node, 12));
|
| EXPECT_EQ(17, uncheckedNextOffset(node, 16));
|
| @@ -411,15 +408,13 @@ TEST_F(EditingUtilitiesTest, uncheckedPreviousNextOffset)
|
| node = document().getElementById("target")->firstChild();
|
| EXPECT_EQ(17, uncheckedPreviousOffset(node, 18));
|
| EXPECT_EQ(13, uncheckedPreviousOffset(node, 17));
|
| - // TODO(nona): Enable following expectations.
|
| - // EXPECT_EQ(9, uncheckedPreviousOffset(node, 13));
|
| - // EXPECT_EQ(5, uncheckedPreviousOffset(node, 9));
|
| + EXPECT_EQ(9, uncheckedPreviousOffset(node, 13));
|
| + EXPECT_EQ(5, uncheckedPreviousOffset(node, 9));
|
| EXPECT_EQ(1, uncheckedPreviousOffset(node, 5));
|
| EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - // TODO(nona): Enable following expectations.
|
| - // EXPECT_EQ(5, uncheckedNextOffset(node, 1));
|
| - // EXPECT_EQ(9, uncheckedNextOffset(node, 5));
|
| + EXPECT_EQ(5, uncheckedNextOffset(node, 1));
|
| + EXPECT_EQ(9, uncheckedNextOffset(node, 5));
|
| EXPECT_EQ(13, uncheckedNextOffset(node, 9));
|
| EXPECT_EQ(17, uncheckedNextOffset(node, 13));
|
| EXPECT_EQ(18, uncheckedNextOffset(node, 17));
|
| @@ -428,18 +423,16 @@ TEST_F(EditingUtilitiesTest, uncheckedPreviousNextOffset)
|
| setBodyContent("<p id='target'>a" + flag + flag + flag + flag + "🇸b</p>"); // RI รท RI
|
| node = document().getElementById("target")->firstChild();
|
| EXPECT_EQ(19, uncheckedPreviousOffset(node, 20));
|
| - // TODO(nona): Enable following expectations.
|
| - // EXPECT_EQ(17, uncheckedPreviousOffset(node, 19));
|
| - // EXPECT_EQ(13, uncheckedPreviousOffset(node, 17));
|
| - // EXPECT_EQ(9, uncheckedPreviousOffset(node, 13));
|
| - // EXPECT_EQ(5, uncheckedPreviousOffset(node, 9));
|
| + EXPECT_EQ(17, uncheckedPreviousOffset(node, 19));
|
| + EXPECT_EQ(13, uncheckedPreviousOffset(node, 17));
|
| + EXPECT_EQ(9, uncheckedPreviousOffset(node, 13));
|
| + EXPECT_EQ(5, uncheckedPreviousOffset(node, 9));
|
| EXPECT_EQ(1, uncheckedPreviousOffset(node, 5));
|
| EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - // TODO(nona): Enable following expectations.
|
| - // EXPECT_EQ(5, uncheckedNextOffset(node, 1));
|
| - // EXPECT_EQ(9, uncheckedNextOffset(node, 5));
|
| - // EXPECT_EQ(13, uncheckedNextOffset(node, 9));
|
| + EXPECT_EQ(5, uncheckedNextOffset(node, 1));
|
| + EXPECT_EQ(9, uncheckedNextOffset(node, 5));
|
| + EXPECT_EQ(13, uncheckedNextOffset(node, 9));
|
| EXPECT_EQ(17, uncheckedNextOffset(node, 13));
|
| EXPECT_EQ(19, uncheckedNextOffset(node, 17));
|
| EXPECT_EQ(20, uncheckedNextOffset(node, 19));
|
| @@ -469,9 +462,12 @@ TEST_F(EditingUtilitiesTest, uncheckedPreviousNextOffset)
|
| EXPECT_EQ(2, uncheckedNextOffset(node, 0));
|
| EXPECT_EQ(3, uncheckedNextOffset(node, 2));
|
|
|
| - // GB9b: Do not break after Prepend but Blink breaks after Prepend char to address Bug 24342.
|
| - // U+0600(ARABIC NUMBER SIGN) has Prepend property.
|
| - setBodyContent("<p id='target'>a؀b</p>"); // Prepend x
|
| + // GB9b: Do not break after Prepend.
|
| + // TODO(nona): Introduce Prepend test case once ICU grabs Unicode 9.0.
|
| +
|
| + // For https://bugs.webkit.org/show_bug.cgi?id=24342
|
| + // The break should happens after Thai character.
|
| + setBodyContent("<p id='target'>aเb</p>");
|
| node = document().getElementById("target")->firstChild();
|
| EXPECT_EQ(2, uncheckedPreviousOffset(node, 3));
|
| EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| @@ -490,7 +486,7 @@ TEST_F(EditingUtilitiesTest, uncheckedPreviousNextOffset)
|
| EXPECT_EQ(3, uncheckedNextOffset(node, 1));
|
| EXPECT_EQ(4, uncheckedNextOffset(node, 3));
|
|
|
| - // Additional rule for Virama: Do not break after Virama except for Tamil.
|
| + // Additional rule for IndicSyllabicCategory=Virama: Do not break after that.
|
| // See http://www.unicode.org/Public/9.0.0/ucd/IndicSyllabicCategory-9.0.0d2.txt
|
| // U+0905 is DEVANAGARI LETTER A. This has Extend property.
|
| // U+094D is DEVANAGARI SIGN VIRAMA. This has Virama property.
|
| @@ -503,10 +499,11 @@ TEST_F(EditingUtilitiesTest, uncheckedPreviousNextOffset)
|
| EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| EXPECT_EQ(4, uncheckedNextOffset(node, 1));
|
| EXPECT_EQ(5, uncheckedNextOffset(node, 4));
|
| - // U+0B85 is TAMIL LETTER A. This has Extend property.
|
| - // U+0BCD is TAMIL SIGN VIRAMA. This has Virama property.
|
| - // U+0B95 is TAMIL LETTER KA.
|
| - setBodyContent("<p id='target'>aஅ்கb</p>");
|
| + // U+0E01 is THAI CHARACTER KO KAI
|
| + // U+0E3A is THAI CHARACTER PHINTHU
|
| + // Should break after U+0E3A since U+0E3A has Virama property but not listed in
|
| + // IndicSyllabicCategory=Virama.
|
| + setBodyContent("<p id='target'>aกฺกb</p>");
|
| node = document().getElementById("target")->firstChild();
|
| EXPECT_EQ(4, uncheckedPreviousOffset(node, 5));
|
| EXPECT_EQ(3, uncheckedPreviousOffset(node, 4));
|
| @@ -516,7 +513,6 @@ TEST_F(EditingUtilitiesTest, uncheckedPreviousNextOffset)
|
| EXPECT_EQ(3, uncheckedNextOffset(node, 1));
|
| EXPECT_EQ(4, uncheckedNextOffset(node, 3));
|
| EXPECT_EQ(5, uncheckedNextOffset(node, 4));
|
| - // TODO(nona): Consider to add Sinhala, Balinese, etc.
|
|
|
| // GB10: Do not break within emoji modifier.
|
| // U+1F385(FATHER CHRISTMAS) has E_Base property.
|
| @@ -524,23 +520,19 @@ TEST_F(EditingUtilitiesTest, uncheckedPreviousNextOffset)
|
| setBodyContent("<p id='target'>a🎅🏻b</p>"); // E_Base x E_Modifier
|
| node = document().getElementById("target")->firstChild();
|
| EXPECT_EQ(5, uncheckedPreviousOffset(node, 6));
|
| - // TODO(nona): Enable following expectation.
|
| - // EXPECT_EQ(1, uncheckedPreviousOffset(node, 5));
|
| + EXPECT_EQ(1, uncheckedPreviousOffset(node, 5));
|
| EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - // TODO(nona): Enable following expectation.
|
| - // EXPECT_EQ(5, uncheckedNextOffset(node, 1));
|
| + EXPECT_EQ(5, uncheckedNextOffset(node, 1));
|
| EXPECT_EQ(6, uncheckedNextOffset(node, 5));
|
| // U+1F466(BOY) has EBG property.
|
| setBodyContent("<p id='target'>a👦🏻b</p>"); // EBG x E_Modifier
|
| node = document().getElementById("target")->firstChild();
|
| EXPECT_EQ(5, uncheckedPreviousOffset(node, 6));
|
| - // TODO(nona): Enable following expectation.
|
| - // EXPECT_EQ(1, uncheckedPreviousOffset(node, 5));
|
| + EXPECT_EQ(1, uncheckedPreviousOffset(node, 5));
|
| EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - // TODO(nona): Enable following expectation.
|
| - // EXPECT_EQ(5, uncheckedNextOffset(node, 1));
|
| + EXPECT_EQ(5, uncheckedNextOffset(node, 1));
|
| EXPECT_EQ(6, uncheckedNextOffset(node, 5));
|
|
|
| // GB11: Do not break within ZWJ emoji sequence.
|
| @@ -548,16 +540,14 @@ TEST_F(EditingUtilitiesTest, uncheckedPreviousNextOffset)
|
| setBodyContent("<p id='target'>a‍❤b</p>"); // ZWJ x Glue_After_Zwj
|
| node = document().getElementById("target")->firstChild();
|
| EXPECT_EQ(3, uncheckedPreviousOffset(node, 4));
|
| - // TODO(nona): Enable following expectation.
|
| - // EXPECT_EQ(0, uncheckedPreviousOffset(node, 3));
|
| - // EXPECT_EQ(3, uncheckedNextOffset(node, 0));
|
| + EXPECT_EQ(0, uncheckedPreviousOffset(node, 3));
|
| + EXPECT_EQ(3, uncheckedNextOffset(node, 0));
|
| EXPECT_EQ(4, uncheckedNextOffset(node, 3));
|
| setBodyContent("<p id='target'>a‍👦b</p>"); // ZWJ x EBG
|
| node = document().getElementById("target")->firstChild();
|
| EXPECT_EQ(4, uncheckedPreviousOffset(node, 5));
|
| - // TODO(nona): Enable following expectation.
|
| - // EXPECT_EQ(0, uncheckedPreviousOffset(node, 4));
|
| - // EXPECT_EQ(4, uncheckedNextOffset(node, 0));
|
| + EXPECT_EQ(0, uncheckedPreviousOffset(node, 4));
|
| + EXPECT_EQ(4, uncheckedNextOffset(node, 0));
|
| EXPECT_EQ(5, uncheckedNextOffset(node, 4));
|
|
|
| // GB999: Otherwise break everywhere.
|
|
|