blob: f697fceac23e400dc5e6ece0b211eb0395a07716 [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/android/jni_string.h"
#include "chrome/browser/task_manager/android/task_manager_observer_android.h"
#include "chrome/browser/task_manager/internal/android/jni/TaskManagerServiceBridge_jni.h"
#include "chrome/browser/task_manager/task_manager_interface.h"
#include "chrome/browser/task_manager/task_manager_observer.h"
#include "third_party/jni_zero/jni_zero.h"
namespace task_manager {
static jlong JNI_TaskManagerServiceBridge_AddObserver(
JNIEnv* env,
const jni_zero::JavaParamRef<jobject>& observer,
const jint refresh_time_millis,
const jint resource_flags) {
TaskManagerObserverAndroid* delegate =
new TaskManagerObserverAndroid(env, observer, refresh_time_millis,
static_cast<RefreshType>(resource_flags));
return reinterpret_cast<jlong>(delegate);
}
static void JNI_TaskManagerServiceBridge_RemoveObserver(JNIEnv* env,
const jlong ptr) {
TaskManagerObserverAndroid* delegate =
reinterpret_cast<TaskManagerObserverAndroid*>(ptr);
delete delegate;
}
static jni_zero::ScopedJavaLocalRef<jstring>
JNI_TaskManagerServiceBridge_GetTitle(JNIEnv* env, TaskId task_id) {
return base::android::ConvertUTF16ToJavaString(
env, TaskManagerInterface::GetTaskManager()->GetTitle(task_id));
}
static jlong JNI_TaskManagerServiceBridge_GetMemoryFootprintUsage(
JNIEnv* env,
TaskId task_id) {
return TaskManagerInterface::GetTaskManager()
->GetMemoryFootprintUsage(task_id)
.InBytes();
}
static jdouble JNI_TaskManagerServiceBridge_GetPlatformIndependentCpuUsage(
JNIEnv* env,
TaskId task_id) {
return TaskManagerInterface::GetTaskManager()->GetPlatformIndependentCPUUsage(
task_id);
}
static jlong JNI_TaskManagerServiceBridge_GetNetworkUsage(JNIEnv* env,
TaskId task_id) {
return TaskManagerInterface::GetTaskManager()
->GetNetworkUsage(task_id)
.InBytes();
}
static jlong JNI_TaskManagerServiceBridge_GetProcessId(JNIEnv* env,
TaskId task_id) {
return TaskManagerInterface::GetTaskManager()->GetProcessId(task_id);
}
static jni_zero::ScopedJavaLocalRef<jobject>
JNI_TaskManagerServiceBridge_GetGpuMemoryUsage(JNIEnv* env, TaskId task_id) {
bool has_duplicates;
jlong bytes = TaskManagerInterface::GetTaskManager()
->GetGpuMemoryUsage(task_id, &has_duplicates)
.InBytes();
return Java_GpuMemoryUsage_Constructor(env, bytes, has_duplicates);
}
static jboolean JNI_TaskManagerServiceBridge_IsTaskKillable(JNIEnv* env,
TaskId task_id) {
return TaskManagerInterface::GetTaskManager()->IsTaskKillable(task_id);
}
static void JNI_TaskManagerServiceBridge_KillTask(JNIEnv* env, TaskId task_id) {
TaskManagerInterface::GetTaskManager()->KillTask(task_id);
}
} // namespace task_manager