aw_quota_manager_bridge.h 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // Copyright (c) 2013 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 ANDROID_WEBVIEW_BROWSER_AW_QUOTA_MANAGER_BRIDGE_H_
  5. #define ANDROID_WEBVIEW_BROWSER_AW_QUOTA_MANAGER_BRIDGE_H_
  6. #include <stdint.h>
  7. #include <string>
  8. #include <vector>
  9. #include "base/android/jni_weak_ref.h"
  10. #include "base/callback.h"
  11. #include "base/memory/raw_ptr.h"
  12. #include "base/memory/ref_counted.h"
  13. #include "base/memory/weak_ptr.h"
  14. namespace content {
  15. class StoragePartition;
  16. }
  17. namespace storage {
  18. class QuotaManager;
  19. } // namespace storage
  20. namespace android_webview {
  21. class AwBrowserContext;
  22. // TODO(crbug.com/1215208): Change the functions in this class to reference
  23. // StorageKey instead of Origin.
  24. class AwQuotaManagerBridge
  25. : public base::RefCountedThreadSafe<AwQuotaManagerBridge> {
  26. public:
  27. AwQuotaManagerBridge(const AwQuotaManagerBridge&) = delete;
  28. AwQuotaManagerBridge& operator=(const AwQuotaManagerBridge&) = delete;
  29. static scoped_refptr<AwQuotaManagerBridge> Create(
  30. AwBrowserContext* browser_context);
  31. // Called by Java.
  32. void Init(JNIEnv* env, const base::android::JavaParamRef<jobject>& object);
  33. void DeleteAllData(JNIEnv* env,
  34. const base::android::JavaParamRef<jobject>& object);
  35. void DeleteOrigin(JNIEnv* env,
  36. const base::android::JavaParamRef<jobject>& object,
  37. const base::android::JavaParamRef<jstring>& origin);
  38. void GetOrigins(JNIEnv* env,
  39. const base::android::JavaParamRef<jobject>& object,
  40. const base::android::JavaParamRef<jobject>& callback);
  41. void GetUsageAndQuotaForOrigin(
  42. JNIEnv* env,
  43. const base::android::JavaParamRef<jobject>& object,
  44. const base::android::JavaParamRef<jstring>& origin,
  45. const base::android::JavaParamRef<jobject>& callback,
  46. bool is_quota);
  47. using GetOriginsCallback =
  48. base::OnceCallback<void(const std::vector<std::string>& /* origin */,
  49. const std::vector<int64_t>& /* usaoge */,
  50. const std::vector<int64_t>& /* quota */)>;
  51. using QuotaUsageCallback =
  52. base::OnceCallback<void(int64_t /* usage */, int64_t /* quota */)>;
  53. private:
  54. friend class base::RefCountedThreadSafe<AwQuotaManagerBridge>;
  55. explicit AwQuotaManagerBridge(AwBrowserContext* browser_context);
  56. ~AwQuotaManagerBridge();
  57. content::StoragePartition* GetStoragePartition() const;
  58. storage::QuotaManager* GetQuotaManager() const;
  59. raw_ptr<AwBrowserContext> browser_context_;
  60. JavaObjectWeakGlobalRef java_ref_;
  61. base::WeakPtrFactory<AwQuotaManagerBridge> weak_factory_{this};
  62. };
  63. } // namespace android_webview
  64. #endif // ANDROID_WEBVIEW_BROWSER_AW_QUOTA_MANAGER_BRIDGE_H_