chromium/ios/chrome/browser/ui/tab_switcher/tab_strip/coordinator/tab_strip_mediator_utils.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_COORDINATOR_TAB_STRIP_MEDIATOR_UTILS_H_
#define IOS_CHROME_BROWSER_UI_TAB_SWITCHER_TAB_STRIP_COORDINATOR_TAB_STRIP_MEDIATOR_UTILS_H_

class Browser;
class TabGroup;
@class TabStripItemIdentifier;

namespace web {
class WebState;
}

class WebStateList;

// Returns the `TabStripItemIdentifier` for `web_state`.
TabStripItemIdentifier* CreateTabItemIdentifier(web::WebState* web_state);

// Returns the `TabStripItemIdentifier` for `group`.
TabStripItemIdentifier* CreateGroupItemIdentifier(const TabGroup* group,
                                                  WebStateList* web_state_list);

// Moves group to `destination_browser`, before the tab strip item with
// identifier `next_item_identifier`. If `next_item_identifier` is nil, the
// group will be moved to the end of the WebStateList.
void MoveGroupBeforeTabStripItem(const TabGroup* group,
                                 TabStripItemIdentifier* next_item_identifier,
                                 Browser* destination_browser);

#endif  // IOS_CHROME_BROWSER_UI_TAB_SWITCHER_TAB_STRIP_COORDINATOR_TAB_STRIP_MEDIATOR_UTILS_H_