OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_storage_impl.h" | 5 #include "webkit/appcache/appcache_storage_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <functional> | 8 #include <functional> |
9 #include <set> | 9 #include <set> |
10 #include <vector> | 10 #include <vector> |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 | 141 |
142 class AppCacheStorageImpl::DatabaseTask | 142 class AppCacheStorageImpl::DatabaseTask |
143 : public base::RefCountedThreadSafe<DatabaseTask> { | 143 : public base::RefCountedThreadSafe<DatabaseTask> { |
144 public: | 144 public: |
145 explicit DatabaseTask(AppCacheStorageImpl* storage) | 145 explicit DatabaseTask(AppCacheStorageImpl* storage) |
146 : storage_(storage), database_(storage->database_), | 146 : storage_(storage), database_(storage->database_), |
147 io_thread_(base::MessageLoopProxy::current()) { | 147 io_thread_(base::MessageLoopProxy::current()) { |
148 DCHECK(io_thread_); | 148 DCHECK(io_thread_); |
149 } | 149 } |
150 | 150 |
151 virtual ~DatabaseTask() {} | |
152 | |
153 void AddDelegate(DelegateReference* delegate_reference) { | 151 void AddDelegate(DelegateReference* delegate_reference) { |
154 delegates_.push_back(make_scoped_refptr(delegate_reference)); | 152 delegates_.push_back(make_scoped_refptr(delegate_reference)); |
155 } | 153 } |
156 | 154 |
157 // Schedules a task to be Run() on the DB thread. Tasks | 155 // Schedules a task to be Run() on the DB thread. Tasks |
158 // are run in the order in which they are scheduled. | 156 // are run in the order in which they are scheduled. |
159 void Schedule(); | 157 void Schedule(); |
160 | 158 |
161 // Called on the DB thread. | 159 // Called on the DB thread. |
162 virtual void Run() = 0; | 160 virtual void Run() = 0; |
163 | 161 |
164 // Called on the IO thread after Run() has completed. | 162 // Called on the IO thread after Run() has completed. |
165 virtual void RunCompleted() {} | 163 virtual void RunCompleted() {} |
166 | 164 |
167 // Once scheduled a task cannot be cancelled, but the | 165 // Once scheduled a task cannot be cancelled, but the |
168 // call to RunCompleted may be. This method should only be | 166 // call to RunCompleted may be. This method should only be |
169 // called on the IO thread. This is used by AppCacheStorageImpl | 167 // called on the IO thread. This is used by AppCacheStorageImpl |
170 // to cancel the completion calls when AppCacheStorageImpl is | 168 // to cancel the completion calls when AppCacheStorageImpl is |
171 // destructed. This method may be overriden to release or delete | 169 // destructed. This method may be overriden to release or delete |
172 // additional data associated with the task that is not DB thread | 170 // additional data associated with the task that is not DB thread |
173 // safe. If overriden, this base class method must be called from | 171 // safe. If overriden, this base class method must be called from |
174 // within the override. | 172 // within the override. |
175 virtual void CancelCompletion(); | 173 virtual void CancelCompletion(); |
176 | 174 |
177 protected: | 175 protected: |
| 176 friend class base::RefCountedThreadSafe<DatabaseTask>; |
| 177 virtual ~DatabaseTask() {} |
| 178 |
178 AppCacheStorageImpl* storage_; | 179 AppCacheStorageImpl* storage_; |
179 AppCacheDatabase* database_; | 180 AppCacheDatabase* database_; |
180 DelegateReferenceVector delegates_; | 181 DelegateReferenceVector delegates_; |
181 | 182 |
182 private: | 183 private: |
183 void CallRun(base::TimeTicks schedule_time); | 184 void CallRun(base::TimeTicks schedule_time); |
184 void CallRunCompleted(base::TimeTicks schedule_time); | 185 void CallRunCompleted(base::TimeTicks schedule_time); |
185 void CallDisableStorage(); | 186 void CallDisableStorage(); |
186 | 187 |
187 scoped_refptr<base::MessageLoopProxy> io_thread_; | 188 scoped_refptr<base::MessageLoopProxy> io_thread_; |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 | 252 |
252 // InitTask ------- | 253 // InitTask ------- |
253 | 254 |
254 class AppCacheStorageImpl::InitTask : public DatabaseTask { | 255 class AppCacheStorageImpl::InitTask : public DatabaseTask { |
255 public: | 256 public: |
256 explicit InitTask(AppCacheStorageImpl* storage) | 257 explicit InitTask(AppCacheStorageImpl* storage) |
257 : DatabaseTask(storage), last_group_id_(0), | 258 : DatabaseTask(storage), last_group_id_(0), |
258 last_cache_id_(0), last_response_id_(0), | 259 last_cache_id_(0), last_response_id_(0), |
259 last_deletable_response_rowid_(0) {} | 260 last_deletable_response_rowid_(0) {} |
260 | 261 |
261 virtual void Run(); | 262 // DatabaseTask: |
262 virtual void RunCompleted(); | 263 virtual void Run() OVERRIDE; |
| 264 virtual void RunCompleted() OVERRIDE; |
263 | 265 |
| 266 protected: |
| 267 virtual ~InitTask() {} |
| 268 |
| 269 private: |
264 int64 last_group_id_; | 270 int64 last_group_id_; |
265 int64 last_cache_id_; | 271 int64 last_cache_id_; |
266 int64 last_response_id_; | 272 int64 last_response_id_; |
267 int64 last_deletable_response_rowid_; | 273 int64 last_deletable_response_rowid_; |
268 std::map<GURL, int64> usage_map_; | 274 std::map<GURL, int64> usage_map_; |
269 }; | 275 }; |
270 | 276 |
271 void AppCacheStorageImpl::InitTask::Run() { | 277 void AppCacheStorageImpl::InitTask::Run() { |
272 database_->FindLastStorageIds( | 278 database_->FindLastStorageIds( |
273 &last_group_id_, &last_cache_id_, &last_response_id_, | 279 &last_group_id_, &last_cache_id_, &last_response_id_, |
(...skipping 21 matching lines...) Expand all Loading... |
295 storage_->service()->quota_client()->NotifyAppCacheReady(); | 301 storage_->service()->quota_client()->NotifyAppCacheReady(); |
296 } | 302 } |
297 | 303 |
298 // CloseConnectionTask ------- | 304 // CloseConnectionTask ------- |
299 | 305 |
300 class AppCacheStorageImpl::CloseConnectionTask : public DatabaseTask { | 306 class AppCacheStorageImpl::CloseConnectionTask : public DatabaseTask { |
301 public: | 307 public: |
302 explicit CloseConnectionTask(AppCacheStorageImpl* storage) | 308 explicit CloseConnectionTask(AppCacheStorageImpl* storage) |
303 : DatabaseTask(storage) {} | 309 : DatabaseTask(storage) {} |
304 | 310 |
305 virtual void Run() { database_->CloseConnection(); } | 311 // DatabaseTask: |
| 312 virtual void Run() OVERRIDE { database_->CloseConnection(); } |
| 313 |
| 314 protected: |
| 315 virtual ~CloseConnectionTask() {} |
306 }; | 316 }; |
307 | 317 |
308 // DisableDatabaseTask ------- | 318 // DisableDatabaseTask ------- |
309 | 319 |
310 class AppCacheStorageImpl::DisableDatabaseTask : public DatabaseTask { | 320 class AppCacheStorageImpl::DisableDatabaseTask : public DatabaseTask { |
311 public: | 321 public: |
312 explicit DisableDatabaseTask(AppCacheStorageImpl* storage) | 322 explicit DisableDatabaseTask(AppCacheStorageImpl* storage) |
313 : DatabaseTask(storage) {} | 323 : DatabaseTask(storage) {} |
314 | 324 |
315 virtual void Run() { database_->Disable(); } | 325 // DatabaseTask: |
| 326 virtual void Run() OVERRIDE { database_->Disable(); } |
| 327 |
| 328 protected: |
| 329 virtual ~DisableDatabaseTask() {} |
316 }; | 330 }; |
317 | 331 |
318 // GetAllInfoTask ------- | 332 // GetAllInfoTask ------- |
319 | 333 |
320 class AppCacheStorageImpl::GetAllInfoTask : public DatabaseTask { | 334 class AppCacheStorageImpl::GetAllInfoTask : public DatabaseTask { |
321 public: | 335 public: |
322 explicit GetAllInfoTask(AppCacheStorageImpl* storage) | 336 explicit GetAllInfoTask(AppCacheStorageImpl* storage) |
323 : DatabaseTask(storage), | 337 : DatabaseTask(storage), |
324 info_collection_(new AppCacheInfoCollection()) { | 338 info_collection_(new AppCacheInfoCollection()) { |
325 } | 339 } |
326 | 340 |
327 virtual void Run(); | 341 // DatabaseTask: |
328 virtual void RunCompleted(); | 342 virtual void Run() OVERRIDE; |
| 343 virtual void RunCompleted() OVERRIDE; |
329 | 344 |
| 345 protected: |
| 346 virtual ~GetAllInfoTask() {} |
| 347 |
| 348 private: |
330 scoped_refptr<AppCacheInfoCollection> info_collection_; | 349 scoped_refptr<AppCacheInfoCollection> info_collection_; |
331 }; | 350 }; |
332 | 351 |
333 void AppCacheStorageImpl::GetAllInfoTask::Run() { | 352 void AppCacheStorageImpl::GetAllInfoTask::Run() { |
334 std::set<GURL> origins; | 353 std::set<GURL> origins; |
335 database_->FindOriginsWithGroups(&origins); | 354 database_->FindOriginsWithGroups(&origins); |
336 for (std::set<GURL>::const_iterator origin = origins.begin(); | 355 for (std::set<GURL>::const_iterator origin = origins.begin(); |
337 origin != origins.end(); ++origin) { | 356 origin != origins.end(); ++origin) { |
338 AppCacheInfoVector& infos = | 357 AppCacheInfoVector& infos = |
339 info_collection_->infos_by_origin[*origin]; | 358 info_collection_->infos_by_origin[*origin]; |
(...skipping 22 matching lines...) Expand all Loading... |
362 DCHECK(delegates_.size() == 1); | 381 DCHECK(delegates_.size() == 1); |
363 FOR_EACH_DELEGATE(delegates_, OnAllInfo(info_collection_)); | 382 FOR_EACH_DELEGATE(delegates_, OnAllInfo(info_collection_)); |
364 } | 383 } |
365 | 384 |
366 // StoreOrLoadTask ------- | 385 // StoreOrLoadTask ------- |
367 | 386 |
368 class AppCacheStorageImpl::StoreOrLoadTask : public DatabaseTask { | 387 class AppCacheStorageImpl::StoreOrLoadTask : public DatabaseTask { |
369 protected: | 388 protected: |
370 explicit StoreOrLoadTask(AppCacheStorageImpl* storage) | 389 explicit StoreOrLoadTask(AppCacheStorageImpl* storage) |
371 : DatabaseTask(storage) {} | 390 : DatabaseTask(storage) {} |
| 391 virtual ~StoreOrLoadTask() {} |
372 | 392 |
373 bool FindRelatedCacheRecords(int64 cache_id); | 393 bool FindRelatedCacheRecords(int64 cache_id); |
374 void CreateCacheAndGroupFromRecords( | 394 void CreateCacheAndGroupFromRecords( |
375 scoped_refptr<AppCache>* cache, scoped_refptr<AppCacheGroup>* group); | 395 scoped_refptr<AppCache>* cache, scoped_refptr<AppCacheGroup>* group); |
376 | 396 |
377 AppCacheDatabase::GroupRecord group_record_; | 397 AppCacheDatabase::GroupRecord group_record_; |
378 AppCacheDatabase::CacheRecord cache_record_; | 398 AppCacheDatabase::CacheRecord cache_record_; |
379 std::vector<AppCacheDatabase::EntryRecord> entry_records_; | 399 std::vector<AppCacheDatabase::EntryRecord> entry_records_; |
380 std::vector<AppCacheDatabase::NamespaceRecord> | 400 std::vector<AppCacheDatabase::NamespaceRecord> |
381 intercept_namespace_records_; | 401 intercept_namespace_records_; |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
446 } | 466 } |
447 | 467 |
448 // CacheLoadTask ------- | 468 // CacheLoadTask ------- |
449 | 469 |
450 class AppCacheStorageImpl::CacheLoadTask : public StoreOrLoadTask { | 470 class AppCacheStorageImpl::CacheLoadTask : public StoreOrLoadTask { |
451 public: | 471 public: |
452 CacheLoadTask(int64 cache_id, AppCacheStorageImpl* storage) | 472 CacheLoadTask(int64 cache_id, AppCacheStorageImpl* storage) |
453 : StoreOrLoadTask(storage), cache_id_(cache_id), | 473 : StoreOrLoadTask(storage), cache_id_(cache_id), |
454 success_(false) {} | 474 success_(false) {} |
455 | 475 |
456 virtual void Run(); | 476 // DatabaseTask: |
457 virtual void RunCompleted(); | 477 virtual void Run() OVERRIDE; |
| 478 virtual void RunCompleted() OVERRIDE; |
458 | 479 |
| 480 protected: |
| 481 virtual ~CacheLoadTask() {} |
| 482 |
| 483 private: |
459 int64 cache_id_; | 484 int64 cache_id_; |
460 bool success_; | 485 bool success_; |
461 }; | 486 }; |
462 | 487 |
463 void AppCacheStorageImpl::CacheLoadTask::Run() { | 488 void AppCacheStorageImpl::CacheLoadTask::Run() { |
464 success_ = | 489 success_ = |
465 database_->FindCache(cache_id_, &cache_record_) && | 490 database_->FindCache(cache_id_, &cache_record_) && |
466 database_->FindGroup(cache_record_.group_id, &group_record_) && | 491 database_->FindGroup(cache_record_.group_id, &group_record_) && |
467 FindRelatedCacheRecords(cache_id_); | 492 FindRelatedCacheRecords(cache_id_); |
468 | 493 |
(...skipping 14 matching lines...) Expand all Loading... |
483 } | 508 } |
484 | 509 |
485 // GroupLoadTask ------- | 510 // GroupLoadTask ------- |
486 | 511 |
487 class AppCacheStorageImpl::GroupLoadTask : public StoreOrLoadTask { | 512 class AppCacheStorageImpl::GroupLoadTask : public StoreOrLoadTask { |
488 public: | 513 public: |
489 GroupLoadTask(GURL manifest_url, AppCacheStorageImpl* storage) | 514 GroupLoadTask(GURL manifest_url, AppCacheStorageImpl* storage) |
490 : StoreOrLoadTask(storage), manifest_url_(manifest_url), | 515 : StoreOrLoadTask(storage), manifest_url_(manifest_url), |
491 success_(false) {} | 516 success_(false) {} |
492 | 517 |
493 virtual void Run(); | 518 // DatabaseTask: |
494 virtual void RunCompleted(); | 519 virtual void Run() OVERRIDE; |
| 520 virtual void RunCompleted() OVERRIDE; |
495 | 521 |
| 522 protected: |
| 523 virtual ~GroupLoadTask() {} |
| 524 |
| 525 private: |
496 GURL manifest_url_; | 526 GURL manifest_url_; |
497 bool success_; | 527 bool success_; |
498 }; | 528 }; |
499 | 529 |
500 void AppCacheStorageImpl::GroupLoadTask::Run() { | 530 void AppCacheStorageImpl::GroupLoadTask::Run() { |
501 success_ = | 531 success_ = |
502 database_->FindGroupForManifestUrl(manifest_url_, &group_record_) && | 532 database_->FindGroupForManifestUrl(manifest_url_, &group_record_) && |
503 database_->FindCacheForGroup(group_record_.group_id, &cache_record_) && | 533 database_->FindCacheForGroup(group_record_.group_id, &cache_record_) && |
504 FindRelatedCacheRecords(cache_record_.cache_id); | 534 FindRelatedCacheRecords(cache_record_.cache_id); |
505 | 535 |
(...skipping 25 matching lines...) Expand all Loading... |
531 | 561 |
532 class AppCacheStorageImpl::StoreGroupAndCacheTask : public StoreOrLoadTask { | 562 class AppCacheStorageImpl::StoreGroupAndCacheTask : public StoreOrLoadTask { |
533 public: | 563 public: |
534 StoreGroupAndCacheTask(AppCacheStorageImpl* storage, AppCacheGroup* group, | 564 StoreGroupAndCacheTask(AppCacheStorageImpl* storage, AppCacheGroup* group, |
535 AppCache* newest_cache); | 565 AppCache* newest_cache); |
536 | 566 |
537 void GetQuotaThenSchedule(); | 567 void GetQuotaThenSchedule(); |
538 void OnQuotaCallback( | 568 void OnQuotaCallback( |
539 quota::QuotaStatusCode status, int64 usage, int64 quota); | 569 quota::QuotaStatusCode status, int64 usage, int64 quota); |
540 | 570 |
541 virtual void Run(); | 571 // DatabaseTask: |
542 virtual void RunCompleted(); | 572 virtual void Run() OVERRIDE; |
543 virtual void CancelCompletion(); | 573 virtual void RunCompleted() OVERRIDE; |
| 574 virtual void CancelCompletion() OVERRIDE; |
544 | 575 |
| 576 protected: |
| 577 virtual ~StoreGroupAndCacheTask() {} |
| 578 |
| 579 private: |
545 scoped_refptr<AppCacheGroup> group_; | 580 scoped_refptr<AppCacheGroup> group_; |
546 scoped_refptr<AppCache> cache_; | 581 scoped_refptr<AppCache> cache_; |
547 bool success_; | 582 bool success_; |
548 bool would_exceed_quota_; | 583 bool would_exceed_quota_; |
549 int64 space_available_; | 584 int64 space_available_; |
550 int64 new_origin_usage_; | 585 int64 new_origin_usage_; |
551 std::vector<int64> newly_deletable_response_ids_; | 586 std::vector<int64> newly_deletable_response_ids_; |
552 }; | 587 }; |
553 | 588 |
554 AppCacheStorageImpl::StoreGroupAndCacheTask::StoreGroupAndCacheTask( | 589 AppCacheStorageImpl::StoreGroupAndCacheTask::StoreGroupAndCacheTask( |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
825 it != groups_in_use->end(); ++it) { | 860 it != groups_in_use->end(); ++it) { |
826 AppCacheGroup* group = it->second; | 861 AppCacheGroup* group = it->second; |
827 AppCache* cache = group->newest_complete_cache(); | 862 AppCache* cache = group->newest_complete_cache(); |
828 if (group->is_obsolete() || !cache) | 863 if (group->is_obsolete() || !cache) |
829 continue; | 864 continue; |
830 cache_ids_in_use_.insert(cache->cache_id()); | 865 cache_ids_in_use_.insert(cache->cache_id()); |
831 } | 866 } |
832 } | 867 } |
833 } | 868 } |
834 | 869 |
835 virtual void Run(); | 870 // DatabaseTask: |
836 virtual void RunCompleted(); | 871 virtual void Run() OVERRIDE; |
| 872 virtual void RunCompleted() OVERRIDE; |
| 873 |
| 874 protected: |
| 875 virtual ~FindMainResponseTask() {} |
837 | 876 |
838 private: | 877 private: |
839 typedef std::vector<AppCacheDatabase::NamespaceRecord*> | 878 typedef std::vector<AppCacheDatabase::NamespaceRecord*> |
840 NamespaceRecordPtrVector; | 879 NamespaceRecordPtrVector; |
| 880 |
841 bool FindExactMatch(int64 preferred_id); | 881 bool FindExactMatch(int64 preferred_id); |
842 bool FindNamespaceMatch(int64 preferred_id); | 882 bool FindNamespaceMatch(int64 preferred_id); |
843 bool FindNamespaceHelper( | 883 bool FindNamespaceHelper( |
844 int64 preferred_cache_id, | 884 int64 preferred_cache_id, |
845 AppCacheDatabase::NamespaceRecordVector* namespaces, | 885 AppCacheDatabase::NamespaceRecordVector* namespaces, |
846 NetworkNamespaceHelper* network_namespace_helper); | 886 NetworkNamespaceHelper* network_namespace_helper); |
847 bool FindFirstValidNamespace(const NamespaceRecordPtrVector& namespaces); | 887 bool FindFirstValidNamespace(const NamespaceRecordPtrVector& namespaces); |
848 | 888 |
849 GURL url_; | 889 GURL url_; |
850 GURL preferred_manifest_url_; | 890 GURL preferred_manifest_url_; |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1023 } | 1063 } |
1024 | 1064 |
1025 // MarkEntryAsForeignTask ------- | 1065 // MarkEntryAsForeignTask ------- |
1026 | 1066 |
1027 class AppCacheStorageImpl::MarkEntryAsForeignTask : public DatabaseTask { | 1067 class AppCacheStorageImpl::MarkEntryAsForeignTask : public DatabaseTask { |
1028 public: | 1068 public: |
1029 MarkEntryAsForeignTask( | 1069 MarkEntryAsForeignTask( |
1030 AppCacheStorageImpl* storage, const GURL& url, int64 cache_id) | 1070 AppCacheStorageImpl* storage, const GURL& url, int64 cache_id) |
1031 : DatabaseTask(storage), cache_id_(cache_id), entry_url_(url) {} | 1071 : DatabaseTask(storage), cache_id_(cache_id), entry_url_(url) {} |
1032 | 1072 |
1033 virtual void Run(); | 1073 // DatabaseTask: |
1034 virtual void RunCompleted(); | 1074 virtual void Run() OVERRIDE; |
| 1075 virtual void RunCompleted() OVERRIDE; |
1035 | 1076 |
| 1077 protected: |
| 1078 virtual ~MarkEntryAsForeignTask() {} |
| 1079 |
| 1080 private: |
1036 int64 cache_id_; | 1081 int64 cache_id_; |
1037 GURL entry_url_; | 1082 GURL entry_url_; |
1038 }; | 1083 }; |
1039 | 1084 |
1040 void AppCacheStorageImpl::MarkEntryAsForeignTask::Run() { | 1085 void AppCacheStorageImpl::MarkEntryAsForeignTask::Run() { |
1041 database_->AddEntryFlags(entry_url_, cache_id_, AppCacheEntry::FOREIGN); | 1086 database_->AddEntryFlags(entry_url_, cache_id_, AppCacheEntry::FOREIGN); |
1042 } | 1087 } |
1043 | 1088 |
1044 void AppCacheStorageImpl::MarkEntryAsForeignTask::RunCompleted() { | 1089 void AppCacheStorageImpl::MarkEntryAsForeignTask::RunCompleted() { |
1045 DCHECK(storage_->pending_foreign_markings_.front().first == entry_url_ && | 1090 DCHECK(storage_->pending_foreign_markings_.front().first == entry_url_ && |
1046 storage_->pending_foreign_markings_.front().second == cache_id_); | 1091 storage_->pending_foreign_markings_.front().second == cache_id_); |
1047 storage_->pending_foreign_markings_.pop_front(); | 1092 storage_->pending_foreign_markings_.pop_front(); |
1048 } | 1093 } |
1049 | 1094 |
1050 // MakeGroupObsoleteTask ------- | 1095 // MakeGroupObsoleteTask ------- |
1051 | 1096 |
1052 class AppCacheStorageImpl::MakeGroupObsoleteTask : public DatabaseTask { | 1097 class AppCacheStorageImpl::MakeGroupObsoleteTask : public DatabaseTask { |
1053 public: | 1098 public: |
1054 MakeGroupObsoleteTask(AppCacheStorageImpl* storage, AppCacheGroup* group); | 1099 MakeGroupObsoleteTask(AppCacheStorageImpl* storage, AppCacheGroup* group); |
1055 | 1100 |
1056 virtual void Run(); | 1101 // DatabaseTask: |
1057 virtual void RunCompleted(); | 1102 virtual void Run() OVERRIDE; |
1058 virtual void CancelCompletion(); | 1103 virtual void RunCompleted() OVERRIDE; |
| 1104 virtual void CancelCompletion() OVERRIDE; |
1059 | 1105 |
| 1106 protected: |
| 1107 virtual ~MakeGroupObsoleteTask() {} |
| 1108 |
| 1109 private: |
1060 scoped_refptr<AppCacheGroup> group_; | 1110 scoped_refptr<AppCacheGroup> group_; |
1061 int64 group_id_; | 1111 int64 group_id_; |
1062 GURL origin_; | 1112 GURL origin_; |
1063 bool success_; | 1113 bool success_; |
1064 int64 new_origin_usage_; | 1114 int64 new_origin_usage_; |
1065 std::vector<int64> newly_deletable_response_ids_; | 1115 std::vector<int64> newly_deletable_response_ids_; |
1066 }; | 1116 }; |
1067 | 1117 |
1068 AppCacheStorageImpl::MakeGroupObsoleteTask::MakeGroupObsoleteTask( | 1118 AppCacheStorageImpl::MakeGroupObsoleteTask::MakeGroupObsoleteTask( |
1069 AppCacheStorageImpl* storage, AppCacheGroup* group) | 1119 AppCacheStorageImpl* storage, AppCacheGroup* group) |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1123 group_ = NULL; | 1173 group_ = NULL; |
1124 } | 1174 } |
1125 | 1175 |
1126 // GetDeletableResponseIdsTask ------- | 1176 // GetDeletableResponseIdsTask ------- |
1127 | 1177 |
1128 class AppCacheStorageImpl::GetDeletableResponseIdsTask : public DatabaseTask { | 1178 class AppCacheStorageImpl::GetDeletableResponseIdsTask : public DatabaseTask { |
1129 public: | 1179 public: |
1130 GetDeletableResponseIdsTask(AppCacheStorageImpl* storage, int64 max_rowid) | 1180 GetDeletableResponseIdsTask(AppCacheStorageImpl* storage, int64 max_rowid) |
1131 : DatabaseTask(storage), max_rowid_(max_rowid) {} | 1181 : DatabaseTask(storage), max_rowid_(max_rowid) {} |
1132 | 1182 |
1133 virtual void Run(); | 1183 // DatabaseTask: |
1134 virtual void RunCompleted(); | 1184 virtual void Run() OVERRIDE; |
| 1185 virtual void RunCompleted() OVERRIDE; |
1135 | 1186 |
| 1187 protected: |
| 1188 virtual ~GetDeletableResponseIdsTask() {} |
| 1189 |
| 1190 private: |
1136 int64 max_rowid_; | 1191 int64 max_rowid_; |
1137 std::vector<int64> response_ids_; | 1192 std::vector<int64> response_ids_; |
1138 }; | 1193 }; |
1139 | 1194 |
1140 void AppCacheStorageImpl::GetDeletableResponseIdsTask::Run() { | 1195 void AppCacheStorageImpl::GetDeletableResponseIdsTask::Run() { |
1141 const int kSqlLimit = 1000; | 1196 const int kSqlLimit = 1000; |
1142 database_->GetDeletableResponseIds(&response_ids_, max_rowid_, kSqlLimit); | 1197 database_->GetDeletableResponseIds(&response_ids_, max_rowid_, kSqlLimit); |
1143 // TODO(michaeln): retrieve group_ids too | 1198 // TODO(michaeln): retrieve group_ids too |
1144 } | 1199 } |
1145 | 1200 |
1146 void AppCacheStorageImpl::GetDeletableResponseIdsTask::RunCompleted() { | 1201 void AppCacheStorageImpl::GetDeletableResponseIdsTask::RunCompleted() { |
1147 if (!response_ids_.empty()) | 1202 if (!response_ids_.empty()) |
1148 storage_->StartDeletingResponses(response_ids_); | 1203 storage_->StartDeletingResponses(response_ids_); |
1149 } | 1204 } |
1150 | 1205 |
1151 // InsertDeletableResponseIdsTask ------- | 1206 // InsertDeletableResponseIdsTask ------- |
1152 | 1207 |
1153 class AppCacheStorageImpl::InsertDeletableResponseIdsTask | 1208 class AppCacheStorageImpl::InsertDeletableResponseIdsTask |
1154 : public DatabaseTask { | 1209 : public DatabaseTask { |
1155 public: | 1210 public: |
1156 explicit InsertDeletableResponseIdsTask(AppCacheStorageImpl* storage) | 1211 explicit InsertDeletableResponseIdsTask(AppCacheStorageImpl* storage) |
1157 : DatabaseTask(storage) {} | 1212 : DatabaseTask(storage) {} |
1158 virtual void Run(); | 1213 |
| 1214 // DatabaseTask: |
| 1215 virtual void Run() OVERRIDE; |
| 1216 |
1159 std::vector<int64> response_ids_; | 1217 std::vector<int64> response_ids_; |
| 1218 |
| 1219 protected: |
| 1220 virtual ~InsertDeletableResponseIdsTask() {} |
1160 }; | 1221 }; |
1161 | 1222 |
1162 void AppCacheStorageImpl::InsertDeletableResponseIdsTask::Run() { | 1223 void AppCacheStorageImpl::InsertDeletableResponseIdsTask::Run() { |
1163 database_->InsertDeletableResponseIds(response_ids_); | 1224 database_->InsertDeletableResponseIds(response_ids_); |
1164 // TODO(michaeln): store group_ids too | 1225 // TODO(michaeln): store group_ids too |
1165 } | 1226 } |
1166 | 1227 |
1167 // DeleteDeletableResponseIdsTask ------- | 1228 // DeleteDeletableResponseIdsTask ------- |
1168 | 1229 |
1169 class AppCacheStorageImpl::DeleteDeletableResponseIdsTask | 1230 class AppCacheStorageImpl::DeleteDeletableResponseIdsTask |
1170 : public DatabaseTask { | 1231 : public DatabaseTask { |
1171 public: | 1232 public: |
1172 explicit DeleteDeletableResponseIdsTask(AppCacheStorageImpl* storage) | 1233 explicit DeleteDeletableResponseIdsTask(AppCacheStorageImpl* storage) |
1173 : DatabaseTask(storage) {} | 1234 : DatabaseTask(storage) {} |
1174 virtual void Run(); | 1235 |
| 1236 // DatabaseTask: |
| 1237 virtual void Run() OVERRIDE; |
| 1238 |
1175 std::vector<int64> response_ids_; | 1239 std::vector<int64> response_ids_; |
| 1240 |
| 1241 protected: |
| 1242 virtual ~DeleteDeletableResponseIdsTask() {} |
1176 }; | 1243 }; |
1177 | 1244 |
1178 void AppCacheStorageImpl::DeleteDeletableResponseIdsTask::Run() { | 1245 void AppCacheStorageImpl::DeleteDeletableResponseIdsTask::Run() { |
1179 database_->DeleteDeletableResponseIds(response_ids_); | 1246 database_->DeleteDeletableResponseIds(response_ids_); |
1180 } | 1247 } |
1181 | 1248 |
1182 // UpdateGroupLastAccessTimeTask ------- | 1249 // UpdateGroupLastAccessTimeTask ------- |
1183 | 1250 |
1184 class AppCacheStorageImpl::UpdateGroupLastAccessTimeTask | 1251 class AppCacheStorageImpl::UpdateGroupLastAccessTimeTask |
1185 : public DatabaseTask { | 1252 : public DatabaseTask { |
1186 public: | 1253 public: |
1187 UpdateGroupLastAccessTimeTask( | 1254 UpdateGroupLastAccessTimeTask( |
1188 AppCacheStorageImpl* storage, AppCacheGroup* group, base::Time time) | 1255 AppCacheStorageImpl* storage, AppCacheGroup* group, base::Time time) |
1189 : DatabaseTask(storage), group_id_(group->group_id()), | 1256 : DatabaseTask(storage), group_id_(group->group_id()), |
1190 last_access_time_(time) { | 1257 last_access_time_(time) { |
1191 storage->NotifyStorageAccessed(group->manifest_url().GetOrigin()); | 1258 storage->NotifyStorageAccessed(group->manifest_url().GetOrigin()); |
1192 } | 1259 } |
1193 | 1260 |
1194 virtual void Run(); | 1261 // DatabaseTask: |
| 1262 virtual void Run() OVERRIDE; |
1195 | 1263 |
| 1264 protected: |
| 1265 virtual ~UpdateGroupLastAccessTimeTask() {} |
| 1266 |
| 1267 private: |
1196 int64 group_id_; | 1268 int64 group_id_; |
1197 base::Time last_access_time_; | 1269 base::Time last_access_time_; |
1198 }; | 1270 }; |
1199 | 1271 |
1200 void AppCacheStorageImpl::UpdateGroupLastAccessTimeTask::Run() { | 1272 void AppCacheStorageImpl::UpdateGroupLastAccessTimeTask::Run() { |
1201 database_->UpdateGroupLastAccessTime(group_id_, last_access_time_); | 1273 database_->UpdateGroupLastAccessTime(group_id_, last_access_time_); |
1202 } | 1274 } |
1203 | 1275 |
1204 | 1276 |
1205 // AppCacheStorageImpl --------------------------------------------------- | 1277 // AppCacheStorageImpl --------------------------------------------------- |
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1716 Disable(); | 1788 Disable(); |
1717 if (!is_incognito_) { | 1789 if (!is_incognito_) { |
1718 VLOG(1) << "Deleting existing appcache data and starting over."; | 1790 VLOG(1) << "Deleting existing appcache data and starting over."; |
1719 db_thread_->PostTask( | 1791 db_thread_->PostTask( |
1720 FROM_HERE, base::Bind(&DeleteDirectory, cache_directory_)); | 1792 FROM_HERE, base::Bind(&DeleteDirectory, cache_directory_)); |
1721 } | 1793 } |
1722 } | 1794 } |
1723 } | 1795 } |
1724 | 1796 |
1725 } // namespace appcache | 1797 } // namespace appcache |
OLD | NEW |