chromium/ios/chrome/browser/tabs/model/inactive_tabs/utils.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_TABS_MODEL_INACTIVE_TABS_UTILS_H_
#define IOS_CHROME_BROWSER_TABS_MODEL_INACTIVE_TABS_UTILS_H_

class Browser;

// Move tabs from the active browser's web state list to the inactive browser's
// web state list. Each of the active tabs is added at the end of the inactive
// tabs list. For example, if your active list have [D, E, F] and your inactive
// [A, B, C] and D and E are finally inactive, the final state will be [F] for
// the active and [A, B, C, D, E] for the inactive. Pinned tabs are ignored and
// will always stay active. Inactive tabs feature should *not* be disabled.
void MoveTabsFromActiveToInactive(Browser* active_browser,
                                  Browser* inactive_browser);

// Move tabs, depending on the threshold condition, from the inactive browser's
// web state list to the active browser's web state list. Each of the inactive
// tabs is added at the beginning of the active tabs list, right after the
// pinned tabs. For example, if your inactive list have [A, B, C] and your
// active [D, E, F] and B and C are finally active, the final state will be [A]
// for the inactive and [B, C, D, E, F] for the active. Inactive tabs feature
// should *not* be disabled.
void MoveTabsFromInactiveToActive(Browser* inactive_browser,
                                  Browser* active_browser);

// Move all tabs from the inactive browser's web state list to the active
// browser's web state list. Each of the inactive tabs is added at the beginning
// of the active tabs list, right after the pinned tabs. Inactive tabs feature
// should be disabled.
void RestoreAllInactiveTabs(Browser* inactive_browser, Browser* active_browser);

#endif  // IOS_CHROME_BROWSER_TABS_MODEL_INACTIVE_TABS_UTILS_H_