tile_conversion_bridge.cc 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. // Copyright 2020 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/query_tiles/android/tile_conversion_bridge.h"
  5. #include <memory>
  6. #include <string>
  7. #include "base/android/jni_array.h"
  8. #include "base/android/jni_string.h"
  9. #include "components/query_tiles/jni_headers/TileConversionBridge_jni.h"
  10. #include "url/android/gurl_android.h"
  11. namespace query_tiles {
  12. using base::android::ConvertUTF8ToJavaString;
  13. using base::android::ToJavaArrayOfStrings;
  14. ScopedJavaLocalRef<jobject> CreateJavaTileAndMaybeAddToList(
  15. JNIEnv* env,
  16. ScopedJavaLocalRef<jobject> jlist,
  17. const Tile& tile) {
  18. ScopedJavaLocalRef<jobject> jchildren =
  19. Java_TileConversionBridge_createList(env);
  20. for (const auto& subtile : tile.sub_tiles)
  21. CreateJavaTileAndMaybeAddToList(env, jchildren, *subtile.get());
  22. std::vector<ScopedJavaLocalRef<jobject>> urls;
  23. for (const ImageMetadata& image : tile.image_metadatas)
  24. urls.push_back(url::GURLAndroid::FromNativeGURL(env, image.url));
  25. return Java_TileConversionBridge_createTileAndMaybeAddToList(
  26. env, jlist, ConvertUTF8ToJavaString(env, tile.id),
  27. ConvertUTF8ToJavaString(env, tile.display_text),
  28. ConvertUTF8ToJavaString(env, tile.accessibility_text),
  29. ConvertUTF8ToJavaString(env, tile.query_text),
  30. url::GURLAndroid::ToJavaArrayOfGURLs(env, urls),
  31. ToJavaArrayOfStrings(env, tile.search_params), jchildren);
  32. }
  33. ScopedJavaLocalRef<jobject> TileConversionBridge::CreateJavaTiles(
  34. JNIEnv* env,
  35. const std::vector<Tile>& tiles) {
  36. ScopedJavaLocalRef<jobject> jlist = Java_TileConversionBridge_createList(env);
  37. for (const auto& tile : tiles)
  38. CreateJavaTileAndMaybeAddToList(env, jlist, tile);
  39. return jlist;
  40. }
  41. ScopedJavaLocalRef<jobject> TileConversionBridge::CreateJavaTiles(
  42. JNIEnv* env,
  43. const std::vector<std::unique_ptr<Tile>>& tiles) {
  44. ScopedJavaLocalRef<jobject> jlist = Java_TileConversionBridge_createList(env);
  45. for (const auto& tile : tiles)
  46. CreateJavaTileAndMaybeAddToList(env, jlist, *tile);
  47. return jlist;
  48. }
  49. } // namespace query_tiles