| 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 a9fbdd44bd4fdca2e423dea7113601938e41478c..7242f225202833f92d52ce6c06fe41aeb562b8e0 100644
|
| --- a/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
|
| +++ b/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
|
| @@ -3716,6 +3716,7 @@ public:
|
| FindUpdateWebFrameClient()
|
| : m_findResultsAreReady(false)
|
| , m_count(-1)
|
| + , m_activeIndex(-1)
|
| {
|
| }
|
|
|
| @@ -3726,12 +3727,19 @@ public:
|
| m_findResultsAreReady = true;
|
| }
|
|
|
| + void reportFindInPageSelection(int, int activeMatchOrdinal, const WebRect&) override
|
| + {
|
| + m_activeIndex = activeMatchOrdinal;
|
| + }
|
| +
|
| bool findResultsAreReady() const { return m_findResultsAreReady; }
|
| int count() const { return m_count; }
|
| + int activeIndex() const { return m_activeIndex; }
|
|
|
| private:
|
| bool m_findResultsAreReady;
|
| int m_count;
|
| + int m_activeIndex;
|
| };
|
|
|
| TEST_P(ParameterizedWebFrameTest, FindInPageMatchRects)
|
| @@ -3854,6 +3862,54 @@ TEST_P(ParameterizedWebFrameTest, FindInPageMatchRects)
|
| EXPECT_TRUE(mainFrame->findMatchMarkersVersion() != rectsVersion);
|
| }
|
|
|
| +TEST_F(WebFrameTest, FindInPageActiveIndex)
|
| +{
|
| + registerMockedHttpURLLoad("find_match_count.html");
|
| +
|
| + FindUpdateWebFrameClient client;
|
| + FrameTestHelpers::WebViewHelper webViewHelper;
|
| + webViewHelper.initializeAndLoad(m_baseURL + "find_match_count.html", true, &client);
|
| + webViewHelper.webView()->resize(WebSize(640, 480));
|
| + runPendingTasks();
|
| +
|
| + const char* kFindString = "a";
|
| + const int kFindIdentifier = 7777;
|
| + const int kActiveIndex = 1;
|
| +
|
| + WebFindOptions options;
|
| + WebString searchText = WebString::fromUTF8(kFindString);
|
| + WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()->mainFrame());
|
| + EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchText, options, false, 0));
|
| + mainFrame->resetMatchCount();
|
| +
|
| + for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false))
|
| + frame->toWebLocalFrame()->scopeStringMatches(kFindIdentifier, searchText, options, true);
|
| +
|
| + runPendingTasks();
|
| + EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchText, options, false, 0));
|
| + mainFrame->stopFinding(true);
|
| +
|
| + for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false))
|
| + frame->toWebLocalFrame()->scopeStringMatches(kFindIdentifier, searchText, options, true);
|
| +
|
| + runPendingTasks();
|
| + EXPECT_TRUE(client.findResultsAreReady());
|
| + EXPECT_EQ(kActiveIndex, client.activeIndex());
|
| +
|
| + const char* kFindStringNew = "e";
|
| + WebString searchTextNew = WebString::fromUTF8(kFindStringNew);
|
| +
|
| + EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchTextNew, options, false, 0));
|
| + mainFrame->resetMatchCount();
|
| +
|
| + for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false))
|
| + frame->toWebLocalFrame()->scopeStringMatches(kFindIdentifier, searchTextNew, options, true);
|
| +
|
| + runPendingTasks();
|
| + EXPECT_TRUE(client.findResultsAreReady());
|
| + EXPECT_EQ(kActiveIndex, client.activeIndex());
|
| +}
|
| +
|
| TEST_P(ParameterizedWebFrameTest, FindInPageSkipsHiddenFrames)
|
| {
|
| registerMockedHttpURLLoad("find_in_hidden_frame.html");
|
|
|