chromium/ios/chrome/browser/ui/tab_switcher/tab_strip/ui/context_menu/tab_strip_context_menu_helper.h

// Copyright 2024 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_STRIP_UI_CONTEXT_MENU_TAB_STRIP_CONTEXT_MENU_HELPER_H_
#define IOS_CHROME_BROWSER_UI_TAB_SWITCHER_TAB_STRIP_UI_CONTEXT_MENU_TAB_STRIP_CONTEXT_MENU_HELPER_H_

#import <UIKit/UIKit.h>

#import "ios/chrome/browser/ui/tab_switcher/tab_strip/ui/context_menu/tab_strip_context_menu_provider.h"

class BrowserList;
@protocol TabStripMutator;
@protocol TabStripCommands;
class WebStateList;

// Creates context menus for tab strip items.
@interface TabStripContextMenuHelper : NSObject <TabStripContextMenuProvider>

// Mutator of the tab strip.
@property(nonatomic, weak) id<TabStripMutator> mutator;
// Handler of tab strip commands.
@property(nonatomic, weak) id<TabStripCommands> handler;
// Whether this context menu is displayed in an Incognito browser.
@property(nonatomic, assign) BOOL incognito;

// Initializes the helper. `browserList` and `webStateList` cannot be nil.
- (instancetype)initWithBrowserList:(BrowserList*)browserList
                       webStateList:(WebStateList*)webStateList
    NS_DESIGNATED_INITIALIZER;
- (instancetype)init NS_UNAVAILABLE;

// Disconnects this object from the model.
- (void)disconnect;

@end

#endif  // IOS_CHROME_BROWSER_UI_TAB_SWITCHER_TAB_STRIP_UI_CONTEXT_MENU_TAB_STRIP_CONTEXT_MENU_HELPER_H_