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

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: Alexei's comments 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 5c03d74f36903523914fa2cef46f9923c30b3efc..8ef5c5e2d131dfd87e26717311ea4a89bd5e92ad 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 {
@@ -72,6 +74,14 @@ 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];
+ }
+ return nullptr;
+}
+
} // namespace
// Alphabetical:
@@ -151,30 +161,81 @@ 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]);
- }
+ const base::Feature* feature =
+ FindFeatureExposedToJava(ConvertJavaStringToUTF8(env, jfeature_name));
+ if (feature != nullptr)
+ return base::FeatureList::IsEnabled(*feature);
// Features queried via this API must be present in |kFeaturesExposedToJava|.
NOTREACHED();
Bernhard Bauer 2017/02/09 17:04:29 The NOTREACHED() made sense in the old version whe
jkrcal 2017/02/09 19:10:40 Ah, sure! Thanks! I've moved the DCHECK into the
return false;
}
+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));
+ if (feature != nullptr) {
+ const std::string param_name = ConvertJavaStringToUTF8(env, jparam_name);
+ std::string param_value =
+ base::GetFieldTrialParamValueByFeature(*feature, 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,
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));
+ if (feature != nullptr) {
+ const std::string param_name = ConvertJavaStringToUTF8(env, jparam_name);
+ return base::GetFieldTrialParamByFeatureAsInt(*feature, param_name,
+ jdefault_value);
+ }
+ // Features queried via this API must be present in |kFeaturesExposedToJava|.
+ NOTREACHED();
+ return 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);
+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));
+ if (feature != nullptr) {
+ const std::string param_name = ConvertJavaStringToUTF8(env, jparam_name);
+ return base::GetFieldTrialParamByFeatureAsDouble(*feature, param_name,
+ jdefault_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 base::Feature* feature =
+ FindFeatureExposedToJava(ConvertJavaStringToUTF8(env, jfeature_name));
+ if (feature != nullptr) {
+ const std::string param_name = ConvertJavaStringToUTF8(env, jparam_name);
+ return base::GetFieldTrialParamByFeatureAsBool(*feature, param_name,
+ jdefault_value);
}
// Features queried via this API must be present in |kFeaturesExposedToJava|.
NOTREACHED();
« 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