#include "chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_model_listener.h"
#include "base/check.h"
#include "base/containers/contains.h"
#include "base/memory/raw_ptr.h"
#include "base/ranges/algorithm.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/tabs/saved_tab_groups/local_tab_group_listener.h"
#include "chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_utils.h"
#include "chrome/browser/ui/tabs/tab_group.h"
#include "chrome/browser/ui/tabs/tab_group_model.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "components/saved_tab_groups/features.h"
#include "components/saved_tab_groups/saved_tab_group_model.h"
#include "components/saved_tab_groups/tab_group_sync_service.h"
#include "components/tab_groups/tab_group_id.h"
namespace content {
class WebContents;
}
namespace tab_groups {
SavedTabGroupModelListener::SavedTabGroupModelListener() = default;
SavedTabGroupModelListener::SavedTabGroupModelListener(
TabGroupSyncService* service,
Profile* profile)
: … { … }
SavedTabGroupModelListener::~SavedTabGroupModelListener() { … }
void SavedTabGroupModelListener::OnTabGroupAdded(
const tab_groups::TabGroupId& group_id) { … }
void SavedTabGroupModelListener::OnTabGroupWillBeRemoved(
const tab_groups::TabGroupId& group_id) { … }
void SavedTabGroupModelListener::OnTabGroupChanged(
const TabGroupChange& change) { … }
void SavedTabGroupModelListener::TabGroupedStateChanged(
std::optional<tab_groups::TabGroupId> new_local_group_id,
tabs::TabModel* tab,
int index) { … }
void SavedTabGroupModelListener::OnTabStripModelChanged(
TabStripModel* tab_strip_model,
const TabStripModelChange& change,
const TabStripSelectionChange& selection) { … }
void SavedTabGroupModelListener::WillCloseAllTabs(
TabStripModel* tab_strip_model) { … }
bool SavedTabGroupModelListener::IsTrackingLocalTabGroup(
const tab_groups::TabGroupId& group_id) { … }
void SavedTabGroupModelListener::ConnectToLocalTabGroup(
const SavedTabGroup& saved_tab_group,
std::map<content::WebContents*, base::Uuid> web_contents_map) { … }
void SavedTabGroupModelListener::PauseTrackingLocalTabGroup(
const tab_groups::TabGroupId& group_id) { … }
void SavedTabGroupModelListener::ResumeTrackingLocalTabGroup(
const tab_groups::TabGroupId& group_id) { … }
void SavedTabGroupModelListener::PauseLocalObservation() { … }
void SavedTabGroupModelListener::ResumeLocalObservation() { … }
void SavedTabGroupModelListener::DisconnectLocalTabGroup(
tab_groups::TabGroupId tab_group_id) { … }
void SavedTabGroupModelListener::RemoveLocalGroupFromSync(
tab_groups::TabGroupId local_group_id) { … }
void SavedTabGroupModelListener::UpdateLocalGroupFromSync(
tab_groups::TabGroupId local_group_id) { … }
void SavedTabGroupModelListener::OnBrowserAdded(Browser* browser) { … }
void SavedTabGroupModelListener::OnBrowserRemoved(Browser* browser) { … }
std::pair<SavedTabGroup, std::map<content::WebContents*, base::Uuid>>
SavedTabGroupModelListener::CreateSavedTabGroupAndTabMapping(
const tab_groups::TabGroupId& group_id) { … }
}