1aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon/* 2aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon * Copyright (C) 2012 The Android Open Source Project 3aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon * 4aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon * Licensed under the Apache License, Version 2.0 (the "License"); 5aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon * you may not use this file except in compliance with the License. 6aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon * You may obtain a copy of the License at 7aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon * 8aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon * http://www.apache.org/licenses/LICENSE-2.0 9aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon * 10aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon * Unless required by applicable law or agreed to in writing, software 11aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon * distributed under the License is distributed on an "AS IS" BASIS, 12aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon * See the License for the specific language governing permissions and 14aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon * limitations under the License. 15aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon */ 16aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon 17aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixonpackage com.android.webview.chromium; 18aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon 19aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixonimport android.webkit.ValueCallback; 20aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixonimport android.webkit.WebStorage; 21aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon 225d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liuimport java.util.HashMap; 23aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixonimport java.util.Map; 24aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon 255d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liuimport org.chromium.android_webview.AwQuotaManagerBridge; 265d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu 27aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon/** 28aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon * Chromium implementation of WebStorage -- forwards calls to the 29aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon * chromium internal implementation. 30aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon */ 31aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixonfinal class WebStorageAdapter extends WebStorage { 325d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu private final AwQuotaManagerBridge mQuotaManagerBridge; 335d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu WebStorageAdapter(AwQuotaManagerBridge quotaManagerBridge) { 345d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu mQuotaManagerBridge = quotaManagerBridge; 355d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu } 365d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu 37aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon @Override 385d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu public void getOrigins(final ValueCallback<Map> callback) { 395d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu mQuotaManagerBridge.getOrigins(new ValueCallback<AwQuotaManagerBridge.Origins>() { 405d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu @Override 415d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu public void onReceiveValue(AwQuotaManagerBridge.Origins origins) { 425d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu Map<String, Origin> originsMap = new HashMap<String, Origin>(); 435d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu for (int i = 0; i < origins.mOrigins.length; ++i) { 445d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu Origin origin = new Origin(origins.mOrigins[i], origins.mQuotas[i], 455d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu origins.mUsages[i]) { 465d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu // Intentionally empty to work around cross-package protected visibility 475d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu // of Origin constructor. 485d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu }; 495d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu originsMap.put(origins.mOrigins[i], origin); 505d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu } 515d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu callback.onReceiveValue(originsMap); 525d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu } 535d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu }); 54aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon } 55aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon 56aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon @Override 57aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon public void getUsageForOrigin(String origin, ValueCallback<Long> callback) { 585d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu mQuotaManagerBridge.getUsageForOrigin(origin, callback); 59aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon } 60aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon 61aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon @Override 62aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon public void getQuotaForOrigin(String origin, ValueCallback<Long> callback) { 635d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu mQuotaManagerBridge.getQuotaForOrigin(origin, callback); 64aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon } 65aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon 66aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon @Override 67aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon public void setQuotaForOrigin(String origin, long quota) { 685d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu // Intentional no-op for deprecated method. 69aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon } 70aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon 71aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon @Override 72aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon public void deleteOrigin(String origin) { 735d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu mQuotaManagerBridge.deleteOrigin(origin); 74aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon } 75aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon 76aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon @Override 77aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon public void deleteAllData() { 785d20093562806fbce9cc0d3eb4a411ed6c5ce1c0Bo Liu mQuotaManagerBridge.deleteAllData(); 79aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon } 80aadb04e4198e1f0dce390e9434cb189603b8e713Jonathan Dixon} 81