Chromium Code Reviews| 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_context_wrapper.h" | 5 #include "content/browser/service_worker/service_worker_context_wrapper.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 | 8 |
| 9 #include "base/barrier_closure.h" | 9 #include "base/barrier_closure.h" |
| 10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
| 11 #include "base/logging.h" | 11 #include "base/logging.h" |
| 12 #include "base/threading/sequenced_worker_pool.h" | 12 #include "base/threading/sequenced_worker_pool.h" |
| 13 #include "content/browser/fileapi/chrome_blob_storage_context.h" | 13 #include "content/browser/fileapi/chrome_blob_storage_context.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_context_observer.h" | 15 #include "content/browser/service_worker/service_worker_context_observer.h" |
| 16 #include "content/browser/service_worker/service_worker_process_manager.h" | 16 #include "content/browser/service_worker/service_worker_process_manager.h" |
| 17 #include "content/browser/service_worker/service_worker_quota_client.h" | 17 #include "content/browser/service_worker/service_worker_quota_client.h" |
| 18 #include "content/public/browser/browser_context.h" | 18 #include "content/public/browser/browser_context.h" |
| 19 #include "content/public/browser/browser_thread.h" | 19 #include "content/public/browser/browser_thread.h" |
| 20 #include "net/url_request/url_request_context_getter.h" | 20 #include "net/url_request/url_request_context_getter.h" |
| 21 #include "storage/browser/blob/blob_storage_context.h" | 21 #include "storage/browser/blob/blob_storage_context.h" |
| 22 #include "storage/browser/quota/quota_manager_proxy.h" | 22 #include "storage/browser/quota/quota_manager_proxy.h" |
| 23 #include "storage/browser/quota/special_storage_policy.h" | 23 #include "storage/browser/quota/special_storage_policy.h" |
| 24 | 24 |
| 25 namespace content { | 25 namespace content { |
| 26 namespace { | |
| 27 | |
| 28 size_t GetUsageIfValid(const ServiceWorkerVersionInfo& version_info) { | |
| 29 return version_info.version_id != kInvalidServiceWorkerVersionId | |
| 30 ? version_info.resources_total_size_bytes | |
| 31 : 0; | |
| 32 } | |
| 33 | |
| 34 size_t GetTotalUsageForRegistrationInfo( | |
| 35 const ServiceWorkerRegistrationInfo& registration_info) { | |
| 36 return GetUsageIfValid(registration_info.active_version) + | |
| 37 GetUsageIfValid(registration_info.waiting_version) + | |
| 38 GetUsageIfValid(registration_info.installing_version); | |
|
michaeln
2014/10/30 01:32:27
Like we chatted about, going with a model where th
dmurph
2014/10/30 22:06:16
Done.
| |
| 39 } | |
| 40 | |
| 41 } // namespace | |
| 26 | 42 |
| 27 ServiceWorkerContextWrapper::ServiceWorkerContextWrapper( | 43 ServiceWorkerContextWrapper::ServiceWorkerContextWrapper( |
| 28 BrowserContext* browser_context) | 44 BrowserContext* browser_context) |
| 29 : observer_list_( | 45 : observer_list_( |
| 30 new ObserverListThreadSafe<ServiceWorkerContextObserver>()), | 46 new ObserverListThreadSafe<ServiceWorkerContextObserver>()), |
| 31 process_manager_(new ServiceWorkerProcessManager(browser_context)), | 47 process_manager_(new ServiceWorkerProcessManager(browser_context)), |
| 32 is_incognito_(false) { | 48 is_incognito_(false) { |
| 33 } | 49 } |
| 34 | 50 |
| 35 ServiceWorkerContextWrapper::~ServiceWorkerContextWrapper() { | 51 ServiceWorkerContextWrapper::~ServiceWorkerContextWrapper() { |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 177 callback)); | 193 callback)); |
| 178 } | 194 } |
| 179 | 195 |
| 180 void ServiceWorkerContextWrapper::DidGetAllRegistrationsForGetAllOrigins( | 196 void ServiceWorkerContextWrapper::DidGetAllRegistrationsForGetAllOrigins( |
| 181 const GetUsageInfoCallback& callback, | 197 const GetUsageInfoCallback& callback, |
| 182 const std::vector<ServiceWorkerRegistrationInfo>& registrations) { | 198 const std::vector<ServiceWorkerRegistrationInfo>& registrations) { |
| 183 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 199 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 184 std::vector<ServiceWorkerUsageInfo> usage_infos; | 200 std::vector<ServiceWorkerUsageInfo> usage_infos; |
| 185 | 201 |
| 186 std::map<GURL, ServiceWorkerUsageInfo> origins; | 202 std::map<GURL, ServiceWorkerUsageInfo> origins; |
| 187 for (std::vector<ServiceWorkerRegistrationInfo>::const_iterator it = | 203 for (const auto& registration_info : registrations) { |
| 188 registrations.begin(); | |
| 189 it != registrations.end(); | |
| 190 ++it) { | |
| 191 const ServiceWorkerRegistrationInfo& registration_info = *it; | |
| 192 GURL origin = registration_info.pattern.GetOrigin(); | 204 GURL origin = registration_info.pattern.GetOrigin(); |
| 193 | 205 |
| 194 ServiceWorkerUsageInfo& usage_info = origins[origin]; | 206 ServiceWorkerUsageInfo& usage_info = origins[origin]; |
| 195 if (usage_info.origin.is_empty()) | 207 if (usage_info.origin.is_empty()) |
| 196 usage_info.origin = origin; | 208 usage_info.origin = origin; |
| 197 usage_info.scopes.push_back(registration_info.pattern); | 209 usage_info.scopes.push_back(registration_info.pattern); |
| 210 usage_info.total_size_bytes += | |
| 211 GetTotalUsageForRegistrationInfo(registration_info); | |
| 198 } | 212 } |
| 199 | 213 |
| 200 for (std::map<GURL, ServiceWorkerUsageInfo>::const_iterator it = | 214 for (const auto& origin_info_pair : origins) { |
| 201 origins.begin(); | 215 usage_infos.push_back(origin_info_pair.second); |
| 202 it != origins.end(); | |
| 203 ++it) { | |
| 204 usage_infos.push_back(it->second); | |
| 205 } | 216 } |
| 206 | |
| 207 callback.Run(usage_infos); | 217 callback.Run(usage_infos); |
| 208 } | 218 } |
| 209 | 219 |
| 210 namespace { | 220 namespace { |
| 211 void StatusCodeToBoolCallbackAdapter( | 221 void StatusCodeToBoolCallbackAdapter( |
| 212 const ServiceWorkerContext::ResultCallback& callback, | 222 const ServiceWorkerContext::ResultCallback& callback, |
| 213 ServiceWorkerStatusCode code) { | 223 ServiceWorkerStatusCode code) { |
| 214 callback.Run(code == ServiceWorkerStatusCode::SERVICE_WORKER_OK); | 224 callback.Run(code == ServiceWorkerStatusCode::SERVICE_WORKER_OK); |
| 215 } | 225 } |
| 216 | 226 |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 305 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 315 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 306 if (status != SERVICE_WORKER_OK) { | 316 if (status != SERVICE_WORKER_OK) { |
| 307 context_core_.reset(); | 317 context_core_.reset(); |
| 308 return; | 318 return; |
| 309 } | 319 } |
| 310 context_core_.reset(new ServiceWorkerContextCore(context_core_.get(), this)); | 320 context_core_.reset(new ServiceWorkerContextCore(context_core_.get(), this)); |
| 311 DVLOG(1) << "Restarted ServiceWorkerContextCore successfully."; | 321 DVLOG(1) << "Restarted ServiceWorkerContextCore successfully."; |
| 312 } | 322 } |
| 313 | 323 |
| 314 } // namespace content | 324 } // namespace content |
| OLD | NEW |