tile_provider_bridge.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. #ifndef COMPONENTS_QUERY_TILES_ANDROID_TILE_PROVIDER_BRIDGE_H_
  5. #define COMPONENTS_QUERY_TILES_ANDROID_TILE_PROVIDER_BRIDGE_H_
  6. #include "base/android/jni_android.h"
  7. #include "base/memory/raw_ptr.h"
  8. #include "base/supports_user_data.h"
  9. #include "components/query_tiles/tile_service.h"
  10. using base::android::JavaParamRef;
  11. using base::android::JavaRef;
  12. using base::android::ScopedJavaGlobalRef;
  13. using base::android::ScopedJavaLocalRef;
  14. namespace query_tiles {
  15. // Helper class responsible for bridging the TileProvider between C++ and Java.
  16. class TileProviderBridge : public base::SupportsUserData::Data {
  17. public:
  18. // Returns a Java TileProviderBridge for |tile_service|. There will
  19. // be only one bridge per TileProviderBridge.
  20. static ScopedJavaLocalRef<jobject> GetBridgeForTileService(
  21. TileService* tile_service);
  22. explicit TileProviderBridge(TileService* tile_service);
  23. TileProviderBridge(const TileProviderBridge&) = delete;
  24. TileProviderBridge& operator=(const TileProviderBridge&) = delete;
  25. ~TileProviderBridge() override;
  26. // Methods called from Java via JNI.
  27. void GetQueryTiles(JNIEnv* env,
  28. const JavaParamRef<jobject>& jcaller,
  29. const JavaParamRef<jstring>& j_tile_id,
  30. const JavaParamRef<jobject>& jcallback);
  31. // Called when a tile is clicked.
  32. void OnTileClicked(JNIEnv* env, const JavaParamRef<jstring>& j_tile_id);
  33. private:
  34. // A reference to the Java counterpart of this class. See
  35. // TileProviderBridge.java.
  36. ScopedJavaGlobalRef<jobject> java_obj_;
  37. // Not owned.
  38. raw_ptr<TileService> tile_service_;
  39. };
  40. } // namespace query_tiles
  41. #endif // COMPONENTS_QUERY_TILES_ANDROID_TILE_PROVIDER_BRIDGE_H_