Index: ios/chrome/browser/ui/history/history_search_view_controller.mm |
diff --git a/ios/chrome/browser/ui/history/history_search_view_controller.mm b/ios/chrome/browser/ui/history/history_search_view_controller.mm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5d30562461508011877ee3f429d31d25d5f0d12b |
--- /dev/null |
+++ b/ios/chrome/browser/ui/history/history_search_view_controller.mm |
@@ -0,0 +1,79 @@ |
+// Copyright 2016 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/chrome/browser/ui/history/history_search_view_controller.h" |
+ |
+#include "base/ios/weak_nsobject.h" |
+#include "base/mac/scoped_nsobject.h" |
+#import "ios/chrome/browser/ui/history/history_search_view.h" |
+ |
+@interface HistorySearchViewController ()<UITextFieldDelegate> { |
+ // Delegate for forwarding interactions with the search view. |
+ base::WeakNSProtocol<id<HistorySearchViewControllerDelegate>> _delegate; |
+ // View displayed by the HistorySearchViewController |
+ base::scoped_nsobject<HistorySearchView> _searchView; |
+} |
+ |
+// Action for the cancel button. |
+- (void)cancelButtonClicked:(id)sender; |
+ |
+@end |
+ |
+@implementation HistorySearchViewController |
+ |
+@synthesize enabled = _enabled; |
+ |
+- (void)loadView { |
+ _searchView.reset([[HistorySearchView alloc] init]); |
+ [_searchView setSearchBarDelegate:self]; |
+ [_searchView setCancelTarget:self action:@selector(cancelButtonClicked:)]; |
+ self.view = _searchView; |
+} |
+ |
+- (void)viewDidAppear:(BOOL)animated { |
+ [super viewDidAppear:animated]; |
+ [_searchView becomeFirstResponder]; |
+} |
+ |
+- (void)setDelegate:(id<HistorySearchViewControllerDelegate>)delegate { |
+ _delegate.reset(delegate); |
+} |
+ |
+- (id<HistorySearchViewControllerDelegate>)delegate { |
+ return _delegate; |
+} |
+ |
+- (void)setEnabled:(BOOL)enabled { |
+ _enabled = enabled; |
+ [_searchView setEnabled:enabled]; |
+} |
+ |
+- (void)cancelButtonClicked:(id)sender { |
+ [_searchView clearText]; |
+ [_searchView endEditing:YES]; |
+ [self.delegate historySearchViewControllerDidCancel:self]; |
+} |
+ |
+#pragma mark - UITextFieldDelegate |
+ |
+- (BOOL)textField:(UITextField*)textField |
+ shouldChangeCharactersInRange:(NSRange)range |
+ replacementString:(NSString*)string { |
+ NSMutableString* text = [NSMutableString stringWithString:[textField text]]; |
+ [text replaceCharactersInRange:range withString:string]; |
+ [self.delegate historySearchViewController:self didRequestSearchForTerm:text]; |
+ return YES; |
+} |
+ |
+- (BOOL)textFieldShouldClear:(UITextField*)textField { |
+ [self.delegate historySearchViewController:self didRequestSearchForTerm:@""]; |
+ return YES; |
+} |
+ |
+- (BOOL)textFieldShouldReturn:(UITextField*)textField { |
+ [textField resignFirstResponder]; |
+ return YES; |
+} |
+ |
+@end |