12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef ANDROID_WEBVIEW_NATIVE_AW_QUOTA_MANAGER_BRIDGE_IMPL_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define ANDROID_WEBVIEW_NATIVE_AW_QUOTA_MANAGER_BRIDGE_IMPL_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <jni.h> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <vector> 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "android_webview/browser/aw_quota_manager_bridge.h" 130529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "base/android/jni_weak_ref.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/basictypes.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/callback.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/ref_counted.h" 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/weak_ptr.h" 184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/strings/string16.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class GURL; 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace content { 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class StoragePartition; 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace storage { 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class QuotaManager; 2803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} // namespace storage 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace android_webview { 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AwBrowserContext; 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AwQuotaManagerBridgeImpl : public AwQuotaManagerBridge { 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) static scoped_refptr<AwQuotaManagerBridge> Create( 374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) AwBrowserContext* browser_context); 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Called by Java. 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void Init(JNIEnv* env, jobject object); 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void DeleteAllData(JNIEnv* env, jobject object); 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void DeleteOrigin(JNIEnv* env, jobject object, jstring origin); 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void GetOrigins(JNIEnv* env, jobject object, jint callback_id); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void GetUsageAndQuotaForOrigin(JNIEnv* env, 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) jobject object, 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) jstring origin, 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) jint callback_id, 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool is_quota); 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef base::Callback< 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void(const std::vector<std::string>& /* origin */, 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<int64>& /* usage */, 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<int64>& /* quota */)> GetOriginsCallback; 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef base::Callback<void(int64 /* usage */, 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int64 /* quota */)> QuotaUsageCallback; 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) explicit AwQuotaManagerBridgeImpl(AwBrowserContext* browser_context); 594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual ~AwQuotaManagerBridgeImpl(); 604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::StoragePartition* GetStoragePartition() const; 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) storage::QuotaManager* GetQuotaManager() const; 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) void DeleteAllDataOnUiThread(); 664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) void DeleteOriginOnUiThread(const base::string16& origin); 674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) void GetOriginsOnUiThread(jint callback_id); 684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) void GetUsageAndQuotaForOriginOnUiThread(const base::string16& origin, 694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) jint callback_id, 704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) bool is_quota); 714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void GetOriginsCallbackImpl( 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int jcallback_id, 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<std::string>& origin, 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<int64>& usage, 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<int64>& quota); 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void QuotaUsageCallbackImpl( 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int jcallback_id, bool is_quota, int64 usage, int64 quota); 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AwBrowserContext* browser_context_; 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) JavaObjectWeakGlobalRef java_ref_; 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::WeakPtrFactory<AwQuotaManagerBridgeImpl> weak_factory_; 841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AwQuotaManagerBridgeImpl); 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool RegisterAwQuotaManagerBridge(JNIEnv* env); 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace android_webview 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // ANDROID_WEBVIEW_NATIVE_AW_QUOTA_MANAGER_BRIDGE_IMPL_H_ 93