OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |