| Index: content/browser/service_worker/service_worker_database_unittest.cc | 
| diff --git a/content/browser/service_worker/service_worker_database_unittest.cc b/content/browser/service_worker/service_worker_database_unittest.cc | 
| index e38930366318f4323ce62b3a8b05033d9101d652..1d19f2237b81bdcf396a4630e9c711f8efd83dd0 100644 | 
| --- a/content/browser/service_worker/service_worker_database_unittest.cc | 
| +++ b/content/browser/service_worker/service_worker_database_unittest.cc | 
| @@ -137,6 +137,75 @@ TEST(ServiceWorkerDatabaseTest, DatabaseVersion) { | 
| EXPECT_LT(0, db_version); | 
| } | 
|  | 
| +TEST(ServiceWorkerDatabaseTest, DiskCacheMigrationState) { | 
| +  GURL origin("http://example.com"); | 
| +  base::ScopedTempDir database_dir; | 
| +  ASSERT_TRUE(database_dir.CreateUniqueTempDir()); | 
| +  scoped_ptr<ServiceWorkerDatabase> database( | 
| +      CreateDatabase(database_dir.path())); | 
| + | 
| +  // An empty database should return false. | 
| +  bool migration_needed = false; | 
| +  EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 
| +            database->IsDiskCacheMigrationNeeded(&migration_needed)); | 
| +  EXPECT_FALSE(migration_needed); | 
| +  bool deletion_needed = false; | 
| +  EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 
| +            database->IsOldDiskCacheDeletionNeeded(&deletion_needed)); | 
| +  EXPECT_FALSE(deletion_needed); | 
| + | 
| +  // Simulate an existing database created before diskcache migration. | 
| +  database->set_skip_writing_diskcache_migration_state_on_init_for_testing(); | 
| +  std::vector<ServiceWorkerDatabase::ResourceRecord> resources; | 
| +  ServiceWorkerDatabase::RegistrationData deleted_version; | 
| +  std::vector<int64> newly_purgeable_resources; | 
| +  ServiceWorkerDatabase::RegistrationData data; | 
| +  data.registration_id = 100; | 
| +  data.scope = URL(origin, "/foo"); | 
| +  data.script = URL(origin, "/script.js"); | 
| +  data.version_id = 200; | 
| +  data.resources_total_size_bytes = 300; | 
| +  resources.push_back(CreateResource(1, data.script, 300)); | 
| +  ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 
| +            database->WriteRegistration(data, resources, &deleted_version, | 
| +                                        &newly_purgeable_resources)); | 
| +  migration_needed = false; | 
| +  ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 
| +            database->IsDiskCacheMigrationNeeded(&migration_needed)); | 
| +  ASSERT_TRUE(migration_needed); | 
| +  deletion_needed = false; | 
| +  ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 
| +            database->IsOldDiskCacheDeletionNeeded(&deletion_needed)); | 
| +  ASSERT_TRUE(deletion_needed); | 
| + | 
| +  // Opening the existing database should not update the migration states. | 
| +  database.reset(CreateDatabase(database_dir.path())); | 
| +  migration_needed = false; | 
| +  EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 
| +            database->IsDiskCacheMigrationNeeded(&migration_needed)); | 
| +  EXPECT_TRUE(migration_needed); | 
| +  deletion_needed = false; | 
| +  EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 
| +            database->IsOldDiskCacheDeletionNeeded(&deletion_needed)); | 
| +  EXPECT_TRUE(deletion_needed); | 
| + | 
| +  // Test SetDiskCacheMigrationNotNeeded(). | 
| +  EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 
| +            database->SetDiskCacheMigrationNotNeeded()); | 
| +  migration_needed = false; | 
| +  EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 
| +            database->IsDiskCacheMigrationNeeded(&migration_needed)); | 
| +  EXPECT_FALSE(migration_needed); | 
| + | 
| +  // Test SetOldDiskCacheDeletionNotNeeded(). | 
| +  EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 
| +            database->SetOldDiskCacheDeletionNotNeeded()); | 
| +  deletion_needed = false; | 
| +  EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 
| +            database->IsOldDiskCacheDeletionNeeded(&deletion_needed)); | 
| +  EXPECT_FALSE(deletion_needed); | 
| +} | 
| + | 
| TEST(ServiceWorkerDatabaseTest, UpgradeSchemaToVersion2) { | 
| base::ScopedTempDir database_dir; | 
| ASSERT_TRUE(database_dir.CreateUniqueTempDir()); | 
|  |