#include "chrome/browser/ui/tabs/tab_strip_model_observer.h"
#include <utility>
#include "base/check_op.h"
#include "base/memory/raw_ptr.h"
#include "base/trace_event/trace_event.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "content/public/browser/web_contents.h"
#include "third_party/perfetto/include/perfetto/tracing/traced_value.h"
WebContents;
TabStripModelChange::RemovedTab::RemovedTab(content::WebContents* contents,
int index,
RemoveReason remove_reason,
std::optional<SessionID> session_id)
: … { … }
TabStripModelChange::RemovedTab::~RemovedTab() = default;
TabStripModelChange::RemovedTab::RemovedTab(RemovedTab&& other) = default;
TabStripModelChange::Insert::Insert() = default;
TabStripModelChange::Insert::Insert(Insert&& other) = default;
TabStripModelChange::Insert& TabStripModelChange::Insert::operator=(Insert&&) =
default;
TabStripModelChange::Insert::~Insert() = default;
TabStripModelChange::Remove::Remove() = default;
TabStripModelChange::Remove::Remove(Remove&& other) = default;
TabStripModelChange::Remove& TabStripModelChange::Remove::operator=(Remove&&) =
default;
TabStripModelChange::Remove::~Remove() = default;
TabStripModelChange::TabStripModelChange() = default;
TabStripModelChange::TabStripModelChange(Insert delta)
: … { … }
TabStripModelChange::TabStripModelChange(Remove delta)
: … { … }
TabStripModelChange::TabStripModelChange(Move delta)
: … { … }
TabStripModelChange::TabStripModelChange(Replace delta)
: … { … }
TabStripModelChange::~TabStripModelChange() = default;
const TabStripModelChange::Insert* TabStripModelChange::GetInsert() const { … }
const TabStripModelChange::Remove* TabStripModelChange::GetRemove() const { … }
const TabStripModelChange::Move* TabStripModelChange::GetMove() const { … }
const TabStripModelChange::Replace* TabStripModelChange::GetReplace() const { … }
TabStripModelChange::TabStripModelChange(Type type,
std::unique_ptr<Delta> delta)
: … { … }
void TabStripModelChange::RemovedTab::WriteIntoTrace(
perfetto::TracedValue context) const { … }
void TabStripModelChange::ContentsWithIndex::WriteIntoTrace(
perfetto::TracedValue context) const { … }
void TabStripModelChange::Insert::WriteIntoTrace(
perfetto::TracedValue context) const { … }
void TabStripModelChange::Remove::WriteIntoTrace(
perfetto::TracedValue context) const { … }
void TabStripModelChange::Move::WriteIntoTrace(
perfetto::TracedValue context) const { … }
void TabStripModelChange::Replace::WriteIntoTrace(
perfetto::TracedValue context) const { … }
void TabStripModelChange::WriteIntoTrace(perfetto::TracedValue context) const { … }
TabStripSelectionChange::TabStripSelectionChange() = default;
TabStripSelectionChange::TabStripSelectionChange(
content::WebContents* contents,
const ui::ListSelectionModel& selection_model)
: … { … }
TabStripSelectionChange::~TabStripSelectionChange() = default;
TabStripSelectionChange::TabStripSelectionChange(
const TabStripSelectionChange& other) = default;
TabStripSelectionChange& TabStripSelectionChange::operator=(
const TabStripSelectionChange& other) = default;
TabGroupChange::TabGroupChange(TabStripModel* model,
tab_groups::TabGroupId group,
Type type,
std::unique_ptr<Delta> deltap)
: … { … }
TabGroupChange::~TabGroupChange() = default;
TabGroupChange::VisualsChange::VisualsChange() = default;
TabGroupChange::VisualsChange::~VisualsChange() = default;
const TabGroupChange::VisualsChange* TabGroupChange::GetVisualsChange() const { … }
TabGroupChange::TabGroupChange(TabStripModel* model,
tab_groups::TabGroupId group,
VisualsChange deltap)
: … { … }
TabStripModelObserver::TabStripModelObserver() { … }
TabStripModelObserver::~TabStripModelObserver() { … }
void TabStripModelObserver::OnTabStripModelChanged(
TabStripModel* tab_strip_model,
const TabStripModelChange& change,
const TabStripSelectionChange& selection) { … }
void TabStripModelObserver::OnTabWillBeAdded() { … }
void TabStripModelObserver::OnTabWillBeRemoved(content::WebContents* contents,
int index) { … }
void TabStripModelObserver::OnTabGroupChanged(const TabGroupChange& change) { … }
void TabStripModelObserver::OnTabGroupAdded(
const tab_groups::TabGroupId& group_id) { … }
void TabStripModelObserver::OnTabGroupWillBeRemoved(
const tab_groups::TabGroupId& group_id) { … }
void TabStripModelObserver::TabChangedAt(WebContents* contents,
int index,
TabChangeType change_type) { … }
void TabStripModelObserver::TabPinnedStateChanged(
TabStripModel* tab_strip_model,
WebContents* contents,
int index) { … }
void TabStripModelObserver::TabBlockedStateChanged(WebContents* contents,
int index) { … }
void TabStripModelObserver::TabGroupedStateChanged(
std::optional<tab_groups::TabGroupId> group,
tabs::TabModel* tab,
int index) { … }
void TabStripModelObserver::TabStripEmpty() { … }
void TabStripModelObserver::TabCloseCancelled(
const content::WebContents* contents) { … }
void TabStripModelObserver::WillCloseAllTabs(TabStripModel* tab_strip_model) { … }
void TabStripModelObserver::CloseAllTabsStopped(TabStripModel* tab_strip_model,
CloseAllStoppedReason reason) { … }
void TabStripModelObserver::SetTabNeedsAttentionAt(int index, bool attention) { … }
void TabStripModelObserver::OnTabStripModelDestroyed(TabStripModel* model) { … }
void TabStripModelObserver::StopObservingAll(TabStripModelObserver* observer) { … }
bool TabStripModelObserver::IsObservingAny(TabStripModelObserver* observer) { … }
int TabStripModelObserver::CountObservedModels(
TabStripModelObserver* observer) { … }
void TabStripModelObserver::StartedObserving(
TabStripModelObserver::ModelPasskey,
TabStripModel* model) { … }
void TabStripModelObserver::StoppedObserving(
TabStripModelObserver::ModelPasskey,
TabStripModel* model) { … }
void TabStripModelObserver::ModelDestroyed(TabStripModelObserver::ModelPasskey,
TabStripModel* model) { … }