Chromium Code Reviews| Index: ios/chrome/browser/ui/browser_view_controller.mm |
| diff --git a/ios/chrome/browser/ui/browser_view_controller.mm b/ios/chrome/browser/ui/browser_view_controller.mm |
| index 1c37fbc1a769f21af80830a4e505b8549a07ccd0..4a64b1b9303e80fc90e8a3d46e307cdca8d585a8 100644 |
| --- a/ios/chrome/browser/ui/browser_view_controller.mm |
| +++ b/ios/chrome/browser/ui/browser_view_controller.mm |
| @@ -169,6 +169,7 @@ |
| #include "ios/public/provider/chrome/browser/voice/voice_search_controller.h" |
| #include "ios/public/provider/chrome/browser/voice/voice_search_controller_delegate.h" |
| #include "ios/public/provider/chrome/browser/voice/voice_search_provider.h" |
| +#import "ios/shared/chrome/browser/ui/commands/command_dispatcher.h" |
| #import "ios/shared/chrome/browser/ui/tools_menu/tools_menu_configuration.h" |
| #include "ios/web/public/active_state_manager.h" |
| #include "ios/web/public/navigation_item.h" |
| @@ -400,6 +401,9 @@ NSString* const kNativeControllerTemporaryKey = @"NativeControllerTemporaryKey"; |
| // Handles presentation of JavaScript dialogs. |
| std::unique_ptr<JavaScriptDialogPresenterImpl> _javaScriptDialogPresenter; |
| + // Handles command dispatching. |
| + CommandDispatcher* _dispatcher; |
| + |
| // Keyboard commands provider. It offloads most of the keyboard commands |
| // management off of the BVC. |
| KeyCommandsProvider* _keyCommandsProvider; |
| @@ -948,6 +952,14 @@ class BrowserBookmarkModelBridge : public bookmarks::BookmarkModelObserver { |
| _nativeControllersForTabIDs = [NSMapTable strongToWeakObjectsMapTable]; |
| _dialogPresenter = [[DialogPresenter alloc] initWithDelegate:self |
| presentingViewController:self]; |
| + _dispatcher = [[CommandDispatcher alloc] init]; |
| + [_dispatcher startDispatchingToTarget:self |
| + forProtocol:@protocol(UrlLoader)]; |
| + [_dispatcher startDispatchingToTarget:self |
| + forProtocol:@protocol(WebToolbarDelegate)]; |
| + [_dispatcher startDispatchingToTarget:self |
| + forSelector:@selector(chromeExecuteCommand:)]; |
| + |
| _javaScriptDialogPresenter.reset( |
| new JavaScriptDialogPresenterImpl(_dialogPresenter)); |
| _webStateDelegate.reset(new web::WebStateDelegateBridge(self)); |
| @@ -976,6 +988,8 @@ class BrowserBookmarkModelBridge : public bookmarks::BookmarkModelObserver { |
| } |
| - (void)dealloc { |
| + [_dispatcher stopDispatchingToTarget:self]; |
|
rohitrao (ping after 24h)
2017/04/28 11:56:22
The way the dispatcher is currently written, it's
justincohen
2017/04/28 14:02:20
Done.
|
| + |
| _tabStripController = nil; |
| _infoBarContainer = nil; |
| _readingListMenuNotifier = nil; |
| @@ -1762,6 +1776,8 @@ class BrowserBookmarkModelBridge : public bookmarks::BookmarkModelObserver { |
| newWebToolbarControllerWithDelegate:self |
| urlLoader:self |
| preloadProvider:_preloadController]; |
| + [_dispatcher startDispatchingToTarget:_toolbarController |
| + forProtocol:@protocol(OmniboxFocuser)]; |
| [_toolbarController setTabCount:[_model count]]; |
| if (_voiceSearchController) |
| _voiceSearchController->SetDelegate(_toolbarController); |
| @@ -3028,7 +3044,8 @@ class BrowserBookmarkModelBridge : public bookmarks::BookmarkModelObserver { |
| colorCache:_dominantColorCache |
| webToolbarDelegate:self |
| tabModel:_model |
| - parentViewController:self]; |
| + parentViewController:self |
| + dispatcher:_dispatcher]; |
| pageController.swipeRecognizerProvider = self.sideSwipeController; |
| // Panel is always NTP for iPhone. |