// Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef ANDROID_WEBVIEW_NATIVE_AW_QUOTA_MANAGER_BRIDGE_IMPL_H_ #define ANDROID_WEBVIEW_NATIVE_AW_QUOTA_MANAGER_BRIDGE_IMPL_H_ #include #include #include #include "android_webview/browser/aw_quota_manager_bridge.h" #include "base/android/jni_weak_ref.h" #include "base/basictypes.h" #include "base/callback.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/strings/string16.h" class GURL; namespace content { class StoragePartition; } namespace storage { class QuotaManager; } // namespace storage namespace android_webview { class AwBrowserContext; class AwQuotaManagerBridgeImpl : public AwQuotaManagerBridge { public: static scoped_refptr Create( AwBrowserContext* browser_context); // Called by Java. void Init(JNIEnv* env, jobject object); void DeleteAllData(JNIEnv* env, jobject object); void DeleteOrigin(JNIEnv* env, jobject object, jstring origin); void GetOrigins(JNIEnv* env, jobject object, jint callback_id); void GetUsageAndQuotaForOrigin(JNIEnv* env, jobject object, jstring origin, jint callback_id, bool is_quota); typedef base::Callback< void(const std::vector& /* origin */, const std::vector& /* usage */, const std::vector& /* quota */)> GetOriginsCallback; typedef base::Callback QuotaUsageCallback; private: explicit AwQuotaManagerBridgeImpl(AwBrowserContext* browser_context); ~AwQuotaManagerBridgeImpl() override; content::StoragePartition* GetStoragePartition() const; storage::QuotaManager* GetQuotaManager() const; void DeleteAllDataOnUiThread(); void DeleteOriginOnUiThread(const base::string16& origin); void GetOriginsOnUiThread(jint callback_id); void GetUsageAndQuotaForOriginOnUiThread(const base::string16& origin, jint callback_id, bool is_quota); void GetOriginsCallbackImpl( int jcallback_id, const std::vector& origin, const std::vector& usage, const std::vector& quota); void QuotaUsageCallbackImpl( int jcallback_id, bool is_quota, int64 usage, int64 quota); AwBrowserContext* browser_context_; JavaObjectWeakGlobalRef java_ref_; base::WeakPtrFactory weak_factory_; DISALLOW_COPY_AND_ASSIGN(AwQuotaManagerBridgeImpl); }; bool RegisterAwQuotaManagerBridge(JNIEnv* env); } // namespace android_webview #endif // ANDROID_WEBVIEW_NATIVE_AW_QUOTA_MANAGER_BRIDGE_IMPL_H_