| 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..f9c0d98cb20e905a94d91ae4521d314f2dc2ea45 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));
|
| @@ -1716,6 +1728,8 @@ class BrowserBookmarkModelBridge : public bookmarks::BookmarkModelObserver {
|
| // The file remover needs the browser state, so needs to be destroyed now.
|
| _externalFileRemover = nil;
|
| _browserState = nullptr;
|
| + [_dispatcher stopDispatchingToTarget:self];
|
| + _dispatcher = nil;
|
| }
|
|
|
| - (void)installFakeStatusBar {
|
| @@ -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.
|
|
|