| // 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/collection_save_forwarder_android.h" |
| |
| #include <algorithm> |
| #include <memory> |
| |
| #include "base/android/token_android.h" |
| #include "chrome/browser/android/tab_state_storage_service_factory.h" |
| #include "chrome/browser/tab/collection_save_forwarder.h" |
| #include "components/tab_groups/tab_group_id.h" |
| #include "components/tabs/public/android/jni_conversion.h" |
| #include "third_party/jni_zero/jni_zero.h" |
| |
| // Must come after all headers that specialize FromJniType() / ToJniType(). |
| // This JNI header is generated from CollectionSaveForwarder.java. |
| #include "chrome/browser/tab/jni_headers/CollectionSaveForwarder_jni.h" |
| |
| namespace tabs { |
| |
| CollectionSaveForwarderAndroid::CollectionSaveForwarderAndroid( |
| Profile* profile, |
| tabs::TabStripCollection* collection) { |
| TabStateStorageService* service = |
| TabStateStorageServiceFactory::GetForProfile(profile); |
| save_forwarder_ = |
| std::make_unique<CollectionSaveForwarder>(collection, service); |
| } |
| |
| CollectionSaveForwarderAndroid::CollectionSaveForwarderAndroid( |
| std::unique_ptr<CollectionSaveForwarder> save_forwarder) |
| : save_forwarder_(std::move(save_forwarder)) {} |
| |
| CollectionSaveForwarderAndroid::~CollectionSaveForwarderAndroid() = default; |
| |
| static jlong JNI_CollectionSaveForwarder_CreateForTabGroup( |
| JNIEnv* env, |
| Profile* profile, |
| base::Token& tab_group_id, |
| tabs::TabStripCollection* collection) { |
| TabStateStorageService* service = |
| TabStateStorageServiceFactory::GetForProfile(profile); |
| |
| std::unique_ptr<CollectionSaveForwarder> save_forwarder = |
| CollectionSaveForwarder::CreateForTabGroupTabCollection( |
| tab_groups::TabGroupId::FromRawToken(tab_group_id), collection, |
| service); |
| |
| CollectionSaveForwarderAndroid* wrapper = |
| new CollectionSaveForwarderAndroid(std::move(save_forwarder)); |
| return reinterpret_cast<intptr_t>(wrapper); |
| } |
| |
| void CollectionSaveForwarderAndroid::Destroy(JNIEnv* env) { |
| delete this; |
| } |
| |
| void CollectionSaveForwarderAndroid::Save(JNIEnv* env) { |
| save_forwarder_->Save(); |
| } |
| |
| } // namespace tabs |