diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/editing/visible_units_word_test.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/editing/visible_units_word_test.cc | 161 |
1 files changed, 148 insertions, 13 deletions
diff --git a/chromium/third_party/blink/renderer/core/editing/visible_units_word_test.cc b/chromium/third_party/blink/renderer/core/editing/visible_units_word_test.cc index bf68bf269ed..244f469570b 100644 --- a/chromium/third_party/blink/renderer/core/editing/visible_units_word_test.cc +++ b/chromium/third_party/blink/renderer/core/editing/visible_units_word_test.cc @@ -33,13 +33,13 @@ class VisibleUnitsWordTest : public EditingTestBase { std::string DoNextWord(const std::string& selection_text) { const Position position = SetSelectionTextToBody(selection_text).Base(); return GetCaretTextFromBody( - NextWordPosition(CreateVisiblePosition(position)).DeepEquivalent()); + CreateVisiblePosition(NextWordPosition(position)).DeepEquivalent()); } std::string DoPreviousWord(const std::string& selection_text) { const Position position = SetSelectionTextToBody(selection_text).Base(); const Position result = - PreviousWordPosition(CreateVisiblePosition(position)).DeepEquivalent(); + CreateVisiblePosition(PreviousWordPosition(position)).DeepEquivalent(); if (result.IsNull()) return GetSelectionTextFromBody(SelectionInDOMTree()); return GetCaretTextFromBody(result); @@ -75,7 +75,7 @@ INSTANTIATE_TEST_CASE_P(All, ParameterizedVisibleUnitsWordTest, ::testing::Bool()); -TEST_F(VisibleUnitsWordTest, StartOfWordBasic) { +TEST_P(ParameterizedVisibleUnitsWordTest, StartOfWordBasic) { EXPECT_EQ("<p> |(1) abc def</p>", DoStartOfWord("<p>| (1) abc def</p>")); EXPECT_EQ("<p> |(1) abc def</p>", DoStartOfWord("<p> |(1) abc def</p>")); EXPECT_EQ("<p> (|1) abc def</p>", DoStartOfWord("<p> (|1) abc def</p>")); @@ -92,7 +92,8 @@ TEST_F(VisibleUnitsWordTest, StartOfWordBasic) { EXPECT_EQ("<p> (1) abc def|</p>", DoStartOfWord("<p> (1) abc def</p>|")); } -TEST_F(VisibleUnitsWordTest, StartOfWordPreviousWordIfOnBoundaryBasic) { +TEST_P(ParameterizedVisibleUnitsWordTest, + StartOfWordPreviousWordIfOnBoundaryBasic) { EXPECT_EQ("<p> |(1) abc def</p>", DoStartOfWord("<p>| (1) abc def</p>", EWordSide::kPreviousWordIfOnBoundary)); @@ -137,12 +138,12 @@ TEST_F(VisibleUnitsWordTest, StartOfWordPreviousWordIfOnBoundaryBasic) { EWordSide::kPreviousWordIfOnBoundary)); } -TEST_F(VisibleUnitsWordTest, StartOfWordCrossing) { +TEST_P(ParameterizedVisibleUnitsWordTest, StartOfWordCrossing) { EXPECT_EQ("<b>|abc</b><i>def</i>", DoStartOfWord("<b>abc</b><i>|def</i>")); EXPECT_EQ("<b>abc</b><i>def|</i>", DoStartOfWord("<b>abc</b><i>def</i>|")); } -TEST_F(VisibleUnitsWordTest, StartOfWordFirstLetter) { +TEST_P(ParameterizedVisibleUnitsWordTest, StartOfWordFirstLetter) { InsertStyleElement("p::first-letter {font-size:200%;}"); // Note: Expectations should match with |StartOfWordBasic|. EXPECT_EQ("<p> |(1) abc def</p>", DoStartOfWord("<p>| (1) abc def</p>")); @@ -161,7 +162,7 @@ TEST_F(VisibleUnitsWordTest, StartOfWordFirstLetter) { EXPECT_EQ("<p> (1) abc def|</p>", DoStartOfWord("<p> (1) abc def</p>|")); } -TEST_F(VisibleUnitsWordTest, StartOfWordShadowDOM) { +TEST_P(ParameterizedVisibleUnitsWordTest, StartOfWordShadowDOM) { const char* body_content = "<a id=host><b id=one>1</b> <b id=two>22</b></a><i id=three>333</i>"; const char* shadow_content = @@ -199,17 +200,18 @@ TEST_F(VisibleUnitsWordTest, StartOfWordShadowDOM) { StartOfWord(CreateVisiblePositionInFlatTree(*two, 0)).DeepEquivalent()); EXPECT_EQ( - Position(one, 0), + Position(four, 0), StartOfWord(CreateVisiblePositionInDOMTree(*two, 1)).DeepEquivalent()); EXPECT_EQ( PositionInFlatTree(four, 0), StartOfWord(CreateVisiblePositionInFlatTree(*two, 1)).DeepEquivalent()); + // DOM tree canonicalization moves the result to a wrong position. EXPECT_EQ( - Position(one, 0), + Position(two, 2), StartOfWord(CreateVisiblePositionInDOMTree(*three, 1)).DeepEquivalent()); EXPECT_EQ( - PositionInFlatTree(space, 1), + PositionInFlatTree(three, 0), StartOfWord(CreateVisiblePositionInFlatTree(*three, 1)).DeepEquivalent()); EXPECT_EQ( @@ -220,14 +222,15 @@ TEST_F(VisibleUnitsWordTest, StartOfWordShadowDOM) { StartOfWord(CreateVisiblePositionInFlatTree(*four, 1)).DeepEquivalent()); EXPECT_EQ( - Position(space, 1), + Position(one, 0), StartOfWord(CreateVisiblePositionInDOMTree(*five, 1)).DeepEquivalent()); + // Flat tree canonicalization moves result to downstream position EXPECT_EQ( PositionInFlatTree(space, 1), StartOfWord(CreateVisiblePositionInFlatTree(*five, 1)).DeepEquivalent()); } -TEST_F(VisibleUnitsWordTest, StartOfWordTextSecurity) { +TEST_P(ParameterizedVisibleUnitsWordTest, StartOfWordTextSecurity) { // Note: |StartOfWord()| considers security characters as a sequence "x". InsertStyleElement("s {-webkit-text-security:disc;}"); EXPECT_EQ("|abc<s>foo bar</s>baz", DoStartOfWord("|abc<s>foo bar</s>baz")); @@ -241,6 +244,53 @@ TEST_F(VisibleUnitsWordTest, StartOfWordTextSecurity) { EXPECT_EQ("|abc<s>foo bar</s>baz", DoStartOfWord("abc<s>foo bar</s>b|az")); } +TEST_P(ParameterizedVisibleUnitsWordTest, StartOfWordTextControl) { + EXPECT_EQ("|foo<input value=\"bla\">bar", + DoStartOfWord("|foo<input value=\"bla\">bar")); + EXPECT_EQ("|foo<input value=\"bla\">bar", + DoStartOfWord("f|oo<input value=\"bla\">bar")); + EXPECT_EQ("|foo<input value=\"bla\">bar", + DoStartOfWord("fo|o<input value=\"bla\">bar")); + EXPECT_EQ("foo|<input value=\"bla\">bar", + DoStartOfWord("foo|<input value=\"bla\">bar")); + EXPECT_EQ("foo<input value=\"bla\">|bar", + DoStartOfWord("foo<input value=\"bla\">|bar")); + EXPECT_EQ("foo<input value=\"bla\">|bar", + DoStartOfWord("foo<input value=\"bla\">b|ar")); + EXPECT_EQ("foo<input value=\"bla\">|bar", + DoStartOfWord("foo<input value=\"bla\">ba|r")); + EXPECT_EQ("foo<input value=\"bla\">bar|", + DoStartOfWord("foo<input value=\"bla\">bar|")); +} + +TEST_P(ParameterizedVisibleUnitsWordTest, + StartOfWordPreviousWordIfOnBoundaryTextControl) { + EXPECT_EQ("|foo<input value=\"bla\">bar", + DoStartOfWord("|foo<input value=\"bla\">bar", + EWordSide::kPreviousWordIfOnBoundary)); + EXPECT_EQ("|foo<input value=\"bla\">bar", + DoStartOfWord("f|oo<input value=\"bla\">bar", + EWordSide::kPreviousWordIfOnBoundary)); + EXPECT_EQ("|foo<input value=\"bla\">bar", + DoStartOfWord("fo|o<input value=\"bla\">bar", + EWordSide::kPreviousWordIfOnBoundary)); + EXPECT_EQ("|foo<input value=\"bla\">bar", + DoStartOfWord("foo|<input value=\"bla\">bar", + EWordSide::kPreviousWordIfOnBoundary)); + EXPECT_EQ("foo|<input value=\"bla\">bar", + DoStartOfWord("foo<input value=\"bla\">|bar", + EWordSide::kPreviousWordIfOnBoundary)); + EXPECT_EQ("foo<input value=\"bla\">|bar", + DoStartOfWord("foo<input value=\"bla\">b|ar", + EWordSide::kPreviousWordIfOnBoundary)); + EXPECT_EQ("foo<input value=\"bla\">|bar", + DoStartOfWord("foo<input value=\"bla\">ba|r", + EWordSide::kPreviousWordIfOnBoundary)); + EXPECT_EQ("foo<input value=\"bla\">|bar", + DoStartOfWord("foo<input value=\"bla\">bar|", + EWordSide::kPreviousWordIfOnBoundary)); +} + TEST_P(ParameterizedVisibleUnitsWordTest, EndOfWordBasic) { EXPECT_EQ("<p> (|1) abc def</p>", DoEndOfWord("<p>| (1) abc def</p>")); EXPECT_EQ("<p> (|1) abc def</p>", DoEndOfWord("<p> |(1) abc def</p>")); @@ -383,6 +433,53 @@ TEST_P(ParameterizedVisibleUnitsWordTest, EndOfWordTextSecurity) { EXPECT_EQ("abc<s>foo bar</s>baz|", DoEndOfWord("abc<s>foo bar</s>b|az")); } +TEST_P(ParameterizedVisibleUnitsWordTest, EndOfWordTextControl) { + EXPECT_EQ("foo|<input value=\"bla\">bar", + DoEndOfWord("|foo<input value=\"bla\">bar")); + EXPECT_EQ("foo|<input value=\"bla\">bar", + DoEndOfWord("f|oo<input value=\"bla\">bar")); + EXPECT_EQ("foo|<input value=\"bla\">bar", + DoEndOfWord("fo|o<input value=\"bla\">bar")); + EXPECT_EQ("foo<input value=\"bla\">|bar", + DoEndOfWord("foo|<input value=\"bla\">bar")); + EXPECT_EQ("foo<input value=\"bla\">bar|", + DoEndOfWord("foo<input value=\"bla\">|bar")); + EXPECT_EQ("foo<input value=\"bla\">bar|", + DoEndOfWord("foo<input value=\"bla\">b|ar")); + EXPECT_EQ("foo<input value=\"bla\">bar|", + DoEndOfWord("foo<input value=\"bla\">ba|r")); + EXPECT_EQ("foo<input value=\"bla\">bar|", + DoEndOfWord("foo<input value=\"bla\">bar|")); +} + +TEST_P(ParameterizedVisibleUnitsWordTest, + EndOfWordPreviousWordIfOnBoundaryTextControl) { + EXPECT_EQ("|foo<input value=\"bla\">bar", + DoEndOfWord("|foo<input value=\"bla\">bar", + EWordSide::kPreviousWordIfOnBoundary)); + EXPECT_EQ("foo|<input value=\"bla\">bar", + DoEndOfWord("f|oo<input value=\"bla\">bar", + EWordSide::kPreviousWordIfOnBoundary)); + EXPECT_EQ("foo|<input value=\"bla\">bar", + DoEndOfWord("fo|o<input value=\"bla\">bar", + EWordSide::kPreviousWordIfOnBoundary)); + EXPECT_EQ("foo|<input value=\"bla\">bar", + DoEndOfWord("foo|<input value=\"bla\">bar", + EWordSide::kPreviousWordIfOnBoundary)); + EXPECT_EQ("foo<input value=\"bla\">|bar", + DoEndOfWord("foo<input value=\"bla\">|bar", + EWordSide::kPreviousWordIfOnBoundary)); + EXPECT_EQ("foo<input value=\"bla\">bar|", + DoEndOfWord("foo<input value=\"bla\">b|ar", + EWordSide::kPreviousWordIfOnBoundary)); + EXPECT_EQ("foo<input value=\"bla\">bar|", + DoEndOfWord("foo<input value=\"bla\">ba|r", + EWordSide::kPreviousWordIfOnBoundary)); + EXPECT_EQ("foo<input value=\"bla\">bar|", + DoEndOfWord("foo<input value=\"bla\">bar|", + EWordSide::kPreviousWordIfOnBoundary)); +} + TEST_P(ParameterizedVisibleUnitsWordTest, NextWordBasic) { EXPECT_EQ("<p> (1|) abc def</p>", DoNextWord("<p>| (1) abc def</p>")); EXPECT_EQ("<p> (1|) abc def</p>", DoNextWord("<p> |(1) abc def</p>")); @@ -449,9 +546,28 @@ TEST_P(ParameterizedVisibleUnitsWordTest, NextWordSkipTab) { EXPECT_EQ("<p><s>\t</s>foo|</p>", DoNextWord("<p><s>\t|</s>foo</p>")); } +TEST_P(ParameterizedVisibleUnitsWordTest, NextWordSkipTextControl) { + EXPECT_EQ("foo|<input value=\"bla\">bar", + DoNextWord("|foo<input value=\"bla\">bar")); + EXPECT_EQ("foo|<input value=\"bla\">bar", + DoNextWord("f|oo<input value=\"bla\">bar")); + EXPECT_EQ("foo|<input value=\"bla\">bar", + DoNextWord("fo|o<input value=\"bla\">bar")); + EXPECT_EQ("foo<input value=\"bla\">bar|", + DoNextWord("foo|<input value=\"bla\">bar")); + EXPECT_EQ("foo<input value=\"bla\">bar|", + DoNextWord("foo<input value=\"bla\">|bar")); + EXPECT_EQ("foo<input value=\"bla\">bar|", + DoNextWord("foo<input value=\"bla\">b|ar")); + EXPECT_EQ("foo<input value=\"bla\">bar|", + DoNextWord("foo<input value=\"bla\">ba|r")); + EXPECT_EQ("foo<input value=\"bla\">bar|", + DoNextWord("foo<input value=\"bla\">bar|")); +} + //---- -TEST_F(VisibleUnitsWordTest, PreviousWordBasic) { +TEST_P(ParameterizedVisibleUnitsWordTest, PreviousWordBasic) { EXPECT_EQ("<p> |(1) abc def</p>", DoPreviousWord("<p>| (1) abc def</p>")); EXPECT_EQ("<p> |(1) abc def</p>", DoPreviousWord("<p> |(1) abc def</p>")); EXPECT_EQ("<p> |(1) abc def</p>", DoPreviousWord("<p> (|1) abc def</p>")); @@ -468,4 +584,23 @@ TEST_F(VisibleUnitsWordTest, PreviousWordBasic) { EXPECT_EQ("<p> (1) abc |def</p>", DoPreviousWord("<p> (1) abc def</p>|")); } +TEST_P(ParameterizedVisibleUnitsWordTest, PreviousWordSkipTextControl) { + EXPECT_EQ("|foo<input value=\"bla\">bar", + DoPreviousWord("|foo<input value=\"bla\">bar")); + EXPECT_EQ("|foo<input value=\"bla\">bar", + DoPreviousWord("f|oo<input value=\"bla\">bar")); + EXPECT_EQ("|foo<input value=\"bla\">bar", + DoPreviousWord("fo|o<input value=\"bla\">bar")); + EXPECT_EQ("|foo<input value=\"bla\">bar", + DoPreviousWord("foo|<input value=\"bla\">bar")); + EXPECT_EQ("|foo<input value=\"bla\">bar", + DoPreviousWord("foo<input value=\"bla\">|bar")); + EXPECT_EQ("foo<input value=\"bla\">|bar", + DoPreviousWord("foo<input value=\"bla\">b|ar")); + EXPECT_EQ("foo<input value=\"bla\">|bar", + DoPreviousWord("foo<input value=\"bla\">ba|r")); + EXPECT_EQ("foo<input value=\"bla\">|bar", + DoPreviousWord("foo<input value=\"bla\">bar|")); +} + } // namespace blink |