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

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

Issue 1393783002: ServiceWorker: Schedule DeleteAndStartOver when failing to store resource ids (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: simplify the patch Created 5 years, 2 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 <string> 5 #include <string>
6 6
7 #include "base/files/file_util.h" 7 #include "base/files/file_util.h"
8 #include "base/files/scoped_temp_dir.h" 8 #include "base/files/scoped_temp_dir.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 893 matching lines...) Expand 10 before | Expand all | Expand 10 after
904 data.is_active = false; 904 data.is_active = false;
905 std::vector<ResourceRecord> resources; 905 std::vector<ResourceRecord> resources;
906 resources.push_back( 906 resources.push_back(
907 ResourceRecord(resource_id1_, script_, resource_id1_size_)); 907 ResourceRecord(resource_id1_, script_, resource_id1_size_));
908 resources.push_back( 908 resources.push_back(
909 ResourceRecord(resource_id2_, import_, resource_id2_size_)); 909 ResourceRecord(resource_id2_, import_, resource_id2_size_));
910 registration_ = storage()->GetOrCreateRegistration(data, resources); 910 registration_ = storage()->GetOrCreateRegistration(data, resources);
911 registration_->waiting_version()->SetStatus(ServiceWorkerVersion::NEW); 911 registration_->waiting_version()->SetStatus(ServiceWorkerVersion::NEW);
912 912
913 // Add the resources ids to the uncommitted list. 913 // Add the resources ids to the uncommitted list.
914 storage()->StoreUncommittedResponseId(resource_id1_); 914 storage()->StoreUncommittedResourceId(resource_id1_);
915 storage()->StoreUncommittedResponseId(resource_id2_); 915 storage()->StoreUncommittedResourceId(resource_id2_);
916 base::RunLoop().RunUntilIdle(); 916 base::RunLoop().RunUntilIdle();
917 std::set<int64> verify_ids; 917 std::set<int64> verify_ids;
918 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 918 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
919 storage()->database_->GetUncommittedResourceIds(&verify_ids)); 919 storage()->database_->GetUncommittedResourceIds(&verify_ids));
920 EXPECT_EQ(2u, verify_ids.size()); 920 EXPECT_EQ(2u, verify_ids.size());
921 921
922 // And dump something in the disk cache for them. 922 // And dump something in the disk cache for them.
923 WriteBasicResponse(storage(), resource_id1_); 923 WriteBasicResponse(storage(), resource_id1_);
924 WriteBasicResponse(storage(), resource_id2_); 924 WriteBasicResponse(storage(), resource_id2_);
925 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true)); 925 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true));
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
1182 verify_ids.clear(); 1182 verify_ids.clear();
1183 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1183 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
1184 storage()->database_->GetPurgeableResourceIds(&verify_ids)); 1184 storage()->database_->GetPurgeableResourceIds(&verify_ids));
1185 EXPECT_EQ(2u, verify_ids.size()); 1185 EXPECT_EQ(2u, verify_ids.size());
1186 1186
1187 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true)); 1187 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true));
1188 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id2_, true)); 1188 EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id2_, true));
1189 1189
1190 // Also add an uncommitted resource. 1190 // Also add an uncommitted resource.
1191 int64 kStaleUncommittedResourceId = storage()->NewResourceId(); 1191 int64 kStaleUncommittedResourceId = storage()->NewResourceId();
1192 storage()->StoreUncommittedResponseId(kStaleUncommittedResourceId); 1192 storage()->StoreUncommittedResourceId(kStaleUncommittedResourceId);
1193 base::RunLoop().RunUntilIdle(); 1193 base::RunLoop().RunUntilIdle();
1194 verify_ids.clear(); 1194 verify_ids.clear();
1195 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1195 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
1196 storage()->database_->GetUncommittedResourceIds(&verify_ids)); 1196 storage()->database_->GetUncommittedResourceIds(&verify_ids));
1197 EXPECT_EQ(1u, verify_ids.size()); 1197 EXPECT_EQ(1u, verify_ids.size());
1198 WriteBasicResponse(storage(), kStaleUncommittedResourceId); 1198 WriteBasicResponse(storage(), kStaleUncommittedResourceId);
1199 EXPECT_TRUE( 1199 EXPECT_TRUE(
1200 VerifyBasicResponse(storage(), kStaleUncommittedResourceId, true)); 1200 VerifyBasicResponse(storage(), kStaleUncommittedResourceId, true));
1201 1201
1202 // Simulate browser shutdown. The purgeable and uncommitted resources are now 1202 // Simulate browser shutdown. The purgeable and uncommitted resources are now
1203 // stale. 1203 // stale.
1204 context_.reset(); 1204 context_.reset();
1205 scoped_ptr<ServiceWorkerDatabaseTaskManager> database_task_manager( 1205 scoped_ptr<ServiceWorkerDatabaseTaskManager> database_task_manager(
1206 new MockServiceWorkerDatabaseTaskManager( 1206 new MockServiceWorkerDatabaseTaskManager(
1207 base::ThreadTaskRunnerHandle::Get())); 1207 base::ThreadTaskRunnerHandle::Get()));
1208 context_.reset( 1208 context_.reset(
1209 new ServiceWorkerContextCore(GetUserDataDirectory(), 1209 new ServiceWorkerContextCore(GetUserDataDirectory(),
1210 database_task_manager.Pass(), 1210 database_task_manager.Pass(),
1211 base::ThreadTaskRunnerHandle::Get(), 1211 base::ThreadTaskRunnerHandle::Get(),
1212 NULL, 1212 NULL,
1213 NULL, 1213 NULL,
1214 NULL, 1214 NULL,
1215 NULL)); 1215 NULL));
1216 storage()->LazyInitialize(base::Bind(&base::DoNothing)); 1216 storage()->LazyInitialize(base::Bind(&base::DoNothing));
1217 base::RunLoop().RunUntilIdle(); 1217 base::RunLoop().RunUntilIdle();
1218 1218
1219 // Store a new uncommitted resource. This triggers stale resource cleanup. 1219 // Store a new uncommitted resource. This triggers stale resource cleanup.
1220 int64 kNewResourceId = storage()->NewResourceId(); 1220 int64 kNewResourceId = storage()->NewResourceId();
1221 WriteBasicResponse(storage(), kNewResourceId); 1221 WriteBasicResponse(storage(), kNewResourceId);
1222 storage()->StoreUncommittedResponseId(kNewResourceId); 1222 storage()->StoreUncommittedResourceId(kNewResourceId);
1223 base::RunLoop().RunUntilIdle(); 1223 base::RunLoop().RunUntilIdle();
1224 1224
1225 // The stale resources should be purged, but the new resource should persist. 1225 // The stale resources should be purged, but the new resource should persist.
1226 verify_ids.clear(); 1226 verify_ids.clear();
1227 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 1227 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
1228 storage()->database_->GetUncommittedResourceIds(&verify_ids)); 1228 storage()->database_->GetUncommittedResourceIds(&verify_ids));
1229 ASSERT_EQ(1u, verify_ids.size()); 1229 ASSERT_EQ(1u, verify_ids.size());
1230 EXPECT_EQ(kNewResourceId, *verify_ids.begin()); 1230 EXPECT_EQ(kNewResourceId, *verify_ids.begin());
1231 1231
1232 // Purging resources needs interactions with SimpleCache's worker thread, 1232 // Purging resources needs interactions with SimpleCache's worker thread,
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
1467 storage()->NotifyDoneInstallingRegistration( 1467 storage()->NotifyDoneInstallingRegistration(
1468 live_registration3.get(), NULL, SERVICE_WORKER_OK); 1468 live_registration3.get(), NULL, SERVICE_WORKER_OK);
1469 1469
1470 // Find a registration among installed ones. 1470 // Find a registration among installed ones.
1471 EXPECT_EQ(SERVICE_WORKER_OK, 1471 EXPECT_EQ(SERVICE_WORKER_OK,
1472 FindRegistrationForDocument(kDocumentUrl, &found_registration)); 1472 FindRegistrationForDocument(kDocumentUrl, &found_registration));
1473 EXPECT_EQ(live_registration2, found_registration); 1473 EXPECT_EQ(live_registration2, found_registration);
1474 } 1474 }
1475 1475
1476 } // namespace content 1476 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698