Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(107)

Unified Diff: chrome/browser/android/chrome_feature_list.cc

Issue 2686763003: [Field trial params] Getting field trial params by feature name in Java. (Closed)
Patch Set: Bernhard's comments #2 Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/android/chrome_feature_list.cc
diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
index 557aa7e883922f72b3f8a7774139c14f7bbcbfe4..efee6c6a1f32070b8ca3ed7be0794be72004a748 100644
--- a/chrome/browser/android/chrome_feature_list.cc
+++ b/chrome/browser/android/chrome_feature_list.cc
@@ -21,7 +21,9 @@
#include "jni/ChromeFeatureList_jni.h"
using base::android::ConvertJavaStringToUTF8;
+using base::android::ConvertUTF8ToJavaString;
using base::android::JavaParamRef;
+using base::android::ScopedJavaLocalRef;
namespace chrome {
namespace android {
@@ -74,6 +76,16 @@ const base::Feature* kFeaturesExposedToJava[] = {
&password_manager::features::kViewPasswords,
};
+const base::Feature* FindFeatureExposedToJava(const std::string& feature_name) {
+ for (size_t i = 0; i < arraysize(kFeaturesExposedToJava); ++i) {
+ if (kFeaturesExposedToJava[i]->name == feature_name)
+ return kFeaturesExposedToJava[i];
+ }
+ NOTREACHED() << "Features queried via ChromeFeatureList must be present in "
+ "|kFeaturesExposedToJava|.";
+ return nullptr;
+}
+
} // namespace
// Alphabetical:
@@ -159,14 +171,22 @@ const base::Feature kWebVRCardboardSupport{
static jboolean IsEnabled(JNIEnv* env,
const JavaParamRef<jclass>& clazz,
const JavaParamRef<jstring>& jfeature_name) {
- const std::string feature_name = ConvertJavaStringToUTF8(env, jfeature_name);
- for (size_t i = 0; i < arraysize(kFeaturesExposedToJava); ++i) {
- if (kFeaturesExposedToJava[i]->name == feature_name)
- return base::FeatureList::IsEnabled(*kFeaturesExposedToJava[i]);
- }
- // Features queried via this API must be present in |kFeaturesExposedToJava|.
- NOTREACHED();
- return false;
+ const base::Feature* feature =
+ FindFeatureExposedToJava(ConvertJavaStringToUTF8(env, jfeature_name));
+ return base::FeatureList::IsEnabled(*feature);
+}
+
+static ScopedJavaLocalRef<jstring> GetFieldTrialParamByFeature(
+ JNIEnv* env,
+ const JavaParamRef<jclass>& clazz,
+ const JavaParamRef<jstring>& jfeature_name,
+ const JavaParamRef<jstring>& jparam_name) {
+ const base::Feature* feature =
+ FindFeatureExposedToJava(ConvertJavaStringToUTF8(env, jfeature_name));
+ const std::string& param_name = ConvertJavaStringToUTF8(env, jparam_name);
+ const std::string& param_value =
+ base::GetFieldTrialParamValueByFeature(*feature, param_name);
+ return ConvertUTF8ToJavaString(env, param_value);
}
static jint GetFieldTrialParamByFeatureAsInt(
@@ -175,18 +195,37 @@ static jint GetFieldTrialParamByFeatureAsInt(
const JavaParamRef<jstring>& jfeature_name,
const JavaParamRef<jstring>& jparam_name,
const jint jdefault_value) {
- const std::string feature_name = ConvertJavaStringToUTF8(env, jfeature_name);
- const std::string param_name = ConvertJavaStringToUTF8(env, jparam_name);
- int default_value = static_cast<int>(jdefault_value);
+ const base::Feature* feature =
+ FindFeatureExposedToJava(ConvertJavaStringToUTF8(env, jfeature_name));
+ const std::string& param_name = ConvertJavaStringToUTF8(env, jparam_name);
+ return base::GetFieldTrialParamByFeatureAsInt(*feature, param_name,
+ jdefault_value);
+}
- for (size_t i = 0; i < arraysize(kFeaturesExposedToJava); ++i) {
- if (kFeaturesExposedToJava[i]->name == feature_name)
- return base::GetFieldTrialParamByFeatureAsInt(
- *kFeaturesExposedToJava[i], param_name, default_value);
- }
- // Features queried via this API must be present in |kFeaturesExposedToJava|.
- NOTREACHED();
- return jdefault_value;
+static jdouble GetFieldTrialParamByFeatureAsDouble(
+ JNIEnv* env,
+ const JavaParamRef<jclass>& clazz,
+ const JavaParamRef<jstring>& jfeature_name,
+ const JavaParamRef<jstring>& jparam_name,
+ const jdouble jdefault_value) {
+ const base::Feature* feature =
+ FindFeatureExposedToJava(ConvertJavaStringToUTF8(env, jfeature_name));
+ const std::string& param_name = ConvertJavaStringToUTF8(env, jparam_name);
+ return base::GetFieldTrialParamByFeatureAsDouble(*feature, param_name,
+ jdefault_value);
+}
+
+static jboolean GetFieldTrialParamByFeatureAsBoolean(
+ JNIEnv* env,
+ const JavaParamRef<jclass>& clazz,
+ const JavaParamRef<jstring>& jfeature_name,
+ const JavaParamRef<jstring>& jparam_name,
+ const jboolean jdefault_value) {
+ const base::Feature* feature =
+ FindFeatureExposedToJava(ConvertJavaStringToUTF8(env, jfeature_name));
+ const std::string& param_name = ConvertJavaStringToUTF8(env, jparam_name);
+ return base::GetFieldTrialParamByFeatureAsBool(*feature, param_name,
+ jdefault_value);
}
bool RegisterChromeFeatureListJni(JNIEnv* env) {
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698