Skip to content

Commit

Permalink
[iOS][Toolbar] Add ToolbarCoordinator for primary and secondary toolbar
Browse files Browse the repository at this point in the history
Add ToolbarCoordinator that owns and creates primary and secondary
toolbar coordinators.
Remove ToolbarCoordinatorAdaptor and move its responsibilities to
ToolbarCoordinator.
Move LocationBarCoordinator to ToolbarCoordinator as its only used by
primary and secondary toolbars.
Remove ToolbarCommands from bubblePresenter as it's not used.

Later CL will reduce usage of primaryToolbarCoordinator and
secondaryToolbarCoordinator access from BVC. And move other
responsibilities from BVC to ToolbarCoordinator.

Bug: 1449924
Change-Id: I2e9acac5aaadd06cb02133aae3359ebef6ff9d8a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4573637
Reviewed-by: Gauthier Ambard <gambard@chromium.org>
Commit-Queue: Christian Xu <christianxu@chromium.org>
Reviewed-by: Federica Germinario <fedegermi@google.com>
Cr-Commit-Position: refs/heads/main@{#1151928}
  • Loading branch information
ChristianXuG authored and Christian Xu committed Jun 1, 2023
1 parent 81acd69 commit a2b9350
Show file tree
Hide file tree
Showing 11 changed files with 343 additions and 292 deletions.
67 changes: 16 additions & 51 deletions ios/chrome/browser/ui/browser_view/browser_coordinator.mm
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,6 @@
#import "ios/chrome/browser/ui/incognito_reauth/incognito_reauth_mediator.h"
#import "ios/chrome/browser/ui/incognito_reauth/incognito_reauth_scene_agent.h"
#import "ios/chrome/browser/ui/lens/lens_coordinator.h"
#import "ios/chrome/browser/ui/location_bar/location_bar_coordinator.h"
#import "ios/chrome/browser/ui/ntp/new_tab_page_component_factory.h"
#import "ios/chrome/browser/ui/ntp/new_tab_page_coordinator.h"
#import "ios/chrome/browser/ui/overlays/overlay_container_coordinator.h"
Expand Down Expand Up @@ -171,7 +170,7 @@
#import "ios/chrome/browser/ui/toolbar/primary_toolbar_coordinator.h"
#import "ios/chrome/browser/ui/toolbar/public/toolbar_coordinating.h"
#import "ios/chrome/browser/ui/toolbar/secondary_toolbar_coordinator.h"
#import "ios/chrome/browser/ui/toolbar/toolbar_coordinator_adaptor.h"
#import "ios/chrome/browser/ui/toolbar/toolbar_coordinator.h"
#import "ios/chrome/browser/ui/voice/text_to_speech_playback_controller.h"
#import "ios/chrome/browser/ui/voice/text_to_speech_playback_controller_factory.h"
#import "ios/chrome/browser/ui/webui/net_export_coordinator.h"
Expand Down Expand Up @@ -330,9 +329,6 @@ @interface BrowserCoordinator () <BrowserCoordinatorCommands,
@property(nonatomic, strong)
FormInputAccessoryCoordinator* formInputAccessoryCoordinator;

// Coordinator for the location bar containing the omnibox.
@property(nonatomic, strong) LocationBarCoordinator* locationBarCoordinator;

// The container coordinators for the infobar modalities.
@property(nonatomic, strong)
OverlayContainerCoordinator* infobarBannerOverlayContainerCoordinator;
Expand Down Expand Up @@ -449,9 +445,7 @@ @implementation BrowserCoordinator {
BubblePresenter* _bubblePresenter;
ToolbarAccessoryPresenter* _toolbarAccessoryPresenter;
LensCoordinator* _lensCoordinator;
ToolbarCoordinatorAdaptor* _toolbarCoordinatorAdaptor;
PrimaryToolbarCoordinator* _primaryToolbarCoordinator;
SecondaryToolbarCoordinator* _secondaryToolbarCoordinator;
ToolbarCoordinator* _toolbarCoordinator;
TabStripCoordinator* _tabStripCoordinator;
TabStripLegacyCoordinator* _legacyTabStripCoordinator;
SideSwipeController* _sideSwipeController;
Expand Down Expand Up @@ -763,23 +757,8 @@ - (void)createViewControllerDependencies {
WebNavigationBrowserAgent::FromBrowser(self.browser);
_urlLoadingBrowserAgent = UrlLoadingBrowserAgent::FromBrowser(self.browser);

self.locationBarCoordinator =
[[LocationBarCoordinator alloc] initWithBrowser:self.browser];

_primaryToolbarCoordinator =
[[PrimaryToolbarCoordinator alloc] initWithBrowser:self.browser];
_primaryToolbarCoordinator.locationBarCoordinator =
self.locationBarCoordinator;

_secondaryToolbarCoordinator =
[[SecondaryToolbarCoordinator alloc] initWithBrowser:self.browser];

_toolbarCoordinatorAdaptor =
[[ToolbarCoordinatorAdaptor alloc] initWithDispatcher:_dispatcher];

[_toolbarCoordinatorAdaptor addToolbarCoordinator:_primaryToolbarCoordinator];
[_toolbarCoordinatorAdaptor
addToolbarCoordinator:_secondaryToolbarCoordinator];
_toolbarCoordinator =
[[ToolbarCoordinator alloc] initWithBrowser:self.browser];

feature_engagement::Tracker* engagementTracker =
feature_engagement::TrackerFactory::GetForBrowserState(browserState);
Expand All @@ -789,8 +768,6 @@ - (void)createViewControllerDependencies {
[[BubblePresenter alloc] initWithTracker:engagementTracker
hostContentSettingsMap:settingsMap
webStateList:self.browser->GetWebStateList()];
_bubblePresenter.toolbarHandler =
HandlerForProtocol(_dispatcher, ToolbarCommands);
_bubblePresenter.layoutGuideCenter = _layoutGuideCenter;
[_dispatcher startDispatchingToTarget:_bubblePresenter
forProtocol:@protocol(HelpCommands)];
Expand All @@ -803,11 +780,11 @@ - (void)createViewControllerDependencies {
_sideSwipeController =
[[SideSwipeController alloc] initWithBrowser:self.browser];
[_sideSwipeController setSnapshotDelegate:self];
_sideSwipeController.toolbarInteractionHandler = _toolbarCoordinatorAdaptor;
_sideSwipeController.toolbarInteractionHandler = _toolbarCoordinator;
_sideSwipeController.primaryToolbarSnapshotProvider =
_primaryToolbarCoordinator;
_toolbarCoordinator.primaryToolbarCoordinator;
_sideSwipeController.secondaryToolbarSnapshotProvider =
_secondaryToolbarCoordinator;
_toolbarCoordinator.secondaryToolbarCoordinator;

_bookmarksCoordinator =
[[BookmarksCoordinator alloc] initWithBrowser:self.browser];
Expand All @@ -831,7 +808,7 @@ - (void)createViewControllerDependencies {
self.popupMenuCoordinator =
[[PopupMenuCoordinator alloc] initWithBrowser:self.browser];
self.popupMenuCoordinator.bubblePresenter = _bubblePresenter;
self.popupMenuCoordinator.UIUpdater = _toolbarCoordinatorAdaptor;
self.popupMenuCoordinator.UIUpdater = _toolbarCoordinator;
// Coordinator `start` is executed before setting it's `baseViewController`.
// It is done intentionally, since this does not affecting the coordinator's
// behavior but helps command handler setup below.
Expand All @@ -854,7 +831,7 @@ - (void)createViewControllerDependencies {
_NTPCoordinator = [[NewTabPageCoordinator alloc]
initWithBrowser:self.browser
componentFactory:[[NewTabPageComponentFactory alloc] init]];
_NTPCoordinator.toolbarDelegate = _toolbarCoordinatorAdaptor;
_NTPCoordinator.toolbarDelegate = _toolbarCoordinator;
_NTPCoordinator.bubblePresenter = _bubblePresenter;
self.tabLifecycleMediator.NTPCoordinator = _NTPCoordinator;

Expand All @@ -870,10 +847,7 @@ - (void)createViewControllerDependencies {
_viewControllerDependencies.popupMenuCoordinator = self.popupMenuCoordinator;
_viewControllerDependencies.ntpCoordinator = _NTPCoordinator;
_viewControllerDependencies.lensCoordinator = _lensCoordinator;
_viewControllerDependencies.primaryToolbarCoordinator =
_primaryToolbarCoordinator;
_viewControllerDependencies.secondaryToolbarCoordinator =
_secondaryToolbarCoordinator;
_viewControllerDependencies.toolbarCoordinator = _toolbarCoordinator;
_viewControllerDependencies.tabStripCoordinator = _tabStripCoordinator;
_viewControllerDependencies.legacyTabStripCoordinator =
_legacyTabStripCoordinator;
Expand Down Expand Up @@ -931,11 +905,9 @@ - (void)updateViewControllerDependencies {
_lensCoordinator.baseViewController = self.viewController;
[_lensCoordinator start];

self.locationBarCoordinator.delegate = self.viewController;
self.locationBarCoordinator.popupPresenterDelegate = self.viewController;
[self.locationBarCoordinator start];

[_primaryToolbarCoordinator start];
_toolbarCoordinator.omniboxFocusDelegate = self.viewController;
_toolbarCoordinator.popupPresenterDelegate = self.viewController;
[_toolbarCoordinator start];

_loadQueryCommandsHandler =
HandlerForProtocol(_dispatcher, LoadQueryCommands);
Expand All @@ -958,8 +930,7 @@ - (void)destroyViewControllerDependencies {
_viewControllerDependencies.popupMenuCoordinator = nil;
_viewControllerDependencies.ntpCoordinator = nil;
_viewControllerDependencies.lensCoordinator = nil;
_viewControllerDependencies.primaryToolbarCoordinator = nil;
_viewControllerDependencies.secondaryToolbarCoordinator = nil;
_viewControllerDependencies.toolbarCoordinator = nil;
_viewControllerDependencies.tabStripCoordinator = nil;
_viewControllerDependencies.legacyTabStripCoordinator = nil;
_viewControllerDependencies.sideSwipeController = nil;
Expand All @@ -982,9 +953,7 @@ - (void)destroyViewControllerDependencies {
_legacyTabStripCoordinator = nil;
_tabStripCoordinator = nil;
_sideSwipeController = nil;
_toolbarCoordinatorAdaptor = nil;
_secondaryToolbarCoordinator = nil;
_primaryToolbarCoordinator = nil;
_toolbarCoordinator = nil;
_loadQueryCommandsHandler = nil;
_omniboxCommandsHandler = nil;

Expand All @@ -1010,9 +979,6 @@ - (void)destroyViewControllerDependencies {
[self.browserContainerCoordinator stop];
self.browserContainerCoordinator = nil;

[self.locationBarCoordinator stop];
self.locationBarCoordinator = nil;

[_NTPCoordinator stop];
_NTPCoordinator = nil;

Expand Down Expand Up @@ -1356,8 +1322,7 @@ - (void)stopAndStartSharingCoordinator {
// Exit fullscreen if needed to make sure that share button is visible.
_fullscreenController->ExitFullscreen();

id<SharingPositioner> positioner =
_primaryToolbarCoordinator.SharingPositioner;
id<SharingPositioner> positioner = _toolbarCoordinator.sharingPositioner;
UIBarButtonItem* anchor = nil;
if ([positioner respondsToSelector:@selector(barButtonItem)]) {
anchor = positioner.barButtonItem;
Expand Down
6 changes: 2 additions & 4 deletions ios/chrome/browser/ui/browser_view/browser_view_controller.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,14 @@ class FullscreenController;
class PagePlaceholderBrowserAgent;
@protocol PopupMenuCommands;
@class PopupMenuCoordinator;
@class PrimaryToolbarCoordinator;
@class SafeAreaProvider;
@class SecondaryToolbarCoordinator;
@class SideSwipeController;
@class TabStripCoordinator;
@class TabStripLegacyCoordinator;
class TabUsageRecorderBrowserAgent;
@protocol TextZoomCommands;
@class ToolbarAccessoryPresenter;
@class ToolbarCoordinator;
@protocol IncognitoReauthCommands;
@class LayoutGuideCenter;
@protocol LoadQueryCommands;
Expand All @@ -63,8 +62,7 @@ typedef struct {
PopupMenuCoordinator* popupMenuCoordinator;
NewTabPageCoordinator* ntpCoordinator;
LensCoordinator* lensCoordinator;
PrimaryToolbarCoordinator* primaryToolbarCoordinator;
SecondaryToolbarCoordinator* secondaryToolbarCoordinator;
ToolbarCoordinator* toolbarCoordinator;
TabStripCoordinator* tabStripCoordinator;
TabStripLegacyCoordinator* legacyTabStripCoordinator;
SideSwipeController* sideSwipeController;
Expand Down

0 comments on commit a2b9350

Please sign in to comment.