| 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>); |
| 57 void setBodyInnerHTML(const char*); | 58 void setBodyInnerHTML(const char*); |
| 58 | 59 |
| 59 private: | 60 private: |
| 60 OwnPtr<DummyPageHolder> m_dummyPageHolder; | 61 OwnPtr<DummyPageHolder> m_dummyPageHolder; |
| 61 RefPtrWillBePersistent<Document> m_document; | 62 RefPtrWillBePersistent<Document> m_document; |
| 62 }; | 63 }; |
| 63 | 64 |
| 64 void DocumentMarkerControllerTest::SetUp() | 65 void DocumentMarkerControllerTest::SetUp() |
| 65 { | 66 { |
| 66 m_dummyPageHolder = DummyPageHolder::create(IntSize(800, 600)); | 67 m_dummyPageHolder = DummyPageHolder::create(IntSize(800, 600)); |
| 67 m_document = &m_dummyPageHolder->document(); | 68 m_document = &m_dummyPageHolder->document(); |
| 68 ASSERT(m_document); | 69 ASSERT(m_document); |
| 69 } | 70 } |
| 70 | 71 |
| 71 PassRefPtrWillBeRawPtr<Text> DocumentMarkerControllerTest::createTextNode(const
char* textContents) | 72 PassRefPtrWillBeRawPtr<Text> DocumentMarkerControllerTest::createTextNode(const
char* textContents) |
| 72 { | 73 { |
| 73 return document().createTextNode(String::fromUTF8(textContents)); | 74 return document().createTextNode(String::fromUTF8(textContents)); |
| 74 } | 75 } |
| 75 | 76 |
| 76 void DocumentMarkerControllerTest::markNodeContents(PassRefPtrWillBeRawPtr<Node>
node) | 77 void DocumentMarkerControllerTest::markNodeContents(PassRefPtrWillBeRawPtr<Node>
node) |
| 77 { | 78 { |
| 78 // Force layoutObjects to be created; TextIterator, which is used in | 79 // Force layoutObjects to be created; TextIterator, which is used in |
| 79 // DocumentMarkerControllerTest::addMarker(), needs them. | 80 // DocumentMarkerControllerTest::addMarker(), needs them. |
| 80 document().updateLayout(); | 81 document().updateLayout(); |
| 81 auto range = EphemeralRange::rangeOfContents(*node); | 82 auto range = EphemeralRange::rangeOfContents(*node); |
| 82 markerController().addMarker(range.startPosition(), range.endPosition(), Doc
umentMarker::Spelling); | 83 markerController().addMarker(range.startPosition(), range.endPosition(), Doc
umentMarker::Spelling); |
| 83 } | 84 } |
| 84 | 85 |
| 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 |
| 85 void DocumentMarkerControllerTest::setBodyInnerHTML(const char* bodyContent) | 95 void DocumentMarkerControllerTest::setBodyInnerHTML(const char* bodyContent) |
| 86 { | 96 { |
| 87 document().body()->setInnerHTML(String::fromUTF8(bodyContent), ASSERT_NO_EXC
EPTION); | 97 document().body()->setInnerHTML(String::fromUTF8(bodyContent), ASSERT_NO_EXC
EPTION); |
| 88 } | 98 } |
| 89 | 99 |
| 90 TEST_F(DocumentMarkerControllerTest, DidMoveToNewDocument) | 100 TEST_F(DocumentMarkerControllerTest, DidMoveToNewDocument) |
| 91 { | 101 { |
| 92 setBodyInnerHTML("<b><i>foo</i></b>"); | 102 setBodyInnerHTML("<b><i>foo</i></b>"); |
| 93 RefPtrWillBeRawPtr<Element> parent = toElement(document().body()->firstChild
()->firstChild()); | 103 RefPtrWillBeRawPtr<Element> parent = toElement(document().body()->firstChild
()->firstChild()); |
| 94 markNodeContents(parent.get()); | 104 markNodeContents(parent.get()); |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 210 EXPECT_EQ(1u, renderedRects.size()); | 220 EXPECT_EQ(1u, renderedRects.size()); |
| 211 EXPECT_NE(invalidRect, renderedRects[0]); | 221 EXPECT_NE(invalidRect, renderedRects[0]); |
| 212 | 222 |
| 213 div->setAttribute(HTMLNames::styleAttr, "margin: 200px"); | 223 div->setAttribute(HTMLNames::styleAttr, "margin: 200px"); |
| 214 document().updateLayout(); | 224 document().updateLayout(); |
| 215 Vector<IntRect> newRenderedRects = markerController().renderedRectsForMarker
s(DocumentMarker::Spelling); | 225 Vector<IntRect> newRenderedRects = markerController().renderedRectsForMarker
s(DocumentMarker::Spelling); |
| 216 EXPECT_EQ(1u, newRenderedRects.size()); | 226 EXPECT_EQ(1u, newRenderedRects.size()); |
| 217 EXPECT_NE(renderedRects[0], newRenderedRects[0]); | 227 EXPECT_NE(renderedRects[0], newRenderedRects[0]); |
| 218 } | 228 } |
| 219 | 229 |
| 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 |
| 220 } // namespace blink | 248 } // namespace blink |
| OLD | NEW |