Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(494)

Unified Diff: ios/chrome/browser/ui/ntp/google_landing_mediator.mm

Issue 2829003002: Add CommandDispatcher to BrowserViewController. (Closed)
Patch Set: Cleaner Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698