image_fetcher_bridge.h 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // Copyright 2018 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_IMAGE_FETCHER_IMAGE_FETCHER_BRIDGE_H_
  5. #define COMPONENTS_IMAGE_FETCHER_IMAGE_FETCHER_BRIDGE_H_
  6. #include <string>
  7. #include "base/android/scoped_java_ref.h"
  8. #include "base/callback.h"
  9. #include "base/files/file_path.h"
  10. #include "base/memory/weak_ptr.h"
  11. #include "components/image_fetcher/core/request_metadata.h"
  12. #include "ui/gfx/image/image.h"
  13. namespace image_fetcher {
  14. // Native counterpart of ImageFetcherBridge.java.
  15. class ImageFetcherBridge {
  16. public:
  17. // Not copyable or movable
  18. ImageFetcherBridge(const ImageFetcherBridge&) = delete;
  19. ImageFetcherBridge& operator=(const ImageFetcherBridge&) = delete;
  20. ImageFetcherBridge(ImageFetcherBridge&&) = delete;
  21. ImageFetcherBridge& operator=(ImageFetcherBridge&&) = delete;
  22. static base::android::ScopedJavaLocalRef<jstring> GetFilePath(
  23. JNIEnv* j_env,
  24. const base::android::JavaParamRef<jobject>& j_simple_factory_key,
  25. const base::android::JavaParamRef<jstring>& j_url);
  26. static void FetchImageData(
  27. JNIEnv* j_env,
  28. const base::android::JavaParamRef<jobject>& j_simple_factory_key,
  29. const jint j_image_fetcher_config,
  30. const base::android::JavaParamRef<jstring>& j_url,
  31. const base::android::JavaParamRef<jstring>& j_client_name,
  32. const jint j_expiration_interval_mins,
  33. const base::android::JavaParamRef<jobject>& j_callback);
  34. static void FetchImage(
  35. JNIEnv* j_env,
  36. const base::android::JavaParamRef<jobject>& j_simple_factory_key,
  37. const jint j_image_fetcher_config,
  38. const base::android::JavaParamRef<jstring>& j_url,
  39. const base::android::JavaParamRef<jstring>& j_client_name,
  40. const jint j_frame_width,
  41. const jint j_frame_height,
  42. const jint j_expiration_interval_mins,
  43. const base::android::JavaParamRef<jobject>& j_callback);
  44. static void ReportEvent(
  45. JNIEnv* j_env,
  46. const base::android::JavaParamRef<jstring>& j_client_name,
  47. const jint j_event_id);
  48. static void ReportCacheHitTime(
  49. JNIEnv* j_env,
  50. const base::android::JavaParamRef<jstring>& j_client_name,
  51. const jlong start_time_millis);
  52. static void ReportTotalFetchTimeFromNative(
  53. JNIEnv* j_env,
  54. const base::android::JavaParamRef<jstring>& j_client_name,
  55. const jlong start_time_millis);
  56. private:
  57. ImageFetcherBridge();
  58. ~ImageFetcherBridge();
  59. static void OnImageDataFetched(
  60. base::android::ScopedJavaGlobalRef<jobject> callback,
  61. const std::string& image_data,
  62. const RequestMetadata& request_metadata);
  63. static void OnImageFetched(
  64. base::android::ScopedJavaGlobalRef<jobject> callback,
  65. const gfx::Image& image,
  66. const RequestMetadata& request_metadata);
  67. };
  68. } // namespace image_fetcher
  69. #endif // COMPONENTS_IMAGE_FETCHER_IMAGE_FETCHER_BRIDGE_H_