Chromium Code Reviews| 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); |