| 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 912a0fd56e72d73e65100a382b85e85963eea718..9d7320693622e308883f075077004e487d277548 100644
|
| --- a/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
|
| +++ b/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
|
| @@ -3569,7 +3569,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());
|
| @@ -3577,7 +3577,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();
|
| @@ -3587,7 +3587,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();
|
| @@ -3597,7 +3597,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();
|
| @@ -3608,7 +3608,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);
|
| @@ -3755,7 +3755,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();
|
|
|
| @@ -3871,7 +3871,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();
|
|
|
| @@ -3906,8 +3906,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());
|
| @@ -3942,7 +3942,7 @@ TEST_P(ParameterizedWebFrameTest, FindDetachFrameBeforeScopeStrings)
|
| RefPtrWillBeRawPtr<LocalFrame> holdSecondFrame(secondFrame->frame());
|
|
|
| for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false))
|
| - EXPECT_TRUE(frame->toWebLocalFrame()->find(kFindIdentifier, searchText, options, false, 0));
|
| + EXPECT_TRUE(frame->toWebLocalFrame()->find(kFindIdentifier, searchText, options, false, 0, nullptr));
|
|
|
| runPendingTasks();
|
| EXPECT_FALSE(client.findResultsAreReady());
|
| @@ -3980,7 +3980,7 @@ TEST_P(ParameterizedWebFrameTest, FindDetachFrameWhileScopingStrings)
|
| RefPtrWillBeRawPtr<LocalFrame> holdSecondFrame(secondFrame->frame());
|
|
|
| for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false))
|
| - EXPECT_TRUE(frame->toWebLocalFrame()->find(kFindIdentifier, searchText, options, false, 0));
|
| + EXPECT_TRUE(frame->toWebLocalFrame()->find(kFindIdentifier, searchText, options, false, 0, nullptr));
|
|
|
| runPendingTasks();
|
| EXPECT_FALSE(client.findResultsAreReady());
|
| @@ -4018,7 +4018,7 @@ TEST_P(ParameterizedWebFrameTest, ResetMatchCount)
|
| EXPECT_TRUE(!!mainFrame->traverseNext(false));
|
|
|
| for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false))
|
| - EXPECT_FALSE(frame->toWebLocalFrame()->find(kFindIdentifier, searchText, options, false, 0));
|
| + EXPECT_FALSE(frame->toWebLocalFrame()->find(kFindIdentifier, searchText, options, false, 0, nullptr));
|
|
|
| runPendingTasks();
|
| EXPECT_FALSE(client.findResultsAreReady());
|
| @@ -4042,7 +4042,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);
|
| @@ -4079,6 +4079,53 @@ 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();
|
| +
|
| + WebLocalFrame* frame = webViewHelper.webView()->mainFrame()->toWebLocalFrame();
|
| + 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(
|
| + "var newTextNode = document.createTextNode('bar5 foo5');"
|
| + "var textArea = document.getElementsByTagName('textarea')[0];"
|
| + "document.body.insertBefore(newTextNode, textArea);"));
|
| +
|
| + // 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);
|
|
|