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

Side by Side 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 unified diff | 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 »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/android/chrome_feature_list.h" 5 #include "chrome/browser/android/chrome_feature_list.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <string> 9 #include <string>
10 10
11 #include "base/android/jni_string.h" 11 #include "base/android/jni_string.h"
12 #include "base/feature_list.h" 12 #include "base/feature_list.h"
13 #include "base/macros.h" 13 #include "base/macros.h"
14 #include "base/metrics/field_trial_params.h" 14 #include "base/metrics/field_trial_params.h"
15 #include "chrome/common/chrome_features.h" 15 #include "chrome/common/chrome_features.h"
16 #include "components/autofill/core/browser/autofill_experiments.h" 16 #include "components/autofill/core/browser/autofill_experiments.h"
17 #include "components/ntp_snippets/features.h" 17 #include "components/ntp_snippets/features.h"
18 #include "components/offline_pages/core/offline_page_feature.h" 18 #include "components/offline_pages/core/offline_page_feature.h"
19 #include "components/password_manager/core/common/password_manager_features.h" 19 #include "components/password_manager/core/common/password_manager_features.h"
20 #include "content/public/common/content_features.h" 20 #include "content/public/common/content_features.h"
21 #include "jni/ChromeFeatureList_jni.h" 21 #include "jni/ChromeFeatureList_jni.h"
22 22
23 using base::android::ConvertJavaStringToUTF8; 23 using base::android::ConvertJavaStringToUTF8;
24 using base::android::ConvertUTF8ToJavaString;
24 using base::android::JavaParamRef; 25 using base::android::JavaParamRef;
26 using base::android::ScopedJavaLocalRef;
25 27
26 namespace chrome { 28 namespace chrome {
27 namespace android { 29 namespace android {
28 30
29 namespace { 31 namespace {
30 32
31 // Array of features exposed through the Java ChromeFeatureList API. Entries in 33 // Array of features exposed through the Java ChromeFeatureList API. Entries in
32 // this array may either refer to features defined in the header of this file or 34 // this array may either refer to features defined in the header of this file or
33 // in other locations in the code base (e.g. chrome/, components/, etc). 35 // in other locations in the code base (e.g. chrome/, components/, etc).
34 const base::Feature* kFeaturesExposedToJava[] = { 36 const base::Feature* kFeaturesExposedToJava[] = {
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 const std::string feature_name = ConvertJavaStringToUTF8(env, jfeature_name); 152 const std::string feature_name = ConvertJavaStringToUTF8(env, jfeature_name);
151 for (size_t i = 0; i < arraysize(kFeaturesExposedToJava); ++i) { 153 for (size_t i = 0; i < arraysize(kFeaturesExposedToJava); ++i) {
152 if (kFeaturesExposedToJava[i]->name == feature_name) 154 if (kFeaturesExposedToJava[i]->name == feature_name)
153 return base::FeatureList::IsEnabled(*kFeaturesExposedToJava[i]); 155 return base::FeatureList::IsEnabled(*kFeaturesExposedToJava[i]);
154 } 156 }
155 // Features queried via this API must be present in |kFeaturesExposedToJava|. 157 // Features queried via this API must be present in |kFeaturesExposedToJava|.
156 NOTREACHED(); 158 NOTREACHED();
157 return false; 159 return false;
158 } 160 }
159 161
162 static ScopedJavaLocalRef<jstring> GetFieldTrialParamByFeature(
163 JNIEnv* env,
164 const JavaParamRef<jclass>& clazz,
165 const JavaParamRef<jstring>& jfeature_name,
166 const JavaParamRef<jstring>& jparam_name) {
167 const std::string feature_name = ConvertJavaStringToUTF8(env, jfeature_name);
168 const std::string param_name = ConvertJavaStringToUTF8(env, jparam_name);
169 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!
170 if (kFeaturesExposedToJava[i]->name == feature_name) {
171 std::string param_value = base::GetFieldTrialParamValueByFeature(
172 *kFeaturesExposedToJava[i], param_name);
173 return ConvertUTF8ToJavaString(env, param_value);
174 }
175 }
176 // Features queried via this API must be present in |kFeaturesExposedToJava|.
177 NOTREACHED();
178 return ConvertUTF8ToJavaString(env, std::string());
179 }
180
160 static jint GetFieldTrialParamByFeatureAsInt( 181 static jint GetFieldTrialParamByFeatureAsInt(
161 JNIEnv* env, 182 JNIEnv* env,
162 const JavaParamRef<jclass>& clazz, 183 const JavaParamRef<jclass>& clazz,
163 const JavaParamRef<jstring>& jfeature_name, 184 const JavaParamRef<jstring>& jfeature_name,
164 const JavaParamRef<jstring>& jparam_name, 185 const JavaParamRef<jstring>& jparam_name,
165 const jint jdefault_value) { 186 const jint jdefault_value) {
166 const std::string feature_name = ConvertJavaStringToUTF8(env, jfeature_name); 187 const std::string feature_name = ConvertJavaStringToUTF8(env, jfeature_name);
167 const std::string param_name = ConvertJavaStringToUTF8(env, jparam_name); 188 const std::string param_name = ConvertJavaStringToUTF8(env, jparam_name);
168 int default_value = static_cast<int>(jdefault_value); 189 int default_value = static_cast<int>(jdefault_value);
169 190
170 for (size_t i = 0; i < arraysize(kFeaturesExposedToJava); ++i) { 191 for (size_t i = 0; i < arraysize(kFeaturesExposedToJava); ++i) {
171 if (kFeaturesExposedToJava[i]->name == feature_name) 192 if (kFeaturesExposedToJava[i]->name == feature_name)
172 return base::GetFieldTrialParamByFeatureAsInt( 193 return base::GetFieldTrialParamByFeatureAsInt(
173 *kFeaturesExposedToJava[i], param_name, default_value); 194 *kFeaturesExposedToJava[i], param_name, default_value);
174 } 195 }
175 // Features queried via this API must be present in |kFeaturesExposedToJava|. 196 // Features queried via this API must be present in |kFeaturesExposedToJava|.
176 NOTREACHED(); 197 NOTREACHED();
177 return jdefault_value; 198 return jdefault_value;
178 } 199 }
179 200
201 static jdouble GetFieldTrialParamByFeatureAsDouble(
202 JNIEnv* env,
203 const JavaParamRef<jclass>& clazz,
204 const JavaParamRef<jstring>& jfeature_name,
205 const JavaParamRef<jstring>& jparam_name,
206 const jdouble jdefault_value) {
207 const std::string feature_name = ConvertJavaStringToUTF8(env, jfeature_name);
208 const std::string param_name = ConvertJavaStringToUTF8(env, jparam_name);
209 double default_value = static_cast<double>(jdefault_value);
210
211 for (size_t i = 0; i < arraysize(kFeaturesExposedToJava); ++i) {
212 if (kFeaturesExposedToJava[i]->name == feature_name)
213 return base::GetFieldTrialParamByFeatureAsDouble(
214 *kFeaturesExposedToJava[i], param_name, default_value);
215 }
216 // Features queried via this API must be present in |kFeaturesExposedToJava|.
217 NOTREACHED();
218 return jdefault_value;
219 }
220
221 static jboolean GetFieldTrialParamByFeatureAsBoolean(
222 JNIEnv* env,
223 const JavaParamRef<jclass>& clazz,
224 const JavaParamRef<jstring>& jfeature_name,
225 const JavaParamRef<jstring>& jparam_name,
226 const jboolean jdefault_value) {
227 const std::string feature_name = ConvertJavaStringToUTF8(env, jfeature_name);
228 const std::string param_name = ConvertJavaStringToUTF8(env, jparam_name);
229 bool default_value = static_cast<bool>(jdefault_value);
230
231 for (size_t i = 0; i < arraysize(kFeaturesExposedToJava); ++i) {
232 if (kFeaturesExposedToJava[i]->name == feature_name)
233 return base::GetFieldTrialParamByFeatureAsBool(
234 *kFeaturesExposedToJava[i], param_name, default_value);
235 }
236 // Features queried via this API must be present in |kFeaturesExposedToJava|.
237 NOTREACHED();
238 return jdefault_value;
239 }
240
180 bool RegisterChromeFeatureListJni(JNIEnv* env) { 241 bool RegisterChromeFeatureListJni(JNIEnv* env) {
181 return RegisterNativesImpl(env); 242 return RegisterNativesImpl(env);
182 } 243 }
183 244
184 } // namespace android 245 } // namespace android
185 } // namespace chrome 246 } // namespace chrome
OLDNEW
« 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