blob: e66472d4e1ac7213cba964ae78488a34a8519d32 [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_android.h"
#include "base/android/jni_string.h"
#include "base/android/scoped_java_ref.h"
#include "base/strings/strcat.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/flags/android/chrome_feature_list.h"
#include "chrome/browser/readaloud/android/synthetic_trial.h"
#include "components/metrics/metrics_service.h"
// Must come after all headers that specialize FromJniType() / ToJniType().
#include "chrome/browser/readaloud/android/features_jni_headers/ReadAloudFeatures_jni.h"
using base::android::ConvertJavaStringToUTF8;
using base::android::ConvertUTF8ToJavaString;
using base::android::JavaParamRef;
using base::android::ScopedJavaLocalRef;
namespace readaloud {
jlong JNI_ReadAloudFeatures_InitSyntheticTrial(
JNIEnv* env,
const JavaParamRef<jstring>& j_feature_name,
const JavaParamRef<jstring>& j_synthetic_trial_name_suffix) {
return reinterpret_cast<jlong>(
SyntheticTrial::Create(
ConvertJavaStringToUTF8(j_feature_name),
ConvertJavaStringToUTF8(j_synthetic_trial_name_suffix))
.release());
}
void JNI_ReadAloudFeatures_ActivateSyntheticTrial(JNIEnv* env,
jlong j_synthetic_trial_ptr) {
SyntheticTrial* synthetic_trial =
reinterpret_cast<SyntheticTrial*>(j_synthetic_trial_ptr);
if (synthetic_trial) {
synthetic_trial->Activate();
}
}
void JNI_ReadAloudFeatures_DestroySyntheticTrial(JNIEnv* env,
jlong j_synthetic_trial_ptr) {
SyntheticTrial* synthetic_trial =
reinterpret_cast<SyntheticTrial*>(j_synthetic_trial_ptr);
if (synthetic_trial) {
delete synthetic_trial;
}
}
void JNI_ReadAloudFeatures_ClearStaleSyntheticTrialPrefs(JNIEnv* env) {
SyntheticTrial::ClearStalePrefs();
}
ScopedJavaLocalRef<jstring> JNI_ReadAloudFeatures_GetMetricsId(JNIEnv* env) {
if (g_browser_process && g_browser_process->metrics_service()) {
return ConvertUTF8ToJavaString(
env, g_browser_process->metrics_service()->GetClientId());
}
return ConvertUTF8ToJavaString(env, "");
}
ScopedJavaLocalRef<jstring> JNI_ReadAloudFeatures_GetServerExperimentFlag(
JNIEnv* env) {
base::FieldTrial* trial =
base::FeatureList::GetInstance()->GetAssociatedFieldTrialByFeatureName(
chrome::android::kReadAloudServerExperiments.name);
if (!trial) {
return ConvertUTF8ToJavaString(env, "");
}
return ConvertUTF8ToJavaString(
env, base::StrCat({trial->trial_name(), "_", trial->group_name()}));
}
} // namespace readaloud