diff options
author | mathp@chromium.org <mathp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-03 13:12:17 +0000 |
---|---|---|
committer | mathp@chromium.org <mathp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-03 13:12:17 +0000 |
commit | b5cbe7fbf6806b1ed8c4183a2c382b01b96fa13e (patch) | |
tree | bd6debfcfc59fa4c2384ecd2870f3ba84abfe97a | |
parent | b9ced84eb352eb1b86e58d6ee9b4706dd0b9f0fd (diff) | |
download | chromium_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
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_ |