diff options
Diffstat (limited to 'components')
7 files changed, 181 insertions, 1 deletions
diff --git a/components/variations.gypi b/components/variations.gypi index db46140..2ae6ffc 100644 --- a/components/variations.gypi +++ b/components/variations.gypi @@ -18,6 +18,10 @@ 'sources': [ 'variations/active_field_trials.cc', 'variations/active_field_trials.h', + 'variations/android/component_jni_registrar.cc', + 'variations/android/component_jni_registrar.h', + 'variations/android/variations_associated_data_android.cc', + 'variations/android/variations_associated_data_android.h', 'variations/caching_permuted_entropy_provider.cc', 'variations/caching_permuted_entropy_provider.h', 'variations/entropy_provider.cc', @@ -44,7 +48,42 @@ 'proto_in_dir': 'variations/proto', 'proto_out_dir': 'components/variations/proto', }, - 'includes': [ '../build/protoc.gypi' ] + 'includes': [ '../build/protoc.gypi' ], + 'conditions': [ + ['OS == "android"', { + 'dependencies': [ + 'variations_jni_headers', + ], + }], + ], }, ], + 'conditions': [ + ['OS=="android"', { + 'targets': [ + { + 'target_name': 'variations_java', + 'type': 'none', + 'dependencies': [ + '../base/base.gyp:base', + ], + 'variables': { + 'java_in_dir': 'variations/android/java', + }, + 'includes': [ '../build/java.gypi' ], + }, + { + 'target_name': 'variations_jni_headers', + 'type': 'none', + 'sources': [ + 'variations/android/java/src/org/chromium/components/variations/VariationsAssociatedData.java', + ], + 'variables': { + 'jni_gen_package': 'variations', + }, + 'includes': [ '../build/jni_generator.gypi' ], + }, + ], + }], + ] } diff --git a/components/variations/android/DEPS b/components/variations/android/DEPS new file mode 100644 index 0000000..c80012b5 --- /dev/null +++ b/components/variations/android/DEPS @@ -0,0 +1,3 @@ +include_rules = [ + "+jni", +] diff --git a/components/variations/android/component_jni_registrar.cc b/components/variations/android/component_jni_registrar.cc new file mode 100644 index 0000000..1af1fd2 --- /dev/null +++ b/components/variations/android/component_jni_registrar.cc @@ -0,0 +1,28 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/variations/android/component_jni_registrar.h" + +#include "base/android/jni_android.h" +#include "base/android/jni_registrar.h" +#include "base/basictypes.h" +#include "components/variations/android/variations_associated_data_android.h" + +namespace variations { + +namespace android { + +static base::android::RegistrationMethod kVariationsRegisteredMethods[] = { + {"VariationsAssociatedData", RegisterVariationsAssociatedData}, +}; + +bool RegisterVariations(JNIEnv* env) { + return base::android::RegisterNativeMethods( + env, kVariationsRegisteredMethods, + arraysize(kVariationsRegisteredMethods)); +} + +} // namespace android + +} // namespace variations diff --git a/components/variations/android/component_jni_registrar.h b/components/variations/android/component_jni_registrar.h new file mode 100644 index 0000000..85bbd3c --- /dev/null +++ b/components/variations/android/component_jni_registrar.h @@ -0,0 +1,21 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_VARIATIONS_ANDROID_COMPONENT_JNI_REGISTRAR_H_ +#define COMPONENTS_VARIATIONS_ANDROID_COMPONENT_JNI_REGISTRAR_H_ + +#include <jni.h> + +namespace variations { + +namespace android { + +// Register all JNI bindings necessary for the variations component. +bool RegisterVariations(JNIEnv* env); + +} // namespace android + +} // namespace variations + +#endif // COMPONENTS_VARIATIONS_ANDROID_COMPONENT_JNI_REGISTRAR_H_ diff --git a/components/variations/android/java/src/org/chromium/components/variations/VariationsAssociatedData.java b/components/variations/android/java/src/org/chromium/components/variations/VariationsAssociatedData.java new file mode 100644 index 0000000..34353da --- /dev/null +++ b/components/variations/android/java/src/org/chromium/components/variations/VariationsAssociatedData.java @@ -0,0 +1,29 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.components.variations; + +import org.chromium.base.JNINamespace; + +/** + * Wrapper for variations. + */ +@JNINamespace("variations::android") +public final class VariationsAssociatedData { + + private VariationsAssociatedData() { + } + + /** + * @param trialName The name of the trial to get the param value for. + * @param paramName The name of the param for which to get the value. + * @return The parameter value. Empty string if the field trial does not exist or the specified + * parameter does not exist. + */ + public static String getVariationParamValue(String trialName, String paramName) { + return nativeGetVariationParamValue(trialName, paramName); + } + + private static native String nativeGetVariationParamValue(String trialName, String paramName); +} diff --git a/components/variations/android/variations_associated_data_android.cc b/components/variations/android/variations_associated_data_android.cc new file mode 100644 index 0000000..b870323b --- /dev/null +++ b/components/variations/android/variations_associated_data_android.cc @@ -0,0 +1,37 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/variations/android/variations_associated_data_android.h" + +#include <string> + +#include "base/android/jni_string.h" +#include "components/variations/variations_associated_data.h" +#include "jni/VariationsAssociatedData_jni.h" + +using base::android::ConvertJavaStringToUTF8; +using base::android::ConvertUTF8ToJavaString; + +namespace variations { + +namespace android { + +jstring GetVariationParamValue(JNIEnv* env, + jclass clazz, + jstring jtrial_name, + jstring jparam_name) { + std::string trial_name(ConvertJavaStringToUTF8(env, jtrial_name)); + std::string param_name(ConvertJavaStringToUTF8(env, jparam_name)); + std::string param_value = + chrome_variations::GetVariationParamValue(trial_name, param_name); + return ConvertUTF8ToJavaString(env, param_value).Release(); +} + +bool RegisterVariationsAssociatedData(JNIEnv* env) { + return RegisterNativesImpl(env); +} + +} // namespace android + +} // namespace variations diff --git a/components/variations/android/variations_associated_data_android.h b/components/variations/android/variations_associated_data_android.h new file mode 100644 index 0000000..88122d3 --- /dev/null +++ b/components/variations/android/variations_associated_data_android.h @@ -0,0 +1,23 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_VARIATIONS_ANDROID_VARIATIONS_ASSOCIATED_DATA_ANDROID_H_ +#define COMPONENTS_VARIATIONS_ANDROID_VARIATIONS_ASSOCIATED_DATA_ANDROID_H_ + +#include <jni.h> + +#include <string> + +namespace variations { + +namespace android { + +// Register JNI methods for VariationsAssociatedData. +bool RegisterVariationsAssociatedData(JNIEnv* env); + +} // namespace android + +} // namespace variations + +#endif // COMPONENTS_VARIATIONS_ANDROID_VARIATIONS_ASSOCIATED_DATA_ANDROID_H_ |