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

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

Issue 596078: AppCache: Fix a bug with failing to deliver the ERROR event in some cases.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | 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) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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_update_job.h" 5 #include "webkit/appcache/appcache_update_job.h"
6 6
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "net/base/io_buffer.h" 10 #include "net/base/io_buffer.h"
11 #include "net/base/load_flags.h" 11 #include "net/base/load_flags.h"
12 #include "webkit/appcache/appcache_group.h" 12 #include "webkit/appcache/appcache_group.h"
13 #include "webkit/appcache/appcache_response.h" 13 #include "webkit/appcache/appcache_response.h"
14 14
15 namespace appcache { 15 namespace appcache {
16 16
17 static const int kBufferSize = 4096; 17 static const int kBufferSize = 32768;
18 static const size_t kMaxConcurrentUrlFetches = 2; 18 static const size_t kMaxConcurrentUrlFetches = 2;
19 static const int kMax503Retries = 3; 19 static const int kMax503Retries = 3;
20 20
21 // Extra info associated with requests for use during response processing. 21 // Extra info associated with requests for use during response processing.
22 // This info is deleted when the URLRequest is deleted. 22 // This info is deleted when the URLRequest is deleted.
23 class UpdateJobInfo : public URLRequest::UserData { 23 class UpdateJobInfo : public URLRequest::UserData {
24 public: 24 public:
25 enum RequestType { 25 enum RequestType {
26 MANIFEST_FETCH, 26 MANIFEST_FETCH,
27 URL_FETCH, 27 URL_FETCH,
(...skipping 699 matching lines...) Expand 10 before | Expand all | Expand 10 after
727 newest_cache = group_->newest_complete_cache(); 727 newest_cache = group_->newest_complete_cache();
728 newest_cache->set_update_time(base::TimeTicks::Now()); 728 newest_cache->set_update_time(base::TimeTicks::Now());
729 service_->storage()->StoreGroupAndNewestCache(group_, newest_cache, 729 service_->storage()->StoreGroupAndNewestCache(group_, newest_cache,
730 this); // async 730 this); // async
731 } 731 }
732 732
733 void AppCacheUpdateJob::OnGroupAndNewestCacheStored(AppCacheGroup* group, 733 void AppCacheUpdateJob::OnGroupAndNewestCacheStored(AppCacheGroup* group,
734 AppCache* newest_cache, 734 AppCache* newest_cache,
735 bool success) { 735 bool success) {
736 DCHECK(stored_state_ == STORING); 736 DCHECK(stored_state_ == STORING);
737 if (success) 737 if (success) {
738 stored_state_ = STORED; 738 stored_state_ = STORED;
739 else 739 } else {
740 internal_state_ = CACHE_FAILURE; 740 internal_state_ = CACHE_FAILURE;
741
742 // Restore inprogress_cache_ to get the proper events delivered
743 // and the proper cleanup to occur.
744 if (newest_cache != group->newest_complete_cache())
745 inprogress_cache_ = newest_cache;
746 }
741 MaybeCompleteUpdate(); // will definitely complete 747 MaybeCompleteUpdate(); // will definitely complete
742 } 748 }
743 749
744 void AppCacheUpdateJob::NotifySingleHost(AppCacheHost* host, 750 void AppCacheUpdateJob::NotifySingleHost(AppCacheHost* host,
745 EventID event_id) { 751 EventID event_id) {
746 std::vector<int> ids(1, host->host_id()); 752 std::vector<int> ids(1, host->host_id());
747 host->frontend()->OnEventRaised(ids, event_id); 753 host->frontend()->OnEventRaised(ids, event_id);
748 } 754 }
749 755
750 void AppCacheUpdateJob::NotifyAllPendingMasterHosts(EventID event_id) { 756 void AppCacheUpdateJob::NotifyAllPendingMasterHosts(EventID event_id) {
(...skipping 509 matching lines...) Expand 10 before | Expand all | Expand 10 after
1260 1266
1261 // Break the connection with the group so the group cannot call delete 1267 // Break the connection with the group so the group cannot call delete
1262 // on this object after we've posted a task to delete ourselves. 1268 // on this object after we've posted a task to delete ourselves.
1263 group_->SetUpdateStatus(AppCacheGroup::IDLE); 1269 group_->SetUpdateStatus(AppCacheGroup::IDLE);
1264 group_ = NULL; 1270 group_ = NULL;
1265 1271
1266 MessageLoop::current()->DeleteSoon(FROM_HERE, this); 1272 MessageLoop::current()->DeleteSoon(FROM_HERE, this);
1267 } 1273 }
1268 1274
1269 } // namespace appcache 1275 } // namespace appcache
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698