Index: ios/chrome/browser/find_in_page/find_tab_helper.mm |
diff --git a/ios/chrome/browser/find_in_page/find_tab_helper.mm b/ios/chrome/browser/find_in_page/find_tab_helper.mm |
index 9892712a9bfd8e3ad43c91c8bd96df6d5ca0d5b8..fd68d43ca261c938c245065ec4fa8c886725e36d 100644 |
--- a/ios/chrome/browser/find_in_page/find_tab_helper.mm |
+++ b/ios/chrome/browser/find_in_page/find_tab_helper.mm |
@@ -5,6 +5,7 @@ |
#import "ios/chrome/browser/find_in_page/find_tab_helper.h" |
#import "ios/chrome/browser/find_in_page/find_in_page_controller.h" |
+#import "ios/chrome/browser/find_in_page/find_in_page_model.h" |
#if !defined(__has_feature) || !__has_feature(objc_arc) |
#error "This file requires ARC support." |
@@ -25,21 +26,75 @@ void FindTabHelper::CreateForWebState( |
FindTabHelper::FindTabHelper( |
web::WebState* web_state, |
- id<FindInPageControllerDelegate> controller_delegate) { |
- controller_ = |
- [[FindInPageController alloc] initWithWebState:web_state |
- delegate:controller_delegate]; |
+ id<FindInPageControllerDelegate> controller_delegate) |
+ : web::WebStateObserver(web_state) { |
+ controller_.reset([[FindInPageController alloc] |
+ initWithWebState:web_state |
+ delegate:controller_delegate]); |
} |
FindTabHelper::~FindTabHelper() {} |
-FindInPageController* FindTabHelper::GetController() { |
- return controller_; |
+void FindTabHelper::StartFinding(NSString* search_term, |
+ FindInPageCompletionBlock completion) { |
+ [controller_ findStringInPage:search_term |
+ completionHandler:^{ |
+ FindInPageModel* model = controller_.get().findInPageModel; |
+ completion(model); |
+ }]; |
+} |
+ |
+void FindTabHelper::ContinueFinding(FindDirection direction, |
+ FindInPageCompletionBlock completion) { |
+ FindInPageModel* model = controller_.get().findInPageModel; |
+ |
+ if (direction == FORWARD) { |
+ [controller_ findNextStringInPageWithCompletionHandler:^{ |
+ completion(model); |
+ }]; |
+ |
+ } else if (direction == REVERSE) { |
+ [controller_ findPreviousStringInPageWithCompletionHandler:^{ |
+ completion(model); |
+ }]; |
+ |
+ } else { |
+ NOTREACHED(); |
+ } |
+} |
+ |
+void FindTabHelper::StopFinding(ProceduralBlock completion) { |
+ [controller_ disableFindInPageWithCompletionHandler:completion]; |
+ SetFindUIActive(false); |
+} |
+ |
+FindInPageModel* FindTabHelper::GetFindResult() const { |
+ return controller_.get().findInPageModel; |
+} |
+ |
+bool FindTabHelper::CurrentPageSupportsFindInPage() const { |
+ return [controller_ canFindInPage]; |
+} |
+ |
+bool FindTabHelper::IsFindUIActive() const { |
+ return controller_.get().findInPageModel.enabled; |
+} |
+ |
+void FindTabHelper::SetFindUIActive(bool active) { |
+ controller_.get().findInPageModel.enabled = active; |
+} |
+ |
+void FindTabHelper::PersistSearchTerm() { |
+ [controller_ saveSearchTerm]; |
+} |
+ |
+void FindTabHelper::RestoreSearchTerm() { |
+ [controller_ restoreSearchTerm]; |
} |
void FindTabHelper::NavigationItemCommitted( |
const web::LoadCommittedDetails& load_details) { |
- [controller_ disableFindInPageWithCompletionHandler:nil]; |
+ StopFinding(nil); |
} |
void FindTabHelper::WebStateDestroyed() { |