summaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
Diffstat (limited to 'components')
-rw-r--r--components/variations.gypi41
-rw-r--r--components/variations/android/DEPS3
-rw-r--r--components/variations/android/component_jni_registrar.cc28
-rw-r--r--components/variations/android/component_jni_registrar.h21
-rw-r--r--components/variations/android/java/src/org/chromium/components/variations/VariationsAssociatedData.java29
-rw-r--r--components/variations/android/variations_associated_data_android.cc37
-rw-r--r--components/variations/android/variations_associated_data_android.h23
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_