| Index: android_webview/java/src/org/chromium/android_webview/AwQuotaManagerBridge.java
|
| diff --git a/android_webview/java/src/org/chromium/android_webview/AwQuotaManagerBridge.java b/android_webview/java/src/org/chromium/android_webview/AwQuotaManagerBridge.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9e51f2a8d5b320eabffea0bd32a9c04bb5521997
|
| --- /dev/null
|
| +++ b/android_webview/java/src/org/chromium/android_webview/AwQuotaManagerBridge.java
|
| @@ -0,0 +1,109 @@
|
| +// 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.
|
| +
|
| +package org.chromium.android_webview;
|
| +
|
| +import org.chromium.base.CalledByNative;
|
| +import org.chromium.base.JNINamespace;
|
| +
|
| +import android.webkit.ValueCallback;
|
| +import android.webkit.WebStorage;
|
| +
|
| +import java.util.Map;
|
| +import java.util.HashMap;
|
| +
|
| +/**
|
| + * Bridge between android.webview.WebStorage and native QuotaManager. This object is owned by Java
|
| + * AwBrowserContext and the native side is owned by the native AwBrowserContext.
|
| + *
|
| + * TODO(boliu): Actually make this true after Java AwBrowserContext is added.
|
| + */
|
| +@JNINamespace("android_webview")
|
| +public class AwQuotaManagerBridge {
|
| + private static AwQuotaManagerBridge sInstance;
|
| +
|
| + private static native int getDefaultNativeAwQuotaManagerBridge();
|
| +
|
| + public static AwQuotaManagerBridge getInstance() {
|
| + if (sInstance == null) {
|
| + sInstance = new AwQuotaManagerBridge(getDefaultNativeAwQuotaManagerBridge());
|
| + }
|
| + return sInstance;
|
| + }
|
| +
|
| + private int mNativeAwQuotaManagerBridge;
|
| +
|
| + private int mNextId;
|
| + private Map<Integer, ValueCallback<Map<String, WebStorage.Origin>>> mPendingGetOriginCallbacks;
|
| + private Map<Integer, ValueCallback<Long>> mPendingGetQuotaForOriginCallbacks;
|
| + private Map<Integer, ValueCallback<Long>> mPendingGetUsageForOriginCallbacks;
|
| +
|
| + private AwQuotaManagerBridge(int nativeAwQuotaManagerBridge) {
|
| + mNativeAwQuotaManagerBridge = nativeAwQuotaManagerBridge;
|
| + mPendingGetOriginCallbacks =
|
| + new HashMap<Integer, ValueCallback<Map<String, WebStorage.Origin>>>();
|
| + mPendingGetQuotaForOriginCallbacks = new HashMap<Integer, ValueCallback<Long>>();
|
| + mPendingGetUsageForOriginCallbacks = new HashMap<Integer, ValueCallback<Long>>();
|
| + nativeInit(mNativeAwQuotaManagerBridge);
|
| + }
|
| +
|
| + private int getNextId() {
|
| + return ++mNextId;
|
| + }
|
| +
|
| + public void deleteAllData() {
|
| + nativeDeleteAllData(mNativeAwQuotaManagerBridge);
|
| + }
|
| +
|
| + public void deleteOrigin(String origin) {
|
| + nativeDeleteOrigin(mNativeAwQuotaManagerBridge, origin);
|
| + }
|
| +
|
| + public void getOrigins(ValueCallback<Map<String, WebStorage.Origin>> callback) {
|
| + int callbackId = getNextId();
|
| + assert !mPendingGetOriginCallbacks.containsKey(callbackId);
|
| + mPendingGetOriginCallbacks.put(callbackId, callback);
|
| + nativeGetOrigins(mNativeAwQuotaManagerBridge, callbackId);
|
| + }
|
| +
|
| + public void getQuotaForOrigin(String origin, ValueCallback<Long> callback) {
|
| + int callbackId = getNextId();
|
| + assert !mPendingGetQuotaForOriginCallbacks.containsKey(callbackId);
|
| + mPendingGetQuotaForOriginCallbacks.put(callbackId, callback);
|
| + nativeGetQuotaForOrigin(mNativeAwQuotaManagerBridge, origin, callbackId);
|
| + }
|
| +
|
| + public void getUsageForOrigin(String origin, ValueCallback<Long> callback) {
|
| + int callbackId = getNextId();
|
| + assert !mPendingGetUsageForOriginCallbacks.containsKey(callbackId);
|
| + mPendingGetUsageForOriginCallbacks.put(callbackId, callback);
|
| + nativeGetUsageForOrigin(mNativeAwQuotaManagerBridge, origin, callbackId);
|
| + }
|
| +
|
| + // @CalledByNative
|
| + private void onGetOriginsCallback(int callbackId, byte[][] origin, long[] quota, long[] usage) {
|
| + // TODO(boliu)
|
| + }
|
| +
|
| + // @CalledByNative
|
| + private void onGetQuotaForOriginCallback(int callbackId, long quota) {
|
| + assert mPendingGetQuotaForOriginCallbacks.containsKey(callbackId);
|
| + mPendingGetQuotaForOriginCallbacks.remove(callbackId).onReceiveValue(quota);
|
| + }
|
| +
|
| + // @CalledByNative
|
| + private void onGetUsageForOriginCallback(int callbackId, long usage) {
|
| + assert mPendingGetUsageForOriginCallbacks.containsKey(callbackId);
|
| + mPendingGetUsageForOriginCallbacks.remove(callbackId).onReceiveValue(usage);
|
| + }
|
| +
|
| + private native void nativeInit(int nativeAwQuotaManagerBridge);
|
| + private native void nativeDeleteAllData(int nativeAwQuotaManagerBridge);
|
| + private native void nativeDeleteOrigin(int nativeAwQuotaManagerBridge, String origin);
|
| + private native void nativeGetOrigins(int nativeAwQuotaManagerBridge, int callbackId);
|
| + private native void nativeGetQuotaForOrigin(int nativeAwQuotaManagerBridge, String origin,
|
| + int callbackId);
|
| + private native void nativeGetUsageForOrigin(int nativeAwQuotaManagerBridge, String origin,
|
| + int callbackId);
|
| +}
|
|
|