Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(385)

Side by Side Diff: third_party/WebKit/Source/core/editing/markers/DocumentMarkerControllerTest.cpp

Issue 2820343004: [DMC #4] Add CompositionMarkerListImpl (Closed)
Patch Set: Add comments Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013, Google Inc. All rights reserved. 2 * Copyright (c) 2013, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 DocumentMarkerControllerTest() 50 DocumentMarkerControllerTest()
51 : dummy_page_holder_(DummyPageHolder::Create(IntSize(800, 600))) {} 51 : dummy_page_holder_(DummyPageHolder::Create(IntSize(800, 600))) {}
52 52
53 Document& GetDocument() const { return dummy_page_holder_->GetDocument(); } 53 Document& GetDocument() const { return dummy_page_holder_->GetDocument(); }
54 DocumentMarkerController& MarkerController() const { 54 DocumentMarkerController& MarkerController() const {
55 return GetDocument().Markers(); 55 return GetDocument().Markers();
56 } 56 }
57 57
58 Text* CreateTextNode(const char*); 58 Text* CreateTextNode(const char*);
59 void MarkNodeContents(Node*); 59 void MarkNodeContents(Node*);
60 void MarkNodeContentsWithComposition(Node*);
61 void SetBodyInnerHTML(const char*); 60 void SetBodyInnerHTML(const char*);
62 61
63 private: 62 private:
64 std::unique_ptr<DummyPageHolder> dummy_page_holder_; 63 std::unique_ptr<DummyPageHolder> dummy_page_holder_;
65 }; 64 };
66 65
67 Text* DocumentMarkerControllerTest::CreateTextNode(const char* text_contents) { 66 Text* DocumentMarkerControllerTest::CreateTextNode(const char* text_contents) {
68 return GetDocument().createTextNode(String::FromUTF8(text_contents)); 67 return GetDocument().createTextNode(String::FromUTF8(text_contents));
69 } 68 }
70 69
71 void DocumentMarkerControllerTest::MarkNodeContents(Node* node) { 70 void DocumentMarkerControllerTest::MarkNodeContents(Node* node) {
72 // Force layoutObjects to be created; TextIterator, which is used in 71 // Force layoutObjects to be created; TextIterator, which is used in
73 // DocumentMarkerControllerTest::addMarker(), needs them. 72 // DocumentMarkerControllerTest::addMarker(), needs them.
74 GetDocument().UpdateStyleAndLayout(); 73 GetDocument().UpdateStyleAndLayout();
75 auto range = EphemeralRange::RangeOfContents(*node); 74 auto range = EphemeralRange::RangeOfContents(*node);
76 MarkerController().AddMarker(range.StartPosition(), range.EndPosition(), 75 MarkerController().AddMarker(range.StartPosition(), range.EndPosition(),
77 DocumentMarker::kSpelling); 76 DocumentMarker::kSpelling);
78 } 77 }
79 78
80 void DocumentMarkerControllerTest::MarkNodeContentsWithComposition(Node* node) {
81 // Force layoutObjects to be created; TextIterator, which is used in
82 // DocumentMarkerControllerTest::addMarker(), needs them.
83 GetDocument().UpdateStyleAndLayout();
84 auto range = EphemeralRange::RangeOfContents(*node);
85 MarkerController().AddCompositionMarker(range.StartPosition(),
86 range.EndPosition(), Color::kBlack,
87 false, Color::kBlack);
88 }
89
90 void DocumentMarkerControllerTest::SetBodyInnerHTML(const char* body_content) { 79 void DocumentMarkerControllerTest::SetBodyInnerHTML(const char* body_content) {
91 GetDocument().body()->setInnerHTML(String::FromUTF8(body_content)); 80 GetDocument().body()->setInnerHTML(String::FromUTF8(body_content));
92 } 81 }
93 82
94 TEST_F(DocumentMarkerControllerTest, DidMoveToNewDocument) { 83 TEST_F(DocumentMarkerControllerTest, DidMoveToNewDocument) {
95 SetBodyInnerHTML("<b><i>foo</i></b>"); 84 SetBodyInnerHTML("<b><i>foo</i></b>");
96 Element* parent = ToElement(GetDocument().body()->firstChild()->firstChild()); 85 Element* parent = ToElement(GetDocument().body()->firstChild()->firstChild());
97 MarkNodeContents(parent); 86 MarkNodeContents(parent);
98 EXPECT_EQ(1u, MarkerController().Markers().size()); 87 EXPECT_EQ(1u, MarkerController().Markers().size());
99 Persistent<Document> another_document = Document::Create(); 88 Persistent<Document> another_document = Document::Create();
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 EXPECT_EQ(1u, rendered_rects.size()); 199 EXPECT_EQ(1u, rendered_rects.size());
211 200
212 div->setAttribute(HTMLNames::styleAttr, "margin: 200px"); 201 div->setAttribute(HTMLNames::styleAttr, "margin: 200px");
213 GetDocument().UpdateStyleAndLayout(); 202 GetDocument().UpdateStyleAndLayout();
214 Vector<IntRect> new_rendered_rects = 203 Vector<IntRect> new_rendered_rects =
215 MarkerController().RenderedRectsForMarkers(DocumentMarker::kSpelling); 204 MarkerController().RenderedRectsForMarkers(DocumentMarker::kSpelling);
216 EXPECT_EQ(1u, new_rendered_rects.size()); 205 EXPECT_EQ(1u, new_rendered_rects.size());
217 EXPECT_NE(rendered_rects[0], new_rendered_rects[0]); 206 EXPECT_NE(rendered_rects[0], new_rendered_rects[0]);
218 } 207 }
219 208
220 TEST_F(DocumentMarkerControllerTest, UpdateRenderedRectsForComposition) {
Xiaocheng 2017/04/26 14:17:53 Why removing this test?
rlanday 2017/04/26 20:33:24 There was an earlier version of this CL where I ma
Xiaocheng 2017/04/26 22:20:36 Oh, it's calling UpdateRenderedRects on compositio
rlanday 2017/04/26 22:27:59 Just to clarify for anyone else reading this: ther
221 SetBodyInnerHTML("<div style='margin: 100px'>foo</div>");
222 Element* div = ToElement(GetDocument().body()->firstChild());
223 MarkNodeContentsWithComposition(div);
224 Vector<IntRect> rendered_rects =
225 MarkerController().RenderedRectsForMarkers(DocumentMarker::kComposition);
226 EXPECT_EQ(1u, rendered_rects.size());
227
228 div->setAttribute(HTMLNames::styleAttr, "margin: 200px");
229 GetDocument().UpdateStyleAndLayout();
230 Vector<IntRect> new_rendered_rects =
231 MarkerController().RenderedRectsForMarkers(DocumentMarker::kComposition);
232 EXPECT_EQ(1u, new_rendered_rects.size());
233 EXPECT_NE(rendered_rects[0], new_rendered_rects[0]);
234 }
235
236 TEST_F(DocumentMarkerControllerTest, CompositionMarkersNotMerged) { 209 TEST_F(DocumentMarkerControllerTest, CompositionMarkersNotMerged) {
237 SetBodyInnerHTML("<div style='margin: 100px'>foo</div>"); 210 SetBodyInnerHTML("<div style='margin: 100px'>foo</div>");
238 Node* text = GetDocument().body()->firstChild()->firstChild(); 211 Node* text = GetDocument().body()->firstChild()->firstChild();
239 GetDocument().UpdateStyleAndLayout(); 212 GetDocument().UpdateStyleAndLayout();
240 MarkerController().AddCompositionMarker(Position(text, 0), Position(text, 1), 213 MarkerController().AddCompositionMarker(Position(text, 0), Position(text, 1),
241 Color::kBlack, false, Color::kBlack); 214 Color::kBlack, false, Color::kBlack);
242 MarkerController().AddCompositionMarker(Position(text, 1), Position(text, 3), 215 MarkerController().AddCompositionMarker(Position(text, 1), Position(text, 3),
243 Color::kBlack, true, Color::kBlack); 216 Color::kBlack, true, Color::kBlack);
244 217
245 EXPECT_EQ(2u, MarkerController().Markers().size()); 218 EXPECT_EQ(2u, MarkerController().Markers().size());
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 315
343 // RemoveSpellingMarkersUnderWords does not remove text match marker. 316 // RemoveSpellingMarkersUnderWords does not remove text match marker.
344 ASSERT_EQ(1u, MarkerController().Markers().size()); 317 ASSERT_EQ(1u, MarkerController().Markers().size());
345 const DocumentMarker& marker = *MarkerController().Markers()[0]; 318 const DocumentMarker& marker = *MarkerController().Markers()[0];
346 EXPECT_EQ(0u, marker.StartOffset()); 319 EXPECT_EQ(0u, marker.StartOffset());
347 EXPECT_EQ(3u, marker.EndOffset()); 320 EXPECT_EQ(3u, marker.EndOffset());
348 EXPECT_EQ(DocumentMarker::kTextMatch, marker.GetType()); 321 EXPECT_EQ(DocumentMarker::kTextMatch, marker.GetType());
349 } 322 }
350 323
351 } // namespace blink 324 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698