123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- // Copyright 2019 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #import "ios/web/find_in_page/find_in_page_request.h"
- #include "ios/web/public/test/fakes/fake_web_frame.h"
- #include "ios/web/public/test/web_test.h"
- #include "testing/gtest/include/gtest/gtest.h"
- #if !defined(__has_feature) || !__has_feature(objc_arc)
- #error "This file requires ARC support."
- #endif
- namespace web {
- class FindInPageRequestTest : public WebTest {
- protected:
- FindInPageRequestTest() {
- auto main_frame = FakeWebFrame::CreateMainWebFrame(GURL::EmptyGURL());
- request_.AddFrame(main_frame.get());
- auto frame_with_two_matches =
- FakeWebFrame::CreateChildWebFrame(GURL::EmptyGURL());
- request_.AddFrame(frame_with_two_matches.get());
- request_.Reset(@"foo", 2);
- request_.SetMatchCountForFrame(1, kMainFakeFrameId);
- request_.SetMatchCountForFrame(2, kChildFakeFrameId);
- }
- FindInPageRequest request_;
- };
- // Tests that FindInPageRequest properly clears its properties in respond to a
- // Reset() call.
- TEST_F(FindInPageRequestTest, Reset) {
- EXPECT_EQ(3, request_.GetTotalMatchCount());
- EXPECT_TRUE(request_.GoToFirstMatch());
- EXPECT_EQ(0, request_.GetCurrentSelectedMatchFrameIndex());
- EXPECT_EQ(1, request_.GetMatchCountForSelectedFrame());
- int request_id = request_.GetRequestId();
- request_.Reset(@"foobar", 2);
- EXPECT_GE(request_.GetRequestId(), request_id);
- EXPECT_EQ(-1, request_.GetCurrentSelectedMatchFrameIndex());
- EXPECT_EQ(@"foobar", request_.GetRequestQuery());
- EXPECT_EQ(0, request_.GetTotalMatchCount());
- EXPECT_EQ(-1, request_.GetMatchCountForSelectedFrame());
- }
- // Tests that FindinPageRequest properly decrements |pending_frame_call_count_|
- // properly.
- TEST_F(FindInPageRequestTest, AllFindResponsesReturned) {
- request_.DidReceiveFindResponseFromOneFrame();
- EXPECT_FALSE(request_.AreAllFindResponsesReturned());
- request_.DidReceiveFindResponseFromOneFrame();
- EXPECT_TRUE(request_.AreAllFindResponsesReturned());
- }
- // Tests that FindInPageRequest GoToNextMatch() is able to traverse all matches
- // in multiple frames.
- TEST_F(FindInPageRequestTest, GoToNext) {
- request_.GoToFirstMatch();
- EXPECT_EQ(0, request_.GetCurrentSelectedMatchFrameIndex());
- EXPECT_EQ(0, request_.GetCurrentSelectedMatchPageIndex());
- request_.GoToNextMatch();
- EXPECT_EQ(0, request_.GetCurrentSelectedMatchFrameIndex());
- EXPECT_EQ(1, request_.GetCurrentSelectedMatchPageIndex());
- request_.GoToNextMatch();
- EXPECT_EQ(1, request_.GetCurrentSelectedMatchFrameIndex());
- EXPECT_EQ(2, request_.GetCurrentSelectedMatchPageIndex());
- request_.GoToNextMatch();
- EXPECT_EQ(0, request_.GetCurrentSelectedMatchFrameIndex());
- EXPECT_EQ(0, request_.GetCurrentSelectedMatchPageIndex());
- }
- // Tests that FindInPageRequest GoToPreviousMatch() is able to traverse all
- // matches in multiple frames.
- TEST_F(FindInPageRequestTest, GoToPrevious) {
- request_.GoToFirstMatch();
- EXPECT_EQ(0, request_.GetCurrentSelectedMatchFrameIndex());
- EXPECT_EQ(0, request_.GetCurrentSelectedMatchPageIndex());
- request_.GoToPreviousMatch();
- EXPECT_EQ(1, request_.GetCurrentSelectedMatchFrameIndex());
- EXPECT_EQ(2, request_.GetCurrentSelectedMatchPageIndex());
- request_.GoToPreviousMatch();
- EXPECT_EQ(0, request_.GetCurrentSelectedMatchFrameIndex());
- EXPECT_EQ(1, request_.GetCurrentSelectedMatchPageIndex());
- request_.GoToPreviousMatch();
- EXPECT_EQ(0, request_.GetCurrentSelectedMatchFrameIndex());
- EXPECT_EQ(0, request_.GetCurrentSelectedMatchPageIndex());
- }
- // Tests that FindInPageRequest returns the correct relative match count within
- // a frame and total match count when traversing matches in multiple frames.
- TEST_F(FindInPageRequestTest, RelativeMatchCount) {
- request_.GoToFirstMatch();
- EXPECT_EQ(3, request_.GetTotalMatchCount());
- EXPECT_EQ(1, request_.GetMatchCountForSelectedFrame());
- request_.GoToNextMatch();
- EXPECT_EQ(3, request_.GetTotalMatchCount());
- EXPECT_EQ(2, request_.GetMatchCountForSelectedFrame());
- }
- // Tests that FindInPageRequest returns the correct relative match count within
- // a frame and total match count when a frame is removed. Also tests that going
- // to the next match after removing the currently selected frame produces the
- // expected relative and total selected match index.
- TEST_F(FindInPageRequestTest, RemoveFrame) {
- request_.GoToFirstMatch();
- EXPECT_EQ(3, request_.GetTotalMatchCount());
- EXPECT_EQ(1, request_.GetMatchCountForSelectedFrame());
- request_.RemoveFrame(kMainFakeFrameId);
- EXPECT_EQ(2, request_.GetTotalMatchCount());
- request_.GoToNextMatch();
- EXPECT_EQ(0, request_.GetCurrentSelectedMatchFrameIndex());
- EXPECT_EQ(0, request_.GetCurrentSelectedMatchPageIndex());
- }
- // Tests that FindInPageRequest returns the correct relative match count within
- // a frame and total match count when the match count for the currently selected
- // frame changes.
- TEST_F(FindInPageRequestTest, SetMatchCountForSelectedFrame) {
- request_.GoToFirstMatch();
- request_.SetMatchCountForSelectedFrame(5);
- EXPECT_EQ(7, request_.GetTotalMatchCount());
- EXPECT_EQ(5, request_.GetMatchCountForSelectedFrame());
- }
- // Tests that FindInPageRequest returns the currently selected match index
- // relative to the frame and the total are correct when the total matches and
- // the relative match index change.
- TEST_F(FindInPageRequestTest, SetCurrentSelectedMatchIndex) {
- request_.GoToFirstMatch();
- request_.SetMatchCountForSelectedFrame(5);
- request_.SetCurrentSelectedMatchFrameIndex(1);
- EXPECT_EQ(1, request_.GetCurrentSelectedMatchFrameIndex());
- EXPECT_EQ(1, request_.GetCurrentSelectedMatchPageIndex());
- }
- // Tests that FindInPageRequest returns the correct match count within
- // a frame and total match count when the match count for a not currently
- // selected frame changes.
- TEST_F(FindInPageRequestTest, SetMatchCountForFrame) {
- request_.GoToFirstMatch();
- EXPECT_EQ(3, request_.GetTotalMatchCount());
- EXPECT_EQ(1, request_.GetMatchCountForSelectedFrame());
- request_.SetMatchCountForFrame(5, kChildFakeFrameId);
- EXPECT_EQ(6, request_.GetTotalMatchCount());
- EXPECT_EQ(1, request_.GetMatchCountForSelectedFrame());
- }
- } // namespace web
|