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

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: 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 44db12e45b0a2ee53ff076d1de20d206b417d051..13899d98653d1f9b0459f3698934b4afcf973411 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 {
@@ -157,6 +159,25 @@ static jboolean IsEnabled(JNIEnv* env,
return false;
}
+static ScopedJavaLocalRef<jstring> GetFieldTrialParamByFeature(
+ JNIEnv* env,
+ const JavaParamRef<jclass>& clazz,
+ const JavaParamRef<jstring>& jfeature_name,
+ const JavaParamRef<jstring>& jparam_name) {
+ const std::string feature_name = ConvertJavaStringToUTF8(env, jfeature_name);
+ const std::string param_name = ConvertJavaStringToUTF8(env, jparam_name);
+ for (size_t i = 0; i < arraysize(kFeaturesExposedToJava); ++i) {
Alexei Svitkine (slow) 2017/02/08 16:36:00 Nit: Since we loop over features in all of these f
jkrcal 2017/02/09 10:00:45 Good point, done!
+ if (kFeaturesExposedToJava[i]->name == feature_name) {
+ std::string param_value = base::GetFieldTrialParamValueByFeature(
+ *kFeaturesExposedToJava[i], param_name);
+ return ConvertUTF8ToJavaString(env, param_value);
+ }
+ }
+ // Features queried via this API must be present in |kFeaturesExposedToJava|.
+ NOTREACHED();
+ return ConvertUTF8ToJavaString(env, std::string());
+}
+
static jint GetFieldTrialParamByFeatureAsInt(
JNIEnv* env,
const JavaParamRef<jclass>& clazz,
@@ -177,6 +198,46 @@ static jint GetFieldTrialParamByFeatureAsInt(
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 std::string feature_name = ConvertJavaStringToUTF8(env, jfeature_name);
+ const std::string param_name = ConvertJavaStringToUTF8(env, jparam_name);
+ double default_value = static_cast<double>(jdefault_value);
+
+ for (size_t i = 0; i < arraysize(kFeaturesExposedToJava); ++i) {
+ if (kFeaturesExposedToJava[i]->name == feature_name)
+ return base::GetFieldTrialParamByFeatureAsDouble(
+ *kFeaturesExposedToJava[i], param_name, default_value);
+ }
+ // Features queried via this API must be present in |kFeaturesExposedToJava|.
+ NOTREACHED();
+ return 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 std::string feature_name = ConvertJavaStringToUTF8(env, jfeature_name);
+ const std::string param_name = ConvertJavaStringToUTF8(env, jparam_name);
+ bool default_value = static_cast<bool>(jdefault_value);
+
+ for (size_t i = 0; i < arraysize(kFeaturesExposedToJava); ++i) {
+ if (kFeaturesExposedToJava[i]->name == feature_name)
+ return base::GetFieldTrialParamByFeatureAsBool(
+ *kFeaturesExposedToJava[i], param_name, default_value);
+ }
+ // Features queried via this API must be present in |kFeaturesExposedToJava|.
+ NOTREACHED();
+ return jdefault_value;
+}
+
bool RegisterChromeFeatureListJni(JNIEnv* env) {
return RegisterNativesImpl(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