Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(279)

Unified Diff: third_party/WebKit/Source/web/tests/WebFrameTest.cpp

Issue 1605863002: Restart search in page when new text is found. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: small clean up Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698