| 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
 | 
| index a1bcc352cc9b44ba3e339a301699ad457ab95f4e..6eee70b0c387bd46720dbf7dd2a5625e05320913 100644
 | 
| --- a/android_webview/java/src/org/chromium/android_webview/AwQuotaManagerBridge.java
 | 
| +++ b/android_webview/java/src/org/chromium/android_webview/AwQuotaManagerBridge.java
 | 
| @@ -4,15 +4,13 @@
 | 
|  
 | 
|  package org.chromium.android_webview;
 | 
|  
 | 
| +import android.util.SparseArray;
 | 
|  import android.webkit.ValueCallback;
 | 
|  
 | 
|  import org.chromium.base.CalledByNative;
 | 
|  import org.chromium.base.JNINamespace;
 | 
|  import org.chromium.base.ThreadUtils;
 | 
|  
 | 
| -import java.util.HashMap;
 | 
| -import java.util.Map;
 | 
| -
 | 
|  /**
 | 
|   * 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.
 | 
| @@ -57,16 +55,16 @@ public class AwQuotaManagerBridge {
 | 
|      // The Java callbacks are saved here. An incrementing callback id is generated for each saved
 | 
|      // callback and is passed to the native side to identify callback.
 | 
|      private int mNextId;
 | 
| -    private Map<Integer, ValueCallback<Origins>> mPendingGetOriginCallbacks;
 | 
| -    private Map<Integer, ValueCallback<Long>> mPendingGetQuotaForOriginCallbacks;
 | 
| -    private Map<Integer, ValueCallback<Long>> mPendingGetUsageForOriginCallbacks;
 | 
| +    private SparseArray<ValueCallback<Origins>> mPendingGetOriginCallbacks;
 | 
| +    private SparseArray<ValueCallback<Long>> mPendingGetQuotaForOriginCallbacks;
 | 
| +    private SparseArray<ValueCallback<Long>> mPendingGetUsageForOriginCallbacks;
 | 
|  
 | 
|      private AwQuotaManagerBridge(long nativeAwQuotaManagerBridgeImpl) {
 | 
|          mNativeAwQuotaManagerBridgeImpl = nativeAwQuotaManagerBridgeImpl;
 | 
|          mPendingGetOriginCallbacks =
 | 
| -                new HashMap<Integer, ValueCallback<Origins>>();
 | 
| -        mPendingGetQuotaForOriginCallbacks = new HashMap<Integer, ValueCallback<Long>>();
 | 
| -        mPendingGetUsageForOriginCallbacks = new HashMap<Integer, ValueCallback<Long>>();
 | 
| +                new SparseArray<ValueCallback<Origins>>();
 | 
| +        mPendingGetQuotaForOriginCallbacks = new SparseArray<ValueCallback<Long>>();
 | 
| +        mPendingGetUsageForOriginCallbacks = new SparseArray<ValueCallback<Long>>();
 | 
|          nativeInit(mNativeAwQuotaManagerBridgeImpl);
 | 
|      }
 | 
|  
 | 
| @@ -106,7 +104,7 @@ public class AwQuotaManagerBridge {
 | 
|       */
 | 
|      public void getOrigins(ValueCallback<Origins> callback) {
 | 
|          int callbackId = getNextId();
 | 
| -        assert !mPendingGetOriginCallbacks.containsKey(callbackId);
 | 
| +        assert mPendingGetOriginCallbacks.get(callbackId) == null;
 | 
|          mPendingGetOriginCallbacks.put(callbackId, callback);
 | 
|          nativeGetOrigins(mNativeAwQuotaManagerBridgeImpl, callbackId);
 | 
|      }
 | 
| @@ -117,7 +115,7 @@ public class AwQuotaManagerBridge {
 | 
|       */
 | 
|      public void getQuotaForOrigin(String origin, ValueCallback<Long> callback) {
 | 
|          int callbackId = getNextId();
 | 
| -        assert !mPendingGetQuotaForOriginCallbacks.containsKey(callbackId);
 | 
| +        assert mPendingGetQuotaForOriginCallbacks.get(callbackId) == null;
 | 
|          mPendingGetQuotaForOriginCallbacks.put(callbackId, callback);
 | 
|          nativeGetUsageAndQuotaForOrigin(mNativeAwQuotaManagerBridgeImpl, origin, callbackId, true);
 | 
|      }
 | 
| @@ -128,7 +126,7 @@ public class AwQuotaManagerBridge {
 | 
|       */
 | 
|      public void getUsageForOrigin(String origin, ValueCallback<Long> callback) {
 | 
|          int callbackId = getNextId();
 | 
| -        assert !mPendingGetUsageForOriginCallbacks.containsKey(callbackId);
 | 
| +        assert mPendingGetUsageForOriginCallbacks.get(callbackId) == null;
 | 
|          mPendingGetUsageForOriginCallbacks.put(callbackId, callback);
 | 
|          nativeGetUsageAndQuotaForOrigin(mNativeAwQuotaManagerBridgeImpl, origin, callbackId, false);
 | 
|      }
 | 
| @@ -136,20 +134,23 @@ public class AwQuotaManagerBridge {
 | 
|      @CalledByNative
 | 
|      private void onGetOriginsCallback(int callbackId, String[] origin, long[] usages,
 | 
|              long[] quotas) {
 | 
| -        assert mPendingGetOriginCallbacks.containsKey(callbackId);
 | 
| -        mPendingGetOriginCallbacks.remove(callbackId).onReceiveValue(
 | 
| +        assert mPendingGetOriginCallbacks.get(callbackId) != null;
 | 
| +        mPendingGetOriginCallbacks.get(callbackId).onReceiveValue(
 | 
|              new Origins(origin, usages, quotas));
 | 
| +        mPendingGetOriginCallbacks.remove(callbackId);
 | 
|      }
 | 
|  
 | 
|      @CalledByNative
 | 
|      private void onGetUsageAndQuotaForOriginCallback(
 | 
|              int callbackId, boolean isQuota, long usage, long quota) {
 | 
|          if (isQuota) {
 | 
| -            assert mPendingGetQuotaForOriginCallbacks.containsKey(callbackId);
 | 
| -            mPendingGetQuotaForOriginCallbacks.remove(callbackId).onReceiveValue(quota);
 | 
| +            assert mPendingGetQuotaForOriginCallbacks.get(callbackId) != null;
 | 
| +            mPendingGetQuotaForOriginCallbacks.get(callbackId).onReceiveValue(quota);
 | 
| +            mPendingGetQuotaForOriginCallbacks.remove(callbackId);
 | 
|          } else {
 | 
| -            assert mPendingGetUsageForOriginCallbacks.containsKey(callbackId);
 | 
| -            mPendingGetUsageForOriginCallbacks.remove(callbackId).onReceiveValue(usage);
 | 
| +            assert mPendingGetUsageForOriginCallbacks.get(callbackId) != null;
 | 
| +            mPendingGetUsageForOriginCallbacks.get(callbackId).onReceiveValue(usage);
 | 
| +            mPendingGetUsageForOriginCallbacks.remove(callbackId);
 | 
|          }
 | 
|      }
 | 
|  
 | 
| 
 |