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 |