| Index: content/browser/service_worker/service_worker_storage_unittest.cc
|
| diff --git a/content/browser/service_worker/service_worker_storage_unittest.cc b/content/browser/service_worker/service_worker_storage_unittest.cc
|
| index 93fee33bda2359bca799b05ccdf67a86a35c9b17..2d7e7eec6d567b70baae02f6f780423218b12153 100644
|
| --- a/content/browser/service_worker/service_worker_storage_unittest.cc
|
| +++ b/content/browser/service_worker/service_worker_storage_unittest.cc
|
| @@ -524,11 +524,13 @@ class ServiceWorkerResourceStorageTest : public ServiceWorkerStorageTest {
|
| registration_->waiting_version()->SetStatus(ServiceWorkerVersion::NEW);
|
|
|
| // Add the resources ids to the uncommitted list.
|
| - std::set<int64> resource_ids;
|
| - resource_ids.insert(resource_id1_);
|
| - resource_ids.insert(resource_id2_);
|
| + storage()->StoreUncommittedResponseId(resource_id1_);
|
| + storage()->StoreUncommittedResponseId(resource_id2_);
|
| + base::RunLoop().RunUntilIdle();
|
| + std::set<int64> verify_ids;
|
| EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
|
| - storage()->database_->WriteUncommittedResourceIds(resource_ids));
|
| + storage()->database_->GetUncommittedResourceIds(&verify_ids));
|
| + EXPECT_EQ(2u, verify_ids.size());
|
|
|
| // And dump something in the disk cache for them.
|
| WriteBasicResponse(storage(), resource_id1_);
|
| @@ -541,7 +543,7 @@ class ServiceWorkerResourceStorageTest : public ServiceWorkerStorageTest {
|
| EXPECT_EQ(
|
| SERVICE_WORKER_OK,
|
| StoreRegistration(registration_, registration_->waiting_version()));
|
| - std::set<int64> verify_ids;
|
| + verify_ids.clear();
|
| EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
|
| storage()->database_->GetUncommittedResourceIds(&verify_ids));
|
| EXPECT_TRUE(verify_ids.empty());
|
| @@ -699,7 +701,20 @@ TEST_F(ServiceWorkerResourceStorageDiskTest, MAYBE_CleanupOnRestart) {
|
| EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id1_, true));
|
| EXPECT_TRUE(VerifyBasicResponse(storage(), resource_id2_, true));
|
|
|
| - // Simulate browser restart. This should trigger stale resource purging.
|
| + // Also add an uncommitted resource.
|
| + int64 kStaleUncommittedResourceId = storage()->NewResourceId();
|
| + storage()->StoreUncommittedResponseId(kStaleUncommittedResourceId);
|
| + base::RunLoop().RunUntilIdle();
|
| + verify_ids.clear();
|
| + EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
|
| + storage()->database_->GetUncommittedResourceIds(&verify_ids));
|
| + EXPECT_EQ(1u, verify_ids.size());
|
| + WriteBasicResponse(storage(), kStaleUncommittedResourceId);
|
| + EXPECT_TRUE(
|
| + VerifyBasicResponse(storage(), kStaleUncommittedResourceId, true));
|
| +
|
| + // Simulate browser shutdown. The purgeable and uncommitted resources are now
|
| + // stale.
|
| context_.reset();
|
| context_.reset(new ServiceWorkerContextCore(GetUserDataDirectory(),
|
| base::MessageLoopProxy::current(),
|
| @@ -707,18 +722,31 @@ TEST_F(ServiceWorkerResourceStorageDiskTest, MAYBE_CleanupOnRestart) {
|
| NULL,
|
| NULL,
|
| NULL));
|
| - // Use FindRegistration to force storage system initialization.
|
| - scoped_refptr<ServiceWorkerRegistration> found_registration;
|
| - FindRegistrationForDocument(document_url_, &found_registration);
|
| + storage()->LazyInitialize(base::Bind(&base::DoNothing));
|
| + base::RunLoop().RunUntilIdle();
|
| +
|
| + // Store a new uncommitted resource. This triggers stale resource cleanup.
|
| + int64 kNewResourceId = storage()->NewResourceId();
|
| + WriteBasicResponse(storage(), kNewResourceId);
|
| + storage()->StoreUncommittedResponseId(kNewResourceId);
|
| base::RunLoop().RunUntilIdle();
|
|
|
| - // Stale resources should be gone.
|
| + // The stale resources should be purged, but the new resource should persist.
|
| + verify_ids.clear();
|
| + EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
|
| + storage()->database_->GetUncommittedResourceIds(&verify_ids));
|
| + ASSERT_EQ(1u, verify_ids.size());
|
| + EXPECT_EQ(kNewResourceId, *verify_ids.begin());
|
| +
|
| verify_ids.clear();
|
| EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
|
| storage()->database_->GetPurgeableResourceIds(&verify_ids));
|
| EXPECT_TRUE(verify_ids.empty());
|
| EXPECT_FALSE(VerifyBasicResponse(storage(), resource_id1_, false));
|
| EXPECT_FALSE(VerifyBasicResponse(storage(), resource_id2_, false));
|
| + EXPECT_FALSE(
|
| + VerifyBasicResponse(storage(), kStaleUncommittedResourceId, false));
|
| + EXPECT_TRUE(VerifyBasicResponse(storage(), kNewResourceId, true));
|
| }
|
|
|
| TEST_F(ServiceWorkerResourceStorageTest, UpdateRegistration) {
|
|
|