Index: third_party/WebKit/Source/web/tests/WebFrameTest.cpp |
diff --git a/third_party/WebKit/Source/web/tests/WebFrameTest.cpp b/third_party/WebKit/Source/web/tests/WebFrameTest.cpp |
index ebac6d19372074dda82e060a58b5c4647c5757ff..9695bc8d052728eefa86928fa130af75e0bbe7f5 100644 |
--- a/third_party/WebKit/Source/web/tests/WebFrameTest.cpp |
+++ b/third_party/WebKit/Source/web/tests/WebFrameTest.cpp |
@@ -3567,7 +3567,7 @@ TEST_P(ParameterizedWebFrameTest, FindInPage) |
WebFindOptions options; |
// Find in a <div> element. |
- EXPECT_TRUE(frame->find(findIdentifier, WebString::fromUTF8("bar1"), options, false, 0)); |
+ EXPECT_TRUE(frame->find(findIdentifier, WebString::fromUTF8("bar1"), options, false, 0, nullptr)); |
frame->stopFinding(false); |
WebRange range = frame->selectionRange(); |
EXPECT_EQ(5, range.startOffset()); |
@@ -3575,7 +3575,7 @@ TEST_P(ParameterizedWebFrameTest, FindInPage) |
EXPECT_TRUE(frame->document().focusedElement().isNull()); |
// Find in an <input> value. |
- EXPECT_TRUE(frame->find(findIdentifier, WebString::fromUTF8("bar2"), options, false, 0)); |
+ EXPECT_TRUE(frame->find(findIdentifier, WebString::fromUTF8("bar2"), options, false, 0, nullptr)); |
// Confirm stopFinding(false) sets the selection on the found text. |
frame->stopFinding(false); |
range = frame->selectionRange(); |
@@ -3585,7 +3585,7 @@ TEST_P(ParameterizedWebFrameTest, FindInPage) |
EXPECT_TRUE(frame->document().focusedElement().hasHTMLTagName("input")); |
// Find in a <textarea> content. |
- EXPECT_TRUE(frame->find(findIdentifier, WebString::fromUTF8("bar3"), options, false, 0)); |
+ EXPECT_TRUE(frame->find(findIdentifier, WebString::fromUTF8("bar3"), options, false, 0, nullptr)); |
// Confirm stopFinding(false) sets the selection on the found text. |
frame->stopFinding(false); |
range = frame->selectionRange(); |
@@ -3595,7 +3595,7 @@ TEST_P(ParameterizedWebFrameTest, FindInPage) |
EXPECT_TRUE(frame->document().focusedElement().hasHTMLTagName("textarea")); |
// Find in a contentEditable element. |
- EXPECT_TRUE(frame->find(findIdentifier, WebString::fromUTF8("bar4"), options, false, 0)); |
+ EXPECT_TRUE(frame->find(findIdentifier, WebString::fromUTF8("bar4"), options, false, 0, nullptr)); |
// Confirm stopFinding(false) sets the selection on the found text. |
frame->stopFinding(false); |
range = frame->selectionRange(); |
@@ -3606,7 +3606,7 @@ TEST_P(ParameterizedWebFrameTest, FindInPage) |
EXPECT_TRUE(frame->document().focusedElement().hasHTMLTagName("div")); |
// Find in <select> content. |
- EXPECT_FALSE(frame->find(findIdentifier, WebString::fromUTF8("bar5"), options, false, 0)); |
+ EXPECT_FALSE(frame->find(findIdentifier, WebString::fromUTF8("bar5"), options, false, 0, nullptr)); |
// If there are any matches, stopFinding will set the selection on the found text. |
// However, we do not expect any matches, so check that the selection is null. |
frame->stopFinding(false); |
@@ -3753,7 +3753,7 @@ TEST_P(ParameterizedWebFrameTest, FindInPageMatchRects) |
WebFindOptions options; |
WebString searchText = WebString::fromUTF8(kFindString); |
WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()->mainFrame()); |
- EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchText, options, false, 0)); |
+ EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchText, options, false, 0, nullptr)); |
mainFrame->resetMatchCount(); |
@@ -3869,7 +3869,7 @@ TEST_P(ParameterizedWebFrameTest, FindInPageSkipsHiddenFrames) |
WebFindOptions options; |
WebString searchText = WebString::fromUTF8(kFindString); |
WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()->mainFrame()); |
- EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchText, options, false, 0)); |
+ EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchText, options, false, 0, nullptr)); |
mainFrame->resetMatchCount(); |
@@ -3904,8 +3904,8 @@ TEST_P(ParameterizedWebFrameTest, FindOnDetachedFrame) |
// Detach the frame before finding. |
removeElementById(mainFrame, "frame"); |
- EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchText, options, false, 0)); |
- EXPECT_FALSE(secondFrame->find(kFindIdentifier, searchText, options, false, 0)); |
+ EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchText, options, false, 0, nullptr)); |
+ EXPECT_FALSE(secondFrame->find(kFindIdentifier, searchText, options, false, 0, nullptr)); |
runPendingTasks(); |
EXPECT_FALSE(client.findResultsAreReady()); |
@@ -3940,7 +3940,7 @@ TEST_P(ParameterizedWebFrameTest, FindDetachFrameBeforeScopeStrings) |
RefPtrWillBeRawPtr<LocalFrame> holdSecondFrame(secondFrame->frame()); |
for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) |
- EXPECT_TRUE(frame->find(kFindIdentifier, searchText, options, false, 0)); |
+ EXPECT_TRUE(frame->find(kFindIdentifier, searchText, options, false, 0, nullptr)); |
runPendingTasks(); |
EXPECT_FALSE(client.findResultsAreReady()); |
@@ -3978,7 +3978,7 @@ TEST_P(ParameterizedWebFrameTest, FindDetachFrameWhileScopingStrings) |
RefPtrWillBeRawPtr<LocalFrame> holdSecondFrame(secondFrame->frame()); |
for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) |
- EXPECT_TRUE(frame->find(kFindIdentifier, searchText, options, false, 0)); |
+ EXPECT_TRUE(frame->find(kFindIdentifier, searchText, options, false, 0, nullptr)); |
runPendingTasks(); |
EXPECT_FALSE(client.findResultsAreReady()); |
@@ -4016,7 +4016,7 @@ TEST_P(ParameterizedWebFrameTest, ResetMatchCount) |
EXPECT_TRUE(!!mainFrame->traverseNext(false)); |
for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) { |
- EXPECT_FALSE(frame->find(kFindIdentifier, searchText, options, false, 0)); |
+ EXPECT_FALSE(frame->find(kFindIdentifier, searchText, options, false, 0, nullptr)); |
} |
runPendingTasks(); |
@@ -4041,7 +4041,7 @@ TEST_P(ParameterizedWebFrameTest, SetTickmarks) |
WebFindOptions options; |
WebString searchText = WebString::fromUTF8(kFindString); |
WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()->mainFrame()); |
- EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchText, options, false, 0)); |
+ EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchText, options, false, 0, nullptr)); |
mainFrame->resetMatchCount(); |
mainFrame->scopeStringMatches(kFindIdentifier, searchText, options, true); |
@@ -4078,6 +4078,51 @@ TEST_P(ParameterizedWebFrameTest, SetTickmarks) |
EXPECT_EQ(originalTickmarks, originalTickmarksAfterReset); |
} |
+TEST_P(ParameterizedWebFrameTest, FindInPageJavaScriptUpdatesDOM) |
+{ |
+ registerMockedHttpURLLoad("find.html"); |
+ |
+ FindUpdateWebFrameClient client; |
+ FrameTestHelpers::WebViewHelper webViewHelper(this); |
+ webViewHelper.initializeAndLoad(m_baseURL + "find.html", true, &client); |
+ webViewHelper.resize(WebSize(640, 480)); |
+ runPendingTasks(); |
+ |
+ WebFrame* frame = webViewHelper.webView()->mainFrame(); |
+ const int findIdentifier = 12345; |
+ static const char* kFindString = "foo"; |
+ WebString searchText = WebString::fromUTF8(kFindString); |
+ WebFindOptions options; |
+ bool activeNow; |
+ |
+ frame->resetMatchCount(); |
+ frame->scopeStringMatches(findIdentifier, searchText, options, true); |
+ runPendingTasks(); |
+ EXPECT_TRUE(client.findResultsAreReady()); |
+ |
+ // Find in a <div> element. |
+ options.findNext = true; |
+ EXPECT_TRUE(frame->find(findIdentifier, searchText, options, false, 0, &activeNow)); |
+ EXPECT_TRUE(activeNow); |
+ |
+ // Insert new text, which contains occurence of |searchText|. |
+ frame->executeScript( |
+ WebScriptSource("document.body.insertBefore(document.createTextNode('bar5 foo5'), document.getElementsByTagName('textarea')[0]);")); |
Finnur
2016/01/29 17:47:50
Nit: I would probably try to break this up into mo
dvadym
2016/02/01 12:41:10
Done.
|
+ |
+ // Find in a <input> element. |
+ EXPECT_TRUE(frame->find(findIdentifier, searchText, options, false, 0, &activeNow)); |
+ EXPECT_TRUE(activeNow); |
+ |
+ // Find in the inserted text node. |
+ EXPECT_TRUE(frame->find(findIdentifier, searchText, options, false, 0, &activeNow)); |
+ frame->stopFinding(false); |
+ WebRange range = frame->selectionRange(); |
+ EXPECT_EQ(5, range.startOffset()); |
+ EXPECT_EQ(8, range.endOffset()); |
+ EXPECT_TRUE(frame->document().focusedElement().isNull()); |
+ EXPECT_FALSE(activeNow); |
+} |
+ |
static WebPoint topLeft(const WebRect& rect) |
{ |
return WebPoint(rect.x, rect.y); |