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 5 #ifndef ANDROID_WEBVIEW_NATIVE_AW_QUOTA_MANAGER_BRIDGE_IMPL_H_ 6 #define ANDROID_WEBVIEW_NATIVE_AW_QUOTA_MANAGER_BRIDGE_IMPL_H_ 7 8 #include <jni.h> 9 #include <string> 10 #include <vector> 11 12 #include "android_webview/browser/aw_quota_manager_bridge.h" 13 #include "base/android/jni_weak_ref.h" 14 #include "base/basictypes.h" 15 #include "base/callback.h" 16 #include "base/memory/ref_counted.h" 17 #include "base/memory/weak_ptr.h" 18 #include "base/strings/string16.h" 19 20 class GURL; 21 22 namespace content { 23 class StoragePartition; 24 } 25 26 namespace storage { 27 class QuotaManager; 28 } // namespace storage 29 30 namespace android_webview { 31 32 class AwBrowserContext; 33 34 class AwQuotaManagerBridgeImpl : public AwQuotaManagerBridge { 35 public: 36 static scoped_refptr<AwQuotaManagerBridge> Create( 37 AwBrowserContext* browser_context); 38 39 // Called by Java. 40 void Init(JNIEnv* env, jobject object); 41 void DeleteAllData(JNIEnv* env, jobject object); 42 void DeleteOrigin(JNIEnv* env, jobject object, jstring origin); 43 void GetOrigins(JNIEnv* env, jobject object, jint callback_id); 44 void GetUsageAndQuotaForOrigin(JNIEnv* env, 45 jobject object, 46 jstring origin, 47 jint callback_id, 48 bool is_quota); 49 50 typedef base::Callback< 51 void(const std::vector<std::string>& /* origin */, 52 const std::vector<int64>& /* usage */, 53 const std::vector<int64>& /* quota */)> GetOriginsCallback; 54 typedef base::Callback<void(int64 /* usage */, 55 int64 /* quota */)> QuotaUsageCallback; 56 57 private: 58 explicit AwQuotaManagerBridgeImpl(AwBrowserContext* browser_context); 59 virtual ~AwQuotaManagerBridgeImpl(); 60 61 content::StoragePartition* GetStoragePartition() const; 62 63 storage::QuotaManager* GetQuotaManager() const; 64 65 void DeleteAllDataOnUiThread(); 66 void DeleteOriginOnUiThread(const base::string16& origin); 67 void GetOriginsOnUiThread(jint callback_id); 68 void GetUsageAndQuotaForOriginOnUiThread(const base::string16& origin, 69 jint callback_id, 70 bool is_quota); 71 72 void GetOriginsCallbackImpl( 73 int jcallback_id, 74 const std::vector<std::string>& origin, 75 const std::vector<int64>& usage, 76 const std::vector<int64>& quota); 77 void QuotaUsageCallbackImpl( 78 int jcallback_id, bool is_quota, int64 usage, int64 quota); 79 80 AwBrowserContext* browser_context_; 81 JavaObjectWeakGlobalRef java_ref_; 82 83 base::WeakPtrFactory<AwQuotaManagerBridgeImpl> weak_factory_; 84 85 DISALLOW_COPY_AND_ASSIGN(AwQuotaManagerBridgeImpl); 86 }; 87 88 bool RegisterAwQuotaManagerBridge(JNIEnv* env); 89 90 } // namespace android_webview 91 92 #endif // ANDROID_WEBVIEW_NATIVE_AW_QUOTA_MANAGER_BRIDGE_IMPL_H_ 93