Chromium Code Reviews| 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(); |