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