summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormathp@chromium.org <mathp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-03 13:12:17 +0000
committermathp@chromium.org <mathp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-03 13:12:17 +0000
commitb5cbe7fbf6806b1ed8c4183a2c382b01b96fa13e (patch)
treebd6debfcfc59fa4c2384ecd2870f3ba84abfe97a
parentb9ced84eb352eb1b86e58d6ee9b4706dd0b9f0fd (diff)
downloadchromium_src-b5cbe7fbf6806b1ed8c4183a2c382b01b96fa13e.zip
chromium_src-b5cbe7fbf6806b1ed8c4183a2c382b01b96fa13e.tar.gz
chromium_src-b5cbe7fbf6806b1ed8c4183a2c382b01b96fa13e.tar.bz2
[Variations] Create Java Bindings for variations_associated_data.
Sets the framework for other bindings to come. If you see weird formatting, they may be the result of clang-format and I should be exonerated of any wrongdoing :) BUG=391010 TBR=jam TEST=Manual, verified that VariationsAssociatedData.getVariationParamValue("ChromeSuggestions", "url") works. Review URL: https://codereview.chromium.org/369583002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@281263 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/android/chrome_jni_registrar.cc2
-rw-r--r--chrome/chrome.gyp1
-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
9 files changed, 184 insertions, 1 deletions
diff --git a/chrome/browser/android/chrome_jni_registrar.cc b/chrome/browser/android/chrome_jni_registrar.cc
index 52001d3..e410960 100644
--- a/chrome/browser/android/chrome_jni_registrar.cc
+++ b/chrome/browser/android/chrome_jni_registrar.cc
@@ -72,6 +72,7 @@
#include "components/dom_distiller/android/component_jni_registrar.h"
#include "components/gcm_driver/android/component_jni_registrar.h"
#include "components/navigation_interception/component_jni_registrar.h"
+#include "components/variations/android/component_jni_registrar.h"
#include "components/web_contents_delegate_android/component_jni_registrar.h"
#if defined(ENABLE_PRINTING) && !defined(ENABLE_FULL_PRINTING)
@@ -171,6 +172,7 @@ static base::android::RegistrationMethod kChromeRegisteredMethods[] = {
{ "TtsPlatformImpl", TtsPlatformImplAndroid::Register },
{ "UmaBridge", RegisterUmaBridge },
{ "UrlUtilities", RegisterUrlUtilities },
+ { "Variations", variations::android::RegisterVariations },
{ "VoiceSearchTabHelper", RegisterVoiceSearchTabHelper },
{ "WebsiteSettingsPopupAndroid",
WebsiteSettingsPopupAndroid::RegisterWebsiteSettingsPopupAndroid },
diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp
index b2e2b00..dfc3989 100644
--- a/chrome/chrome.gyp
+++ b/chrome/chrome.gyp
@@ -658,6 +658,7 @@
'../components/components.gyp:gcm_driver_java',
'../components/components.gyp:navigation_interception_java',
'../components/components.gyp:sessions',
+ '../components/components.gyp:variations_java',
'../components/components.gyp:web_contents_delegate_android_java',
'../content/content.gyp:content_java',
'../printing/printing.gyp:printing_java',
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_