Chromium Code Reviews| Index: third_party/WebKit/Source/core/editing/markers/DocumentMarkerControllerTest.cpp |
| diff --git a/third_party/WebKit/Source/core/editing/markers/DocumentMarkerControllerTest.cpp b/third_party/WebKit/Source/core/editing/markers/DocumentMarkerControllerTest.cpp |
| index aa7769204061fd8ee8fd3392514a172e4c41be36..a750be55e9a45aa9810a7d3cc6cbb097a416b545 100644 |
| --- a/third_party/WebKit/Source/core/editing/markers/DocumentMarkerControllerTest.cpp |
| +++ b/third_party/WebKit/Source/core/editing/markers/DocumentMarkerControllerTest.cpp |
| @@ -30,6 +30,7 @@ |
| #include "core/editing/markers/DocumentMarkerController.h" |
| +#include <memory> |
|
rlanday
2017/04/10 22:39:43
This is a git cl format thing...
yosin_UTC9
2017/04/11 01:18:58
Yes, we need to put standard C/C++ header before u
|
| #include "bindings/core/v8/ExceptionState.h" |
| #include "core/dom/Document.h" |
| #include "core/dom/Range.h" |
| @@ -41,7 +42,6 @@ |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "wtf/PassRefPtr.h" |
| #include "wtf/RefPtr.h" |
| -#include <memory> |
| namespace blink { |
| @@ -264,4 +264,148 @@ TEST_F(DocumentMarkerControllerTest, SetMarkerActiveTest) { |
| EXPECT_TRUE(MarkerController().SetMarkersActive(range, true)); |
| } |
| +TEST_F(DocumentMarkerControllerTest, |
| + RemoveStartOfMarkerDoRemovePartiallyOverlapping) { |
| + SetBodyInnerHTML("<b>abc</b>"); |
| + GetDocument().UpdateStyleAndLayout(); |
| + Node* b_element = GetDocument().body()->FirstChild(); |
| + Node* text = b_element->firstChild(); |
| + |
| + // Add marker under "abc" |
| + EphemeralRange marker_range = |
| + EphemeralRange(Position(text, 0), Position(text, 3)); |
| + GetDocument().Markers().AddTextMatchMarker( |
| + marker_range, DocumentMarker::MatchStatus::kInactive); |
| + |
| + // Remove markers that overlap "a" |
| + marker_range = EphemeralRange(Position(text, 0), Position(text, 1)); |
| + GetDocument().Markers().RemoveMarkers( |
| + marker_range, DocumentMarker::AllMarkers(), |
| + DocumentMarkerController::kRemovePartiallyOverlappingMarker); |
| + |
| + EXPECT_EQ(0u, MarkerController().Markers().size()); |
| +} |
| + |
| +TEST_F(DocumentMarkerControllerTest, |
| + RemoveStartOfMarkerDontRemovePartiallyOverlapping) { |
| + SetBodyInnerHTML("<b>abc</b>"); |
| + GetDocument().UpdateStyleAndLayout(); |
| + Node* b_element = GetDocument().body()->FirstChild(); |
|
yosin_UTC9
2017/04/11 01:18:58
Wow, we have both Node::firstChild() and Container
|
| + Node* text = b_element->firstChild(); |
| + |
| + // Add marker under "abc" |
| + EphemeralRange marker_range = |
| + EphemeralRange(Position(text, 0), Position(text, 3)); |
| + GetDocument().Markers().AddTextMatchMarker( |
| + marker_range, DocumentMarker::MatchStatus::kInactive); |
| + |
| + // Remove portion of marker that overlaps "a" |
| + marker_range = EphemeralRange(Position(text, 0), Position(text, 1)); |
| + GetDocument().Markers().RemoveMarkers( |
| + marker_range, DocumentMarker::AllMarkers(), |
| + DocumentMarkerController::kDoNotRemovePartiallyOverlappingMarker); |
| + |
| + EXPECT_EQ(1u, MarkerController().Markers().size()); |
| + |
| + EXPECT_EQ(1u, MarkerController().Markers()[0]->StartOffset()); |
| + EXPECT_EQ(3u, MarkerController().Markers()[0]->EndOffset()); |
| +} |
| + |
| +TEST_F(DocumentMarkerControllerTest, |
| + RemoveMiddleOfMarkerDoRemovePartiallyOverlapping) { |
| + SetBodyInnerHTML("<b>abc</b>"); |
| + GetDocument().UpdateStyleAndLayout(); |
| + Node* b_element = GetDocument().body()->FirstChild(); |
| + Node* text = b_element->firstChild(); |
| + |
| + // Add marker under "abc" |
| + EphemeralRange marker_range = |
| + EphemeralRange(Position(text, 0), Position(text, 3)); |
| + GetDocument().Markers().AddTextMatchMarker( |
| + marker_range, DocumentMarker::MatchStatus::kInactive); |
| + |
| + // Remove markers that overlap "b" |
| + marker_range = EphemeralRange(Position(text, 1), Position(text, 2)); |
| + GetDocument().Markers().RemoveMarkers( |
| + marker_range, DocumentMarker::AllMarkers(), |
| + DocumentMarkerController::kRemovePartiallyOverlappingMarker); |
| + |
| + EXPECT_EQ(0u, MarkerController().Markers().size()); |
| +} |
| + |
| +TEST_F(DocumentMarkerControllerTest, |
| + RemoveMiddleOfMarkerDontRemovePartiallyOverlapping) { |
| + SetBodyInnerHTML("<b>abc</b>"); |
| + GetDocument().UpdateStyleAndLayout(); |
| + Node* b_element = GetDocument().body()->FirstChild(); |
| + Node* text = b_element->firstChild(); |
| + |
| + // Add marker under "abc" |
| + EphemeralRange marker_range = |
| + EphemeralRange(Position(text, 0), Position(text, 3)); |
| + GetDocument().Markers().AddTextMatchMarker( |
| + marker_range, DocumentMarker::MatchStatus::kInactive); |
| + |
| + // Remove portion of marker that overlaps "b" |
| + marker_range = EphemeralRange(Position(text, 1), Position(text, 2)); |
| + GetDocument().Markers().RemoveMarkers( |
| + marker_range, DocumentMarker::AllMarkers(), |
| + DocumentMarkerController::kDoNotRemovePartiallyOverlappingMarker); |
| + |
| + EXPECT_EQ(2u, MarkerController().Markers().size()); |
| + |
| + EXPECT_EQ(0u, MarkerController().Markers()[0]->StartOffset()); |
| + EXPECT_EQ(1u, MarkerController().Markers()[0]->EndOffset()); |
| + |
| + EXPECT_EQ(2u, MarkerController().Markers()[1]->StartOffset()); |
| + EXPECT_EQ(3u, MarkerController().Markers()[1]->EndOffset()); |
| +} |
| + |
| +TEST_F(DocumentMarkerControllerTest, |
| + RemoveEndOfMarkerDoRemovePartiallyOverlapping) { |
| + SetBodyInnerHTML("<b>abc</b>"); |
| + GetDocument().UpdateStyleAndLayout(); |
| + Node* b_element = GetDocument().body()->FirstChild(); |
| + Node* text = b_element->firstChild(); |
| + |
| + // Add marker under "abc" |
| + EphemeralRange marker_range = |
| + EphemeralRange(Position(text, 0), Position(text, 3)); |
| + GetDocument().Markers().AddTextMatchMarker( |
| + marker_range, DocumentMarker::MatchStatus::kInactive); |
| + |
| + // Remove markers that overlap "c" |
| + marker_range = EphemeralRange(Position(text, 2), Position(text, 3)); |
| + GetDocument().Markers().RemoveMarkers( |
| + marker_range, DocumentMarker::AllMarkers(), |
| + DocumentMarkerController::kRemovePartiallyOverlappingMarker); |
| + |
| + EXPECT_EQ(0u, MarkerController().Markers().size()); |
| +} |
| + |
| +TEST_F(DocumentMarkerControllerTest, |
| + RemoveEndOfMarkerDontRemovePartiallyOverlapping) { |
| + SetBodyInnerHTML("<b>abc</b>"); |
| + GetDocument().UpdateStyleAndLayout(); |
| + Node* b_element = GetDocument().body()->FirstChild(); |
| + Node* text = b_element->firstChild(); |
| + |
| + // Add marker under "abc" |
| + EphemeralRange marker_range = |
| + EphemeralRange(Position(text, 0), Position(text, 3)); |
| + GetDocument().Markers().AddTextMatchMarker( |
| + marker_range, DocumentMarker::MatchStatus::kInactive); |
| + |
| + // Remove portion of marker that overlaps "c" |
| + marker_range = EphemeralRange(Position(text, 2), Position(text, 3)); |
| + GetDocument().Markers().RemoveMarkers( |
| + marker_range, DocumentMarker::AllMarkers(), |
| + DocumentMarkerController::kDoNotRemovePartiallyOverlappingMarker); |
| + |
| + EXPECT_EQ(1u, MarkerController().Markers().size()); |
| + |
| + EXPECT_EQ(0u, MarkerController().Markers()[0]->StartOffset()); |
| + EXPECT_EQ(2u, MarkerController().Markers()[0]->EndOffset()); |
| +} |
| + |
| } // namespace blink |