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

Side by Side Diff: content/browser/service_worker/service_worker_storage.cc

Issue 2183783002: Revert of Stop passing const-reference of SWRegistration in all GetRegistrationsCallbacks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 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
OLDNEW
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 <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/bind_helpers.h" 9 #include "base/bind_helpers.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
(...skipping 21 matching lines...) Expand all
32 namespace content { 32 namespace content {
33 33
34 namespace { 34 namespace {
35 35
36 void RunSoon(const tracked_objects::Location& from_here, 36 void RunSoon(const tracked_objects::Location& from_here,
37 const base::Closure& closure) { 37 const base::Closure& closure) {
38 base::ThreadTaskRunnerHandle::Get()->PostTask(from_here, closure); 38 base::ThreadTaskRunnerHandle::Get()->PostTask(from_here, closure);
39 } 39 }
40 40
41 void CompleteFindNow( 41 void CompleteFindNow(
42 scoped_refptr<ServiceWorkerRegistration> registration, 42 const scoped_refptr<ServiceWorkerRegistration>& registration,
43 ServiceWorkerStatusCode status, 43 ServiceWorkerStatusCode status,
44 const ServiceWorkerStorage::FindRegistrationCallback& callback) { 44 const ServiceWorkerStorage::FindRegistrationCallback& callback) {
45 if (registration && registration->is_deleted()) { 45 if (registration && registration->is_deleted()) {
46 // It's past the point of no return and no longer findable. 46 // It's past the point of no return and no longer findable.
47 callback.Run(SERVICE_WORKER_ERROR_NOT_FOUND, nullptr); 47 callback.Run(SERVICE_WORKER_ERROR_NOT_FOUND, nullptr);
48 return; 48 return;
49 } 49 }
50 callback.Run(status, std::move(registration)); 50 callback.Run(status, registration);
51 } 51 }
52 52
53 void CompleteFindSoon( 53 void CompleteFindSoon(
54 const tracked_objects::Location& from_here, 54 const tracked_objects::Location& from_here,
55 scoped_refptr<ServiceWorkerRegistration> registration, 55 const scoped_refptr<ServiceWorkerRegistration>& registration,
56 ServiceWorkerStatusCode status, 56 ServiceWorkerStatusCode status,
57 const ServiceWorkerStorage::FindRegistrationCallback& callback) { 57 const ServiceWorkerStorage::FindRegistrationCallback& callback) {
58 RunSoon(from_here, base::Bind(&CompleteFindNow, std::move(registration), 58 RunSoon(from_here,
59 status, callback)); 59 base::Bind(&CompleteFindNow, registration, status, callback));
60 } 60 }
61 61
62 const base::FilePath::CharType kDatabaseName[] = 62 const base::FilePath::CharType kDatabaseName[] =
63 FILE_PATH_LITERAL("Database"); 63 FILE_PATH_LITERAL("Database");
64 const base::FilePath::CharType kDiskCacheName[] = 64 const base::FilePath::CharType kDiskCacheName[] =
65 FILE_PATH_LITERAL("ScriptCache"); 65 FILE_PATH_LITERAL("ScriptCache");
66 66
67 const int kMaxMemDiskCacheSize = 10 * 1024 * 1024; 67 const int kMaxMemDiskCacheSize = 10 * 1024 * 1024;
68 const int kMaxDiskCacheSize = 250 * 1024 * 1024; 68 const int kMaxDiskCacheSize = 250 * 1024 * 1024;
69 69
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 FindInstallingRegistrationForDocument(document_url); 160 FindInstallingRegistrationForDocument(document_url);
161 ServiceWorkerStatusCode status = installing_registration 161 ServiceWorkerStatusCode status = installing_registration
162 ? SERVICE_WORKER_OK 162 ? SERVICE_WORKER_OK
163 : SERVICE_WORKER_ERROR_NOT_FOUND; 163 : SERVICE_WORKER_ERROR_NOT_FOUND;
164 TRACE_EVENT_INSTANT2( 164 TRACE_EVENT_INSTANT2(
165 "ServiceWorker", 165 "ServiceWorker",
166 "ServiceWorkerStorage::FindRegistrationForDocument:CheckInstalling", 166 "ServiceWorkerStorage::FindRegistrationForDocument:CheckInstalling",
167 TRACE_EVENT_SCOPE_THREAD, 167 TRACE_EVENT_SCOPE_THREAD,
168 "URL", document_url.spec(), 168 "URL", document_url.spec(),
169 "Status", ServiceWorkerStatusToString(status)); 169 "Status", ServiceWorkerStatusToString(status));
170 CompleteFindNow(std::move(installing_registration), status, callback); 170 CompleteFindNow(installing_registration,
171 status,
172 callback);
171 return; 173 return;
172 } 174 }
173 175
174 // To connect this TRACE_EVENT with the callback, TimeTicks is used for 176 // To connect this TRACE_EVENT with the callback, TimeTicks is used for
175 // callback id. 177 // callback id.
176 int64_t callback_id = base::TimeTicks::Now().ToInternalValue(); 178 int64_t callback_id = base::TimeTicks::Now().ToInternalValue();
177 TRACE_EVENT_ASYNC_BEGIN1( 179 TRACE_EVENT_ASYNC_BEGIN1(
178 "ServiceWorker", 180 "ServiceWorker",
179 "ServiceWorkerStorage::FindRegistrationForDocument", 181 "ServiceWorkerStorage::FindRegistrationForDocument",
180 callback_id, 182 callback_id,
(...skipping 24 matching lines...) Expand all
205 } 207 }
206 return; 208 return;
207 } 209 }
208 DCHECK_EQ(INITIALIZED, state_); 210 DCHECK_EQ(INITIALIZED, state_);
209 211
210 // See if there are any stored registrations for the origin. 212 // See if there are any stored registrations for the origin.
211 if (!ContainsKey(registered_origins_, scope.GetOrigin())) { 213 if (!ContainsKey(registered_origins_, scope.GetOrigin())) {
212 // Look for something currently being installed. 214 // Look for something currently being installed.
213 scoped_refptr<ServiceWorkerRegistration> installing_registration = 215 scoped_refptr<ServiceWorkerRegistration> installing_registration =
214 FindInstallingRegistrationForPattern(scope); 216 FindInstallingRegistrationForPattern(scope);
215 ServiceWorkerStatusCode installing_status = 217 CompleteFindSoon(FROM_HERE, installing_registration,
216 installing_registration ? SERVICE_WORKER_OK 218 installing_registration ? SERVICE_WORKER_OK
217 : SERVICE_WORKER_ERROR_NOT_FOUND; 219 : SERVICE_WORKER_ERROR_NOT_FOUND,
218 CompleteFindSoon(FROM_HERE, std::move(installing_registration), 220 callback);
219 installing_status, callback);
220 return; 221 return;
221 } 222 }
222 223
223 database_task_manager_->GetTaskRunner()->PostTask( 224 database_task_manager_->GetTaskRunner()->PostTask(
224 FROM_HERE, 225 FROM_HERE,
225 base::Bind( 226 base::Bind(
226 &FindForPatternInDB, 227 &FindForPatternInDB,
227 database_.get(), 228 database_.get(),
228 base::ThreadTaskRunnerHandle::Get(), 229 base::ThreadTaskRunnerHandle::Get(),
229 scope, 230 scope,
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 CompleteFindNow(installing_registration, 270 CompleteFindNow(installing_registration,
270 installing_registration ? SERVICE_WORKER_OK 271 installing_registration ? SERVICE_WORKER_OK
271 : SERVICE_WORKER_ERROR_NOT_FOUND, 272 : SERVICE_WORKER_ERROR_NOT_FOUND,
272 callback); 273 callback);
273 return; 274 return;
274 } 275 }
275 276
276 scoped_refptr<ServiceWorkerRegistration> registration = 277 scoped_refptr<ServiceWorkerRegistration> registration =
277 context_->GetLiveRegistration(registration_id); 278 context_->GetLiveRegistration(registration_id);
278 if (registration) { 279 if (registration) {
279 CompleteFindNow(std::move(registration), SERVICE_WORKER_OK, callback); 280 CompleteFindNow(registration, SERVICE_WORKER_OK, callback);
280 return; 281 return;
281 } 282 }
282 283
283 database_task_manager_->GetTaskRunner()->PostTask( 284 database_task_manager_->GetTaskRunner()->PostTask(
284 FROM_HERE, 285 FROM_HERE,
285 base::Bind(&FindForIdInDB, 286 base::Bind(&FindForIdInDB,
286 database_.get(), 287 database_.get(),
287 base::ThreadTaskRunnerHandle::Get(), 288 base::ThreadTaskRunnerHandle::Get(),
288 registration_id, 289 registration_id,
289 origin, 290 origin,
(...skipping 598 matching lines...) Expand 10 before | Expand all | Expand 10 after
888 return; 889 return;
889 } 890 }
890 891
891 if (status == ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND) { 892 if (status == ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND) {
892 // Look for something currently being installed. 893 // Look for something currently being installed.
893 scoped_refptr<ServiceWorkerRegistration> installing_registration = 894 scoped_refptr<ServiceWorkerRegistration> installing_registration =
894 FindInstallingRegistrationForDocument(document_url); 895 FindInstallingRegistrationForDocument(document_url);
895 ServiceWorkerStatusCode installing_status = 896 ServiceWorkerStatusCode installing_status =
896 installing_registration ? SERVICE_WORKER_OK 897 installing_registration ? SERVICE_WORKER_OK
897 : SERVICE_WORKER_ERROR_NOT_FOUND; 898 : SERVICE_WORKER_ERROR_NOT_FOUND;
898 callback.Run(installing_status, std::move(installing_registration)); 899 callback.Run(installing_status, installing_registration);
899 TRACE_EVENT_ASYNC_END2( 900 TRACE_EVENT_ASYNC_END2(
900 "ServiceWorker", 901 "ServiceWorker",
901 "ServiceWorkerStorage::FindRegistrationForDocument", 902 "ServiceWorkerStorage::FindRegistrationForDocument",
902 callback_id, 903 callback_id,
903 "Status", ServiceWorkerDatabase::StatusToString(status), 904 "Status", ServiceWorkerDatabase::StatusToString(status),
904 "Info", 905 "Info",
905 (installing_status == SERVICE_WORKER_OK) ? 906 (installing_status == SERVICE_WORKER_OK) ?
906 "Installing registration is found" : 907 "Installing registration is found" :
907 "Any registrations are not found"); 908 "Any registrations are not found");
908 return; 909 return;
(...skipping 16 matching lines...) Expand all
925 const ResourceList& resources, 926 const ResourceList& resources,
926 ServiceWorkerDatabase::Status status) { 927 ServiceWorkerDatabase::Status status) {
927 if (status == ServiceWorkerDatabase::STATUS_OK) { 928 if (status == ServiceWorkerDatabase::STATUS_OK) {
928 ReturnFoundRegistration(callback, data, resources); 929 ReturnFoundRegistration(callback, data, resources);
929 return; 930 return;
930 } 931 }
931 932
932 if (status == ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND) { 933 if (status == ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND) {
933 scoped_refptr<ServiceWorkerRegistration> installing_registration = 934 scoped_refptr<ServiceWorkerRegistration> installing_registration =
934 FindInstallingRegistrationForPattern(scope); 935 FindInstallingRegistrationForPattern(scope);
935 ServiceWorkerStatusCode installing_status = 936 callback.Run(installing_registration ? SERVICE_WORKER_OK
936 installing_registration ? SERVICE_WORKER_OK 937 : SERVICE_WORKER_ERROR_NOT_FOUND,
937 : SERVICE_WORKER_ERROR_NOT_FOUND; 938 installing_registration);
938 callback.Run(installing_status, std::move(installing_registration));
939 return; 939 return;
940 } 940 }
941 941
942 ScheduleDeleteAndStartOver(); 942 ScheduleDeleteAndStartOver();
943 callback.Run(DatabaseStatusToStatusCode(status), 943 callback.Run(DatabaseStatusToStatusCode(status),
944 scoped_refptr<ServiceWorkerRegistration>()); 944 scoped_refptr<ServiceWorkerRegistration>());
945 } 945 }
946 946
947 void ServiceWorkerStorage::DidFindRegistrationForId( 947 void ServiceWorkerStorage::DidFindRegistrationForId(
948 const FindRegistrationCallback& callback, 948 const FindRegistrationCallback& callback,
(...skipping 17 matching lines...) Expand all
966 scoped_refptr<ServiceWorkerRegistration>()); 966 scoped_refptr<ServiceWorkerRegistration>());
967 } 967 }
968 968
969 void ServiceWorkerStorage::ReturnFoundRegistration( 969 void ServiceWorkerStorage::ReturnFoundRegistration(
970 const FindRegistrationCallback& callback, 970 const FindRegistrationCallback& callback,
971 const ServiceWorkerDatabase::RegistrationData& data, 971 const ServiceWorkerDatabase::RegistrationData& data,
972 const ResourceList& resources) { 972 const ResourceList& resources) {
973 DCHECK(!resources.empty()); 973 DCHECK(!resources.empty());
974 scoped_refptr<ServiceWorkerRegistration> registration = 974 scoped_refptr<ServiceWorkerRegistration> registration =
975 GetOrCreateRegistration(data, resources); 975 GetOrCreateRegistration(data, resources);
976 CompleteFindNow(std::move(registration), SERVICE_WORKER_OK, callback); 976 CompleteFindNow(registration, SERVICE_WORKER_OK, callback);
977 } 977 }
978 978
979 void ServiceWorkerStorage::DidGetRegistrations( 979 void ServiceWorkerStorage::DidGetRegistrations(
980 const GetRegistrationsCallback& callback, 980 const GetRegistrationsCallback& callback,
981 RegistrationList* registration_data_list, 981 RegistrationList* registration_data_list,
982 std::vector<ResourceList>* resources_list, 982 std::vector<ResourceList>* resources_list,
983 const GURL& origin_filter, 983 const GURL& origin_filter,
984 ServiceWorkerDatabase::Status status) { 984 ServiceWorkerDatabase::Status status) {
985 DCHECK(registration_data_list); 985 DCHECK(registration_data_list);
986 DCHECK(resources_list); 986 DCHECK(resources_list);
(...skipping 18 matching lines...) Expand all
1005 1005
1006 // Add unstored registrations that are being installed. 1006 // Add unstored registrations that are being installed.
1007 for (const auto& registration : installing_registrations_) { 1007 for (const auto& registration : installing_registrations_) {
1008 if ((!origin_filter.is_valid() || 1008 if ((!origin_filter.is_valid() ||
1009 registration.second->pattern().GetOrigin() == origin_filter) && 1009 registration.second->pattern().GetOrigin() == origin_filter) &&
1010 registration_ids.insert(registration.first).second) { 1010 registration_ids.insert(registration.first).second) {
1011 registrations.push_back(registration.second); 1011 registrations.push_back(registration.second);
1012 } 1012 }
1013 } 1013 }
1014 1014
1015 callback.Run(SERVICE_WORKER_OK, std::move(registrations)); 1015 callback.Run(SERVICE_WORKER_OK, registrations);
1016 } 1016 }
1017 1017
1018 void ServiceWorkerStorage::DidGetRegistrationsInfos( 1018 void ServiceWorkerStorage::DidGetRegistrationsInfos(
1019 const GetRegistrationsInfosCallback& callback, 1019 const GetRegistrationsInfosCallback& callback,
1020 RegistrationList* registration_data_list, 1020 RegistrationList* registration_data_list,
1021 const GURL& origin_filter, 1021 const GURL& origin_filter,
1022 ServiceWorkerDatabase::Status status) { 1022 ServiceWorkerDatabase::Status status) {
1023 DCHECK(registration_data_list); 1023 DCHECK(registration_data_list);
1024 if (status != ServiceWorkerDatabase::STATUS_OK && 1024 if (status != ServiceWorkerDatabase::STATUS_OK &&
1025 status != ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND) { 1025 status != ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND) {
(...skipping 744 matching lines...) Expand 10 before | Expand all | Expand 10 after
1770 callback.Run(SERVICE_WORKER_ERROR_FAILED); 1770 callback.Run(SERVICE_WORKER_ERROR_FAILED);
1771 return; 1771 return;
1772 } 1772 }
1773 DVLOG(1) << "Deleted ServiceWorkerDiskCache successfully."; 1773 DVLOG(1) << "Deleted ServiceWorkerDiskCache successfully.";
1774 ServiceWorkerMetrics::RecordDeleteAndStartOverResult( 1774 ServiceWorkerMetrics::RecordDeleteAndStartOverResult(
1775 ServiceWorkerMetrics::DELETE_OK); 1775 ServiceWorkerMetrics::DELETE_OK);
1776 callback.Run(SERVICE_WORKER_OK); 1776 callback.Run(SERVICE_WORKER_OK);
1777 } 1777 }
1778 1778
1779 } // namespace content 1779 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698