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

Side by Side Diff: components/offline_pages/offline_page_metadata_store_impl_unittest.cc

Issue 2497703002: [Offline pages] Resetting offline page metadata store to handle LOAD/INIT failures (Closed)
Patch Set: Fixing newly added test Created 4 years, 1 month 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "components/offline_pages/offline_page_metadata_store.h" 5 #include "components/offline_pages/offline_page_metadata_store.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <memory> 9 #include <memory>
10 10
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 } 274 }
275 275
276 std::unique_ptr<OfflinePageMetadataStore> BuildStore(); 276 std::unique_ptr<OfflinePageMetadataStore> BuildStore();
277 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM52(); 277 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM52();
278 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM53(); 278 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM53();
279 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM54(); 279 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM54();
280 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM55(); 280 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM55();
281 281
282 void PumpLoop(); 282 void PumpLoop();
283 283
284 void InitializeCallback(bool success);
284 void GetOfflinePagesCallback( 285 void GetOfflinePagesCallback(
285 OfflinePageMetadataStore::LoadStatus load_status,
286 const std::vector<OfflinePageItem>& offline_pages); 286 const std::vector<OfflinePageItem>& offline_pages);
287 void AddCallback(ItemActionStatus status); 287 void AddCallback(ItemActionStatus status);
288 void UpdateCallback(CalledCallback called_callback, 288 void UpdateCallback(CalledCallback called_callback,
289 std::unique_ptr<OfflinePagesUpdateResult> result); 289 std::unique_ptr<OfflinePagesUpdateResult> result);
290 void ResetCallback(bool status); 290 void ResetCallback(bool success);
291 291
292 void ClearResults(); 292 void ClearResults();
293 293
294 OfflinePageItem CheckThatStoreHasOneItem(); 294 OfflinePageItem CheckThatStoreHasOneItem();
295 void CheckThatOfflinePageCanBeSaved( 295 void CheckThatOfflinePageCanBeSaved(
296 std::unique_ptr<OfflinePageMetadataStore> store); 296 std::unique_ptr<OfflinePageMetadataStore> store);
297 297
298 OfflinePagesUpdateResult* last_update_result() { 298 OfflinePagesUpdateResult* last_update_result() {
299 return last_update_result_.get(); 299 return last_update_result_.get();
300 } 300 }
(...skipping 17 matching lines...) Expand all
318 task_runner_handle_(task_runner_) { 318 task_runner_handle_(task_runner_) {
319 EXPECT_TRUE(temp_directory_.CreateUniqueTempDir()); 319 EXPECT_TRUE(temp_directory_.CreateUniqueTempDir());
320 } 320 }
321 321
322 OfflinePageMetadataStoreTest::~OfflinePageMetadataStoreTest() {} 322 OfflinePageMetadataStoreTest::~OfflinePageMetadataStoreTest() {}
323 323
324 void OfflinePageMetadataStoreTest::PumpLoop() { 324 void OfflinePageMetadataStoreTest::PumpLoop() {
325 task_runner_->RunUntilIdle(); 325 task_runner_->RunUntilIdle();
326 } 326 }
327 327
328 void OfflinePageMetadataStoreTest::InitializeCallback(bool success) {
329 last_status_ = success ? STATUS_TRUE : STATUS_FALSE;
330 }
331
328 void OfflinePageMetadataStoreTest::GetOfflinePagesCallback( 332 void OfflinePageMetadataStoreTest::GetOfflinePagesCallback(
329 OfflinePageMetadataStore::LoadStatus load_status,
330 const std::vector<OfflinePageItem>& offline_pages) { 333 const std::vector<OfflinePageItem>& offline_pages) {
331 last_called_callback_ = LOAD; 334 last_called_callback_ = LOAD;
332 last_status_ = load_status == OfflinePageMetadataStore::LOAD_SUCCEEDED ?
333 STATUS_TRUE : STATUS_FALSE;
334 offline_pages_.swap(const_cast<std::vector<OfflinePageItem>&>(offline_pages)); 335 offline_pages_.swap(const_cast<std::vector<OfflinePageItem>&>(offline_pages));
335 } 336 }
336 337
337 void OfflinePageMetadataStoreTest::AddCallback(ItemActionStatus status) { 338 void OfflinePageMetadataStoreTest::AddCallback(ItemActionStatus status) {
338 last_called_callback_ = ADD; 339 last_called_callback_ = ADD;
339 // TODO(fgorski): Add specific add status. 340 // TODO(fgorski): Add specific add status.
340 // last_item_status_ = status; 341 // last_item_status_ = status;
341 last_status_ = 342 last_status_ =
342 status == ItemActionStatus::SUCCESS ? STATUS_TRUE : STATUS_FALSE; 343 status == ItemActionStatus::SUCCESS ? STATUS_TRUE : STATUS_FALSE;
343 } 344 }
344 345
345 void OfflinePageMetadataStoreTest::UpdateCallback( 346 void OfflinePageMetadataStoreTest::UpdateCallback(
346 CalledCallback called_callback, 347 CalledCallback called_callback,
347 std::unique_ptr<OfflinePagesUpdateResult> result) { 348 std::unique_ptr<OfflinePagesUpdateResult> result) {
348 last_called_callback_ = called_callback; 349 last_called_callback_ = called_callback;
349 last_status_ = result->updated_items.size() > 0 ? STATUS_TRUE : STATUS_FALSE; 350 last_status_ = result->updated_items.size() > 0 ? STATUS_TRUE : STATUS_FALSE;
350 last_update_result_ = std::move(result); 351 last_update_result_ = std::move(result);
351 } 352 }
352 353
353 void OfflinePageMetadataStoreTest::ResetCallback(bool status) { 354 void OfflinePageMetadataStoreTest::ResetCallback(bool success) {
354 last_called_callback_ = RESET; 355 last_called_callback_ = RESET;
355 last_status_ = status ? STATUS_TRUE : STATUS_FALSE; 356 last_status_ = success ? STATUS_TRUE : STATUS_FALSE;
356 } 357 }
357 358
358 void OfflinePageMetadataStoreTest::ClearResults() { 359 void OfflinePageMetadataStoreTest::ClearResults() {
359 last_called_callback_ = NONE; 360 last_called_callback_ = NONE;
360 last_status_ = STATUS_NONE; 361 last_status_ = STATUS_NONE;
361 offline_pages_.clear(); 362 offline_pages_.clear();
362 last_update_result_.reset(nullptr); 363 last_update_result_.reset(nullptr);
363 } 364 }
364 365
365 OfflinePageItem OfflinePageMetadataStoreTest::CheckThatStoreHasOneItem() { 366 OfflinePageItem OfflinePageMetadataStoreTest::CheckThatStoreHasOneItem() {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 std::swap(offline_pages_[0], offline_pages_[1]); 402 std::swap(offline_pages_[0], offline_pages_[1]);
402 } 403 }
403 EXPECT_EQ(offline_page, offline_pages_[0]); 404 EXPECT_EQ(offline_page, offline_pages_[0]);
404 } 405 }
405 406
406 std::unique_ptr<OfflinePageMetadataStore> 407 std::unique_ptr<OfflinePageMetadataStore>
407 OfflinePageMetadataStoreTest::BuildStore() { 408 OfflinePageMetadataStoreTest::BuildStore() {
408 std::unique_ptr<OfflinePageMetadataStore> store( 409 std::unique_ptr<OfflinePageMetadataStore> store(
409 factory_.BuildStore(temp_directory_.GetPath())); 410 factory_.BuildStore(temp_directory_.GetPath()));
410 PumpLoop(); 411 PumpLoop();
412 store->Initialize(
413 base::Bind(&OfflinePageMetadataStoreTest::InitializeCallback,
414 base::Unretained(this)));
415 PumpLoop();
411 store->GetOfflinePages( 416 store->GetOfflinePages(
412 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 417 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
413 base::Unretained(this))); 418 base::Unretained(this)));
414 PumpLoop(); 419 PumpLoop();
415 return store; 420 return store;
416 } 421 }
417 422
418 std::unique_ptr<OfflinePageMetadataStore> 423 std::unique_ptr<OfflinePageMetadataStore>
419 OfflinePageMetadataStoreTest::BuildStoreWithSchemaFromM52() { 424 OfflinePageMetadataStoreTest::BuildStoreWithSchemaFromM52() {
420 std::unique_ptr<OfflinePageMetadataStore> store( 425 std::unique_ptr<OfflinePageMetadataStore> store(
421 factory_.BuildStoreM52(temp_directory_.GetPath())); 426 factory_.BuildStoreM52(temp_directory_.GetPath()));
422 PumpLoop(); 427 PumpLoop();
428 store->Initialize(
429 base::Bind(&OfflinePageMetadataStoreTest::InitializeCallback,
430 base::Unretained(this)));
431 PumpLoop();
423 store->GetOfflinePages( 432 store->GetOfflinePages(
424 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 433 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
425 base::Unretained(this))); 434 base::Unretained(this)));
426 PumpLoop(); 435 PumpLoop();
427 return store; 436 return store;
428 } 437 }
429 438
430 std::unique_ptr<OfflinePageMetadataStore> 439 std::unique_ptr<OfflinePageMetadataStore>
431 OfflinePageMetadataStoreTest::BuildStoreWithSchemaFromM53() { 440 OfflinePageMetadataStoreTest::BuildStoreWithSchemaFromM53() {
432 std::unique_ptr<OfflinePageMetadataStore> store( 441 std::unique_ptr<OfflinePageMetadataStore> store(
433 factory_.BuildStoreM53(temp_directory_.GetPath())); 442 factory_.BuildStoreM53(temp_directory_.GetPath()));
434 PumpLoop(); 443 PumpLoop();
444 store->Initialize(
445 base::Bind(&OfflinePageMetadataStoreTest::InitializeCallback,
446 base::Unretained(this)));
447 PumpLoop();
435 store->GetOfflinePages( 448 store->GetOfflinePages(
436 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 449 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
437 base::Unretained(this))); 450 base::Unretained(this)));
438 PumpLoop(); 451 PumpLoop();
439 return store; 452 return store;
440 } 453 }
441 454
442 std::unique_ptr<OfflinePageMetadataStore> 455 std::unique_ptr<OfflinePageMetadataStore>
443 OfflinePageMetadataStoreTest::BuildStoreWithSchemaFromM54() { 456 OfflinePageMetadataStoreTest::BuildStoreWithSchemaFromM54() {
444 std::unique_ptr<OfflinePageMetadataStore> store( 457 std::unique_ptr<OfflinePageMetadataStore> store(
445 factory_.BuildStoreM53(temp_directory_.GetPath())); 458 factory_.BuildStoreM53(temp_directory_.GetPath()));
446 PumpLoop(); 459 PumpLoop();
460 store->Initialize(
461 base::Bind(&OfflinePageMetadataStoreTest::InitializeCallback,
462 base::Unretained(this)));
463 PumpLoop();
447 store->GetOfflinePages( 464 store->GetOfflinePages(
448 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 465 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
449 base::Unretained(this))); 466 base::Unretained(this)));
450 PumpLoop(); 467 PumpLoop();
451 return store; 468 return store;
452 } 469 }
453 470
454 std::unique_ptr<OfflinePageMetadataStore> 471 std::unique_ptr<OfflinePageMetadataStore>
455 OfflinePageMetadataStoreTest::BuildStoreWithSchemaFromM55() { 472 OfflinePageMetadataStoreTest::BuildStoreWithSchemaFromM55() {
456 std::unique_ptr<OfflinePageMetadataStore> store( 473 std::unique_ptr<OfflinePageMetadataStore> store(
457 factory_.BuildStoreM55(temp_directory_.GetPath())); 474 factory_.BuildStoreM55(temp_directory_.GetPath()));
458 PumpLoop(); 475 PumpLoop();
476 store->Initialize(
477 base::Bind(&OfflinePageMetadataStoreTest::InitializeCallback,
478 base::Unretained(this)));
479 PumpLoop();
459 store->GetOfflinePages( 480 store->GetOfflinePages(
460 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 481 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
461 base::Unretained(this))); 482 base::Unretained(this)));
462 PumpLoop(); 483 PumpLoop();
463 return store; 484 return store;
464 } 485 }
465 486
466 // Loads empty store and makes sure that there are no offline pages stored in 487 // Loads empty store and makes sure that there are no offline pages stored in
467 // it. 488 // it.
468 TEST_F(OfflinePageMetadataStoreTest, LoadEmptyStore) { 489 TEST_F(OfflinePageMetadataStoreTest, LoadEmptyStore) {
469 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore()); 490 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore());
470 EXPECT_EQ(LOAD, last_called_callback_); 491 EXPECT_EQ(LOAD, last_called_callback_);
471 EXPECT_EQ(STATUS_TRUE, last_status_); 492 EXPECT_EQ(STATUS_TRUE, last_status_);
472 EXPECT_EQ(0U, offline_pages_.size()); 493 EXPECT_EQ(0U, offline_pages_.size());
473 } 494 }
474 495
475 TEST_F(OfflinePageMetadataStoreTest, GetOfflinePagesFromInvalidStore) { 496 TEST_F(OfflinePageMetadataStoreTest, GetOfflinePagesFromInvalidStore) {
476 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore()); 497 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore());
477 OfflinePageMetadataStoreSQL* sql_store = 498 OfflinePageMetadataStoreSQL* sql_store =
478 static_cast<OfflinePageMetadataStoreSQL*>(store.get()); 499 static_cast<OfflinePageMetadataStoreSQL*>(store.get());
479 500
480 sql_store->SetStateForTesting(StoreState::NOT_LOADED, false); 501 sql_store->SetStateForTesting(StoreState::NOT_LOADED, false);
481 store->GetOfflinePages( 502 store->GetOfflinePages(
482 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 503 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
483 base::Unretained(this))); 504 base::Unretained(this)));
484 PumpLoop(); 505 PumpLoop();
485 EXPECT_EQ(LOAD, last_called_callback_); 506 EXPECT_EQ(LOAD, last_called_callback_);
486 EXPECT_EQ(0UL, offline_pages_.size()); 507 EXPECT_EQ(0UL, offline_pages_.size());
487 EXPECT_EQ(STATUS_FALSE, last_status_); 508 EXPECT_EQ(StoreState::NOT_LOADED, store->state());
488 509
510 ClearResults();
489 sql_store->SetStateForTesting(StoreState::FAILED_LOADING, false); 511 sql_store->SetStateForTesting(StoreState::FAILED_LOADING, false);
490 store->GetOfflinePages( 512 store->GetOfflinePages(
491 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 513 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
492 base::Unretained(this))); 514 base::Unretained(this)));
493 PumpLoop(); 515 PumpLoop();
494 EXPECT_EQ(LOAD, last_called_callback_); 516 EXPECT_EQ(LOAD, last_called_callback_);
495 EXPECT_EQ(0UL, offline_pages_.size()); 517 EXPECT_EQ(0UL, offline_pages_.size());
496 EXPECT_EQ(STATUS_FALSE, last_status_); 518 EXPECT_EQ(StoreState::FAILED_LOADING, store->state());
497 519
520 ClearResults();
498 sql_store->SetStateForTesting(StoreState::FAILED_RESET, false); 521 sql_store->SetStateForTesting(StoreState::FAILED_RESET, false);
499 store->GetOfflinePages( 522 store->GetOfflinePages(
500 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 523 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
501 base::Unretained(this))); 524 base::Unretained(this)));
502 PumpLoop(); 525 PumpLoop();
503 EXPECT_EQ(LOAD, last_called_callback_); 526 EXPECT_EQ(LOAD, last_called_callback_);
504 EXPECT_EQ(0UL, offline_pages_.size()); 527 EXPECT_EQ(0UL, offline_pages_.size());
505 EXPECT_EQ(STATUS_FALSE, last_status_); 528 EXPECT_EQ(StoreState::FAILED_RESET, store->state());
506 529
530 ClearResults();
507 sql_store->SetStateForTesting(StoreState::LOADED, true); 531 sql_store->SetStateForTesting(StoreState::LOADED, true);
508 store->GetOfflinePages( 532 store->GetOfflinePages(
509 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 533 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
510 base::Unretained(this))); 534 base::Unretained(this)));
511 PumpLoop(); 535 PumpLoop();
512 EXPECT_EQ(LOAD, last_called_callback_); 536 EXPECT_EQ(LOAD, last_called_callback_);
513 EXPECT_EQ(0UL, offline_pages_.size()); 537 EXPECT_EQ(0UL, offline_pages_.size());
514 EXPECT_EQ(STATUS_FALSE, last_status_);
515 538
539 ClearResults();
516 sql_store->SetStateForTesting(StoreState::NOT_LOADED, true); 540 sql_store->SetStateForTesting(StoreState::NOT_LOADED, true);
517 store->GetOfflinePages( 541 store->GetOfflinePages(
518 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 542 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
519 base::Unretained(this))); 543 base::Unretained(this)));
520 PumpLoop(); 544 PumpLoop();
521 EXPECT_EQ(LOAD, last_called_callback_); 545 EXPECT_EQ(LOAD, last_called_callback_);
522 EXPECT_EQ(0UL, offline_pages_.size()); 546 EXPECT_EQ(0UL, offline_pages_.size());
523 EXPECT_EQ(STATUS_FALSE, last_status_);
524 547
548 ClearResults();
525 sql_store->SetStateForTesting(StoreState::FAILED_LOADING, false); 549 sql_store->SetStateForTesting(StoreState::FAILED_LOADING, false);
526 store->GetOfflinePages( 550 store->GetOfflinePages(
527 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 551 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
528 base::Unretained(this))); 552 base::Unretained(this)));
529 PumpLoop(); 553 PumpLoop();
530 EXPECT_EQ(LOAD, last_called_callback_); 554 EXPECT_EQ(LOAD, last_called_callback_);
531 EXPECT_EQ(0UL, offline_pages_.size()); 555 EXPECT_EQ(0UL, offline_pages_.size());
532 EXPECT_EQ(STATUS_FALSE, last_status_);
533 556
557 ClearResults();
534 sql_store->SetStateForTesting(StoreState::FAILED_RESET, false); 558 sql_store->SetStateForTesting(StoreState::FAILED_RESET, false);
535 store->GetOfflinePages( 559 store->GetOfflinePages(
536 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 560 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
537 base::Unretained(this))); 561 base::Unretained(this)));
538 PumpLoop(); 562 PumpLoop();
539 EXPECT_EQ(LOAD, last_called_callback_); 563 EXPECT_EQ(LOAD, last_called_callback_);
540 EXPECT_EQ(0UL, offline_pages_.size()); 564 EXPECT_EQ(0UL, offline_pages_.size());
541 EXPECT_EQ(STATUS_FALSE, last_status_);
542
543 } 565 }
544 566
545 // Loads a store which has an outdated schema. 567 // Loads a store which has an outdated schema.
546 // This test case would crash if it's not handling correctly when we're loading 568 // This test case would crash if it's not handling correctly when we're loading
547 // old version stores. 569 // old version stores.
548 // TODO(romax): Move this to sql_unittest. 570 // TODO(romax): Move this to sql_unittest.
549 TEST_F(OfflinePageMetadataStoreTest, LoadVersion52Store) { 571 TEST_F(OfflinePageMetadataStoreTest, LoadVersion52Store) {
550 std::unique_ptr<OfflinePageMetadataStore> store( 572 std::unique_ptr<OfflinePageMetadataStore> store(
551 BuildStoreWithSchemaFromM52()); 573 BuildStoreWithSchemaFromM52());
552 574
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 base::FilePath(kFilePath), kFileSize); 659 base::FilePath(kFilePath), kFileSize);
638 store->AddOfflinePage(offline_page, 660 store->AddOfflinePage(offline_page,
639 base::Bind(&OfflinePageMetadataStoreTest::AddCallback, 661 base::Bind(&OfflinePageMetadataStoreTest::AddCallback,
640 base::Unretained(this))); 662 base::Unretained(this)));
641 PumpLoop(); 663 PumpLoop();
642 EXPECT_EQ(ADD, last_called_callback_); 664 EXPECT_EQ(ADD, last_called_callback_);
643 EXPECT_EQ(STATUS_TRUE, last_status_); 665 EXPECT_EQ(STATUS_TRUE, last_status_);
644 666
645 ClearResults(); 667 ClearResults();
646 668
647 // Load the store. 669 // Get all pages from the store.
648 store->GetOfflinePages( 670 store->GetOfflinePages(
649 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 671 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
650 base::Unretained(this))); 672 base::Unretained(this)));
651 PumpLoop(); 673 PumpLoop();
652 EXPECT_EQ(LOAD, last_called_callback_); 674 EXPECT_EQ(LOAD, last_called_callback_);
653 EXPECT_EQ(1U, offline_pages_.size()); 675 EXPECT_EQ(1U, offline_pages_.size());
654 676
655 // Remove the offline page. 677 // Remove the offline page.
656 std::vector<int64_t> ids_to_remove; 678 std::vector<int64_t> ids_to_remove;
657 ids_to_remove.push_back(offline_page.offline_id); 679 ids_to_remove.push_back(offline_page.offline_id);
658 store->RemoveOfflinePages( 680 store->RemoveOfflinePages(
659 ids_to_remove, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, 681 ids_to_remove, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback,
660 base::Unretained(this), REMOVE)); 682 base::Unretained(this), REMOVE));
661 PumpLoop(); 683 PumpLoop();
662 EXPECT_EQ(REMOVE, last_called_callback_); 684 EXPECT_EQ(REMOVE, last_called_callback_);
663 EXPECT_EQ(STATUS_TRUE, last_status_); 685 EXPECT_EQ(STATUS_TRUE, last_status_);
664 ASSERT_TRUE(last_update_result() != nullptr); 686 ASSERT_TRUE(last_update_result() != nullptr);
665 EXPECT_EQ(1UL, last_update_result()->item_statuses.size()); 687 EXPECT_EQ(1UL, last_update_result()->item_statuses.size());
666 EXPECT_EQ(ItemActionStatus::SUCCESS, 688 EXPECT_EQ(ItemActionStatus::SUCCESS,
667 last_update_result()->item_statuses.begin()->second); 689 last_update_result()->item_statuses.begin()->second);
668 EXPECT_EQ(1UL, last_update_result()->updated_items.size()); 690 EXPECT_EQ(1UL, last_update_result()->updated_items.size());
669 EXPECT_EQ(offline_page, *(last_update_result()->updated_items.begin())); 691 EXPECT_EQ(offline_page, *(last_update_result()->updated_items.begin()));
670 692
671 ClearResults(); 693 ClearResults();
672 694
673 // Load the store. 695 // Get all pages from the store.
674 store->GetOfflinePages( 696 store->GetOfflinePages(
675 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 697 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
676 base::Unretained(this))); 698 base::Unretained(this)));
677 PumpLoop(); 699 PumpLoop();
678 EXPECT_EQ(LOAD, last_called_callback_); 700 EXPECT_EQ(LOAD, last_called_callback_);
679 EXPECT_EQ(0U, offline_pages_.size()); 701 EXPECT_EQ(0U, offline_pages_.size());
680 702
681 ClearResults(); 703 ClearResults();
682 704
683 // Close and reload the store. 705 // Close and reload the store.
(...skipping 30 matching lines...) Expand all
714 offline_page_2.original_url = GURL("https://example.com/bar"); 736 offline_page_2.original_url = GURL("https://example.com/bar");
715 store->AddOfflinePage(offline_page_2, 737 store->AddOfflinePage(offline_page_2,
716 base::Bind(&OfflinePageMetadataStoreTest::AddCallback, 738 base::Bind(&OfflinePageMetadataStoreTest::AddCallback,
717 base::Unretained(this))); 739 base::Unretained(this)));
718 PumpLoop(); 740 PumpLoop();
719 EXPECT_EQ(ADD, last_called_callback_); 741 EXPECT_EQ(ADD, last_called_callback_);
720 EXPECT_EQ(STATUS_TRUE, last_status_); 742 EXPECT_EQ(STATUS_TRUE, last_status_);
721 743
722 ClearResults(); 744 ClearResults();
723 745
724 // Load the store. 746 // Get all pages from the store.
725 store->GetOfflinePages( 747 store->GetOfflinePages(
726 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 748 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
727 base::Unretained(this))); 749 base::Unretained(this)));
728 PumpLoop(); 750 PumpLoop();
729 751
730 EXPECT_EQ(LOAD, last_called_callback_); 752 EXPECT_EQ(LOAD, last_called_callback_);
731 EXPECT_EQ(STATUS_TRUE, last_status_);
732 EXPECT_EQ(2U, offline_pages_.size()); 753 EXPECT_EQ(2U, offline_pages_.size());
733 754
734 // Remove the offline page. 755 // Remove the offline page.
735 std::vector<int64_t> ids_to_remove; 756 std::vector<int64_t> ids_to_remove;
736 ids_to_remove.push_back(offline_page_1.offline_id); 757 ids_to_remove.push_back(offline_page_1.offline_id);
737 store->RemoveOfflinePages( 758 store->RemoveOfflinePages(
738 ids_to_remove, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, 759 ids_to_remove, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback,
739 base::Unretained(this), REMOVE)); 760 base::Unretained(this), REMOVE));
740 PumpLoop(); 761 PumpLoop();
741 EXPECT_EQ(REMOVE, last_called_callback_); 762 EXPECT_EQ(REMOVE, last_called_callback_);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
786 EXPECT_EQ(ADD, last_called_callback_); 807 EXPECT_EQ(ADD, last_called_callback_);
787 EXPECT_EQ(STATUS_TRUE, last_status_); 808 EXPECT_EQ(STATUS_TRUE, last_status_);
788 809
789 ClearResults(); 810 ClearResults();
790 store->GetOfflinePages( 811 store->GetOfflinePages(
791 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 812 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
792 base::Unretained(this))); 813 base::Unretained(this)));
793 PumpLoop(); 814 PumpLoop();
794 815
795 EXPECT_EQ(LOAD, last_called_callback_); 816 EXPECT_EQ(LOAD, last_called_callback_);
796 EXPECT_EQ(STATUS_TRUE, last_status_);
797 ASSERT_EQ(1U, offline_pages_.size()); 817 ASSERT_EQ(1U, offline_pages_.size());
798 EXPECT_EQ(offline_page, offline_pages_[0]); 818 EXPECT_EQ(offline_page, offline_pages_[0]);
799 819
800 // Then update some data. 820 // Then update some data.
801 offline_page.file_size = kFileSize + 1; 821 offline_page.file_size = kFileSize + 1;
802 offline_page.access_count++; 822 offline_page.access_count++;
803 offline_page.expiration_time = base::Time::Now(); 823 offline_page.expiration_time = base::Time::Now();
804 offline_page.original_url = GURL("https://example.com/bar"); 824 offline_page.original_url = GURL("https://example.com/bar");
805 std::vector<OfflinePageItem> items_to_update; 825 std::vector<OfflinePageItem> items_to_update;
806 items_to_update.push_back(offline_page); 826 items_to_update.push_back(offline_page);
(...skipping 10 matching lines...) Expand all
817 EXPECT_EQ(1UL, last_update_result()->updated_items.size()); 837 EXPECT_EQ(1UL, last_update_result()->updated_items.size());
818 EXPECT_EQ(offline_page, *(last_update_result()->updated_items.begin())); 838 EXPECT_EQ(offline_page, *(last_update_result()->updated_items.begin()));
819 839
820 ClearResults(); 840 ClearResults();
821 store->GetOfflinePages( 841 store->GetOfflinePages(
822 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 842 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
823 base::Unretained(this))); 843 base::Unretained(this)));
824 PumpLoop(); 844 PumpLoop();
825 845
826 EXPECT_EQ(LOAD, last_called_callback_); 846 EXPECT_EQ(LOAD, last_called_callback_);
827 EXPECT_EQ(STATUS_TRUE, last_status_);
828 ASSERT_EQ(1U, offline_pages_.size()); 847 ASSERT_EQ(1U, offline_pages_.size());
829 EXPECT_EQ(offline_page, offline_pages_[0]); 848 EXPECT_EQ(offline_page, offline_pages_[0]);
830 } 849 }
831 850
832 TEST_F(OfflinePageMetadataStoreTest, ClearAllOfflinePages) { 851 TEST_F(OfflinePageMetadataStoreTest, ClearAllOfflinePages) {
833 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore()); 852 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore());
834 853
835 // Add 2 offline pages. 854 // Add 2 offline pages.
836 OfflinePageItem offline_page(GURL(kTestURL), 1234LL, kTestClientId1, 855 OfflinePageItem offline_page(GURL(kTestURL), 1234LL, kTestClientId1,
837 base::FilePath(kFilePath), kFileSize); 856 base::FilePath(kFilePath), kFileSize);
(...skipping 10 matching lines...) Expand all
848 base::FilePath(kFilePath), kFileSize); 867 base::FilePath(kFilePath), kFileSize);
849 store->AddOfflinePage(offline_page2, 868 store->AddOfflinePage(offline_page2,
850 base::Bind(&OfflinePageMetadataStoreTest::AddCallback, 869 base::Bind(&OfflinePageMetadataStoreTest::AddCallback,
851 base::Unretained(this))); 870 base::Unretained(this)));
852 PumpLoop(); 871 PumpLoop();
853 EXPECT_EQ(ADD, last_called_callback_); 872 EXPECT_EQ(ADD, last_called_callback_);
854 EXPECT_EQ(STATUS_TRUE, last_status_); 873 EXPECT_EQ(STATUS_TRUE, last_status_);
855 874
856 ClearResults(); 875 ClearResults();
857 876
858 // Load the store. 877 // Get all pages from the store.
859 store->GetOfflinePages( 878 store->GetOfflinePages(
860 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 879 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
861 base::Unretained(this))); 880 base::Unretained(this)));
862 PumpLoop(); 881 PumpLoop();
863 882
864 EXPECT_EQ(LOAD, last_called_callback_); 883 EXPECT_EQ(LOAD, last_called_callback_);
865 EXPECT_EQ(STATUS_TRUE, last_status_);
866 EXPECT_EQ(2U, offline_pages_.size()); 884 EXPECT_EQ(2U, offline_pages_.size());
867 885
868 // Clear all records from the store. 886 // Clear all records from the store.
869 store->Reset(base::Bind(&OfflinePageMetadataStoreTest::ResetCallback, 887 store->Reset(base::Bind(&OfflinePageMetadataStoreTest::ResetCallback,
870 base::Unretained(this))); 888 base::Unretained(this)));
871 PumpLoop(); 889 PumpLoop();
872 EXPECT_EQ(RESET, last_called_callback_); 890 EXPECT_EQ(RESET, last_called_callback_);
873 EXPECT_EQ(STATUS_TRUE, last_status_); 891 EXPECT_EQ(STATUS_TRUE, last_status_);
874 892
875 // Load the store. 893 ClearResults();
894
895 // Get all pages from the store.
876 store->GetOfflinePages( 896 store->GetOfflinePages(
877 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 897 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
878 base::Unretained(this))); 898 base::Unretained(this)));
879 PumpLoop(); 899 PumpLoop();
880 900
881 EXPECT_EQ(LOAD, last_called_callback_); 901 EXPECT_EQ(LOAD, last_called_callback_);
902 ASSERT_EQ(0U, offline_pages_.size());
903 }
904
905 TEST_F(OfflinePageMetadataStoreTest, ResetStore) {
906 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore());
907
908 store->Reset(base::Bind(&OfflinePageMetadataStoreTest::ResetCallback,
909 base::Unretained(this)));
910 PumpLoop();
882 EXPECT_EQ(STATUS_TRUE, last_status_); 911 EXPECT_EQ(STATUS_TRUE, last_status_);
883 ASSERT_EQ(0U, offline_pages_.size());
884 } 912 }
885 913
886 } // namespace 914 } // namespace
887 } // namespace offline_pages 915 } // namespace offline_pages
OLDNEW
« no previous file with comments | « components/offline_pages/offline_page_metadata_store.h ('k') | components/offline_pages/offline_page_metadata_store_sql.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698