| Index: third_party/WebKit/Source/core/editing/InputMethodControllerTest.cpp
|
| diff --git a/third_party/WebKit/Source/core/editing/InputMethodControllerTest.cpp b/third_party/WebKit/Source/core/editing/InputMethodControllerTest.cpp
|
| index d89e9b19ad8f2db0cc69b8d18b08dddfb492fb34..6f38120bbae30f32b7b56f2ea98029b1b55de458 100644
|
| --- a/third_party/WebKit/Source/core/editing/InputMethodControllerTest.cpp
|
| +++ b/third_party/WebKit/Source/core/editing/InputMethodControllerTest.cpp
|
| @@ -1196,4 +1196,157 @@ TEST_F(InputMethodControllerTest, CommitPlainTextWithUnderlineReplace) {
|
| EXPECT_EQ(15u, document().markers().markers()[0]->endOffset());
|
| }
|
|
|
| +TEST_F(InputMethodControllerTest, DeleteStartOfMarker) {
|
| + Element* div = insertHTMLElement(
|
| + "<div id='sample' contenteditable>Initial text.</div>", "sample");
|
| +
|
| + // Add marker to "Initial"
|
| + EphemeralRange markerRange = PlainTextRange(0, 7).createRange(*div);
|
| + document().markers().addMarker(markerRange.startPosition(),
|
| + markerRange.endPosition(),
|
| + DocumentMarker::TextMatch);
|
| +
|
| + Vector<CompositionUnderline> emptyUnderlines;
|
| + // Set composition to "Ini"
|
| + controller().setCompositionFromExistingText(emptyUnderlines, 0, 3);
|
| + // Delete "Ini"
|
| + controller().commitText(String(""), emptyUnderlines, 0);
|
| +
|
| + // Check that the marker is still attached to "tial"
|
| + EXPECT_EQ(1u, document().markers().markers().size());
|
| + EXPECT_EQ(0u, document().markers().markers()[0]->startOffset());
|
| + EXPECT_EQ(4u, document().markers().markers()[0]->endOffset());
|
| +}
|
| +
|
| +TEST_F(InputMethodControllerTest, DeleteBeforeStartOfMarker) {
|
| + Element* div = insertHTMLElement(
|
| + "<div id='sample' contenteditable>Initial text.</div>", "sample");
|
| +
|
| + // Add marker to "text"
|
| + EphemeralRange markerRange = PlainTextRange(8, 12).createRange(*div);
|
| + document().markers().addMarker(markerRange.startPosition(),
|
| + markerRange.endPosition(),
|
| + DocumentMarker::TextMatch);
|
| +
|
| + Vector<CompositionUnderline> emptyUnderlines;
|
| + // Set composition to "Initial"
|
| + controller().setCompositionFromExistingText(emptyUnderlines, 0, 7);
|
| +
|
| + // Delete "Initial"
|
| + controller().commitText(String(""), emptyUnderlines, 0);
|
| +
|
| + // Check that the marker is still attached to "text"
|
| + EXPECT_EQ(1u, document().markers().markers().size());
|
| + EXPECT_EQ(1u, document().markers().markers()[0]->startOffset());
|
| + EXPECT_EQ(5u, document().markers().markers()[0]->endOffset());
|
| +}
|
| +
|
| +TEST_F(InputMethodControllerTest, DeleteBeforeAndIncludingStartOfMarker) {
|
| + Element* div = insertHTMLElement(
|
| + "<div id='sample' contenteditable>Initial text.</div>", "sample");
|
| +
|
| + // Add marker to "text"
|
| + EphemeralRange markerRange = PlainTextRange(8, 12).createRange(*div);
|
| + document().markers().addMarker(markerRange.startPosition(),
|
| + markerRange.endPosition(),
|
| + DocumentMarker::TextMatch);
|
| +
|
| + Vector<CompositionUnderline> emptyUnderlines;
|
| + // Set composition to "Initial te"
|
| + controller().setCompositionFromExistingText(emptyUnderlines, 0, 10);
|
| +
|
| + // Delete "Initial te"
|
| + controller().commitText(String(""), emptyUnderlines, 0);
|
| +
|
| + // Check that the marker is still attached to "xt"
|
| + EXPECT_EQ(1u, document().markers().markers().size());
|
| + EXPECT_EQ(0u, document().markers().markers()[0]->startOffset());
|
| + EXPECT_EQ(2u, document().markers().markers()[0]->endOffset());
|
| +}
|
| +
|
| +TEST_F(InputMethodControllerTest, DeleteEndOfMarker) {
|
| + Element* div = insertHTMLElement(
|
| + "<div id='sample' contenteditable>Initial text.</div>", "sample");
|
| +
|
| + // Add marker to "text"
|
| + EphemeralRange markerRange = PlainTextRange(8, 12).createRange(*div);
|
| + document().markers().addMarker(markerRange.startPosition(),
|
| + markerRange.endPosition(),
|
| + DocumentMarker::TextMatch);
|
| +
|
| + Vector<CompositionUnderline> emptyUnderlines;
|
| + // Set composition to "xt."
|
| + controller().setCompositionFromExistingText(emptyUnderlines, 10, 13);
|
| +
|
| + // Delete "xt."
|
| + controller().commitText(String(""), emptyUnderlines, 0);
|
| +
|
| + // Check that the marker is still attached to "te"
|
| + EXPECT_EQ(1u, document().markers().markers().size());
|
| + EXPECT_EQ(8u, document().markers().markers()[0]->startOffset());
|
| + EXPECT_EQ(10u, document().markers().markers()[0]->endOffset());
|
| +}
|
| +
|
| +TEST_F(InputMethodControllerTest, DeleteBeforeEndOfMarker) {
|
| + Element* div = insertHTMLElement(
|
| + "<div id='sample' contenteditable>Initial text.</div>", "sample");
|
| +
|
| + // Add marker to "text"
|
| + EphemeralRange markerRange = PlainTextRange(8, 12).createRange(*div);
|
| + document().markers().addMarker(markerRange.startPosition(),
|
| + markerRange.endPosition(),
|
| + DocumentMarker::TextMatch);
|
| +
|
| + Vector<CompositionUnderline> emptyUnderlines;
|
| + // Set composition to "Initial"
|
| + controller().setCompositionFromExistingText(emptyUnderlines, 0, 7);
|
| +
|
| + // Delete "Initial"
|
| + controller().commitText(String(""), emptyUnderlines, 0);
|
| +
|
| + // Check that the marker is still attached to "text"
|
| + EXPECT_EQ(1u, document().markers().markers().size());
|
| + EXPECT_EQ(1u, document().markers().markers()[0]->startOffset());
|
| + EXPECT_EQ(5u, document().markers().markers()[0]->endOffset());
|
| +}
|
| +
|
| +TEST_F(InputMethodControllerTest, DeleteSplittingNestedMarkers) {
|
| + Element* div = insertHTMLElement(
|
| + "<div id='sample' contenteditable>Initial text.</div>", "sample");
|
| +
|
| + EphemeralRange markerRange = PlainTextRange(0, 6).createRange(*div);
|
| + document().markers().addMarker(markerRange.startPosition(),
|
| + markerRange.endPosition(),
|
| + DocumentMarker::TextMatch);
|
| +
|
| + markerRange = PlainTextRange(1, 9).createRange(*div);
|
| + document().markers().addMarker(markerRange.startPosition(),
|
| + markerRange.endPosition(),
|
| + DocumentMarker::TextMatch);
|
| +
|
| + markerRange = PlainTextRange(2, 3).createRange(*div);
|
| + document().markers().addMarker(markerRange.startPosition(),
|
| + markerRange.endPosition(),
|
| + DocumentMarker::TextMatch);
|
| +
|
| + Vector<CompositionUnderline> emptyUnderlines;
|
| + controller().setCompositionFromExistingText(emptyUnderlines, 5, 7);
|
| +
|
| + controller().commitText(String(""), emptyUnderlines, 0);
|
| +
|
| + EXPECT_EQ(4u, document().markers().markers().size());
|
| +
|
| + EXPECT_EQ(0u, document().markers().markers()[0]->startOffset());
|
| + EXPECT_EQ(5u, document().markers().markers()[0]->endOffset());
|
| +
|
| + EXPECT_EQ(1u, document().markers().markers()[1]->startOffset());
|
| + EXPECT_EQ(5u, document().markers().markers()[1]->endOffset());
|
| +
|
| + EXPECT_EQ(2u, document().markers().markers()[2]->startOffset());
|
| + EXPECT_EQ(3u, document().markers().markers()[2]->endOffset());
|
| +
|
| + EXPECT_EQ(5u, document().markers().markers()[3]->startOffset());
|
| + EXPECT_EQ(7u, document().markers().markers()[3]->endOffset());
|
| +}
|
| +
|
| } // namespace blink
|
|
|