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 20class GURL; 21 22namespace content { 23class StoragePartition; 24} 25 26namespace storage { 27class QuotaManager; 28} // namespace storage 29 30namespace android_webview { 31 32class AwBrowserContext; 33 34class 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 88bool RegisterAwQuotaManagerBridge(JNIEnv* env); 89 90} // namespace android_webview 91 92#endif // ANDROID_WEBVIEW_NATIVE_AW_QUOTA_MANAGER_BRIDGE_IMPL_H_ 93