OLD | NEW |
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 <stdint.h> | 5 #include <stdint.h> |
6 #include <utility> | 6 #include <utility> |
7 | 7 |
8 #include "base/files/file_util.h" | 8 #include "base/files/file_util.h" |
9 #include "base/files/scoped_temp_dir.h" | 9 #include "base/files/scoped_temp_dir.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 DISALLOW_COPY_AND_ASSIGN(IndexedDBFactoryTest); | 96 DISALLOW_COPY_AND_ASSIGN(IndexedDBFactoryTest); |
97 }; | 97 }; |
98 | 98 |
99 TEST_F(IndexedDBFactoryTest, BackingStoreLifetime) { | 99 TEST_F(IndexedDBFactoryTest, BackingStoreLifetime) { |
100 const Origin origin1(GURL("http://localhost:81")); | 100 const Origin origin1(GURL("http://localhost:81")); |
101 const Origin origin2(GURL("http://localhost:82")); | 101 const Origin origin2(GURL("http://localhost:82")); |
102 | 102 |
103 base::ScopedTempDir temp_directory; | 103 base::ScopedTempDir temp_directory; |
104 ASSERT_TRUE(temp_directory.CreateUniqueTempDir()); | 104 ASSERT_TRUE(temp_directory.CreateUniqueTempDir()); |
105 scoped_refptr<IndexedDBBackingStore> disk_store1 = | 105 scoped_refptr<IndexedDBBackingStore> disk_store1 = |
106 factory()->TestOpenBackingStore(origin1, temp_directory.path()); | 106 factory()->TestOpenBackingStore(origin1, temp_directory.GetPath()); |
107 | 107 |
108 scoped_refptr<IndexedDBBackingStore> disk_store2 = | 108 scoped_refptr<IndexedDBBackingStore> disk_store2 = |
109 factory()->TestOpenBackingStore(origin1, temp_directory.path()); | 109 factory()->TestOpenBackingStore(origin1, temp_directory.GetPath()); |
110 EXPECT_EQ(disk_store1.get(), disk_store2.get()); | 110 EXPECT_EQ(disk_store1.get(), disk_store2.get()); |
111 | 111 |
112 scoped_refptr<IndexedDBBackingStore> disk_store3 = | 112 scoped_refptr<IndexedDBBackingStore> disk_store3 = |
113 factory()->TestOpenBackingStore(origin2, temp_directory.path()); | 113 factory()->TestOpenBackingStore(origin2, temp_directory.GetPath()); |
114 | 114 |
115 factory()->TestCloseBackingStore(disk_store1.get()); | 115 factory()->TestCloseBackingStore(disk_store1.get()); |
116 factory()->TestCloseBackingStore(disk_store3.get()); | 116 factory()->TestCloseBackingStore(disk_store3.get()); |
117 | 117 |
118 EXPECT_FALSE(disk_store1->HasOneRef()); | 118 EXPECT_FALSE(disk_store1->HasOneRef()); |
119 EXPECT_FALSE(disk_store2->HasOneRef()); | 119 EXPECT_FALSE(disk_store2->HasOneRef()); |
120 EXPECT_TRUE(disk_store3->HasOneRef()); | 120 EXPECT_TRUE(disk_store3->HasOneRef()); |
121 | 121 |
122 disk_store2 = nullptr; | 122 disk_store2 = nullptr; |
123 EXPECT_TRUE(disk_store1->HasOneRef()); | 123 EXPECT_TRUE(disk_store1->HasOneRef()); |
124 } | 124 } |
125 | 125 |
126 TEST_F(IndexedDBFactoryTest, BackingStoreLazyClose) { | 126 TEST_F(IndexedDBFactoryTest, BackingStoreLazyClose) { |
127 const Origin origin(GURL("http://localhost:81")); | 127 const Origin origin(GURL("http://localhost:81")); |
128 | 128 |
129 base::ScopedTempDir temp_directory; | 129 base::ScopedTempDir temp_directory; |
130 ASSERT_TRUE(temp_directory.CreateUniqueTempDir()); | 130 ASSERT_TRUE(temp_directory.CreateUniqueTempDir()); |
131 scoped_refptr<IndexedDBBackingStore> store = | 131 scoped_refptr<IndexedDBBackingStore> store = |
132 factory()->TestOpenBackingStore(origin, temp_directory.path()); | 132 factory()->TestOpenBackingStore(origin, temp_directory.GetPath()); |
133 | 133 |
134 // Give up the local refptr so that the factory has the only | 134 // Give up the local refptr so that the factory has the only |
135 // outstanding reference. | 135 // outstanding reference. |
136 IndexedDBBackingStore* store_ptr = store.get(); | 136 IndexedDBBackingStore* store_ptr = store.get(); |
137 store = nullptr; | 137 store = nullptr; |
138 EXPECT_FALSE(store_ptr->close_timer()->IsRunning()); | 138 EXPECT_FALSE(store_ptr->close_timer()->IsRunning()); |
139 factory()->TestReleaseBackingStore(store_ptr, false); | 139 factory()->TestReleaseBackingStore(store_ptr, false); |
140 EXPECT_TRUE(store_ptr->close_timer()->IsRunning()); | 140 EXPECT_TRUE(store_ptr->close_timer()->IsRunning()); |
141 | 141 |
142 factory()->TestOpenBackingStore(origin, temp_directory.path()); | 142 factory()->TestOpenBackingStore(origin, temp_directory.GetPath()); |
143 EXPECT_FALSE(store_ptr->close_timer()->IsRunning()); | 143 EXPECT_FALSE(store_ptr->close_timer()->IsRunning()); |
144 factory()->TestReleaseBackingStore(store_ptr, false); | 144 factory()->TestReleaseBackingStore(store_ptr, false); |
145 EXPECT_TRUE(store_ptr->close_timer()->IsRunning()); | 145 EXPECT_TRUE(store_ptr->close_timer()->IsRunning()); |
146 | 146 |
147 // Take back a ref ptr and ensure that the actual close | 147 // Take back a ref ptr and ensure that the actual close |
148 // stops a running timer. | 148 // stops a running timer. |
149 store = store_ptr; | 149 store = store_ptr; |
150 factory()->TestCloseBackingStore(store_ptr); | 150 factory()->TestCloseBackingStore(store_ptr); |
151 EXPECT_FALSE(store_ptr->close_timer()->IsRunning()); | 151 EXPECT_FALSE(store_ptr->close_timer()->IsRunning()); |
152 } | 152 } |
(...skipping 24 matching lines...) Expand all Loading... |
177 EXPECT_FALSE(mem_store2->HasOneRef()); // mem_store1 and 2 | 177 EXPECT_FALSE(mem_store2->HasOneRef()); // mem_store1 and 2 |
178 EXPECT_TRUE(mem_store3->HasOneRef()); | 178 EXPECT_TRUE(mem_store3->HasOneRef()); |
179 | 179 |
180 mem_store2 = nullptr; | 180 mem_store2 = nullptr; |
181 EXPECT_TRUE(mem_store1->HasOneRef()); | 181 EXPECT_TRUE(mem_store1->HasOneRef()); |
182 } | 182 } |
183 | 183 |
184 TEST_F(IndexedDBFactoryTest, RejectLongOrigins) { | 184 TEST_F(IndexedDBFactoryTest, RejectLongOrigins) { |
185 base::ScopedTempDir temp_directory; | 185 base::ScopedTempDir temp_directory; |
186 ASSERT_TRUE(temp_directory.CreateUniqueTempDir()); | 186 ASSERT_TRUE(temp_directory.CreateUniqueTempDir()); |
187 const base::FilePath base_path = temp_directory.path(); | 187 const base::FilePath base_path = temp_directory.GetPath(); |
188 | 188 |
189 int limit = base::GetMaximumPathComponentLength(base_path); | 189 int limit = base::GetMaximumPathComponentLength(base_path); |
190 EXPECT_GT(limit, 0); | 190 EXPECT_GT(limit, 0); |
191 | 191 |
192 std::string origin(limit + 1, 'x'); | 192 std::string origin(limit + 1, 'x'); |
193 Origin too_long_origin(GURL("http://" + origin + ":81/")); | 193 Origin too_long_origin(GURL("http://" + origin + ":81/")); |
194 scoped_refptr<IndexedDBBackingStore> diskStore1 = | 194 scoped_refptr<IndexedDBBackingStore> diskStore1 = |
195 factory()->TestOpenBackingStore(too_long_origin, base_path); | 195 factory()->TestOpenBackingStore(too_long_origin, base_path); |
196 EXPECT_FALSE(diskStore1.get()); | 196 EXPECT_FALSE(diskStore1.get()); |
197 | 197 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 scoped_refptr<LookingForQuotaErrorMockCallbacks> callbacks = | 251 scoped_refptr<LookingForQuotaErrorMockCallbacks> callbacks = |
252 new LookingForQuotaErrorMockCallbacks; | 252 new LookingForQuotaErrorMockCallbacks; |
253 scoped_refptr<IndexedDBDatabaseCallbacks> dummy_database_callbacks = | 253 scoped_refptr<IndexedDBDatabaseCallbacks> dummy_database_callbacks = |
254 new IndexedDBDatabaseCallbacks(nullptr, 0, 0); | 254 new IndexedDBDatabaseCallbacks(nullptr, 0, 0); |
255 const base::string16 name(ASCIIToUTF16("name")); | 255 const base::string16 name(ASCIIToUTF16("name")); |
256 std::unique_ptr<IndexedDBPendingConnection> connection( | 256 std::unique_ptr<IndexedDBPendingConnection> connection( |
257 base::MakeUnique<IndexedDBPendingConnection>( | 257 base::MakeUnique<IndexedDBPendingConnection>( |
258 callbacks, dummy_database_callbacks, 0 /* child_process_id */, | 258 callbacks, dummy_database_callbacks, 0 /* child_process_id */, |
259 2 /* transaction_id */, 1 /* version */)); | 259 2 /* transaction_id */, 1 /* version */)); |
260 factory->Open(name, std::move(connection), nullptr /* request_context */, | 260 factory->Open(name, std::move(connection), nullptr /* request_context */, |
261 origin, temp_directory.path()); | 261 origin, temp_directory.GetPath()); |
262 EXPECT_TRUE(callbacks->error_called()); | 262 EXPECT_TRUE(callbacks->error_called()); |
263 } | 263 } |
264 | 264 |
265 TEST_F(IndexedDBFactoryTest, BackingStoreReleasedOnForcedClose) { | 265 TEST_F(IndexedDBFactoryTest, BackingStoreReleasedOnForcedClose) { |
266 const Origin origin(GURL("http://localhost:81")); | 266 const Origin origin(GURL("http://localhost:81")); |
267 | 267 |
268 base::ScopedTempDir temp_directory; | 268 base::ScopedTempDir temp_directory; |
269 ASSERT_TRUE(temp_directory.CreateUniqueTempDir()); | 269 ASSERT_TRUE(temp_directory.CreateUniqueTempDir()); |
270 | 270 |
271 scoped_refptr<MockIndexedDBCallbacks> callbacks(new MockIndexedDBCallbacks()); | 271 scoped_refptr<MockIndexedDBCallbacks> callbacks(new MockIndexedDBCallbacks()); |
272 scoped_refptr<MockIndexedDBDatabaseCallbacks> db_callbacks( | 272 scoped_refptr<MockIndexedDBDatabaseCallbacks> db_callbacks( |
273 new MockIndexedDBDatabaseCallbacks()); | 273 new MockIndexedDBDatabaseCallbacks()); |
274 const int64_t transaction_id = 1; | 274 const int64_t transaction_id = 1; |
275 std::unique_ptr<IndexedDBPendingConnection> connection( | 275 std::unique_ptr<IndexedDBPendingConnection> connection( |
276 base::MakeUnique<IndexedDBPendingConnection>( | 276 base::MakeUnique<IndexedDBPendingConnection>( |
277 callbacks, db_callbacks, 0 /* child_process_id */, transaction_id, | 277 callbacks, db_callbacks, 0 /* child_process_id */, transaction_id, |
278 IndexedDBDatabaseMetadata::DEFAULT_VERSION)); | 278 IndexedDBDatabaseMetadata::DEFAULT_VERSION)); |
279 factory()->Open(ASCIIToUTF16("db"), std::move(connection), | 279 factory()->Open(ASCIIToUTF16("db"), std::move(connection), |
280 nullptr /* request_context */, origin, temp_directory.path()); | 280 nullptr /* request_context */, origin, |
| 281 temp_directory.GetPath()); |
281 | 282 |
282 EXPECT_TRUE(callbacks->connection()); | 283 EXPECT_TRUE(callbacks->connection()); |
283 | 284 |
284 EXPECT_TRUE(factory()->IsBackingStoreOpen(origin)); | 285 EXPECT_TRUE(factory()->IsBackingStoreOpen(origin)); |
285 EXPECT_FALSE(factory()->IsBackingStorePendingClose(origin)); | 286 EXPECT_FALSE(factory()->IsBackingStorePendingClose(origin)); |
286 | 287 |
287 callbacks->connection()->ForceClose(); | 288 callbacks->connection()->ForceClose(); |
288 | 289 |
289 EXPECT_FALSE(factory()->IsBackingStoreOpen(origin)); | 290 EXPECT_FALSE(factory()->IsBackingStoreOpen(origin)); |
290 EXPECT_FALSE(factory()->IsBackingStorePendingClose(origin)); | 291 EXPECT_FALSE(factory()->IsBackingStorePendingClose(origin)); |
291 } | 292 } |
292 | 293 |
293 TEST_F(IndexedDBFactoryTest, BackingStoreReleaseDelayedOnClose) { | 294 TEST_F(IndexedDBFactoryTest, BackingStoreReleaseDelayedOnClose) { |
294 const Origin origin(GURL("http://localhost:81")); | 295 const Origin origin(GURL("http://localhost:81")); |
295 | 296 |
296 base::ScopedTempDir temp_directory; | 297 base::ScopedTempDir temp_directory; |
297 ASSERT_TRUE(temp_directory.CreateUniqueTempDir()); | 298 ASSERT_TRUE(temp_directory.CreateUniqueTempDir()); |
298 | 299 |
299 scoped_refptr<MockIndexedDBCallbacks> callbacks(new MockIndexedDBCallbacks()); | 300 scoped_refptr<MockIndexedDBCallbacks> callbacks(new MockIndexedDBCallbacks()); |
300 scoped_refptr<MockIndexedDBDatabaseCallbacks> db_callbacks( | 301 scoped_refptr<MockIndexedDBDatabaseCallbacks> db_callbacks( |
301 new MockIndexedDBDatabaseCallbacks()); | 302 new MockIndexedDBDatabaseCallbacks()); |
302 const int64_t transaction_id = 1; | 303 const int64_t transaction_id = 1; |
303 std::unique_ptr<IndexedDBPendingConnection> connection( | 304 std::unique_ptr<IndexedDBPendingConnection> connection( |
304 base::MakeUnique<IndexedDBPendingConnection>( | 305 base::MakeUnique<IndexedDBPendingConnection>( |
305 callbacks, db_callbacks, 0 /* child_process_id */, transaction_id, | 306 callbacks, db_callbacks, 0 /* child_process_id */, transaction_id, |
306 IndexedDBDatabaseMetadata::DEFAULT_VERSION)); | 307 IndexedDBDatabaseMetadata::DEFAULT_VERSION)); |
307 factory()->Open(ASCIIToUTF16("db"), std::move(connection), | 308 factory()->Open(ASCIIToUTF16("db"), std::move(connection), |
308 nullptr /* request_context */, origin, temp_directory.path()); | 309 nullptr /* request_context */, origin, |
| 310 temp_directory.GetPath()); |
309 | 311 |
310 EXPECT_TRUE(callbacks->connection()); | 312 EXPECT_TRUE(callbacks->connection()); |
311 IndexedDBBackingStore* store = | 313 IndexedDBBackingStore* store = |
312 callbacks->connection()->database()->backing_store(); | 314 callbacks->connection()->database()->backing_store(); |
313 EXPECT_FALSE(store->HasOneRef()); // Factory and database. | 315 EXPECT_FALSE(store->HasOneRef()); // Factory and database. |
314 | 316 |
315 EXPECT_TRUE(factory()->IsBackingStoreOpen(origin)); | 317 EXPECT_TRUE(factory()->IsBackingStoreOpen(origin)); |
316 callbacks->connection()->Close(); | 318 callbacks->connection()->Close(); |
317 EXPECT_TRUE(store->HasOneRef()); // Factory. | 319 EXPECT_TRUE(store->HasOneRef()); // Factory. |
318 EXPECT_TRUE(factory()->IsBackingStoreOpen(origin)); | 320 EXPECT_TRUE(factory()->IsBackingStoreOpen(origin)); |
(...skipping 15 matching lines...) Expand all Loading... |
334 | 336 |
335 base::ScopedTempDir temp_directory; | 337 base::ScopedTempDir temp_directory; |
336 ASSERT_TRUE(temp_directory.CreateUniqueTempDir()); | 338 ASSERT_TRUE(temp_directory.CreateUniqueTempDir()); |
337 | 339 |
338 EXPECT_FALSE(factory()->IsBackingStoreOpen(origin)); | 340 EXPECT_FALSE(factory()->IsBackingStoreOpen(origin)); |
339 | 341 |
340 const bool expect_connection = false; | 342 const bool expect_connection = false; |
341 scoped_refptr<MockIndexedDBCallbacks> callbacks( | 343 scoped_refptr<MockIndexedDBCallbacks> callbacks( |
342 new MockIndexedDBCallbacks(expect_connection)); | 344 new MockIndexedDBCallbacks(expect_connection)); |
343 factory()->DeleteDatabase(ASCIIToUTF16("db"), nullptr /* request_context */, | 345 factory()->DeleteDatabase(ASCIIToUTF16("db"), nullptr /* request_context */, |
344 callbacks, origin, temp_directory.path()); | 346 callbacks, origin, temp_directory.GetPath()); |
345 | 347 |
346 EXPECT_TRUE(factory()->IsBackingStoreOpen(origin)); | 348 EXPECT_TRUE(factory()->IsBackingStoreOpen(origin)); |
347 EXPECT_TRUE(factory()->IsBackingStorePendingClose(origin)); | 349 EXPECT_TRUE(factory()->IsBackingStorePendingClose(origin)); |
348 | 350 |
349 // Now simulate shutdown, which should stop the timer. | 351 // Now simulate shutdown, which should stop the timer. |
350 factory()->ContextDestroyed(); | 352 factory()->ContextDestroyed(); |
351 | 353 |
352 EXPECT_FALSE(factory()->IsBackingStoreOpen(origin)); | 354 EXPECT_FALSE(factory()->IsBackingStoreOpen(origin)); |
353 EXPECT_FALSE(factory()->IsBackingStorePendingClose(origin)); | 355 EXPECT_FALSE(factory()->IsBackingStorePendingClose(origin)); |
354 } | 356 } |
355 | 357 |
356 TEST_F(IndexedDBFactoryTest, GetDatabaseNamesClosesBackingStore) { | 358 TEST_F(IndexedDBFactoryTest, GetDatabaseNamesClosesBackingStore) { |
357 const Origin origin(GURL("http://localhost:81")); | 359 const Origin origin(GURL("http://localhost:81")); |
358 | 360 |
359 base::ScopedTempDir temp_directory; | 361 base::ScopedTempDir temp_directory; |
360 ASSERT_TRUE(temp_directory.CreateUniqueTempDir()); | 362 ASSERT_TRUE(temp_directory.CreateUniqueTempDir()); |
361 | 363 |
362 EXPECT_FALSE(factory()->IsBackingStoreOpen(origin)); | 364 EXPECT_FALSE(factory()->IsBackingStoreOpen(origin)); |
363 | 365 |
364 const bool expect_connection = false; | 366 const bool expect_connection = false; |
365 scoped_refptr<MockIndexedDBCallbacks> callbacks( | 367 scoped_refptr<MockIndexedDBCallbacks> callbacks( |
366 new MockIndexedDBCallbacks(expect_connection)); | 368 new MockIndexedDBCallbacks(expect_connection)); |
367 factory()->GetDatabaseNames(callbacks, origin, temp_directory.path(), | 369 factory()->GetDatabaseNames(callbacks, origin, temp_directory.GetPath(), |
368 nullptr /* request_context */); | 370 nullptr /* request_context */); |
369 | 371 |
370 EXPECT_TRUE(factory()->IsBackingStoreOpen(origin)); | 372 EXPECT_TRUE(factory()->IsBackingStoreOpen(origin)); |
371 EXPECT_TRUE(factory()->IsBackingStorePendingClose(origin)); | 373 EXPECT_TRUE(factory()->IsBackingStorePendingClose(origin)); |
372 | 374 |
373 // Now simulate shutdown, which should stop the timer. | 375 // Now simulate shutdown, which should stop the timer. |
374 factory()->ContextDestroyed(); | 376 factory()->ContextDestroyed(); |
375 | 377 |
376 EXPECT_FALSE(factory()->IsBackingStoreOpen(origin)); | 378 EXPECT_FALSE(factory()->IsBackingStoreOpen(origin)); |
377 EXPECT_FALSE(factory()->IsBackingStorePendingClose(origin)); | 379 EXPECT_FALSE(factory()->IsBackingStorePendingClose(origin)); |
378 } | 380 } |
379 | 381 |
380 TEST_F(IndexedDBFactoryTest, ForceCloseReleasesBackingStore) { | 382 TEST_F(IndexedDBFactoryTest, ForceCloseReleasesBackingStore) { |
381 const Origin origin(GURL("http://localhost:81")); | 383 const Origin origin(GURL("http://localhost:81")); |
382 | 384 |
383 base::ScopedTempDir temp_directory; | 385 base::ScopedTempDir temp_directory; |
384 ASSERT_TRUE(temp_directory.CreateUniqueTempDir()); | 386 ASSERT_TRUE(temp_directory.CreateUniqueTempDir()); |
385 | 387 |
386 scoped_refptr<MockIndexedDBCallbacks> callbacks(new MockIndexedDBCallbacks()); | 388 scoped_refptr<MockIndexedDBCallbacks> callbacks(new MockIndexedDBCallbacks()); |
387 scoped_refptr<MockIndexedDBDatabaseCallbacks> db_callbacks( | 389 scoped_refptr<MockIndexedDBDatabaseCallbacks> db_callbacks( |
388 new MockIndexedDBDatabaseCallbacks()); | 390 new MockIndexedDBDatabaseCallbacks()); |
389 const int64_t transaction_id = 1; | 391 const int64_t transaction_id = 1; |
390 std::unique_ptr<IndexedDBPendingConnection> connection( | 392 std::unique_ptr<IndexedDBPendingConnection> connection( |
391 base::MakeUnique<IndexedDBPendingConnection>( | 393 base::MakeUnique<IndexedDBPendingConnection>( |
392 callbacks, db_callbacks, 0 /* child_process_id */, transaction_id, | 394 callbacks, db_callbacks, 0 /* child_process_id */, transaction_id, |
393 IndexedDBDatabaseMetadata::DEFAULT_VERSION)); | 395 IndexedDBDatabaseMetadata::DEFAULT_VERSION)); |
394 factory()->Open(ASCIIToUTF16("db"), std::move(connection), | 396 factory()->Open(ASCIIToUTF16("db"), std::move(connection), |
395 nullptr /* request_context */, origin, temp_directory.path()); | 397 nullptr /* request_context */, origin, |
| 398 temp_directory.GetPath()); |
396 | 399 |
397 EXPECT_TRUE(callbacks->connection()); | 400 EXPECT_TRUE(callbacks->connection()); |
398 EXPECT_TRUE(factory()->IsBackingStoreOpen(origin)); | 401 EXPECT_TRUE(factory()->IsBackingStoreOpen(origin)); |
399 EXPECT_FALSE(factory()->IsBackingStorePendingClose(origin)); | 402 EXPECT_FALSE(factory()->IsBackingStorePendingClose(origin)); |
400 | 403 |
401 callbacks->connection()->Close(); | 404 callbacks->connection()->Close(); |
402 | 405 |
403 EXPECT_TRUE(factory()->IsBackingStoreOpen(origin)); | 406 EXPECT_TRUE(factory()->IsBackingStoreOpen(origin)); |
404 EXPECT_TRUE(factory()->IsBackingStorePendingClose(origin)); | 407 EXPECT_TRUE(factory()->IsBackingStorePendingClose(origin)); |
405 | 408 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
467 // Open at version 2, then close. | 470 // Open at version 2, then close. |
468 { | 471 { |
469 scoped_refptr<MockIndexedDBCallbacks> callbacks( | 472 scoped_refptr<MockIndexedDBCallbacks> callbacks( |
470 new UpgradeNeededCallbacks()); | 473 new UpgradeNeededCallbacks()); |
471 std::unique_ptr<IndexedDBPendingConnection> connection( | 474 std::unique_ptr<IndexedDBPendingConnection> connection( |
472 base::MakeUnique<IndexedDBPendingConnection>( | 475 base::MakeUnique<IndexedDBPendingConnection>( |
473 callbacks, db_callbacks, 0 /* child_process_id */, transaction_id, | 476 callbacks, db_callbacks, 0 /* child_process_id */, transaction_id, |
474 db_version)); | 477 db_version)); |
475 factory()->Open(db_name, std::move(connection), | 478 factory()->Open(db_name, std::move(connection), |
476 nullptr /* request_context */, origin, | 479 nullptr /* request_context */, origin, |
477 temp_directory.path()); | 480 temp_directory.GetPath()); |
478 EXPECT_TRUE(factory()->IsDatabaseOpen(origin, db_name)); | 481 EXPECT_TRUE(factory()->IsDatabaseOpen(origin, db_name)); |
479 | 482 |
480 // Pump the message loop so the upgrade transaction can run. | 483 // Pump the message loop so the upgrade transaction can run. |
481 base::RunLoop().RunUntilIdle(); | 484 base::RunLoop().RunUntilIdle(); |
482 EXPECT_TRUE(callbacks->connection()); | 485 EXPECT_TRUE(callbacks->connection()); |
483 callbacks->connection()->database()->Commit(transaction_id); | 486 callbacks->connection()->database()->Commit(transaction_id); |
484 | 487 |
485 callbacks->connection()->Close(); | 488 callbacks->connection()->Close(); |
486 EXPECT_FALSE(factory()->IsDatabaseOpen(origin, db_name)); | 489 EXPECT_FALSE(factory()->IsDatabaseOpen(origin, db_name)); |
487 } | 490 } |
488 | 491 |
489 // Open at version < 2, which will fail; ensure factory doesn't retain | 492 // Open at version < 2, which will fail; ensure factory doesn't retain |
490 // the database object. | 493 // the database object. |
491 { | 494 { |
492 scoped_refptr<ErrorCallbacks> callbacks(new ErrorCallbacks()); | 495 scoped_refptr<ErrorCallbacks> callbacks(new ErrorCallbacks()); |
493 std::unique_ptr<IndexedDBPendingConnection> connection( | 496 std::unique_ptr<IndexedDBPendingConnection> connection( |
494 base::MakeUnique<IndexedDBPendingConnection>( | 497 base::MakeUnique<IndexedDBPendingConnection>( |
495 callbacks, db_callbacks, 0 /* child_process_id */, transaction_id, | 498 callbacks, db_callbacks, 0 /* child_process_id */, transaction_id, |
496 db_version - 1)); | 499 db_version - 1)); |
497 factory()->Open(db_name, std::move(connection), | 500 factory()->Open(db_name, std::move(connection), |
498 nullptr /* request_context */, origin, | 501 nullptr /* request_context */, origin, |
499 temp_directory.path()); | 502 temp_directory.GetPath()); |
500 EXPECT_TRUE(callbacks->saw_error()); | 503 EXPECT_TRUE(callbacks->saw_error()); |
501 EXPECT_FALSE(factory()->IsDatabaseOpen(origin, db_name)); | 504 EXPECT_FALSE(factory()->IsDatabaseOpen(origin, db_name)); |
502 } | 505 } |
503 | 506 |
504 // Terminate all pending-close timers. | 507 // Terminate all pending-close timers. |
505 factory()->ForceClose(origin); | 508 factory()->ForceClose(origin); |
506 } | 509 } |
507 | 510 |
508 } // namespace content | 511 } // namespace content |
OLD | NEW |