Commit 4ca29df9 authored by Robbie Gibson's avatar Robbie Gibson Committed by Commit Bot

[iOS] Clean up ToolbarAccessoryPresenter to use ContainedPresenter

This makes things much cleaner because ContainedPresenter automatically
comes with ContainedPresenterDelegate.

This does require the addition of FindBarViewController to wrap
FindBarView as ContainedPresenter only works with view controllers.

This can also remove the |selectText| parameter from
|-showFindBarWithAnimation| because it is only called with |selectText|
as YES.


Bug: 1028938
Change-Id: Ieadd8c24d8d55455a3d07aa91c4ab1f3d8742718
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1960275Reviewed-by: default avatarGauthier Ambard <gambard@chromium.org>
Reviewed-by: default avatarStepan Khapugin <stkhapugin@chromium.org>
Commit-Queue: Robbie Gibson <rkgibson@google.com>
Cr-Commit-Position: refs/heads/master@{#727973}
parent 724c6674
...@@ -91,6 +91,7 @@ ...@@ -91,6 +91,7 @@
#import "ios/chrome/browser/ui/download/download_manager_coordinator.h" #import "ios/chrome/browser/ui/download/download_manager_coordinator.h"
#import "ios/chrome/browser/ui/elements/activity_overlay_coordinator.h" #import "ios/chrome/browser/ui/elements/activity_overlay_coordinator.h"
#import "ios/chrome/browser/ui/find_bar/find_bar_controller_ios.h" #import "ios/chrome/browser/ui/find_bar/find_bar_controller_ios.h"
#import "ios/chrome/browser/ui/find_bar/find_bar_view_controller.h"
#import "ios/chrome/browser/ui/first_run/welcome_to_chrome_view_controller.h" #import "ios/chrome/browser/ui/first_run/welcome_to_chrome_view_controller.h"
#import "ios/chrome/browser/ui/fullscreen/fullscreen_animator.h" #import "ios/chrome/browser/ui/fullscreen/fullscreen_animator.h"
#import "ios/chrome/browser/ui/fullscreen/fullscreen_controller.h" #import "ios/chrome/browser/ui/fullscreen/fullscreen_controller.h"
...@@ -115,6 +116,7 @@ ...@@ -115,6 +116,7 @@
#import "ios/chrome/browser/ui/overscroll_actions/overscroll_actions_controller.h" #import "ios/chrome/browser/ui/overscroll_actions/overscroll_actions_controller.h"
#import "ios/chrome/browser/ui/payments/payment_request_manager.h" #import "ios/chrome/browser/ui/payments/payment_request_manager.h"
#import "ios/chrome/browser/ui/popup_menu/popup_menu_coordinator.h" #import "ios/chrome/browser/ui/popup_menu/popup_menu_coordinator.h"
#include "ios/chrome/browser/ui/presenters/contained_presenter_delegate.h"
#import "ios/chrome/browser/ui/presenters/vertical_animation_container.h" #import "ios/chrome/browser/ui/presenters/vertical_animation_container.h"
#import "ios/chrome/browser/ui/sad_tab/sad_tab_coordinator.h" #import "ios/chrome/browser/ui/sad_tab/sad_tab_coordinator.h"
#import "ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_coordinator.h" #import "ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_coordinator.h"
...@@ -341,6 +343,7 @@ NSString* const kBrowserViewControllerSnackbarCategory = ...@@ -341,6 +343,7 @@ NSString* const kBrowserViewControllerSnackbarCategory =
@interface BrowserViewController () <ActivityServicePresentation, @interface BrowserViewController () <ActivityServicePresentation,
BubblePresenterDelegate, BubblePresenterDelegate,
CaptivePortalDetectorTabHelperDelegate, CaptivePortalDetectorTabHelperDelegate,
ContainedPresenterDelegate,
CRWWebStateDelegate, CRWWebStateDelegate,
CRWWebStateObserver, CRWWebStateObserver,
DialogPresenterDelegate, DialogPresenterDelegate,
...@@ -671,11 +674,9 @@ NSString* const kBrowserViewControllerSnackbarCategory = ...@@ -671,11 +674,9 @@ NSString* const kBrowserViewControllerSnackbarCategory =
- (void)updateFindBar:(BOOL)initialUpdate shouldFocus:(BOOL)shouldFocus; - (void)updateFindBar:(BOOL)initialUpdate shouldFocus:(BOOL)shouldFocus;
// Hide find bar. // Hide find bar.
- (void)hideFindBarWithAnimation:(BOOL)animate; - (void)hideFindBarWithAnimation:(BOOL)animate;
// Shows find bar. If |selectText| is YES, all text inside the Find Bar // Shows find bar. All text inside the Find Bar textfield will be selected. If
// textfield will be selected. If |shouldFocus| is set to YES, the textfield is // |shouldFocus| is set to YES, the textfield is set to be first responder.
// set to be first responder.
- (void)showFindBarWithAnimation:(BOOL)animate - (void)showFindBarWithAnimation:(BOOL)animate
selectText:(BOOL)selectText
shouldFocus:(BOOL)shouldFocus; shouldFocus:(BOOL)shouldFocus;
// Alerts // Alerts
...@@ -2464,7 +2465,6 @@ NSString* const kBrowserViewControllerSnackbarCategory = ...@@ -2464,7 +2465,6 @@ NSString* const kBrowserViewControllerSnackbarCategory =
auto* findHelper = FindTabHelper::FromWebState(webState); auto* findHelper = FindTabHelper::FromWebState(webState);
if (findHelper && findHelper->IsFindUIActive()) { if (findHelper && findHelper->IsFindUIActive()) {
[self showFindBarWithAnimation:NO [self showFindBarWithAnimation:NO
selectText:YES
shouldFocus:[self.findBarController isFocused]]; shouldFocus:[self.findBarController isFocused]];
} }
...@@ -2573,36 +2573,23 @@ NSString* const kBrowserViewControllerSnackbarCategory = ...@@ -2573,36 +2573,23 @@ NSString* const kBrowserViewControllerSnackbarCategory =
- (void)hideFindBarWithAnimation:(BOOL)animate { - (void)hideFindBarWithAnimation:(BOOL)animate {
[self.findBarController findBarViewWillHide]; [self.findBarController findBarViewWillHide];
[self.toolbarAccessoryPresenter [self.toolbarAccessoryPresenter dismissAnimated:animate];
hideToolbarAccessoryViewAnimated:animate
completion:^() {
[self.findBarController findBarViewDidHide];
}];
} }
- (void)showFindBarWithAnimation:(BOOL)animate - (void)showFindBarWithAnimation:(BOOL)animate
selectText:(BOOL)selectText
shouldFocus:(BOOL)shouldFocus { shouldFocus:(BOOL)shouldFocus {
DCHECK(self.findBarController); DCHECK(self.findBarController);
if (!self.toolbarAccessoryPresenter) { if (!self.toolbarAccessoryPresenter) {
self.toolbarAccessoryPresenter = [[ToolbarAccessoryPresenter alloc] self.toolbarAccessoryPresenter =
initWithBaseViewController:self [[ToolbarAccessoryPresenter alloc] initWithIsIncognito:_isOffTheRecord];
isIncognito:_isOffTheRecord]; self.toolbarAccessoryPresenter.delegate = self;
} self.toolbarAccessoryPresenter.baseViewController = self;
}
UIView* findBarView = [self.findBarController
createFindBarViewWithDarkAppearance:_isOffTheRecord];
__weak __typeof(self) weakSelf = self;
[self.toolbarAccessoryPresenter
addToolbarAccessoryView:findBarView
animated:animate
completion:^() {
__strong __typeof(self) strongSelf = weakSelf;
if (selectText) {
[strongSelf.findBarController selectAllText];
}
}];
self.toolbarAccessoryPresenter.presentedViewController =
self.findBarController.findBarViewController;
[self.toolbarAccessoryPresenter prepareForPresentation];
[self.toolbarAccessoryPresenter presentAnimated:animate];
[self updateFindBar:YES shouldFocus:shouldFocus]; [self updateFindBar:YES shouldFocus:shouldFocus];
} }
...@@ -3017,6 +3004,16 @@ NSString* const kBrowserViewControllerSnackbarCategory = ...@@ -3017,6 +3004,16 @@ NSString* const kBrowserViewControllerSnackbarCategory =
[self.dispatcher showSavedPasswordsSettingsFromViewController:self]; [self.dispatcher showSavedPasswordsSettingsFromViewController:self];
} }
#pragma mark - ContainedPresenterDelegate methods.
- (void)containedPresenterDidPresent:(id<ContainedPresenter>)presenter {
[self.findBarController selectAllText];
}
- (void)containedPresenterDidDismiss:(id<ContainedPresenter>)presenter {
[self.findBarController findBarViewDidHide];
}
#pragma mark - CRWWebStateDelegate methods. #pragma mark - CRWWebStateDelegate methods.
- (web::WebState*)webState:(web::WebState*)webState - (web::WebState*)webState:(web::WebState*)webState
...@@ -4137,7 +4134,7 @@ NSString* const kBrowserViewControllerSnackbarCategory = ...@@ -4137,7 +4134,7 @@ NSString* const kBrowserViewControllerSnackbarCategory =
DCHECK(!helper->IsFindUIActive()); DCHECK(!helper->IsFindUIActive());
helper->SetResponseDelegate(self); helper->SetResponseDelegate(self);
helper->SetFindUIActive(true); helper->SetFindUIActive(true);
[self showFindBarWithAnimation:YES selectText:YES shouldFocus:YES]; [self showFindBarWithAnimation:YES shouldFocus:YES];
} }
- (void)closeFindInPage { - (void)closeFindInPage {
......
...@@ -9,6 +9,8 @@ source_set("find_bar") { ...@@ -9,6 +9,8 @@ source_set("find_bar") {
"find_bar_controller_ios.mm", "find_bar_controller_ios.mm",
"find_bar_view.h", "find_bar_view.h",
"find_bar_view.mm", "find_bar_view.mm",
"find_bar_view_controller.h",
"find_bar_view_controller.mm",
] ]
deps = [ deps = [
":constants", ":constants",
......
...@@ -8,12 +8,17 @@ ...@@ -8,12 +8,17 @@
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
@protocol BrowserCommands; @protocol BrowserCommands;
@class FindBarViewController;
@class FindInPageModel; @class FindInPageModel;
@interface FindBarControllerIOS : NSObject @interface FindBarControllerIOS : NSObject
// The dispatcher for sending browser commands. // The dispatcher for sending browser commands.
@property(nonatomic, weak) id<BrowserCommands> dispatcher; @property(nonatomic, weak) id<BrowserCommands> dispatcher;
// The view controller containing all the buttons and textfields that is common
// between iPhone and iPad.
@property(nonatomic, strong, readonly)
FindBarViewController* findBarViewController;
// Init with incognito style. // Init with incognito style.
- (instancetype)initWithIncognito:(BOOL)isIncognito; - (instancetype)initWithIncognito:(BOOL)isIncognito;
...@@ -29,8 +34,6 @@ ...@@ -29,8 +34,6 @@
// Updates the results count in Find Bar. // Updates the results count in Find Bar.
- (void)updateResultsCount:(FindInPageModel*)model; - (void)updateResultsCount:(FindInPageModel*)model;
// Creates and stores a find bar view to be presented later.
- (UIView*)createFindBarViewWithDarkAppearance:(BOOL)darkAppearance;
// Alerts the controller that its find bar will hide. // Alerts the controller that its find bar will hide.
- (void)findBarViewWillHide; - (void)findBarViewWillHide;
// Alerts the controller that its find bar did hide. // Alerts the controller that its find bar did hide.
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#import "ios/chrome/browser/ui/commands/browser_commands.h" #import "ios/chrome/browser/ui/commands/browser_commands.h"
#import "ios/chrome/browser/ui/find_bar/find_bar_constants.h" #import "ios/chrome/browser/ui/find_bar/find_bar_constants.h"
#import "ios/chrome/browser/ui/find_bar/find_bar_view.h" #import "ios/chrome/browser/ui/find_bar/find_bar_view.h"
#import "ios/chrome/browser/ui/find_bar/find_bar_view_controller.h"
#import "ios/chrome/browser/ui/image_util/image_util.h" #import "ios/chrome/browser/ui/image_util/image_util.h"
#import "ios/chrome/browser/ui/toolbar/public/toolbar_constants.h" #import "ios/chrome/browser/ui/toolbar/public/toolbar_constants.h"
#include "ios/chrome/browser/ui/util/rtl_geometry.h" #include "ios/chrome/browser/ui/util/rtl_geometry.h"
...@@ -51,9 +52,10 @@ const NSTimeInterval kSearchShortDelay = 0.100; ...@@ -51,9 +52,10 @@ const NSTimeInterval kSearchShortDelay = 0.100;
// will read "Select All" instead of a11y label. // will read "Select All" instead of a11y label.
- (void)selectAllText; - (void)selectAllText;
// The view containing all the buttons and textfields that is common between // Redefined to be readwrite
// iPhone and iPad. @property(nonatomic, strong, readwrite)
@property(nonatomic, strong) FindBarView* findBarView; FindBarViewController* findBarViewController;
// Typing delay timer. // Typing delay timer.
@property(nonatomic, strong) NSTimer* delayTimer; @property(nonatomic, strong) NSTimer* delayTimer;
// Yes if incognito. // Yes if incognito.
...@@ -74,57 +76,62 @@ const NSTimeInterval kSearchShortDelay = 0.100; ...@@ -74,57 +76,62 @@ const NSTimeInterval kSearchShortDelay = 0.100;
#pragma mark - Public #pragma mark - Public
- (UIView*)createFindBarViewWithDarkAppearance:(BOOL)darkAppearance { - (FindBarViewController*)findBarViewController {
if (self.findBarView) { if (_findBarViewController) {
return self.findBarView; return _findBarViewController;
} }
self.findBarView = _findBarViewController =
[[FindBarView alloc] initWithDarkAppearance:darkAppearance]; [[FindBarViewController alloc] initWithDarkAppearance:self.isIncognito];
self.findBarView.translatesAutoresizingMaskIntoConstraints = NO;
_findBarViewController.findBarView.inputField.delegate = self;
self.findBarView.inputField.delegate = self; [_findBarViewController.findBarView.inputField
[self.findBarView.inputField addTarget:self addTarget:self
action:@selector(editingChanged) action:@selector(editingChanged)
forControlEvents:UIControlEventEditingChanged]; forControlEvents:UIControlEventEditingChanged];
[self.findBarView.nextButton addTarget:self.dispatcher [_findBarViewController.findBarView.nextButton
action:@selector(findNextStringInPage) addTarget:self.dispatcher
forControlEvents:UIControlEventTouchUpInside]; action:@selector(findNextStringInPage)
[self.findBarView.nextButton addTarget:self forControlEvents:UIControlEventTouchUpInside];
action:@selector(hideKeyboard:) [_findBarViewController.findBarView.nextButton
forControlEvents:UIControlEventTouchUpInside]; addTarget:self
[self.findBarView.previousButton addTarget:self.dispatcher action:@selector(hideKeyboard:)
action:@selector(findPreviousStringInPage) forControlEvents:UIControlEventTouchUpInside];
forControlEvents:UIControlEventTouchUpInside]; [_findBarViewController.findBarView.previousButton
[self.findBarView.previousButton addTarget:self addTarget:self.dispatcher
action:@selector(hideKeyboard:) action:@selector(findPreviousStringInPage)
forControlEvents:UIControlEventTouchUpInside]; forControlEvents:UIControlEventTouchUpInside];
[self.findBarView.closeButton addTarget:self.dispatcher [_findBarViewController.findBarView.previousButton
action:@selector(closeFindInPage) addTarget:self
forControlEvents:UIControlEventTouchUpInside]; action:@selector(hideKeyboard:)
forControlEvents:UIControlEventTouchUpInside];
return self.findBarView; [_findBarViewController.findBarView.closeButton
addTarget:self.dispatcher
action:@selector(closeFindInPage)
forControlEvents:UIControlEventTouchUpInside];
return _findBarViewController;
} }
- (void)findBarViewWillHide { - (void)findBarViewWillHide {
self.findBarView.inputField.selectedTextRange = nil; self.findBarViewController.findBarView.inputField.selectedTextRange = nil;
[self.delayTimer invalidate]; [self.delayTimer invalidate];
self.delayTimer = nil; self.delayTimer = nil;
} }
- (void)findBarViewDidHide { - (void)findBarViewDidHide {
self.findBarView = nil; self.findBarViewController = nil;
} }
- (NSString*)searchTerm { - (NSString*)searchTerm {
return [self.findBarView.inputField text]; return [self.findBarViewController.findBarView.inputField text];
} }
- (BOOL)isFindInPageShown { - (BOOL)isFindInPageShown {
return self.findBarView != nil; return self.findBarViewController.findBarView != nil;
} }
- (BOOL)isFocused { - (BOOL)isFocused {
return [self.findBarView.inputField isFirstResponder]; return [self.findBarViewController.findBarView.inputField isFirstResponder];
} }
- (void)updateResultsCount:(FindInPageModel*)model { - (void)updateResultsCount:(FindInPageModel*)model {
...@@ -141,15 +148,15 @@ const NSTimeInterval kSearchShortDelay = 0.100; ...@@ -141,15 +148,15 @@ const NSTimeInterval kSearchShortDelay = 0.100;
if (initialUpdate) { if (initialUpdate) {
// Set initial text and first search. // Set initial text and first search.
[self.findBarView.inputField setText:model.text]; [self.findBarViewController.findBarView.inputField setText:model.text];
[self editingChanged]; [self editingChanged];
} }
// Focus input field if necessary. // Focus input field if necessary.
if (focusTextfield) { if (focusTextfield) {
[self.findBarView.inputField becomeFirstResponder]; [self.findBarViewController.findBarView.inputField becomeFirstResponder];
} else { } else {
[self.findBarView.inputField resignFirstResponder]; [self.findBarViewController.findBarView.inputField resignFirstResponder];
} }
[self updateWithMatchNumber:model.currentIndex [self updateWithMatchNumber:model.currentIndex
...@@ -168,22 +175,26 @@ const NSTimeInterval kSearchShortDelay = 0.100; ...@@ -168,22 +175,26 @@ const NSTimeInterval kSearchShortDelay = 0.100;
base::SysNSStringToUTF16(indexStr), base::SysNSStringToUTF16(indexStr),
base::SysNSStringToUTF16(matchesStr)); base::SysNSStringToUTF16(matchesStr));
} }
[self.findBarView updateResultsLabelWithText:text]; [self.findBarViewController.findBarView updateResultsLabelWithText:text];
BOOL enabled = matchCount != 0; BOOL enabled = matchCount != 0;
self.findBarView.nextButton.enabled = enabled; self.findBarViewController.findBarView.nextButton.enabled = enabled;
self.findBarView.previousButton.enabled = enabled; self.findBarViewController.findBarView.previousButton.enabled = enabled;
} }
- (void)hideKeyboard:(id)sender { - (void)hideKeyboard:(id)sender {
[self.findBarView endEditing:YES]; [self.findBarViewController.findBarView endEditing:YES];
} }
- (void)selectAllText { - (void)selectAllText {
UITextRange* wholeTextRange = [self.findBarView.inputField UITextRange* wholeTextRange =
textRangeFromPosition:self.findBarView.inputField.beginningOfDocument [self.findBarViewController.findBarView.inputField
toPosition:self.findBarView.inputField.endOfDocument]; textRangeFromPosition:self.findBarViewController.findBarView
self.findBarView.inputField.selectedTextRange = wholeTextRange; .inputField.beginningOfDocument
toPosition:self.findBarViewController.findBarView
.inputField.endOfDocument];
self.findBarViewController.findBarView.inputField.selectedTextRange =
wholeTextRange;
} }
#pragma mark - Internal #pragma mark - Internal
...@@ -212,7 +223,7 @@ const NSTimeInterval kSearchShortDelay = 0.100; ...@@ -212,7 +223,7 @@ const NSTimeInterval kSearchShortDelay = 0.100;
#pragma mark - UITextFieldDelegate #pragma mark - UITextFieldDelegate
- (BOOL)textFieldShouldBeginEditing:(UITextField*)textField { - (BOOL)textFieldShouldBeginEditing:(UITextField*)textField {
DCHECK(textField == self.findBarView.inputField); DCHECK(textField == self.findBarViewController.findBarView.inputField);
[[NSNotificationCenter defaultCenter] [[NSNotificationCenter defaultCenter]
postNotificationName:kFindBarTextFieldWillBecomeFirstResponderNotification postNotificationName:kFindBarTextFieldWillBecomeFirstResponderNotification
object:self]; object:self];
...@@ -220,15 +231,15 @@ const NSTimeInterval kSearchShortDelay = 0.100; ...@@ -220,15 +231,15 @@ const NSTimeInterval kSearchShortDelay = 0.100;
} }
- (void)textFieldDidEndEditing:(UITextField*)textField { - (void)textFieldDidEndEditing:(UITextField*)textField {
DCHECK(textField == self.findBarView.inputField); DCHECK(textField == self.findBarViewController.findBarView.inputField);
[[NSNotificationCenter defaultCenter] [[NSNotificationCenter defaultCenter]
postNotificationName:kFindBarTextFieldDidResignFirstResponderNotification postNotificationName:kFindBarTextFieldDidResignFirstResponderNotification
object:self]; object:self];
} }
- (BOOL)textFieldShouldReturn:(UITextField*)textField { - (BOOL)textFieldShouldReturn:(UITextField*)textField {
DCHECK(textField == self.findBarView.inputField); DCHECK(textField == self.findBarViewController.findBarView.inputField);
[self.findBarView.inputField resignFirstResponder]; [self.findBarViewController.findBarView.inputField resignFirstResponder];
return YES; return YES;
} }
......
// 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.
#ifndef IOS_CHROME_BROWSER_UI_FIND_BAR_FIND_BAR_VIEW_CONTROLLER_H_
#define IOS_CHROME_BROWSER_UI_FIND_BAR_FIND_BAR_VIEW_CONTROLLER_H_
#import <UIKit/UIKit.h>
@class FindBarView;
@interface FindBarViewController : UIViewController
- (instancetype)initWithDarkAppearance:(BOOL)darkAppearance
NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithNibName:(NSString*)nibNameOrNil
bundle:(NSBundle*)nibBundleOrNil NS_UNAVAILABLE;
- (instancetype)initWithCoder:(NSCoder*)coder NS_UNAVAILABLE;
// The FindBarView managed by this view controller. This is the same as the
// |view| property.
@property(nonatomic, strong, readonly) FindBarView* findBarView;
@end
#endif // IOS_CHROME_BROWSER_UI_FIND_BAR_FIND_BAR_VIEW_CONTROLLER_H_
// 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/chrome/browser/ui/find_bar/find_bar_view_controller.h"
#include "base/mac/foundation_util.h"
#import "ios/chrome/browser/ui/find_bar/find_bar_view.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
@interface FindBarViewController ()
@property(nonatomic, assign) BOOL darkAppearance;
@end
@implementation FindBarViewController
- (instancetype)initWithDarkAppearance:(BOOL)darkAppearance {
if (self = [super initWithNibName:nil bundle:nil]) {
_darkAppearance = darkAppearance;
}
return self;
}
#pragma mark - UIView
- (void)loadView {
self.view = [[FindBarView alloc] initWithDarkAppearance:self.darkAppearance];
self.view.translatesAutoresizingMaskIntoConstraints = NO;
}
#pragma mark - Property Getters
- (FindBarView*)findBarView {
return base::mac::ObjCCastStrict<FindBarView>(self.view);
}
@end
...@@ -13,6 +13,7 @@ source_set("accessory") { ...@@ -13,6 +13,7 @@ source_set("accessory") {
"//base", "//base",
"//base:i18n", "//base:i18n",
"//ios/chrome/browser/ui/image_util", "//ios/chrome/browser/ui/image_util",
"//ios/chrome/browser/ui/presenters",
"//ios/chrome/browser/ui/toolbar/public:constants", "//ios/chrome/browser/ui/toolbar/public:constants",
"//ios/chrome/browser/ui/util", "//ios/chrome/browser/ui/util",
"//ios/chrome/common/colors", "//ios/chrome/common/colors",
......
...@@ -7,34 +7,20 @@ ...@@ -7,34 +7,20 @@
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import "ios/chrome/browser/ui/presenters/contained_presenter.h"
// Presenter that displays accessories over or next to the toolbar. Note that // Presenter that displays accessories over or next to the toolbar. Note that
// there are different presentations styles for iPhone (Compact Toolbar) vs. // there are different presentations styles for iPhone (Compact Toolbar) vs.
// iPad. This is used by Find in Page. // iPad. This is used by Find in Page.
@interface ToolbarAccessoryPresenter : NSObject @interface ToolbarAccessoryPresenter : NSObject <ContainedPresenter>
// When presenting views, this presenter will add them into the - (instancetype)initWithIsIncognito:(BOOL)isIncognito NS_DESIGNATED_INITIALIZER;
// |baseViewController|.
- (instancetype)initWithBaseViewController:(UIViewController*)baseViewController
isIncognito:(BOOL)isIncognito
NS_DESIGNATED_INITIALIZER;
- (instancetype)init NS_UNAVAILABLE; - (instancetype)init NS_UNAVAILABLE;
// The main presented view. // The main presented view.
@property(nonatomic, strong, readonly) UIView* backgroundView; @property(nonatomic, strong, readonly) UIView* backgroundView;
// Adds the provided |toolbarAccessoryView| as an accessory. Calls the provided
// |completion| after adding the view. There can only be one toolbar view
// presented at a time. If there is a view already presented, this is a no-op.
- (void)addToolbarAccessoryView:(UIView*)toolbarAccessoryView
animated:(BOOL)animated
completion:(void (^)())completion;
// Hides an already-presented view. This must be done before presenting a
// different view.
- (void)hideToolbarAccessoryViewAnimated:(BOOL)animated
completion:(void (^)())completion;
@end @end
#endif // IOS_CHROME_BROWSER_UI_TOOLBAR_ACCESSORY_TOOLBAR_ACCESSORY_PRESENTER_H_ #endif // IOS_CHROME_BROWSER_UI_TOOLBAR_ACCESSORY_TOOLBAR_ACCESSORY_PRESENTER_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment