Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(282)

Side by Side Diff: android_webview/glue/java/src/com/android/webview/chromium/WebStorageAdapter.java

Issue 2201593002: aw: Add thread hops to more Adapter classes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package com.android.webview.chromium; 5 package com.android.webview.chromium;
6 6
7 import android.webkit.ValueCallback; 7 import android.webkit.ValueCallback;
8 import android.webkit.WebStorage; 8 import android.webkit.WebStorage;
9 9
10 import org.chromium.android_webview.AwQuotaManagerBridge; 10 import org.chromium.android_webview.AwQuotaManagerBridge;
11 import org.chromium.base.ThreadUtils;
11 12
12 import java.util.HashMap; 13 import java.util.HashMap;
13 import java.util.Map; 14 import java.util.Map;
14 15
15 /** 16 /**
16 * Chromium implementation of WebStorage -- forwards calls to the 17 * Chromium implementation of WebStorage -- forwards calls to the
17 * chromium internal implementation. 18 * chromium internal implementation.
18 */ 19 */
19 @SuppressWarnings("deprecation") 20 @SuppressWarnings("deprecation")
20 final class WebStorageAdapter extends WebStorage { 21 final class WebStorageAdapter extends WebStorage {
22 private final WebViewChromiumFactoryProvider mFactory;
21 private final AwQuotaManagerBridge mQuotaManagerBridge; 23 private final AwQuotaManagerBridge mQuotaManagerBridge;
22 WebStorageAdapter(AwQuotaManagerBridge quotaManagerBridge) { 24
25 WebStorageAdapter(
26 WebViewChromiumFactoryProvider factory, AwQuotaManagerBridge quotaMa nagerBridge) {
27 mFactory = factory;
23 mQuotaManagerBridge = quotaManagerBridge; 28 mQuotaManagerBridge = quotaManagerBridge;
24 } 29 }
25 30
26 @Override 31 @Override
27 public void getOrigins(final ValueCallback<Map> callback) { 32 public void getOrigins(final ValueCallback<Map> callback) {
28 mQuotaManagerBridge.getOrigins(new ValueCallback<AwQuotaManagerBridge.Or igins>() { 33 final ValueCallback<AwQuotaManagerBridge.Origins> awOriginsCallback =
29 @Override 34 new ValueCallback<AwQuotaManagerBridge.Origins>() {
30 public void onReceiveValue(AwQuotaManagerBridge.Origins origins) { 35 @Override
31 Map<String, Origin> originsMap = new HashMap<String, Origin>(); 36 public void onReceiveValue(AwQuotaManagerBridge.Origins orig ins) {
32 for (int i = 0; i < origins.mOrigins.length; ++i) { 37 Map<String, Origin> originsMap = new HashMap<String, Ori gin>();
33 Origin origin = new Origin(origins.mOrigins[i], origins.mQuo tas[i], 38 for (int i = 0; i < origins.mOrigins.length; ++i) {
34 origins.mUsages[i]) { 39 Origin origin = new Origin(
35 // Intentionally empty to work around cross-package prot ected visibility 40 origins.mOrigins[i], origins.mQuotas[i], ori gins.mUsages[i]) {
36 // of Origin constructor. 41 // Intentionally empty to work around cross-pack age protected
37 }; 42 // visibility
38 originsMap.put(origins.mOrigins[i], origin); 43 // of Origin constructor.
44 };
45 originsMap.put(origins.mOrigins[i], origin);
46 }
47 callback.onReceiveValue(originsMap);
48 }
49 };
50 if (checkNeedsPost()) {
51 mFactory.addTask(new Runnable() {
52 @Override
53 public void run() {
54 mQuotaManagerBridge.getOrigins(awOriginsCallback);
39 } 55 }
40 callback.onReceiveValue(originsMap); 56
41 } 57 });
42 }); 58 return;
59 }
60 mQuotaManagerBridge.getOrigins(awOriginsCallback);
43 } 61 }
44 62
45 @Override 63 @Override
46 public void getUsageForOrigin(String origin, ValueCallback<Long> callback) { 64 public void getUsageForOrigin(final String origin, final ValueCallback<Long> callback) {
65 if (checkNeedsPost()) {
66 mFactory.addTask(new Runnable() {
67 @Override
68 public void run() {
69 mQuotaManagerBridge.getUsageForOrigin(origin, callback);
70 }
71
72 });
73 return;
74 }
47 mQuotaManagerBridge.getUsageForOrigin(origin, callback); 75 mQuotaManagerBridge.getUsageForOrigin(origin, callback);
48 } 76 }
49 77
50 @Override 78 @Override
51 public void getQuotaForOrigin(String origin, ValueCallback<Long> callback) { 79 public void getQuotaForOrigin(final String origin, final ValueCallback<Long> callback) {
80 if (checkNeedsPost()) {
81 mFactory.addTask(new Runnable() {
82 @Override
83 public void run() {
84 mQuotaManagerBridge.getQuotaForOrigin(origin, callback);
85 }
86
87 });
88 return;
89 }
52 mQuotaManagerBridge.getQuotaForOrigin(origin, callback); 90 mQuotaManagerBridge.getQuotaForOrigin(origin, callback);
53 } 91 }
54 92
55 @Override 93 @Override
56 public void setQuotaForOrigin(String origin, long quota) { 94 public void setQuotaForOrigin(String origin, long quota) {
57 // Intentional no-op for deprecated method. 95 // Intentional no-op for deprecated method.
58 } 96 }
59 97
60 @Override 98 @Override
61 public void deleteOrigin(String origin) { 99 public void deleteOrigin(final String origin) {
100 if (checkNeedsPost()) {
101 mFactory.addTask(new Runnable() {
102 @Override
103 public void run() {
104 mQuotaManagerBridge.deleteOrigin(origin);
105 }
106
107 });
108 return;
109 }
62 mQuotaManagerBridge.deleteOrigin(origin); 110 mQuotaManagerBridge.deleteOrigin(origin);
63 } 111 }
64 112
65 @Override 113 @Override
66 public void deleteAllData() { 114 public void deleteAllData() {
115 if (checkNeedsPost()) {
116 mFactory.addTask(new Runnable() {
117 @Override
118 public void run() {
119 mQuotaManagerBridge.deleteAllData();
120 }
121
122 });
123 return;
124 }
67 mQuotaManagerBridge.deleteAllData(); 125 mQuotaManagerBridge.deleteAllData();
68 } 126 }
127
128 private static boolean checkNeedsPost() {
129 // Init is guaranteed to have happened if a WebStorageAdapter is created , so do not
130 // need to check WebViewChromiumFactoryProvider.hasStarted.
131 return !ThreadUtils.runningOnUiThread();
132 }
69 } 133 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698