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

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

Issue 1330233003: Revert of Avoid style clobbering in setCompositionFromExistingText. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 3 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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 47
48 class DocumentMarkerControllerTest : public ::testing::Test { 48 class DocumentMarkerControllerTest : public ::testing::Test {
49 protected: 49 protected:
50 void SetUp() override; 50 void SetUp() override;
51 51
52 Document& document() const { return *m_document; } 52 Document& document() const { return *m_document; }
53 DocumentMarkerController& markerController() const { return m_document->mark ers(); } 53 DocumentMarkerController& markerController() const { return m_document->mark ers(); }
54 54
55 PassRefPtrWillBeRawPtr<Text> createTextNode(const char*); 55 PassRefPtrWillBeRawPtr<Text> createTextNode(const char*);
56 void markNodeContents(PassRefPtrWillBeRawPtr<Node>); 56 void markNodeContents(PassRefPtrWillBeRawPtr<Node>);
57 void markNodeContentsWithComposition(PassRefPtrWillBeRawPtr<Node>);
58 void setBodyInnerHTML(const char*); 57 void setBodyInnerHTML(const char*);
59 58
60 private: 59 private:
61 OwnPtr<DummyPageHolder> m_dummyPageHolder; 60 OwnPtr<DummyPageHolder> m_dummyPageHolder;
62 RefPtrWillBePersistent<Document> m_document; 61 RefPtrWillBePersistent<Document> m_document;
63 }; 62 };
64 63
65 void DocumentMarkerControllerTest::SetUp() 64 void DocumentMarkerControllerTest::SetUp()
66 { 65 {
67 m_dummyPageHolder = DummyPageHolder::create(IntSize(800, 600)); 66 m_dummyPageHolder = DummyPageHolder::create(IntSize(800, 600));
68 m_document = &m_dummyPageHolder->document(); 67 m_document = &m_dummyPageHolder->document();
69 ASSERT(m_document); 68 ASSERT(m_document);
70 } 69 }
71 70
72 PassRefPtrWillBeRawPtr<Text> DocumentMarkerControllerTest::createTextNode(const char* textContents) 71 PassRefPtrWillBeRawPtr<Text> DocumentMarkerControllerTest::createTextNode(const char* textContents)
73 { 72 {
74 return document().createTextNode(String::fromUTF8(textContents)); 73 return document().createTextNode(String::fromUTF8(textContents));
75 } 74 }
76 75
77 void DocumentMarkerControllerTest::markNodeContents(PassRefPtrWillBeRawPtr<Node> node) 76 void DocumentMarkerControllerTest::markNodeContents(PassRefPtrWillBeRawPtr<Node> node)
78 { 77 {
79 // Force layoutObjects to be created; TextIterator, which is used in 78 // Force layoutObjects to be created; TextIterator, which is used in
80 // DocumentMarkerControllerTest::addMarker(), needs them. 79 // DocumentMarkerControllerTest::addMarker(), needs them.
81 document().updateLayout(); 80 document().updateLayout();
82 auto range = EphemeralRange::rangeOfContents(*node); 81 auto range = EphemeralRange::rangeOfContents(*node);
83 markerController().addMarker(range.startPosition(), range.endPosition(), Doc umentMarker::Spelling); 82 markerController().addMarker(range.startPosition(), range.endPosition(), Doc umentMarker::Spelling);
84 } 83 }
85 84
86 void DocumentMarkerControllerTest::markNodeContentsWithComposition(PassRefPtrWil lBeRawPtr<Node> node)
87 {
88 // Force layoutObjects to be created; TextIterator, which is used in
89 // DocumentMarkerControllerTest::addMarker(), needs them.
90 document().updateLayout();
91 auto range = EphemeralRange::rangeOfContents(*node);
92 markerController().addCompositionMarker(range.startPosition(), range.endPosi tion(), Color::black, false, Color::black);
93 }
94
95 void DocumentMarkerControllerTest::setBodyInnerHTML(const char* bodyContent) 85 void DocumentMarkerControllerTest::setBodyInnerHTML(const char* bodyContent)
96 { 86 {
97 document().body()->setInnerHTML(String::fromUTF8(bodyContent), ASSERT_NO_EXC EPTION); 87 document().body()->setInnerHTML(String::fromUTF8(bodyContent), ASSERT_NO_EXC EPTION);
98 } 88 }
99 89
100 TEST_F(DocumentMarkerControllerTest, DidMoveToNewDocument) 90 TEST_F(DocumentMarkerControllerTest, DidMoveToNewDocument)
101 { 91 {
102 setBodyInnerHTML("<b><i>foo</i></b>"); 92 setBodyInnerHTML("<b><i>foo</i></b>");
103 RefPtrWillBeRawPtr<Element> parent = toElement(document().body()->firstChild ()->firstChild()); 93 RefPtrWillBeRawPtr<Element> parent = toElement(document().body()->firstChild ()->firstChild());
104 markNodeContents(parent.get()); 94 markNodeContents(parent.get());
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 EXPECT_EQ(1u, renderedRects.size()); 210 EXPECT_EQ(1u, renderedRects.size());
221 EXPECT_NE(invalidRect, renderedRects[0]); 211 EXPECT_NE(invalidRect, renderedRects[0]);
222 212
223 div->setAttribute(HTMLNames::styleAttr, "margin: 200px"); 213 div->setAttribute(HTMLNames::styleAttr, "margin: 200px");
224 document().updateLayout(); 214 document().updateLayout();
225 Vector<IntRect> newRenderedRects = markerController().renderedRectsForMarker s(DocumentMarker::Spelling); 215 Vector<IntRect> newRenderedRects = markerController().renderedRectsForMarker s(DocumentMarker::Spelling);
226 EXPECT_EQ(1u, newRenderedRects.size()); 216 EXPECT_EQ(1u, newRenderedRects.size());
227 EXPECT_NE(renderedRects[0], newRenderedRects[0]); 217 EXPECT_NE(renderedRects[0], newRenderedRects[0]);
228 } 218 }
229 219
230 TEST_F(DocumentMarkerControllerTest, UpdateRenderedRectsForComposition)
231 {
232 IntRect invalidRect(RenderedDocumentMarker::create(DocumentMarker(0, 0, fals e))->renderedRect());
233
234 setBodyInnerHTML("<div style='margin: 100px'>foo</div>");
235 RefPtrWillBeRawPtr<Element> div = toElement(document().body()->firstChild()) ;
236 markNodeContentsWithComposition(div);
237 Vector<IntRect> renderedRects = markerController().renderedRectsForMarkers(D ocumentMarker::Composition);
238 EXPECT_EQ(1u, renderedRects.size());
239 EXPECT_NE(invalidRect, renderedRects[0]);
240
241 div->setAttribute(HTMLNames::styleAttr, "margin: 200px");
242 document().updateLayout();
243 Vector<IntRect> newRenderedRects = markerController().renderedRectsForMarker s(DocumentMarker::Composition);
244 EXPECT_EQ(1u, newRenderedRects.size());
245 EXPECT_NE(renderedRects[0], newRenderedRects[0]);
246 }
247
248 } // namespace blink 220 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/editing/markers/DocumentMarkerController.cpp ('k') | Source/core/paint/InlineTextBoxPainter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698