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

Side by Side Diff: android_webview/native/aw_quota_manager_bridge_impl.cc

Issue 1013843002: favor DCHECK_CURRENTLY_ON for better logs in android_webview/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: change a few more Created 5 years, 9 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
« no previous file with comments | « android_webview/native/aw_pdf_exporter.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 #include "android_webview/native/aw_quota_manager_bridge_impl.h" 5 #include "android_webview/native/aw_quota_manager_bridge_impl.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "android_webview/browser/aw_browser_context.h" 9 #include "android_webview/browser/aw_browser_context.h"
10 #include "android_webview/browser/aw_content_browser_client.h" 10 #include "android_webview/browser/aw_content_browser_client.h"
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 size_t num_callbacks_received_; 67 size_t num_callbacks_received_;
68 68
69 DISALLOW_COPY_AND_ASSIGN(GetOriginsTask); 69 DISALLOW_COPY_AND_ASSIGN(GetOriginsTask);
70 }; 70 };
71 71
72 GetOriginsTask::GetOriginsTask( 72 GetOriginsTask::GetOriginsTask(
73 const AwQuotaManagerBridgeImpl::GetOriginsCallback& callback, 73 const AwQuotaManagerBridgeImpl::GetOriginsCallback& callback,
74 QuotaManager* quota_manager) 74 QuotaManager* quota_manager)
75 : ui_callback_(callback), 75 : ui_callback_(callback),
76 quota_manager_(quota_manager) { 76 quota_manager_(quota_manager) {
77 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 77 DCHECK_CURRENTLY_ON(BrowserThread::UI);
78 } 78 }
79 79
80 GetOriginsTask::~GetOriginsTask() {} 80 GetOriginsTask::~GetOriginsTask() {}
81 81
82 void GetOriginsTask::Run() { 82 void GetOriginsTask::Run() {
83 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 83 DCHECK_CURRENTLY_ON(BrowserThread::UI);
84 BrowserThread::PostTask( 84 BrowserThread::PostTask(
85 BrowserThread::IO, 85 BrowserThread::IO,
86 FROM_HERE, 86 FROM_HERE,
87 base::Bind(&QuotaManager::GetOriginsModifiedSince, 87 base::Bind(&QuotaManager::GetOriginsModifiedSince,
88 quota_manager_, 88 quota_manager_,
89 storage::kStorageTypeTemporary, 89 storage::kStorageTypeTemporary,
90 base::Time() /* Since beginning of time. */, 90 base::Time() /* Since beginning of time. */,
91 base::Bind(&GetOriginsTask::OnOriginsObtained, this))); 91 base::Bind(&GetOriginsTask::OnOriginsObtained, this)));
92 } 92 }
93 93
94 void GetOriginsTask::OnOriginsObtained(const std::set<GURL>& origins, 94 void GetOriginsTask::OnOriginsObtained(const std::set<GURL>& origins,
95 storage::StorageType type) { 95 storage::StorageType type) {
96 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 96 DCHECK_CURRENTLY_ON(BrowserThread::IO);
97 num_callbacks_to_wait_ = origins.size(); 97 num_callbacks_to_wait_ = origins.size();
98 num_callbacks_received_ = 0u; 98 num_callbacks_received_ = 0u;
99 99
100 for (std::set<GURL>::const_iterator origin = origins.begin(); 100 for (std::set<GURL>::const_iterator origin = origins.begin();
101 origin != origins.end(); 101 origin != origins.end();
102 ++origin) { 102 ++origin) {
103 quota_manager_->GetUsageAndQuota( 103 quota_manager_->GetUsageAndQuota(
104 *origin, 104 *origin,
105 type, 105 type,
106 base::Bind(&GetOriginsTask::OnUsageAndQuotaObtained, this, *origin)); 106 base::Bind(&GetOriginsTask::OnUsageAndQuotaObtained, this, *origin));
107 } 107 }
108 108
109 CheckDone(); 109 CheckDone();
110 } 110 }
111 111
112 void GetOriginsTask::OnUsageAndQuotaObtained( 112 void GetOriginsTask::OnUsageAndQuotaObtained(
113 const GURL& origin, 113 const GURL& origin,
114 storage::QuotaStatusCode status_code, 114 storage::QuotaStatusCode status_code,
115 int64 usage, 115 int64 usage,
116 int64 quota) { 116 int64 quota) {
117 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 117 DCHECK_CURRENTLY_ON(BrowserThread::IO);
118 if (status_code == storage::kQuotaStatusOk) { 118 if (status_code == storage::kQuotaStatusOk) {
119 origin_.push_back(origin.spec()); 119 origin_.push_back(origin.spec());
120 usage_.push_back(usage); 120 usage_.push_back(usage);
121 quota_.push_back(quota); 121 quota_.push_back(quota);
122 } 122 }
123 123
124 ++num_callbacks_received_; 124 ++num_callbacks_received_;
125 CheckDone(); 125 CheckDone();
126 } 126 }
127 127
128 void GetOriginsTask::CheckDone() { 128 void GetOriginsTask::CheckDone() {
129 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 129 DCHECK_CURRENTLY_ON(BrowserThread::IO);
130 if (num_callbacks_received_ == num_callbacks_to_wait_) { 130 if (num_callbacks_received_ == num_callbacks_to_wait_) {
131 BrowserThread::PostTask( 131 BrowserThread::PostTask(
132 BrowserThread::UI, 132 BrowserThread::UI,
133 FROM_HERE, 133 FROM_HERE,
134 base::Bind(&GetOriginsTask::DoneOnUIThread, this)); 134 base::Bind(&GetOriginsTask::DoneOnUIThread, this));
135 } else if (num_callbacks_received_ > num_callbacks_to_wait_) { 135 } else if (num_callbacks_received_ > num_callbacks_to_wait_) {
136 NOTREACHED(); 136 NOTREACHED();
137 } 137 }
138 } 138 }
139 139
140 // This method is to avoid copying the 3 vector arguments into a bound callback. 140 // This method is to avoid copying the 3 vector arguments into a bound callback.
141 void GetOriginsTask::DoneOnUIThread() { 141 void GetOriginsTask::DoneOnUIThread() {
142 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 142 DCHECK_CURRENTLY_ON(BrowserThread::UI);
143 ui_callback_.Run(origin_, usage_, quota_); 143 ui_callback_.Run(origin_, usage_, quota_);
144 } 144 }
145 145
146 void RunOnUIThread(const base::Closure& task) { 146 void RunOnUIThread(const base::Closure& task) {
147 if (BrowserThread::CurrentlyOn(BrowserThread::UI)) { 147 if (BrowserThread::CurrentlyOn(BrowserThread::UI)) {
148 task.Run(); 148 task.Run();
149 } else { 149 } else {
150 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, task); 150 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, task);
151 } 151 }
152 } 152 }
(...skipping 24 matching lines...) Expand all
177 weak_factory_(this) { 177 weak_factory_(this) {
178 } 178 }
179 179
180 AwQuotaManagerBridgeImpl::~AwQuotaManagerBridgeImpl() {} 180 AwQuotaManagerBridgeImpl::~AwQuotaManagerBridgeImpl() {}
181 181
182 void AwQuotaManagerBridgeImpl::Init(JNIEnv* env, jobject object) { 182 void AwQuotaManagerBridgeImpl::Init(JNIEnv* env, jobject object) {
183 java_ref_ = JavaObjectWeakGlobalRef(env, object); 183 java_ref_ = JavaObjectWeakGlobalRef(env, object);
184 } 184 }
185 185
186 StoragePartition* AwQuotaManagerBridgeImpl::GetStoragePartition() const { 186 StoragePartition* AwQuotaManagerBridgeImpl::GetStoragePartition() const {
187 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 187 DCHECK_CURRENTLY_ON(BrowserThread::UI);
188 188
189 // AndroidWebview does not use per-site storage partitions. 189 // AndroidWebview does not use per-site storage partitions.
190 StoragePartition* storage_partition = 190 StoragePartition* storage_partition =
191 content::BrowserContext::GetDefaultStoragePartition(browser_context_); 191 content::BrowserContext::GetDefaultStoragePartition(browser_context_);
192 DCHECK(storage_partition); 192 DCHECK(storage_partition);
193 return storage_partition; 193 return storage_partition;
194 } 194 }
195 195
196 QuotaManager* AwQuotaManagerBridgeImpl::GetQuotaManager() const { 196 QuotaManager* AwQuotaManagerBridgeImpl::GetQuotaManager() const {
197 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 197 DCHECK_CURRENTLY_ON(BrowserThread::UI);
198 198
199 QuotaManager* quota_manager = GetStoragePartition()->GetQuotaManager(); 199 QuotaManager* quota_manager = GetStoragePartition()->GetQuotaManager();
200 DCHECK(quota_manager); 200 DCHECK(quota_manager);
201 return quota_manager; 201 return quota_manager;
202 } 202 }
203 203
204 void AwQuotaManagerBridgeImpl::DeleteAllData(JNIEnv* env, jobject object) { 204 void AwQuotaManagerBridgeImpl::DeleteAllData(JNIEnv* env, jobject object) {
205 RunOnUIThread(base::Bind(&AwQuotaManagerBridgeImpl::DeleteAllDataOnUiThread, 205 RunOnUIThread(base::Bind(&AwQuotaManagerBridgeImpl::DeleteAllDataOnUiThread,
206 this)); 206 this));
207 } 207 }
208 208
209 void AwQuotaManagerBridgeImpl::DeleteAllDataOnUiThread() { 209 void AwQuotaManagerBridgeImpl::DeleteAllDataOnUiThread() {
210 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 210 DCHECK_CURRENTLY_ON(BrowserThread::UI);
211 GetStoragePartition()->ClearData( 211 GetStoragePartition()->ClearData(
212 // Clear all web storage data except cookies. 212 // Clear all web storage data except cookies.
213 StoragePartition::REMOVE_DATA_MASK_APPCACHE | 213 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
214 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS | 214 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
215 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB | 215 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB |
216 StoragePartition::REMOVE_DATA_MASK_LOCAL_STORAGE | 216 StoragePartition::REMOVE_DATA_MASK_LOCAL_STORAGE |
217 StoragePartition::REMOVE_DATA_MASK_WEBSQL, 217 StoragePartition::REMOVE_DATA_MASK_WEBSQL,
218 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_TEMPORARY, 218 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_TEMPORARY,
219 GURL(), StoragePartition::OriginMatcherFunction(), 219 GURL(), StoragePartition::OriginMatcherFunction(),
220 base::Time(), base::Time::Max(), base::Bind(&base::DoNothing)); 220 base::Time(), base::Time::Max(), base::Bind(&base::DoNothing));
221 } 221 }
222 222
223 void AwQuotaManagerBridgeImpl::DeleteOrigin( 223 void AwQuotaManagerBridgeImpl::DeleteOrigin(
224 JNIEnv* env, jobject object, jstring origin) { 224 JNIEnv* env, jobject object, jstring origin) {
225 base::string16 origin_string( 225 base::string16 origin_string(
226 base::android::ConvertJavaStringToUTF16(env, origin)); 226 base::android::ConvertJavaStringToUTF16(env, origin));
227 RunOnUIThread(base::Bind(&AwQuotaManagerBridgeImpl::DeleteOriginOnUiThread, 227 RunOnUIThread(base::Bind(&AwQuotaManagerBridgeImpl::DeleteOriginOnUiThread,
228 this, 228 this,
229 origin_string)); 229 origin_string));
230 } 230 }
231 231
232 void AwQuotaManagerBridgeImpl::DeleteOriginOnUiThread( 232 void AwQuotaManagerBridgeImpl::DeleteOriginOnUiThread(
233 const base::string16& origin) { 233 const base::string16& origin) {
234 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 234 DCHECK_CURRENTLY_ON(BrowserThread::UI);
235 StoragePartition* storage_partition = GetStoragePartition(); 235 StoragePartition* storage_partition = GetStoragePartition();
236 storage_partition->ClearDataForOrigin( 236 storage_partition->ClearDataForOrigin(
237 // All (temporary) QuotaClient types. 237 // All (temporary) QuotaClient types.
238 StoragePartition::REMOVE_DATA_MASK_APPCACHE | 238 StoragePartition::REMOVE_DATA_MASK_APPCACHE |
239 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS | 239 StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS |
240 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB | 240 StoragePartition::REMOVE_DATA_MASK_INDEXEDDB |
241 StoragePartition::REMOVE_DATA_MASK_WEBSQL, 241 StoragePartition::REMOVE_DATA_MASK_WEBSQL,
242 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_TEMPORARY, 242 StoragePartition::QUOTA_MANAGED_STORAGE_MASK_TEMPORARY,
243 GURL(origin), 243 GURL(origin),
244 storage_partition->GetURLRequestContext(), 244 storage_partition->GetURLRequestContext(),
245 base::Bind(&base::DoNothing)); 245 base::Bind(&base::DoNothing));
246 } 246 }
247 247
248 void AwQuotaManagerBridgeImpl::GetOrigins( 248 void AwQuotaManagerBridgeImpl::GetOrigins(
249 JNIEnv* env, jobject object, jint callback_id) { 249 JNIEnv* env, jobject object, jint callback_id) {
250 RunOnUIThread(base::Bind(&AwQuotaManagerBridgeImpl::GetOriginsOnUiThread, 250 RunOnUIThread(base::Bind(&AwQuotaManagerBridgeImpl::GetOriginsOnUiThread,
251 this, 251 this,
252 callback_id)); 252 callback_id));
253 } 253 }
254 254
255 void AwQuotaManagerBridgeImpl::GetOriginsOnUiThread(jint callback_id) { 255 void AwQuotaManagerBridgeImpl::GetOriginsOnUiThread(jint callback_id) {
256 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 256 DCHECK_CURRENTLY_ON(BrowserThread::UI);
257 257
258 const GetOriginsCallback ui_callback = base::Bind( 258 const GetOriginsCallback ui_callback = base::Bind(
259 &AwQuotaManagerBridgeImpl::GetOriginsCallbackImpl, 259 &AwQuotaManagerBridgeImpl::GetOriginsCallbackImpl,
260 weak_factory_.GetWeakPtr(), 260 weak_factory_.GetWeakPtr(),
261 callback_id); 261 callback_id);
262 262
263 (new GetOriginsTask(ui_callback, GetQuotaManager()))->Run(); 263 (new GetOriginsTask(ui_callback, GetQuotaManager()))->Run();
264 } 264 }
265 265
266 void AwQuotaManagerBridgeImpl::GetOriginsCallbackImpl( 266 void AwQuotaManagerBridgeImpl::GetOriginsCallbackImpl(
267 int jcallback_id, 267 int jcallback_id,
268 const std::vector<std::string>& origin, 268 const std::vector<std::string>& origin,
269 const std::vector<int64>& usage, 269 const std::vector<int64>& usage,
270 const std::vector<int64>& quota) { 270 const std::vector<int64>& quota) {
271 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 271 DCHECK_CURRENTLY_ON(BrowserThread::UI);
272 JNIEnv* env = AttachCurrentThread(); 272 JNIEnv* env = AttachCurrentThread();
273 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); 273 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
274 if (obj.is_null()) 274 if (obj.is_null())
275 return; 275 return;
276 276
277 Java_AwQuotaManagerBridge_onGetOriginsCallback( 277 Java_AwQuotaManagerBridge_onGetOriginsCallback(
278 env, 278 env,
279 obj.obj(), 279 obj.obj(),
280 jcallback_id, 280 jcallback_id,
281 base::android::ToJavaArrayOfStrings(env, origin).obj(), 281 base::android::ToJavaArrayOfStrings(env, origin).obj(),
282 base::android::ToJavaLongArray(env, usage).obj(), 282 base::android::ToJavaLongArray(env, usage).obj(),
283 base::android::ToJavaLongArray(env, quota).obj()); 283 base::android::ToJavaLongArray(env, quota).obj());
284 } 284 }
285 285
286 namespace { 286 namespace {
287 287
288 void OnUsageAndQuotaObtained( 288 void OnUsageAndQuotaObtained(
289 const AwQuotaManagerBridgeImpl::QuotaUsageCallback& ui_callback, 289 const AwQuotaManagerBridgeImpl::QuotaUsageCallback& ui_callback,
290 storage::QuotaStatusCode status_code, 290 storage::QuotaStatusCode status_code,
291 int64 usage, 291 int64 usage,
292 int64 quota) { 292 int64 quota) {
293 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 293 DCHECK_CURRENTLY_ON(BrowserThread::IO);
294 if (status_code != storage::kQuotaStatusOk) { 294 if (status_code != storage::kQuotaStatusOk) {
295 usage = 0; 295 usage = 0;
296 quota = 0; 296 quota = 0;
297 } 297 }
298 BrowserThread::PostTask( 298 BrowserThread::PostTask(
299 BrowserThread::UI, 299 BrowserThread::UI,
300 FROM_HERE, 300 FROM_HERE,
301 base::Bind(ui_callback, usage, quota)); 301 base::Bind(ui_callback, usage, quota));
302 } 302 }
303 303
(...skipping 11 matching lines...) Expand all
315 this, 315 this,
316 origin_string, 316 origin_string,
317 callback_id, 317 callback_id,
318 is_quota)); 318 is_quota));
319 } 319 }
320 320
321 void AwQuotaManagerBridgeImpl::GetUsageAndQuotaForOriginOnUiThread( 321 void AwQuotaManagerBridgeImpl::GetUsageAndQuotaForOriginOnUiThread(
322 const base::string16& origin, 322 const base::string16& origin,
323 jint callback_id, 323 jint callback_id,
324 bool is_quota) { 324 bool is_quota) {
325 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 325 DCHECK_CURRENTLY_ON(BrowserThread::UI);
326 const QuotaUsageCallback ui_callback = base::Bind( 326 const QuotaUsageCallback ui_callback = base::Bind(
327 &AwQuotaManagerBridgeImpl::QuotaUsageCallbackImpl, 327 &AwQuotaManagerBridgeImpl::QuotaUsageCallbackImpl,
328 weak_factory_.GetWeakPtr(), 328 weak_factory_.GetWeakPtr(),
329 callback_id, 329 callback_id,
330 is_quota); 330 is_quota);
331 331
332 BrowserThread::PostTask( 332 BrowserThread::PostTask(
333 BrowserThread::IO, 333 BrowserThread::IO,
334 FROM_HERE, 334 FROM_HERE,
335 base::Bind(&QuotaManager::GetUsageAndQuota, 335 base::Bind(&QuotaManager::GetUsageAndQuota,
336 GetQuotaManager(), 336 GetQuotaManager(),
337 GURL(origin), 337 GURL(origin),
338 storage::kStorageTypeTemporary, 338 storage::kStorageTypeTemporary,
339 base::Bind(&OnUsageAndQuotaObtained, ui_callback))); 339 base::Bind(&OnUsageAndQuotaObtained, ui_callback)));
340 } 340 }
341 341
342 void AwQuotaManagerBridgeImpl::QuotaUsageCallbackImpl( 342 void AwQuotaManagerBridgeImpl::QuotaUsageCallbackImpl(
343 int jcallback_id, bool is_quota, int64 usage, int64 quota) { 343 int jcallback_id, bool is_quota, int64 usage, int64 quota) {
344 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 344 DCHECK_CURRENTLY_ON(BrowserThread::UI);
345 JNIEnv* env = AttachCurrentThread(); 345 JNIEnv* env = AttachCurrentThread();
346 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); 346 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
347 if (obj.is_null()) 347 if (obj.is_null())
348 return; 348 return;
349 349
350 Java_AwQuotaManagerBridge_onGetUsageAndQuotaForOriginCallback( 350 Java_AwQuotaManagerBridge_onGetUsageAndQuotaForOriginCallback(
351 env, obj.obj(), jcallback_id, is_quota, usage, quota); 351 env, obj.obj(), jcallback_id, is_quota, usage, quota);
352 } 352 }
353 353
354 bool RegisterAwQuotaManagerBridge(JNIEnv* env) { 354 bool RegisterAwQuotaManagerBridge(JNIEnv* env) {
355 return RegisterNativesImpl(env); 355 return RegisterNativesImpl(env);
356 } 356 }
357 357
358 } // namespace android_webview 358 } // namespace android_webview
OLDNEW
« no previous file with comments | « android_webview/native/aw_pdf_exporter.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698