chromium/ios/chrome/browser/ui/tab_switcher/tab_grid/toolbars/tab_grid_toolbars_mediator.h

// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef IOS_CHROME_BROWSER_UI_TAB_SWITCHER_TAB_GRID_TOOLBARS_TAB_GRID_TOOLBARS_MEDIATOR_H_
#define IOS_CHROME_BROWSER_UI_TAB_SWITCHER_TAB_GRID_TOOLBARS_TAB_GRID_TOOLBARS_MEDIATOR_H_

#import <Foundation/Foundation.h>

#import "ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_toolbars_mutator.h"

@class TabGridBottomToolbar;
@class TabGridModeHolder;
@class TabGridTopToolbar;
class WebStateList;

// Mediates between model layer and top and bottom toolbar UI layer.
@interface TabGridToolbarsMediator : NSObject <GridToolbarsMutator>

// The toolbars consumer.
// TODO(crbug.com/40273192): Modify it to be consumers instead of being the full
// object.
@property(nonatomic, strong) TabGridTopToolbar* topToolbarConsumer;
@property(nonatomic, strong) TabGridBottomToolbar* bottomToolbarConsumer;

// The WebStateList that this mediator listens for any changes on the total
// number of Webstates.
@property(nonatomic, assign) WebStateList* webStateList;

// Init with the `modeHolder`.
- (instancetype)initWithModeHolder:(TabGridModeHolder*)modeHolder
    NS_DESIGNATED_INITIALIZER;
- (instancetype)init NS_UNAVAILABLE;

// Stops observing all objects.
- (void)disconnect;

@end

#endif  // IOS_CHROME_BROWSER_UI_TAB_SWITCHER_TAB_GRID_TOOLBARS_TAB_GRID_TOOLBARS_MEDIATOR_H_