#include "chrome/browser/ui/tabs/tab_contents_data.h"
#include <vector>
#include "base/containers/adapters.h"
#include "chrome/browser/ui/tabs/features.h"
#include "chrome/browser/ui/tabs/tab_group.h"
#include "chrome/browser/ui/tabs/tab_group_model.h"
#include "chrome/browser/ui/tabs/tab_model.h"
#include "chrome/browser/ui/tabs/tab_strip_collection.h"
#include "chrome/browser/ui/ui_features.h"
TabContentsData::TabContentsData() = default;
TabContentsData::~TabContentsData() = default;
class TabContentsDataImpl : public TabContentsData { … };
std::unique_ptr<TabContentsData> CreateTabContentsDataImpl() { … }
size_t TabContentsDataImpl::TabCountRecursive() const { … }
size_t TabContentsDataImpl::IndexOfFirstNonPinnedTab() const { … }
tabs::TabModel* TabContentsDataImpl::GetTabAtIndexRecursive(
size_t index) const { … }
std::optional<size_t> TabContentsDataImpl::GetIndexOfTabRecursive(
const tabs::TabModel* tab_model) const { … }
void TabContentsDataImpl::AddTabRecursive(
std::unique_ptr<tabs::TabModel> tab_model,
size_t index,
std::optional<tab_groups::TabGroupId> new_group_id,
bool new_pinned_state) { … }
std::unique_ptr<tabs::TabModel> TabContentsDataImpl::RemoveTabAtIndexRecursive(
size_t index) { … }
void TabContentsDataImpl::MoveTabRecursive(
size_t initial_index,
size_t final_index,
std::optional<tab_groups::TabGroupId> new_group_id,
bool new_pinned_state) { … }
void TabContentsDataImpl::MoveTabsRecursive(
const std::vector<int>& tab_indices,
size_t destination_index,
std::optional<tab_groups::TabGroupId> new_group_id,
bool new_pinned_state) { … }
void TabContentsDataImpl::MoveGroupTo(const TabGroupModel* group_model,
const tab_groups::TabGroupId& group,
int to_index) { … }
void TabContentsDataImpl::ValidateData(const TabGroupModel* group_model) { … }