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