variations_seed_bridge.cc 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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
  3. // found in the LICENSE file.
  4. #include "components/variations/android/variations_seed_bridge.h"
  5. #include <jni.h>
  6. #include <stdint.h>
  7. #include "base/android/jni_android.h"
  8. #include "base/android/jni_array.h"
  9. #include "base/android/jni_string.h"
  10. #include "base/android/jni_weak_ref.h"
  11. #include "components/variations/jni/VariationsSeedBridge_jni.h"
  12. using base::android::AttachCurrentThread;
  13. using base::android::ConvertJavaStringToUTF8;
  14. using base::android::ConvertUTF8ToJavaString;
  15. using base::android::ScopedJavaLocalRef;
  16. namespace variations {
  17. namespace android {
  18. std::unique_ptr<variations::SeedResponse> GetVariationsFirstRunSeed() {
  19. JNIEnv* env = AttachCurrentThread();
  20. ScopedJavaLocalRef<jbyteArray> j_seed_data =
  21. Java_VariationsSeedBridge_getVariationsFirstRunSeedData(env);
  22. ScopedJavaLocalRef<jstring> j_seed_signature =
  23. Java_VariationsSeedBridge_getVariationsFirstRunSeedSignature(env);
  24. ScopedJavaLocalRef<jstring> j_seed_country =
  25. Java_VariationsSeedBridge_getVariationsFirstRunSeedCountry(env);
  26. jlong j_response_date =
  27. Java_VariationsSeedBridge_getVariationsFirstRunSeedDate(env);
  28. jboolean j_is_gzip_compressed =
  29. Java_VariationsSeedBridge_getVariationsFirstRunSeedIsGzipCompressed(env);
  30. auto seed = std::make_unique<variations::SeedResponse>();
  31. if (!j_seed_data.is_null()) {
  32. base::android::JavaByteArrayToString(env, j_seed_data, &seed->data);
  33. }
  34. seed->signature = ConvertJavaStringToUTF8(j_seed_signature);
  35. seed->country = ConvertJavaStringToUTF8(j_seed_country);
  36. seed->date = static_cast<long>(j_response_date);
  37. seed->is_gzip_compressed = static_cast<bool>(j_is_gzip_compressed);
  38. return seed;
  39. }
  40. void ClearJavaFirstRunPrefs() {
  41. JNIEnv* env = AttachCurrentThread();
  42. Java_VariationsSeedBridge_clearFirstRunPrefs(env);
  43. }
  44. void MarkVariationsSeedAsStored() {
  45. JNIEnv* env = AttachCurrentThread();
  46. Java_VariationsSeedBridge_markVariationsSeedAsStored(env);
  47. }
  48. void SetJavaFirstRunPrefsForTesting(const std::string& seed_data,
  49. const std::string& seed_signature,
  50. const std::string& seed_country,
  51. long response_date,
  52. bool is_gzip_compressed) {
  53. JNIEnv* env = AttachCurrentThread();
  54. Java_VariationsSeedBridge_setVariationsFirstRunSeed(
  55. env, base::android::ToJavaByteArray(env, seed_data),
  56. ConvertUTF8ToJavaString(env, seed_signature),
  57. ConvertUTF8ToJavaString(env, seed_country),
  58. static_cast<jlong>(response_date),
  59. static_cast<jboolean>(is_gzip_compressed));
  60. }
  61. bool HasMarkedPrefsForTesting() {
  62. JNIEnv* env = AttachCurrentThread();
  63. return Java_VariationsSeedBridge_hasNativePref(env);
  64. }
  65. } // namespace android
  66. } // namespace variations