Chromium Code Reviews| Index: ios/chrome/browser/ui/ntp/google_landing_mediator.mm |
| diff --git a/ios/chrome/browser/ui/ntp/google_landing_mediator.mm b/ios/chrome/browser/ui/ntp/google_landing_mediator.mm |
| index b6c4641069d4428420e1242c358572235c78a3e7..c95b25511c2560fe5d33ab51ce36e3f486b87d4d 100644 |
| --- a/ios/chrome/browser/ui/ntp/google_landing_mediator.mm |
| +++ b/ios/chrome/browser/ui/ntp/google_landing_mediator.mm |
| @@ -27,6 +27,7 @@ |
| #import "ios/chrome/browser/ui/browser_view_controller.h" |
| #import "ios/chrome/browser/ui/commands/UIKit+ChromeExecuteCommand.h" |
| #import "ios/chrome/browser/ui/commands/generic_chrome_command.h" |
| +#import "ios/chrome/browser/ui/ntp/google_landing_commands.h" |
| #import "ios/chrome/browser/ui/ntp/google_landing_consumer.h" |
| #import "ios/chrome/browser/ui/ntp/notification_promo_whats_new.h" |
| #import "ios/chrome/browser/ui/toolbar/web_toolbar_controller.h" |
| @@ -35,6 +36,7 @@ |
| #import "ios/chrome/browser/web_state_list/web_state_list_observer_bridge.h" |
| #include "ios/public/provider/chrome/browser/chrome_browser_provider.h" |
| #include "ios/public/provider/chrome/browser/voice/voice_search_provider.h" |
| +#import "ios/shared/chrome/browser/ui/commands/command_dispatcher.h" |
| #include "ios/web/public/web_state/web_state.h" |
| using base::UserMetricsAction; |
| @@ -82,7 +84,8 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() { |
| } // namespace google_landing |
| -@interface GoogleLandingMediator ()<MostVisitedSitesObserving, |
| +@interface GoogleLandingMediator ()<GoogleLandingCommands, |
| + MostVisitedSitesObserving, |
| WebStateListObserving> { |
| // The ChromeBrowserState associated with this mediator. |
| ios::ChromeBrowserState* _browserState; // Weak. |
| @@ -90,12 +93,6 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() { |
| // |YES| if impressions were logged already and shouldn't be logged again. |
| BOOL _recordedPageImpression; |
| - // The designated url loader. |
| - id<UrlLoader> _loader; // Weak. |
| - |
| - // Delegate to focus and blur the omnibox. |
| - base::WeakNSProtocol<id<OmniboxFocuser>> _focuser; |
| - |
| // Controller to fetch and show doodles or a default Google logo. |
| base::scoped_nsprotocol<id<LogoVendor>> _doodleController; |
| @@ -114,8 +111,6 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() { |
| // the callback). |
| ntp_tiles::NTPTilesVector _mostVisitedData; |
| - base::WeakNSProtocol<id<WebToolbarDelegate>> _webToolbarDelegate; |
| - |
| // Observes the WebStateList so that this mediator can update the UI when the |
| // active WebState changes. |
| std::unique_ptr<WebStateListObserverBridge> _webStateListObserver; |
| @@ -138,21 +133,16 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() { |
| @implementation GoogleLandingMediator |
| @synthesize consumer = _consumer; |
| +@synthesize dispatcher = _dispatcher; |
| @synthesize webStateList = _webStateList; |
| - (instancetype)initWithConsumer:(id<GoogleLandingConsumer>)consumer |
| browserState:(ios::ChromeBrowserState*)browserState |
| - loader:(id<UrlLoader>)loader |
| - focuser:(id<OmniboxFocuser>)focuser |
| - webToolbarDelegate:(id<WebToolbarDelegate>)webToolbarDelegate |
| webStateList:(WebStateList*)webStateList { |
| self = [super init]; |
| if (self) { |
| self.consumer = consumer; |
| _browserState = browserState; |
| - _loader = loader; |
| - _focuser.reset(focuser); |
| - _webToolbarDelegate.reset(webToolbarDelegate); |
| _webStateList = webStateList; |
| _webStateListObserver = base::MakeUnique<WebStateListObserverBridge>(self); |
| @@ -164,6 +154,7 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() { |
| } |
| - (void)dealloc { |
| + [self.dispatcher stopDispatchingForProtocol:@protocol(GoogleLandingCommands)]; |
| _webStateList->RemoveObserver(_webStateListObserver.get()); |
| [[NSNotificationCenter defaultCenter] removeObserver:self.consumer]; |
| [super dealloc]; |
| @@ -184,7 +175,7 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() { |
| new google_landing::SearchEngineObserver(self, _templateURLService)); |
| _templateURLService->Load(); |
| _doodleController.reset(ios::GetChromeBrowserProvider()->CreateLogoVendor( |
| - _browserState, _loader)); |
| + _browserState, self.dispatcher)); |
| self.consumer.logoVendor = _doodleController; |
| [self updateShowLogo]; |
| @@ -221,6 +212,12 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() { |
| self.consumer.promoCanShow = _notification_promo->CanShow(); |
| } |
| +- (void)setDispatcher:(id)dispatcher { |
| + _dispatcher = dispatcher; |
| + [self.dispatcher startDispatchingToTarget:self |
| + forProtocol:@protocol(GoogleLandingCommands)]; |
| +} |
| + |
| - (void)updateShowLogo { |
| BOOL showLogo = NO; |
| TemplateURL* defaultURL = _templateURLService->GetDefaultSearchProvider(); |
| @@ -328,10 +325,10 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() { |
| self.consumer.promoCanShow = _notification_promo->CanShow(); |
| if (_notification_promo->IsURLPromo()) { |
| - [_loader webPageOrderedOpen:_notification_promo->url() |
| - referrer:web::Referrer() |
| - inBackground:NO |
| - appendTo:kCurrentTab]; |
| + [self.dispatcher webPageOrderedOpen:_notification_promo->url() |
| + referrer:web::Referrer() |
| + inBackground:NO |
| + appendTo:kCurrentTab]; |
| return; |
| } |
| @@ -339,7 +336,7 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() { |
| base::scoped_nsobject<GenericChromeCommand> command( |
| [[GenericChromeCommand alloc] |
| initWithTag:_notification_promo->command_id()]); |
| - [self.consumer chromeExecuteCommand:command]; |
| + [self.dispatcher chromeExecuteCommand:command]; |
|
marq (ping after 24h)
2017/04/20 13:17:14
Where does the dispatching and handling for this g
justincohen
2017/04/20 21:28:31
in BVC.
|
| return; |
| } |
| NOTREACHED(); |
| @@ -359,72 +356,5 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() { |
| return NO; |
| } |
| -- (void)prepareToEnterTabSwitcher:(id)sender { |
| - [_webToolbarDelegate prepareToEnterTabSwitcher:sender]; |
| -} |
| - |
| -#pragma mark - UrlLoader |
| - |
| -- (void)loadURL:(const GURL&)url |
| - referrer:(const web::Referrer&)referrer |
| - transition:(ui::PageTransition)transition |
| - rendererInitiated:(BOOL)rendererInitiated { |
| - [_loader loadURL:url |
| - referrer:referrer |
| - transition:transition |
| - rendererInitiated:rendererInitiated]; |
| -} |
| - |
| -- (void)webPageOrderedOpen:(const GURL&)url |
| - referrer:(const web::Referrer&)referrer |
| - inBackground:(BOOL)inBackground |
| - appendTo:(OpenPosition)appendTo { |
| - [_loader webPageOrderedOpen:url |
| - referrer:referrer |
| - inBackground:inBackground |
| - appendTo:appendTo]; |
| -} |
| - |
| -- (void)webPageOrderedOpen:(const GURL&)url |
| - referrer:(const web::Referrer&)referrer |
| - inIncognito:(BOOL)inIncognito |
| - inBackground:(BOOL)inBackground |
| - appendTo:(OpenPosition)appendTo { |
| - [_loader webPageOrderedOpen:url |
| - referrer:referrer |
| - inIncognito:inIncognito |
| - inBackground:inBackground |
| - appendTo:appendTo]; |
| -} |
| - |
| -- (void)loadSessionTab:(const sessions::SessionTab*)sessionTab { |
| - NOTREACHED(); |
| -} |
| - |
| -- (void)loadJavaScriptFromLocationBar:(NSString*)script { |
| - NOTREACHED(); |
| -} |
| - |
| -#pragma mark - OmniboxFocuser |
| - |
| -- (void)focusOmnibox { |
| - [_focuser focusOmnibox]; |
| -} |
| - |
| -- (void)cancelOmniboxEdit { |
| - [_focuser cancelOmniboxEdit]; |
| -} |
| - |
| -- (void)focusFakebox { |
| - [_focuser focusFakebox]; |
| -} |
| - |
| -- (void)onFakeboxBlur { |
| - [_focuser onFakeboxBlur]; |
| -} |
| - |
| -- (void)onFakeboxAnimationComplete { |
| - [_focuser onFakeboxAnimationComplete]; |
| -} |
| @end |