| // Copyright 2025 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/android/tab_interface_android.h" |
| |
| #include "base/notreached.h" |
| #include "chrome/browser/android/tab_android.h" |
| #include "components/tabs/public/tab_interface.h" |
| |
| TabInterfaceAndroid::TabInterfaceAndroid(TabAndroid* tab_android) |
| : weak_tab_android_(tab_android->GetTabAndroidWeakPtr()) {} |
| |
| TabInterfaceAndroid::~TabInterfaceAndroid() = default; |
| |
| base::WeakPtr<tabs::TabInterface> TabInterfaceAndroid::GetWeakPtr() { |
| if (!weak_tab_android_) { |
| return nullptr; |
| } |
| return weak_tab_android_->GetWeakPtr(); |
| } |
| |
| content::WebContents* TabInterfaceAndroid::GetContents() const { |
| if (!weak_tab_android_) { |
| return nullptr; |
| } |
| return weak_tab_android_->GetContents(); |
| } |
| |
| void TabInterfaceAndroid::Close() { |
| if (!weak_tab_android_) { |
| return; |
| } |
| return weak_tab_android_->Close(); |
| } |
| |
| base::CallbackListSubscription TabInterfaceAndroid::RegisterWillDiscardContents( |
| WillDiscardContentsCallback callback) { |
| if (!weak_tab_android_) { |
| return base::CallbackListSubscription(); |
| } |
| return weak_tab_android_->RegisterWillDiscardContents(std::move(callback)); |
| } |
| |
| bool TabInterfaceAndroid::IsActivated() const { |
| if (!weak_tab_android_) { |
| return false; |
| } |
| return weak_tab_android_->IsActivated(); |
| } |
| |
| base::CallbackListSubscription TabInterfaceAndroid::RegisterDidActivate( |
| DidActivateCallback callback) { |
| if (!weak_tab_android_) { |
| return base::CallbackListSubscription(); |
| } |
| return weak_tab_android_->RegisterDidActivate(std::move(callback)); |
| } |
| |
| base::CallbackListSubscription TabInterfaceAndroid::RegisterWillDeactivate( |
| WillDeactivateCallback callback) { |
| if (!weak_tab_android_) { |
| return base::CallbackListSubscription(); |
| } |
| return weak_tab_android_->RegisterWillDeactivate(std::move(callback)); |
| } |
| |
| bool TabInterfaceAndroid::IsVisible() const { |
| if (!weak_tab_android_) { |
| return false; |
| } |
| return weak_tab_android_->IsVisible(); |
| } |
| |
| bool TabInterfaceAndroid::IsSelected() const { |
| if (!weak_tab_android_) { |
| return false; |
| } |
| return weak_tab_android_->IsSelected(); |
| } |
| |
| base::CallbackListSubscription TabInterfaceAndroid::RegisterDidBecomeVisible( |
| DidBecomeVisibleCallback callback) { |
| if (!weak_tab_android_) { |
| return base::CallbackListSubscription(); |
| } |
| return weak_tab_android_->RegisterDidBecomeVisible(std::move(callback)); |
| } |
| |
| base::CallbackListSubscription TabInterfaceAndroid::RegisterWillBecomeHidden( |
| WillBecomeHiddenCallback callback) { |
| if (!weak_tab_android_) { |
| return base::CallbackListSubscription(); |
| } |
| return weak_tab_android_->RegisterWillBecomeHidden(std::move(callback)); |
| } |
| |
| base::CallbackListSubscription TabInterfaceAndroid::RegisterWillDetach( |
| WillDetach callback) { |
| if (!weak_tab_android_) { |
| return base::CallbackListSubscription(); |
| } |
| return weak_tab_android_->RegisterWillDetach(std::move(callback)); |
| } |
| |
| base::CallbackListSubscription TabInterfaceAndroid::RegisterDidInsert( |
| DidInsertCallback callback) { |
| if (!weak_tab_android_) { |
| return base::CallbackListSubscription(); |
| } |
| return weak_tab_android_->RegisterDidInsert(std::move(callback)); |
| } |
| |
| base::CallbackListSubscription TabInterfaceAndroid::RegisterPinnedStateChanged( |
| PinnedStateChangedCallback callback) { |
| if (!weak_tab_android_) { |
| return base::CallbackListSubscription(); |
| } |
| return weak_tab_android_->RegisterPinnedStateChanged(std::move(callback)); |
| } |
| |
| base::CallbackListSubscription TabInterfaceAndroid::RegisterGroupChanged( |
| GroupChangedCallback callback) { |
| if (!weak_tab_android_) { |
| return base::CallbackListSubscription(); |
| } |
| return weak_tab_android_->RegisterGroupChanged(std::move(callback)); |
| } |
| |
| bool TabInterfaceAndroid::CanShowModalUI() const { |
| if (!weak_tab_android_) { |
| return false; |
| } |
| return weak_tab_android_->CanShowModalUI(); |
| } |
| |
| std::unique_ptr<tabs::ScopedTabModalUI> TabInterfaceAndroid::ShowModalUI() { |
| if (!weak_tab_android_) { |
| return nullptr; |
| } |
| return weak_tab_android_->ShowModalUI(); |
| } |
| |
| base::CallbackListSubscription TabInterfaceAndroid::RegisterModalUIChanged( |
| TabInterfaceCallback callback) { |
| if (!weak_tab_android_) { |
| return base::CallbackListSubscription(); |
| } |
| return weak_tab_android_->RegisterModalUIChanged(std::move(callback)); |
| } |
| |
| bool TabInterfaceAndroid::IsInNormalWindow() const { |
| if (!weak_tab_android_) { |
| return false; |
| } |
| return weak_tab_android_->IsInNormalWindow(); |
| } |
| |
| tabs::TabFeatures* TabInterfaceAndroid::GetTabFeatures() { |
| if (!weak_tab_android_) { |
| return nullptr; |
| } |
| return weak_tab_android_->GetTabFeatures(); |
| } |
| |
| const tabs::TabFeatures* TabInterfaceAndroid::GetTabFeatures() const { |
| if (!weak_tab_android_) { |
| return nullptr; |
| } |
| return weak_tab_android_->GetTabFeatures(); |
| } |
| |
| bool TabInterfaceAndroid::IsPinned() const { |
| if (!weak_tab_android_) { |
| return false; |
| } |
| return weak_tab_android_->IsPinned(); |
| } |
| |
| bool TabInterfaceAndroid::IsSplit() const { |
| if (!weak_tab_android_) { |
| return false; |
| } |
| return weak_tab_android_->IsSplit(); |
| } |
| |
| std::optional<tab_groups::TabGroupId> TabInterfaceAndroid::GetGroup() const { |
| if (!weak_tab_android_) { |
| return std::nullopt; |
| } |
| return weak_tab_android_->GetGroup(); |
| } |
| |
| std::optional<split_tabs::SplitTabId> TabInterfaceAndroid::GetSplit() const { |
| if (!weak_tab_android_) { |
| return std::nullopt; |
| } |
| return weak_tab_android_->GetSplit(); |
| } |
| |
| tabs::TabCollection* TabInterfaceAndroid::GetParentCollection( |
| base::PassKey<tabs::TabCollection> pass_key) const { |
| if (!weak_tab_android_) { |
| return nullptr; |
| } |
| return weak_tab_android_->GetParentCollection(pass_key); |
| } |
| |
| const tabs::TabCollection* TabInterfaceAndroid::GetParentCollection() const { |
| if (!weak_tab_android_) { |
| return nullptr; |
| } |
| return weak_tab_android_->GetParentCollection(); |
| } |
| |
| void TabInterfaceAndroid::OnReparented( |
| tabs::TabCollection* parent, |
| base::PassKey<tabs::TabCollection> pass_key) { |
| if (!weak_tab_android_) { |
| return; |
| } |
| return weak_tab_android_->OnReparented(parent, pass_key); |
| } |
| |
| void TabInterfaceAndroid::OnAncestorChanged( |
| base::PassKey<tabs::TabCollection> pass_key) { |
| if (!weak_tab_android_) { |
| return; |
| } |
| return weak_tab_android_->OnAncestorChanged(pass_key); |
| } |
| |
| ui::UnownedUserDataHost& TabInterfaceAndroid::GetUnownedUserDataHost() { |
| return unowned_user_data_host_; |
| } |
| |
| const ui::UnownedUserDataHost& TabInterfaceAndroid::GetUnownedUserDataHost() |
| const { |
| return unowned_user_data_host_; |
| } |