Index: third_party/WebKit/Source/core/editing/spellcheck/SpellCheckerTest.cpp |
diff --git a/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckerTest.cpp b/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckerTest.cpp |
index ec53a097f52189bc508098f8747b94bbcc821df1..f950f5c46e1e908bd1867bc996cc4bb46ad7ae3b 100644 |
--- a/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckerTest.cpp |
+++ b/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckerTest.cpp |
@@ -129,4 +129,254 @@ TEST_F(SpellCheckerTest, MarkAndReplaceForHandlesMultipleReplacements) { |
ToSpellCheckMarker(GetDocument().Markers().Markers()[0])->Description()); |
} |
+TEST_F(SpellCheckerTest, |
+ GetSpellCheckMarkerTouchingSelection_FirstCharSelected) { |
+ SetBodyContent( |
+ "<div contenteditable>" |
+ "spllchck" |
+ "</div>"); |
+ Element* div = GetDocument().QuerySelector("div"); |
+ Node* text = div->firstChild(); |
+ |
+ GetDocument().Markers().AddSpellingMarker( |
+ EphemeralRange(Position(text, 0), Position(text, 8))); |
+ |
+ GetDocument().GetFrame()->Selection().SetSelection( |
+ SelectionInDOMTree::Builder() |
+ .SetBaseAndExtent(Position(text, 0), Position(text, 1)) |
+ .Build()); |
+ |
+ Optional<std::pair<Node*, SpellCheckMarker*>> result = |
+ GetDocument() |
+ .GetFrame() |
+ ->GetSpellChecker() |
+ .GetSpellCheckMarkerTouchingSelection(); |
+ EXPECT_TRUE(result); |
+} |
+ |
+TEST_F(SpellCheckerTest, |
+ GetSpellCheckMarkerTouchingSelection_LastCharSelected) { |
+ SetBodyContent( |
+ "<div contenteditable>" |
+ "spllchck" |
+ "</div>"); |
+ Element* div = GetDocument().QuerySelector("div"); |
+ Node* text = div->firstChild(); |
+ |
+ GetDocument().Markers().AddSpellingMarker( |
+ EphemeralRange(Position(text, 0), Position(text, 8))); |
+ |
+ GetDocument().GetFrame()->Selection().SetSelection( |
+ SelectionInDOMTree::Builder() |
+ .SetBaseAndExtent(Position(text, 7), Position(text, 8)) |
+ .Build()); |
+ |
+ Optional<std::pair<Node*, SpellCheckMarker*>> result = |
+ GetDocument() |
+ .GetFrame() |
+ ->GetSpellChecker() |
+ .GetSpellCheckMarkerTouchingSelection(); |
+ EXPECT_TRUE(result); |
+} |
+ |
+TEST_F(SpellCheckerTest, |
+ GetSpellCheckMarkerTouchingSelection_SingleCharWordSelected) { |
+ SetBodyContent( |
+ "<div contenteditable>" |
+ "s" |
+ "</div>"); |
+ Element* div = GetDocument().QuerySelector("div"); |
+ Node* text = div->firstChild(); |
+ |
+ GetDocument().Markers().AddSpellingMarker( |
+ EphemeralRange(Position(text, 0), Position(text, 1))); |
+ |
+ GetDocument().GetFrame()->Selection().SetSelection( |
+ SelectionInDOMTree::Builder() |
+ .SetBaseAndExtent(Position(text, 0), Position(text, 1)) |
+ .Build()); |
+ |
+ Optional<std::pair<Node*, SpellCheckMarker*>> result = |
+ GetDocument() |
+ .GetFrame() |
+ ->GetSpellChecker() |
+ .GetSpellCheckMarkerTouchingSelection(); |
+ EXPECT_TRUE(result); |
+} |
+ |
+TEST_F(SpellCheckerTest, |
+ GetSpellCheckMarkerTouchingSelection_CaretLeftOfSingleCharWord) { |
+ SetBodyContent( |
+ "<div contenteditable>" |
+ "s" |
+ "</div>"); |
+ Element* div = GetDocument().QuerySelector("div"); |
+ Node* text = div->firstChild(); |
+ |
+ GetDocument().Markers().AddSpellingMarker( |
+ EphemeralRange(Position(text, 0), Position(text, 1))); |
+ |
+ GetDocument().GetFrame()->Selection().SetSelection( |
+ SelectionInDOMTree::Builder() |
+ .SetBaseAndExtent(Position(text, 0), Position(text, 0)) |
+ .Build()); |
+ |
+ Optional<std::pair<Node*, SpellCheckMarker*>> result = |
+ GetDocument() |
+ .GetFrame() |
+ ->GetSpellChecker() |
+ .GetSpellCheckMarkerTouchingSelection(); |
+ EXPECT_TRUE(result); |
+} |
+ |
+TEST_F(SpellCheckerTest, |
+ GetSpellCheckMarkerTouchingSelection_CaretRightOfSingleCharWord) { |
+ SetBodyContent( |
+ "<div contenteditable>" |
+ "s" |
+ "</div>"); |
+ Element* div = GetDocument().QuerySelector("div"); |
+ Node* text = div->firstChild(); |
+ |
+ GetDocument().Markers().AddSpellingMarker( |
+ EphemeralRange(Position(text, 0), Position(text, 1))); |
+ |
+ GetDocument().GetFrame()->Selection().SetSelection( |
+ SelectionInDOMTree::Builder() |
+ .SetBaseAndExtent(Position(text, 1), Position(text, 1)) |
+ .Build()); |
+ |
+ Optional<std::pair<Node*, SpellCheckMarker*>> result = |
+ GetDocument() |
+ .GetFrame() |
+ ->GetSpellChecker() |
+ .GetSpellCheckMarkerTouchingSelection(); |
+ EXPECT_TRUE(result); |
+} |
+ |
+TEST_F(SpellCheckerTest, |
+ GetSpellCheckMarkerTouchingSelection_CaretLeftOfMultiCharWord) { |
+ SetBodyContent( |
+ "<div contenteditable>" |
+ "spllchck" |
+ "</div>"); |
+ Element* div = GetDocument().QuerySelector("div"); |
+ Node* text = div->firstChild(); |
+ |
+ GetDocument().Markers().AddSpellingMarker( |
+ EphemeralRange(Position(text, 0), Position(text, 8))); |
+ |
+ GetDocument().GetFrame()->Selection().SetSelection( |
+ SelectionInDOMTree::Builder() |
+ .SetBaseAndExtent(Position(text, 0), Position(text, 0)) |
+ .Build()); |
+ |
+ Optional<std::pair<Node*, SpellCheckMarker*>> result = |
+ GetDocument() |
+ .GetFrame() |
+ ->GetSpellChecker() |
+ .GetSpellCheckMarkerTouchingSelection(); |
+ EXPECT_TRUE(result); |
+} |
+ |
+TEST_F(SpellCheckerTest, |
+ GetSpellCheckMarkerTouchingSelection_CaretRightOfMultiCharWord) { |
+ SetBodyContent( |
+ "<div contenteditable>" |
+ "spllchck" |
+ "</div>"); |
+ Element* div = GetDocument().QuerySelector("div"); |
+ Node* text = div->firstChild(); |
+ |
+ GetDocument().Markers().AddSpellingMarker( |
+ EphemeralRange(Position(text, 0), Position(text, 8))); |
+ |
+ GetDocument().GetFrame()->Selection().SetSelection( |
+ SelectionInDOMTree::Builder() |
+ .SetBaseAndExtent(Position(text, 8), Position(text, 8)) |
+ .Build()); |
+ |
+ Optional<std::pair<Node*, SpellCheckMarker*>> result = |
+ GetDocument() |
+ .GetFrame() |
+ ->GetSpellChecker() |
+ .GetSpellCheckMarkerTouchingSelection(); |
+ EXPECT_TRUE(result); |
+} |
+ |
+TEST_F(SpellCheckerTest, |
+ GetSpellCheckMarkerTouchingSelection_CaretMiddleOfWord) { |
+ SetBodyContent( |
+ "<div contenteditable>" |
+ "spllchck" |
+ "</div>"); |
+ Element* div = GetDocument().QuerySelector("div"); |
+ Node* text = div->firstChild(); |
+ |
+ GetDocument().Markers().AddSpellingMarker( |
+ EphemeralRange(Position(text, 0), Position(text, 8))); |
+ |
+ GetDocument().GetFrame()->Selection().SetSelection( |
+ SelectionInDOMTree::Builder() |
+ .SetBaseAndExtent(Position(text, 4), Position(text, 4)) |
+ .Build()); |
+ |
+ Optional<std::pair<Node*, SpellCheckMarker*>> result = |
+ GetDocument() |
+ .GetFrame() |
+ ->GetSpellChecker() |
+ .GetSpellCheckMarkerTouchingSelection(); |
+ EXPECT_TRUE(result); |
+} |
+ |
+TEST_F(SpellCheckerTest, |
+ GetSpellCheckMarkerTouchingSelection_CaretOneCharLeftOfMisspelling) { |
+ SetBodyContent( |
+ "<div contenteditable>" |
+ "a spllchck" |
+ "</div>"); |
+ Element* div = GetDocument().QuerySelector("div"); |
+ Node* text = div->firstChild(); |
+ |
+ GetDocument().Markers().AddSpellingMarker( |
+ EphemeralRange(Position(text, 2), Position(text, 10))); |
+ |
+ GetDocument().GetFrame()->Selection().SetSelection( |
+ SelectionInDOMTree::Builder() |
+ .SetBaseAndExtent(Position(text, 1), Position(text, 1)) |
+ .Build()); |
+ |
+ Optional<std::pair<Node*, SpellCheckMarker*>> result = |
+ GetDocument() |
+ .GetFrame() |
+ ->GetSpellChecker() |
+ .GetSpellCheckMarkerTouchingSelection(); |
+ EXPECT_FALSE(result); |
+} |
+ |
+TEST_F(SpellCheckerTest, |
+ GetSpellCheckMarkerTouchingSelection_CaretOneCharRightOfMisspelling) { |
+ SetBodyContent( |
+ "<div contenteditable>" |
+ "spllchck a" |
+ "</div>"); |
+ Element* div = GetDocument().QuerySelector("div"); |
+ Node* text = div->firstChild(); |
+ |
+ GetDocument().Markers().AddSpellingMarker( |
+ EphemeralRange(Position(text, 0), Position(text, 8))); |
+ |
+ GetDocument().GetFrame()->Selection().SetSelection( |
+ SelectionInDOMTree::Builder() |
+ .SetBaseAndExtent(Position(text, 9), Position(text, 9)) |
+ .Build()); |
+ |
+ Optional<std::pair<Node*, SpellCheckMarker*>> result = |
+ GetDocument() |
+ .GetFrame() |
+ ->GetSpellChecker() |
+ .GetSpellCheckMarkerTouchingSelection(); |
+ EXPECT_FALSE(result); |
+} |
+ |
} // namespace blink |