OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_database.h" | 5 #include "content/browser/service_worker/service_worker_database.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/files/file_util.h" | 9 #include "base/files/file_util.h" |
10 #include "base/files/scoped_temp_dir.h" | 10 #include "base/files/scoped_temp_dir.h" |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 data.resources_total_size_bytes = 10; | 130 data.resources_total_size_bytes = 10; |
131 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 131 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
132 database->WriteRegistration( | 132 database->WriteRegistration( |
133 data, resources, &deleted_version, &newly_purgeable_resources)); | 133 data, resources, &deleted_version, &newly_purgeable_resources)); |
134 | 134 |
135 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 135 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
136 database->ReadDatabaseVersion(&db_version)); | 136 database->ReadDatabaseVersion(&db_version)); |
137 EXPECT_LT(0, db_version); | 137 EXPECT_LT(0, db_version); |
138 } | 138 } |
139 | 139 |
| 140 TEST(ServiceWorkerDatabaseTest, DiskCacheMigrationState) { |
| 141 GURL origin("http://example.com"); |
| 142 base::ScopedTempDir database_dir; |
| 143 ASSERT_TRUE(database_dir.CreateUniqueTempDir()); |
| 144 scoped_ptr<ServiceWorkerDatabase> database( |
| 145 CreateDatabase(database_dir.path())); |
| 146 |
| 147 // An empty database should return false. |
| 148 bool migration_needed = false; |
| 149 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 150 database->IsDiskCacheMigrationNeeded(&migration_needed)); |
| 151 EXPECT_FALSE(migration_needed); |
| 152 bool deletion_needed = false; |
| 153 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 154 database->IsOldDiskCacheDeletionNeeded(&deletion_needed)); |
| 155 EXPECT_FALSE(deletion_needed); |
| 156 |
| 157 // Simulate an existing database created before diskcache migration. |
| 158 database->set_skip_writing_diskcache_migration_state_on_init_for_testing(); |
| 159 std::vector<ServiceWorkerDatabase::ResourceRecord> resources; |
| 160 ServiceWorkerDatabase::RegistrationData deleted_version; |
| 161 std::vector<int64> newly_purgeable_resources; |
| 162 ServiceWorkerDatabase::RegistrationData data; |
| 163 data.registration_id = 100; |
| 164 data.scope = URL(origin, "/foo"); |
| 165 data.script = URL(origin, "/script.js"); |
| 166 data.version_id = 200; |
| 167 data.resources_total_size_bytes = 300; |
| 168 resources.push_back(CreateResource(1, data.script, 300)); |
| 169 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 170 database->WriteRegistration(data, resources, &deleted_version, |
| 171 &newly_purgeable_resources)); |
| 172 migration_needed = false; |
| 173 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 174 database->IsDiskCacheMigrationNeeded(&migration_needed)); |
| 175 ASSERT_TRUE(migration_needed); |
| 176 deletion_needed = false; |
| 177 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 178 database->IsOldDiskCacheDeletionNeeded(&deletion_needed)); |
| 179 ASSERT_TRUE(deletion_needed); |
| 180 |
| 181 // Opening the existing database should not update the migration states. |
| 182 database.reset(CreateDatabase(database_dir.path())); |
| 183 migration_needed = false; |
| 184 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 185 database->IsDiskCacheMigrationNeeded(&migration_needed)); |
| 186 EXPECT_TRUE(migration_needed); |
| 187 deletion_needed = false; |
| 188 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 189 database->IsOldDiskCacheDeletionNeeded(&deletion_needed)); |
| 190 EXPECT_TRUE(deletion_needed); |
| 191 |
| 192 // Test SetDiskCacheMigrationNotNeeded(). |
| 193 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 194 database->SetDiskCacheMigrationNotNeeded()); |
| 195 migration_needed = false; |
| 196 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 197 database->IsDiskCacheMigrationNeeded(&migration_needed)); |
| 198 EXPECT_FALSE(migration_needed); |
| 199 |
| 200 // Test SetOldDiskCacheDeletionNotNeeded(). |
| 201 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 202 database->SetOldDiskCacheDeletionNotNeeded()); |
| 203 deletion_needed = false; |
| 204 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 205 database->IsOldDiskCacheDeletionNeeded(&deletion_needed)); |
| 206 EXPECT_FALSE(deletion_needed); |
| 207 } |
| 208 |
140 TEST(ServiceWorkerDatabaseTest, UpgradeSchemaToVersion2) { | 209 TEST(ServiceWorkerDatabaseTest, UpgradeSchemaToVersion2) { |
141 base::ScopedTempDir database_dir; | 210 base::ScopedTempDir database_dir; |
142 ASSERT_TRUE(database_dir.CreateUniqueTempDir()); | 211 ASSERT_TRUE(database_dir.CreateUniqueTempDir()); |
143 scoped_ptr<ServiceWorkerDatabase> database( | 212 scoped_ptr<ServiceWorkerDatabase> database( |
144 CreateDatabase(database_dir.path())); | 213 CreateDatabase(database_dir.path())); |
145 | 214 |
146 GURL origin("http://example.com"); | 215 GURL origin("http://example.com"); |
147 | 216 |
148 // Add a registration to the database. | 217 // Add a registration to the database. |
149 std::vector<ServiceWorkerDatabase::ResourceRecord> resources; | 218 std::vector<ServiceWorkerDatabase::ResourceRecord> resources; |
(...skipping 1422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1572 CreateDatabase(database_dir.path())); | 1641 CreateDatabase(database_dir.path())); |
1573 | 1642 |
1574 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); | 1643 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); |
1575 ASSERT_TRUE(base::DirectoryExists(database_dir.path())); | 1644 ASSERT_TRUE(base::DirectoryExists(database_dir.path())); |
1576 | 1645 |
1577 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->DestroyDatabase()); | 1646 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->DestroyDatabase()); |
1578 ASSERT_FALSE(base::DirectoryExists(database_dir.path())); | 1647 ASSERT_FALSE(base::DirectoryExists(database_dir.path())); |
1579 } | 1648 } |
1580 | 1649 |
1581 } // namespace content | 1650 } // namespace content |
OLD | NEW |