blob: 16d057e3e3bcb757d96016911857fc6e826a5e69 [file] [log] [blame]
// 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_group_collection_data_android.h"
#include <jni.h>
#include <memory>
#include <string>
#include "base/android/jni_android.h"
#include "base/android/jni_string.h"
#include "base/android/token_android.h"
#include "base/strings/utf_string_conversions.h"
#include "base/token.h"
#include "chrome/browser/tab/protocol/tab_group_collection_state.pb.h"
#include "components/tab_groups/tab_group_color.h"
#include "third_party/jni_zero/jni_zero.h"
// Must come after all headers that specialize FromJniType() / ToJniType().
// This JNI header is generated from TabGroupCollectionData.java.
#include "chrome/browser/tab/jni_headers/TabGroupCollectionData_jni.h"
namespace tabs {
TabGroupCollectionDataAndroid::TabGroupCollectionDataAndroid(
std::unique_ptr<TabGroupCollectionData> data)
: data_(std::move(data)) {
JNIEnv* env = base::android::AttachCurrentThread();
j_object_.Reset(
Java_TabGroupCollectionData_init(env, reinterpret_cast<intptr_t>(this)));
}
TabGroupCollectionDataAndroid::~TabGroupCollectionDataAndroid() = default;
void TabGroupCollectionDataAndroid::Destroy(JNIEnv* env) {
delete this;
}
base::Token TabGroupCollectionDataAndroid::GetTabGroupId(JNIEnv* env) const {
return data_->tab_group_id_;
}
const std::u16string& TabGroupCollectionDataAndroid::GetTitle(
JNIEnv* env) const {
return data_->title_;
}
tab_groups::TabGroupColorId TabGroupCollectionDataAndroid::GetColor(
JNIEnv* env) {
return data_->color_;
}
bool TabGroupCollectionDataAndroid::IsCollapsed(JNIEnv* env) const {
return data_->is_collapsed_;
}
jni_zero::ScopedJavaLocalRef<jobject>
TabGroupCollectionDataAndroid::GetJavaObject() const {
return j_object_;
}
} // namespace tabs