| 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) {
|
|
|