OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "content/browser/service_worker/service_worker_storage.h" | 5 #include "content/browser/service_worker/service_worker_storage.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/bind_helpers.h" | 9 #include "base/bind_helpers.h" |
10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
11 #include "base/message_loop/message_loop.h" | 11 #include "base/message_loop/message_loop.h" |
12 #include "base/sequenced_task_runner.h" | 12 #include "base/sequenced_task_runner.h" |
13 #include "base/task_runner_util.h" | 13 #include "base/task_runner_util.h" |
14 #include "content/browser/service_worker/service_worker_context_core.h" | 14 #include "content/browser/service_worker/service_worker_context_core.h" |
15 #include "content/browser/service_worker/service_worker_disk_cache.h" | 15 #include "content/browser/service_worker/service_worker_disk_cache.h" |
16 #include "content/browser/service_worker/service_worker_info.h" | 16 #include "content/browser/service_worker/service_worker_info.h" |
17 #include "content/browser/service_worker/service_worker_metrics.h" | 17 #include "content/browser/service_worker/service_worker_metrics.h" |
18 #include "content/browser/service_worker/service_worker_registration.h" | 18 #include "content/browser/service_worker/service_worker_registration.h" |
19 #include "content/browser/service_worker/service_worker_utils.h" | 19 #include "content/browser/service_worker/service_worker_utils.h" |
20 #include "content/browser/service_worker/service_worker_version.h" | 20 #include "content/browser/service_worker/service_worker_version.h" |
21 #include "content/common/service_worker/service_worker_types.h" | 21 #include "content/common/service_worker/service_worker_types.h" |
22 #include "content/public/browser/browser_thread.h" | 22 #include "content/public/browser/browser_thread.h" |
| 23 #include "net/base/completion_callback.h" |
23 #include "net/base/net_errors.h" | 24 #include "net/base/net_errors.h" |
24 #include "webkit/browser/quota/quota_manager_proxy.h" | 25 #include "webkit/browser/quota/quota_manager_proxy.h" |
25 | 26 |
26 namespace content { | 27 namespace content { |
27 | 28 |
28 namespace { | 29 namespace { |
29 | 30 |
30 void RunSoon(const tracked_objects::Location& from_here, | 31 void RunSoon(const tracked_objects::Location& from_here, |
31 const base::Closure& closure) { | 32 const base::Closure& closure) { |
32 base::MessageLoop::current()->PostTask(from_here, closure); | 33 base::MessageLoop::current()->PostTask(from_here, closure); |
(...skipping 17 matching lines...) Expand all Loading... |
50 const base::FilePath::CharType kServiceWorkerDirectory[] = | 51 const base::FilePath::CharType kServiceWorkerDirectory[] = |
51 FILE_PATH_LITERAL("Service Worker"); | 52 FILE_PATH_LITERAL("Service Worker"); |
52 const base::FilePath::CharType kDatabaseName[] = | 53 const base::FilePath::CharType kDatabaseName[] = |
53 FILE_PATH_LITERAL("Database"); | 54 FILE_PATH_LITERAL("Database"); |
54 const base::FilePath::CharType kDiskCacheName[] = | 55 const base::FilePath::CharType kDiskCacheName[] = |
55 FILE_PATH_LITERAL("Cache"); | 56 FILE_PATH_LITERAL("Cache"); |
56 | 57 |
57 const int kMaxMemDiskCacheSize = 10 * 1024 * 1024; | 58 const int kMaxMemDiskCacheSize = 10 * 1024 * 1024; |
58 const int kMaxDiskCacheSize = 250 * 1024 * 1024; | 59 const int kMaxDiskCacheSize = 250 * 1024 * 1024; |
59 | 60 |
60 void EmptyCompletionCallback(int) {} | |
61 | |
62 ServiceWorkerStatusCode DatabaseStatusToStatusCode( | 61 ServiceWorkerStatusCode DatabaseStatusToStatusCode( |
63 ServiceWorkerDatabase::Status status) { | 62 ServiceWorkerDatabase::Status status) { |
64 switch (status) { | 63 switch (status) { |
65 case ServiceWorkerDatabase::STATUS_OK: | 64 case ServiceWorkerDatabase::STATUS_OK: |
66 return SERVICE_WORKER_OK; | 65 return SERVICE_WORKER_OK; |
67 case ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND: | 66 case ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND: |
68 return SERVICE_WORKER_ERROR_NOT_FOUND; | 67 return SERVICE_WORKER_ERROR_NOT_FOUND; |
69 case ServiceWorkerDatabase::STATUS_ERROR_MAX: | 68 case ServiceWorkerDatabase::STATUS_ERROR_MAX: |
70 NOTREACHED(); | 69 NOTREACHED(); |
71 default: | 70 default: |
(...skipping 744 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
816 } | 815 } |
817 | 816 |
818 ServiceWorkerDiskCache* ServiceWorkerStorage::disk_cache() { | 817 ServiceWorkerDiskCache* ServiceWorkerStorage::disk_cache() { |
819 if (disk_cache_) | 818 if (disk_cache_) |
820 return disk_cache_.get(); | 819 return disk_cache_.get(); |
821 | 820 |
822 disk_cache_.reset(new ServiceWorkerDiskCache); | 821 disk_cache_.reset(new ServiceWorkerDiskCache); |
823 | 822 |
824 base::FilePath path = GetDiskCachePath(); | 823 base::FilePath path = GetDiskCachePath(); |
825 if (path.empty()) { | 824 if (path.empty()) { |
826 int rv = disk_cache_->InitWithMemBackend( | 825 int rv = disk_cache_->InitWithMemBackend(kMaxMemDiskCacheSize, |
827 kMaxMemDiskCacheSize, | 826 net::CompletionCallback()); |
828 base::Bind(&EmptyCompletionCallback)); | |
829 DCHECK_EQ(net::OK, rv); | 827 DCHECK_EQ(net::OK, rv); |
830 return disk_cache_.get(); | 828 return disk_cache_.get(); |
831 } | 829 } |
832 | 830 |
833 int rv = disk_cache_->InitWithDiskBackend( | 831 int rv = disk_cache_->InitWithDiskBackend( |
834 path, kMaxDiskCacheSize, false, | 832 path, kMaxDiskCacheSize, false, |
835 disk_cache_thread_.get(), | 833 disk_cache_thread_.get(), |
836 base::Bind(&ServiceWorkerStorage::OnDiskCacheInitialized, | 834 base::Bind(&ServiceWorkerStorage::OnDiskCacheInitialized, |
837 weak_factory_.GetWeakPtr())); | 835 weak_factory_.GetWeakPtr())); |
838 if (rv != net::ERR_IO_PENDING) | 836 if (rv != net::ERR_IO_PENDING) |
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1176 // Give up the corruption recovery until the browser restarts. | 1174 // Give up the corruption recovery until the browser restarts. |
1177 LOG(ERROR) << "Failed to delete the diskcache."; | 1175 LOG(ERROR) << "Failed to delete the diskcache."; |
1178 callback.Run(SERVICE_WORKER_ERROR_FAILED); | 1176 callback.Run(SERVICE_WORKER_ERROR_FAILED); |
1179 return; | 1177 return; |
1180 } | 1178 } |
1181 DVLOG(1) << "Deleted ServiceWorkerDiskCache successfully."; | 1179 DVLOG(1) << "Deleted ServiceWorkerDiskCache successfully."; |
1182 callback.Run(SERVICE_WORKER_OK); | 1180 callback.Run(SERVICE_WORKER_OK); |
1183 } | 1181 } |
1184 | 1182 |
1185 } // namespace content | 1183 } // namespace content |
OLD | NEW |