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

Side by Side Diff: webkit/appcache/appcache_service.cc

Issue 8775034: base::Bind: Convert AppCacheHelper::DeleteAppCacheGroup. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years 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 | Annotate | Revision Log
« no previous file with comments | « webkit/appcache/appcache_service.h ('k') | webkit/appcache/view_appcache_internals_job.cc » ('j') | 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "webkit/appcache/appcache_service.h" 5 #include "webkit/appcache/appcache_service.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
11 #include "net/base/completion_callback.h"
11 #include "net/base/io_buffer.h" 12 #include "net/base/io_buffer.h"
12 #include "webkit/appcache/appcache.h" 13 #include "webkit/appcache/appcache.h"
13 #include "webkit/appcache/appcache_backend_impl.h" 14 #include "webkit/appcache/appcache_backend_impl.h"
14 #include "webkit/appcache/appcache_entry.h" 15 #include "webkit/appcache/appcache_entry.h"
15 #include "webkit/appcache/appcache_histograms.h" 16 #include "webkit/appcache/appcache_histograms.h"
16 #include "webkit/appcache/appcache_policy.h" 17 #include "webkit/appcache/appcache_policy.h"
17 #include "webkit/appcache/appcache_quota_client.h" 18 #include "webkit/appcache/appcache_quota_client.h"
18 #include "webkit/appcache/appcache_response.h" 19 #include "webkit/appcache/appcache_response.h"
19 #include "webkit/appcache/appcache_storage_impl.h" 20 #include "webkit/appcache/appcache_storage_impl.h"
20 #include "webkit/quota/quota_manager.h" 21 #include "webkit/quota/quota_manager.h"
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 if (service_) 88 if (service_)
88 service_->pending_helpers_.erase(this); 89 service_->pending_helpers_.erase(this);
89 } 90 }
90 91
91 virtual void Start() = 0; 92 virtual void Start() = 0;
92 virtual void Cancel(); 93 virtual void Cancel();
93 94
94 protected: 95 protected:
95 void CallCallback(int rv) { 96 void CallCallback(int rv) {
96 if (callback_) { 97 if (callback_) {
97 // Defer to guarentee async completion. 98 // Defer to guarantee async completion.
98 MessageLoop::current()->PostTask( 99 MessageLoop::current()->PostTask(
99 FROM_HERE, base::Bind(&DeferredCallCallback, callback_, rv)); 100 FROM_HERE, base::Bind(&DeferredCallCallback, callback_, rv));
100 } 101 }
101 callback_ = NULL; 102 callback_ = NULL;
102 } 103 }
103 104
104 static void DeferredCallCallback(net::OldCompletionCallback* callback, 105 static void DeferredCallCallback(net::OldCompletionCallback* callback,
105 int rv) { 106 int rv) {
106 callback->Run(rv); 107 callback->Run(rv);
107 } 108 }
(...skipping 28 matching lines...) Expand all
136 if (policy && !policy->CanLoadAppCache(url_, first_party_)) { 137 if (policy && !policy->CanLoadAppCache(url_, first_party_)) {
137 CallCallback(net::ERR_FAILED); 138 CallCallback(net::ERR_FAILED);
138 delete this; 139 delete this;
139 return; 140 return;
140 } 141 }
141 142
142 service_->storage()->FindResponseForMainRequest(url_, GURL(), this); 143 service_->storage()->FindResponseForMainRequest(url_, GURL(), this);
143 } 144 }
144 145
145 private: 146 private:
146 // AppCacheStorage::Delegate override 147 // AppCacheStorage::Delegate implementation.
147 virtual void OnMainResponseFound( 148 virtual void OnMainResponseFound(
148 const GURL& url, const AppCacheEntry& entry, 149 const GURL& url, const AppCacheEntry& entry,
149 const GURL& fallback_url, const AppCacheEntry& fallback_entry, 150 const GURL& fallback_url, const AppCacheEntry& fallback_entry,
150 int64 cache_id, int64 group_id, const GURL& mainfest_url) OVERRIDE; 151 int64 cache_id, int64 group_id, const GURL& mainfest_url) OVERRIDE;
151 152
152 GURL url_; 153 GURL url_;
153 GURL first_party_; 154 GURL first_party_;
154 155
155 DISALLOW_COPY_AND_ASSIGN(CanHandleOfflineHelper); 156 DISALLOW_COPY_AND_ASSIGN(CanHandleOfflineHelper);
156 }; 157 };
157 158
158 void AppCacheService::CanHandleOfflineHelper::OnMainResponseFound( 159 void AppCacheService::CanHandleOfflineHelper::OnMainResponseFound(
159 const GURL& url, const AppCacheEntry& entry, 160 const GURL& url, const AppCacheEntry& entry,
160 const GURL& fallback_url, const AppCacheEntry& fallback_entry, 161 const GURL& fallback_url, const AppCacheEntry& fallback_entry,
161 int64 cache_id, int64 group_id, const GURL& manifest_url) { 162 int64 cache_id, int64 group_id, const GURL& manifest_url) {
162 bool can = (entry.has_response_id() || fallback_entry.has_response_id()); 163 bool can = (entry.has_response_id() || fallback_entry.has_response_id());
163 CallCallback(can ? net::OK : net::ERR_FAILED); 164 CallCallback(can ? net::OK : net::ERR_FAILED);
164 delete this; 165 delete this;
165 } 166 }
166 167
167 // DeleteHelper ------- 168 // DeleteHelper -------
168 169
169 class AppCacheService::DeleteHelper : public AsyncHelper { 170 class AppCacheService::DeleteHelper : public NewAsyncHelper {
170 public: 171 public:
171 DeleteHelper( 172 DeleteHelper(
172 AppCacheService* service, const GURL& manifest_url, 173 AppCacheService* service, const GURL& manifest_url,
173 net::OldCompletionCallback* callback) 174 const net::CompletionCallback& callback)
174 : AsyncHelper(service, callback), manifest_url_(manifest_url) { 175 : NewAsyncHelper(service, callback), manifest_url_(manifest_url) {
175 } 176 }
176 177
177 virtual void Start() { 178 virtual void Start() {
178 service_->storage()->LoadOrCreateGroup(manifest_url_, this); 179 service_->storage()->LoadOrCreateGroup(manifest_url_, this);
179 } 180 }
180 181
181 private: 182 private:
182 // AppCacheStorage::Delegate methods 183 // AppCacheStorage::Delegate implementation.
183 virtual void OnGroupLoaded( 184 virtual void OnGroupLoaded(
184 appcache::AppCacheGroup* group, const GURL& manifest_url); 185 appcache::AppCacheGroup* group, const GURL& manifest_url);
185 virtual void OnGroupMadeObsolete( 186 virtual void OnGroupMadeObsolete(
186 appcache::AppCacheGroup* group, bool success); 187 appcache::AppCacheGroup* group, bool success);
187 188
188 GURL manifest_url_; 189 GURL manifest_url_;
189 DISALLOW_COPY_AND_ASSIGN(DeleteHelper); 190 DISALLOW_COPY_AND_ASSIGN(DeleteHelper);
190 }; 191 };
191 192
192 void AppCacheService::DeleteHelper::OnGroupLoaded( 193 void AppCacheService::DeleteHelper::OnGroupLoaded(
(...skipping 24 matching lines...) Expand all
217 : AsyncHelper(service, callback), origin_(origin), 218 : AsyncHelper(service, callback), origin_(origin),
218 num_caches_to_delete_(0), successes_(0), failures_(0) { 219 num_caches_to_delete_(0), successes_(0), failures_(0) {
219 } 220 }
220 221
221 virtual void Start() { 222 virtual void Start() {
222 // We start by listing all caches, continues in OnAllInfo(). 223 // We start by listing all caches, continues in OnAllInfo().
223 service_->storage()->GetAllInfo(this); 224 service_->storage()->GetAllInfo(this);
224 } 225 }
225 226
226 private: 227 private:
227 // AppCacheStorage::Delegate methods 228 // AppCacheStorage::Delegate implementation.
228 virtual void OnAllInfo(AppCacheInfoCollection* collection); 229 virtual void OnAllInfo(AppCacheInfoCollection* collection);
229 virtual void OnGroupLoaded( 230 virtual void OnGroupLoaded(
230 appcache::AppCacheGroup* group, const GURL& manifest_url); 231 appcache::AppCacheGroup* group, const GURL& manifest_url);
231 virtual void OnGroupMadeObsolete( 232 virtual void OnGroupMadeObsolete(
232 appcache::AppCacheGroup* group, bool success); 233 appcache::AppCacheGroup* group, bool success);
233 234
234 void CacheCompleted(bool success); 235 void CacheCompleted(bool success);
235 236
236 GURL origin_; 237 GURL origin_;
237 int num_caches_to_delete_; 238 int num_caches_to_delete_;
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 AppCacheService* service, AppCacheInfoCollection* collection, 306 AppCacheService* service, AppCacheInfoCollection* collection,
306 const net::CompletionCallback& callback) 307 const net::CompletionCallback& callback)
307 : NewAsyncHelper(service, callback), collection_(collection) { 308 : NewAsyncHelper(service, callback), collection_(collection) {
308 } 309 }
309 310
310 virtual void Start() { 311 virtual void Start() {
311 service_->storage()->GetAllInfo(this); 312 service_->storage()->GetAllInfo(this);
312 } 313 }
313 314
314 private: 315 private:
315 // AppCacheStorage::Delegate override 316 // AppCacheStorage::Delegate implementation.
316 virtual void OnAllInfo(AppCacheInfoCollection* collection); 317 virtual void OnAllInfo(AppCacheInfoCollection* collection);
317 318
318 scoped_refptr<AppCacheInfoCollection> collection_; 319 scoped_refptr<AppCacheInfoCollection> collection_;
319 320
320 DISALLOW_COPY_AND_ASSIGN(GetInfoHelper); 321 DISALLOW_COPY_AND_ASSIGN(GetInfoHelper);
321 }; 322 };
322 323
323 void AppCacheService::GetInfoHelper::OnAllInfo( 324 void AppCacheService::GetInfoHelper::OnAllInfo(
324 AppCacheInfoCollection* collection) { 325 AppCacheInfoCollection* collection) {
325 if (collection) 326 if (collection)
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 delete this; 395 delete this;
395 return; 396 return;
396 } 397 }
397 398
398 cache_ = group->newest_complete_cache(); 399 cache_ = group->newest_complete_cache();
399 const AppCacheEntry* entry = cache_->GetEntryWithResponseId(response_id_); 400 const AppCacheEntry* entry = cache_->GetEntryWithResponseId(response_id_);
400 if (!entry) { 401 if (!entry) {
401 if (cache_->cache_id() == cache_id_) { 402 if (cache_->cache_id() == cache_id_) {
402 AppCacheHistograms::CountCheckResponseResult( 403 AppCacheHistograms::CountCheckResponseResult(
403 AppCacheHistograms::ENTRY_NOT_FOUND); 404 AppCacheHistograms::ENTRY_NOT_FOUND);
404 service_->DeleteAppCacheGroup(manifest_url_, NULL); 405 service_->DeleteAppCacheGroup(manifest_url_, net::CompletionCallback());
405 } else { 406 } else {
406 AppCacheHistograms::CountCheckResponseResult( 407 AppCacheHistograms::CountCheckResponseResult(
407 AppCacheHistograms::RESPONSE_OUT_OF_DATE); 408 AppCacheHistograms::RESPONSE_OUT_OF_DATE);
408 } 409 }
409 delete this; 410 delete this;
410 return; 411 return;
411 } 412 }
412 413
413 // Verify that we can read the response info and data. 414 // Verify that we can read the response info and data.
414 expected_total_size_ = entry->response_size(); 415 expected_total_size_ = entry->response_size();
415 response_reader_.reset(service_->storage()->CreateResponseReader( 416 response_reader_.reset(service_->storage()->CreateResponseReader(
416 manifest_url_, group->group_id(), response_id_)); 417 manifest_url_, group->group_id(), response_id_));
417 info_buffer_ = new HttpResponseInfoIOBuffer(); 418 info_buffer_ = new HttpResponseInfoIOBuffer();
418 response_reader_->ReadInfo(info_buffer_, &read_info_callback_); 419 response_reader_->ReadInfo(info_buffer_, &read_info_callback_);
419 } 420 }
420 421
421 void AppCacheService::CheckResponseHelper::OnReadInfoComplete(int result) { 422 void AppCacheService::CheckResponseHelper::OnReadInfoComplete(int result) {
422 if (result < 0) { 423 if (result < 0) {
423 AppCacheHistograms::CountCheckResponseResult( 424 AppCacheHistograms::CountCheckResponseResult(
424 AppCacheHistograms::READ_HEADERS_ERROR); 425 AppCacheHistograms::READ_HEADERS_ERROR);
425 service_->DeleteAppCacheGroup(manifest_url_, NULL); 426 service_->DeleteAppCacheGroup(manifest_url_, net::CompletionCallback());
426 delete this; 427 delete this;
427 return; 428 return;
428 } 429 }
429 amount_headers_read_ = result; 430 amount_headers_read_ = result;
430 431
431 // Start reading the data. 432 // Start reading the data.
432 data_buffer_ = new net::IOBuffer(kIOBufferSize); 433 data_buffer_ = new net::IOBuffer(kIOBufferSize);
433 response_reader_->ReadData(data_buffer_, kIOBufferSize, 434 response_reader_->ReadData(data_buffer_, kIOBufferSize,
434 &read_data_callback_); 435 &read_data_callback_);
435 } 436 }
(...skipping 11 matching lines...) Expand all
447 if (result < 0) 448 if (result < 0)
448 check_result = AppCacheHistograms::READ_DATA_ERROR; 449 check_result = AppCacheHistograms::READ_DATA_ERROR;
449 else if (info_buffer_->response_data_size != amount_data_read_ || 450 else if (info_buffer_->response_data_size != amount_data_read_ ||
450 expected_total_size_ != amount_data_read_ + amount_headers_read_) 451 expected_total_size_ != amount_data_read_ + amount_headers_read_)
451 check_result = AppCacheHistograms::UNEXPECTED_DATA_SIZE; 452 check_result = AppCacheHistograms::UNEXPECTED_DATA_SIZE;
452 else 453 else
453 check_result = AppCacheHistograms::RESPONSE_OK; 454 check_result = AppCacheHistograms::RESPONSE_OK;
454 AppCacheHistograms::CountCheckResponseResult(check_result); 455 AppCacheHistograms::CountCheckResponseResult(check_result);
455 456
456 if (check_result != AppCacheHistograms::RESPONSE_OK) 457 if (check_result != AppCacheHistograms::RESPONSE_OK)
457 service_->DeleteAppCacheGroup(manifest_url_, NULL); 458 service_->DeleteAppCacheGroup(manifest_url_, net::CompletionCallback());
458 delete this; 459 delete this;
459 } 460 }
460 461
461 462
462 // AppCacheService ------- 463 // AppCacheService -------
463 464
464 AppCacheService::AppCacheService(quota::QuotaManagerProxy* quota_manager_proxy) 465 AppCacheService::AppCacheService(quota::QuotaManagerProxy* quota_manager_proxy)
465 : appcache_policy_(NULL), quota_client_(NULL), 466 : appcache_policy_(NULL), quota_client_(NULL),
466 quota_manager_proxy_(quota_manager_proxy), 467 quota_manager_proxy_(quota_manager_proxy),
467 request_context_(NULL), clear_local_state_on_exit_(false) { 468 request_context_(NULL), clear_local_state_on_exit_(false) {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 } 509 }
509 510
510 void AppCacheService::GetAllAppCacheInfo( 511 void AppCacheService::GetAllAppCacheInfo(
511 AppCacheInfoCollection* collection, 512 AppCacheInfoCollection* collection,
512 const net::CompletionCallback& callback) { 513 const net::CompletionCallback& callback) {
513 DCHECK(collection); 514 DCHECK(collection);
514 GetInfoHelper* helper = new GetInfoHelper(this, collection, callback); 515 GetInfoHelper* helper = new GetInfoHelper(this, collection, callback);
515 helper->Start(); 516 helper->Start();
516 } 517 }
517 518
518 void AppCacheService::DeleteAppCacheGroup(const GURL& manifest_url, 519 void AppCacheService::DeleteAppCacheGroup(
519 net::OldCompletionCallback* callback) { 520 const GURL& manifest_url,
521 const net::CompletionCallback& callback) {
520 DeleteHelper* helper = new DeleteHelper(this, manifest_url, callback); 522 DeleteHelper* helper = new DeleteHelper(this, manifest_url, callback);
521 helper->Start(); 523 helper->Start();
522 } 524 }
523 525
524 void AppCacheService::DeleteAppCachesForOrigin( 526 void AppCacheService::DeleteAppCachesForOrigin(
525 const GURL& origin, net::OldCompletionCallback* callback) { 527 const GURL& origin, net::OldCompletionCallback* callback) {
526 DeleteOriginHelper* helper = new DeleteOriginHelper(this, origin, callback); 528 DeleteOriginHelper* helper = new DeleteOriginHelper(this, origin, callback);
527 helper->Start(); 529 helper->Start();
528 } 530 }
529 531
(...skipping 16 matching lines...) Expand all
546 backends_.insert( 548 backends_.insert(
547 BackendMap::value_type(backend_impl->process_id(), backend_impl)); 549 BackendMap::value_type(backend_impl->process_id(), backend_impl));
548 } 550 }
549 551
550 void AppCacheService::UnregisterBackend( 552 void AppCacheService::UnregisterBackend(
551 AppCacheBackendImpl* backend_impl) { 553 AppCacheBackendImpl* backend_impl) {
552 backends_.erase(backend_impl->process_id()); 554 backends_.erase(backend_impl->process_id());
553 } 555 }
554 556
555 } // namespace appcache 557 } // namespace appcache
OLDNEW
« no previous file with comments | « webkit/appcache/appcache_service.h ('k') | webkit/appcache/view_appcache_internals_job.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698