| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "config.h" | 5 #include "config.h" |
| 6 | 6 |
| 7 #include "web/TextFinder.h" | 7 #include "web/TextFinder.h" |
| 8 | 8 |
| 9 #include "bindings/v8/ExceptionStatePlaceholder.h" | 9 #include "bindings/v8/ExceptionStatePlaceholder.h" |
| 10 #include "core/dom/Document.h" | 10 #include "core/dom/Document.h" |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 bool wrapWithinFrame = true; | 142 bool wrapWithinFrame = true; |
| 143 WebRect* selectionRect = 0; | 143 WebRect* selectionRect = 0; |
| 144 | 144 |
| 145 EXPECT_FALSE(textFinder().find(identifier, searchText, findOptions, wrapWith
inFrame, selectionRect)); | 145 EXPECT_FALSE(textFinder().find(identifier, searchText, findOptions, wrapWith
inFrame, selectionRect)); |
| 146 EXPECT_FALSE(textFinder().activeMatch()); | 146 EXPECT_FALSE(textFinder().activeMatch()); |
| 147 } | 147 } |
| 148 | 148 |
| 149 TEST_F(TextFinderTest, FindTextInShadowDOM) | 149 TEST_F(TextFinderTest, FindTextInShadowDOM) |
| 150 { | 150 { |
| 151 document().body()->setInnerHTML("<b>FOO</b><i>foo</i>", ASSERT_NO_EXCEPTION)
; | 151 document().body()->setInnerHTML("<b>FOO</b><i>foo</i>", ASSERT_NO_EXCEPTION)
; |
| 152 RefPtr<ShadowRoot> shadowRoot = document().body()->createShadowRoot(ASSERT_N
O_EXCEPTION); | 152 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = document().body()->createShadowR
oot(ASSERT_NO_EXCEPTION); |
| 153 shadowRoot->setInnerHTML("<content select=\"i\"></content><u>Foo</u><content
></content>", ASSERT_NO_EXCEPTION); | 153 shadowRoot->setInnerHTML("<content select=\"i\"></content><u>Foo</u><content
></content>", ASSERT_NO_EXCEPTION); |
| 154 Node* textInBElement = document().body()->firstChild()->firstChild(); | 154 Node* textInBElement = document().body()->firstChild()->firstChild(); |
| 155 Node* textInIElement = document().body()->lastChild()->firstChild(); | 155 Node* textInIElement = document().body()->lastChild()->firstChild(); |
| 156 Node* textInUElement = shadowRoot->childNodes()->item(1)->firstChild(); | 156 Node* textInUElement = shadowRoot->childNodes()->item(1)->firstChild(); |
| 157 | 157 |
| 158 int identifier = 0; | 158 int identifier = 0; |
| 159 WebString searchText(String("foo")); | 159 WebString searchText(String("foo")); |
| 160 WebFindOptions findOptions; // Default. | 160 WebFindOptions findOptions; // Default. |
| 161 bool wrapWithinFrame = true; | 161 bool wrapWithinFrame = true; |
| 162 WebRect* selectionRect = 0; | 162 WebRect* selectionRect = 0; |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 255 WebVector<WebFloatRect> matchRects; | 255 WebVector<WebFloatRect> matchRects; |
| 256 textFinder().findMatchRects(matchRects); | 256 textFinder().findMatchRects(matchRects); |
| 257 ASSERT_EQ(2u, matchRects.size()); | 257 ASSERT_EQ(2u, matchRects.size()); |
| 258 EXPECT_EQ(findInPageRect(textNode, 4, textNode, 10), matchRects[0]); | 258 EXPECT_EQ(findInPageRect(textNode, 4, textNode, 10), matchRects[0]); |
| 259 EXPECT_EQ(findInPageRect(textNode, 14, textNode, 20), matchRects[1]); | 259 EXPECT_EQ(findInPageRect(textNode, 14, textNode, 20), matchRects[1]); |
| 260 } | 260 } |
| 261 | 261 |
| 262 TEST_F(TextFinderTest, ScopeTextMatchesWithShadowDOM) | 262 TEST_F(TextFinderTest, ScopeTextMatchesWithShadowDOM) |
| 263 { | 263 { |
| 264 document().body()->setInnerHTML("<b>FOO</b><i>foo</i>", ASSERT_NO_EXCEPTION)
; | 264 document().body()->setInnerHTML("<b>FOO</b><i>foo</i>", ASSERT_NO_EXCEPTION)
; |
| 265 RefPtr<ShadowRoot> shadowRoot = document().body()->createShadowRoot(ASSERT_N
O_EXCEPTION); | 265 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = document().body()->createShadowR
oot(ASSERT_NO_EXCEPTION); |
| 266 shadowRoot->setInnerHTML("<content select=\"i\"></content><u>Foo</u><content
></content>", ASSERT_NO_EXCEPTION); | 266 shadowRoot->setInnerHTML("<content select=\"i\"></content><u>Foo</u><content
></content>", ASSERT_NO_EXCEPTION); |
| 267 Node* textInBElement = document().body()->firstChild()->firstChild(); | 267 Node* textInBElement = document().body()->firstChild()->firstChild(); |
| 268 Node* textInIElement = document().body()->lastChild()->firstChild(); | 268 Node* textInIElement = document().body()->lastChild()->firstChild(); |
| 269 Node* textInUElement = shadowRoot->childNodes()->item(1)->firstChild(); | 269 Node* textInUElement = shadowRoot->childNodes()->item(1)->firstChild(); |
| 270 | 270 |
| 271 int identifier = 0; | 271 int identifier = 0; |
| 272 WebString searchText(String("fOO")); | 272 WebString searchText(String("fOO")); |
| 273 WebFindOptions findOptions; // Default. | 273 WebFindOptions findOptions; // Default. |
| 274 | 274 |
| 275 textFinder().resetMatchCount(); | 275 textFinder().resetMatchCount(); |
| 276 textFinder().scopeStringMatches(identifier, searchText, findOptions, true); | 276 textFinder().scopeStringMatches(identifier, searchText, findOptions, true); |
| 277 while (textFinder().scopingInProgress()) | 277 while (textFinder().scopingInProgress()) |
| 278 FrameTestHelpers::runPendingTasks(); | 278 FrameTestHelpers::runPendingTasks(); |
| 279 | 279 |
| 280 // TextIterator currently returns the matches in the document order, instead
of the visual order. It visits | 280 // TextIterator currently returns the matches in the document order, instead
of the visual order. It visits |
| 281 // the shadow roots first, so in this case the matches will be returned in t
he order of <u> -> <b> -> <i>. | 281 // the shadow roots first, so in this case the matches will be returned in t
he order of <u> -> <b> -> <i>. |
| 282 EXPECT_EQ(3, textFinder().totalMatchCount()); | 282 EXPECT_EQ(3, textFinder().totalMatchCount()); |
| 283 WebVector<WebFloatRect> matchRects; | 283 WebVector<WebFloatRect> matchRects; |
| 284 textFinder().findMatchRects(matchRects); | 284 textFinder().findMatchRects(matchRects); |
| 285 ASSERT_EQ(3u, matchRects.size()); | 285 ASSERT_EQ(3u, matchRects.size()); |
| 286 EXPECT_EQ(findInPageRect(textInUElement, 0, textInUElement, 3), matchRects[0
]); | 286 EXPECT_EQ(findInPageRect(textInUElement, 0, textInUElement, 3), matchRects[0
]); |
| 287 EXPECT_EQ(findInPageRect(textInBElement, 0, textInBElement, 3), matchRects[1
]); | 287 EXPECT_EQ(findInPageRect(textInBElement, 0, textInBElement, 3), matchRects[1
]); |
| 288 EXPECT_EQ(findInPageRect(textInIElement, 0, textInIElement, 3), matchRects[2
]); | 288 EXPECT_EQ(findInPageRect(textInIElement, 0, textInIElement, 3), matchRects[2
]); |
| 289 } | 289 } |
| 290 | 290 |
| 291 } // namespace | 291 } // namespace |
| OLD | NEW |