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

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: Addressing STORE_INIT_FAILED 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 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 PumpLoop(); 223 PumpLoop();
224 } 224 }
225 225
226 std::unique_ptr<OfflinePageMetadataStore> BuildStore(); 226 std::unique_ptr<OfflinePageMetadataStore> BuildStore();
227 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM52(); 227 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM52();
228 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM53(); 228 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM53();
229 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM54(); 229 std::unique_ptr<OfflinePageMetadataStore> BuildStoreWithSchemaFromM54();
230 230
231 void PumpLoop(); 231 void PumpLoop();
232 232
233 void InitializeCallback(StoreState state);
233 void GetOfflinePagesCallback( 234 void GetOfflinePagesCallback(
234 OfflinePageMetadataStore::LoadStatus load_status,
235 const std::vector<OfflinePageItem>& offline_pages); 235 const std::vector<OfflinePageItem>& offline_pages);
236 void AddCallback(ItemActionStatus status); 236 void AddCallback(ItemActionStatus status);
237 void UpdateCallback(CalledCallback called_callback, 237 void UpdateCallback(CalledCallback called_callback,
238 std::unique_ptr<OfflinePagesUpdateResult> result); 238 std::unique_ptr<OfflinePagesUpdateResult> result);
239 void ResetCallback(bool status); 239 void ResetCallback(StoreState state);
240 240
241 void ClearResults(); 241 void ClearResults();
242 242
243 OfflinePageItem CheckThatStoreHasOneItem(); 243 OfflinePageItem CheckThatStoreHasOneItem();
244 void CheckThatOfflinePageCanBeSaved( 244 void CheckThatOfflinePageCanBeSaved(
245 std::unique_ptr<OfflinePageMetadataStore> store); 245 std::unique_ptr<OfflinePageMetadataStore> store);
246 246
247 OfflinePagesUpdateResult* last_update_result() { 247 OfflinePagesUpdateResult* last_update_result() {
248 return last_update_result_.get(); 248 return last_update_result_.get();
249 } 249 }
(...skipping 17 matching lines...) Expand all
267 task_runner_handle_(task_runner_) { 267 task_runner_handle_(task_runner_) {
268 EXPECT_TRUE(temp_directory_.CreateUniqueTempDir()); 268 EXPECT_TRUE(temp_directory_.CreateUniqueTempDir());
269 } 269 }
270 270
271 OfflinePageMetadataStoreTest::~OfflinePageMetadataStoreTest() {} 271 OfflinePageMetadataStoreTest::~OfflinePageMetadataStoreTest() {}
272 272
273 void OfflinePageMetadataStoreTest::PumpLoop() { 273 void OfflinePageMetadataStoreTest::PumpLoop() {
274 task_runner_->RunUntilIdle(); 274 task_runner_->RunUntilIdle();
275 } 275 }
276 276
277 void OfflinePageMetadataStoreTest::InitializeCallback(StoreState state) {
278 last_status_ = state == StoreState::LOADED ? STATUS_TRUE : STATUS_FALSE;
279 }
280
277 void OfflinePageMetadataStoreTest::GetOfflinePagesCallback( 281 void OfflinePageMetadataStoreTest::GetOfflinePagesCallback(
278 OfflinePageMetadataStore::LoadStatus load_status,
279 const std::vector<OfflinePageItem>& offline_pages) { 282 const std::vector<OfflinePageItem>& offline_pages) {
280 last_called_callback_ = LOAD; 283 last_called_callback_ = LOAD;
281 last_status_ = load_status == OfflinePageMetadataStore::LOAD_SUCCEEDED ?
282 STATUS_TRUE : STATUS_FALSE;
283 offline_pages_.swap(const_cast<std::vector<OfflinePageItem>&>(offline_pages)); 284 offline_pages_.swap(const_cast<std::vector<OfflinePageItem>&>(offline_pages));
284 } 285 }
285 286
286 void OfflinePageMetadataStoreTest::AddCallback(ItemActionStatus status) { 287 void OfflinePageMetadataStoreTest::AddCallback(ItemActionStatus status) {
287 last_called_callback_ = ADD; 288 last_called_callback_ = ADD;
288 // TODO(fgorski): Add specific add status. 289 // TODO(fgorski): Add specific add status.
289 // last_item_status_ = status; 290 // last_item_status_ = status;
290 last_status_ = 291 last_status_ =
291 status == ItemActionStatus::SUCCESS ? STATUS_TRUE : STATUS_FALSE; 292 status == ItemActionStatus::SUCCESS ? STATUS_TRUE : STATUS_FALSE;
292 } 293 }
293 294
294 void OfflinePageMetadataStoreTest::UpdateCallback( 295 void OfflinePageMetadataStoreTest::UpdateCallback(
295 CalledCallback called_callback, 296 CalledCallback called_callback,
296 std::unique_ptr<OfflinePagesUpdateResult> result) { 297 std::unique_ptr<OfflinePagesUpdateResult> result) {
297 last_called_callback_ = called_callback; 298 last_called_callback_ = called_callback;
298 last_status_ = result->updated_items.size() > 0 ? STATUS_TRUE : STATUS_FALSE; 299 last_status_ = result->updated_items.size() > 0 ? STATUS_TRUE : STATUS_FALSE;
299 last_update_result_ = std::move(result); 300 last_update_result_ = std::move(result);
300 } 301 }
301 302
302 void OfflinePageMetadataStoreTest::ResetCallback(bool status) { 303 void OfflinePageMetadataStoreTest::ResetCallback(StoreState state) {
303 last_called_callback_ = RESET; 304 last_called_callback_ = RESET;
304 last_status_ = status ? STATUS_TRUE : STATUS_FALSE; 305 last_status_ = state == StoreState::LOADED ? STATUS_TRUE : STATUS_FALSE;
305 } 306 }
306 307
307 void OfflinePageMetadataStoreTest::ClearResults() { 308 void OfflinePageMetadataStoreTest::ClearResults() {
308 last_called_callback_ = NONE; 309 last_called_callback_ = NONE;
309 last_status_ = STATUS_NONE; 310 last_status_ = STATUS_NONE;
310 offline_pages_.clear(); 311 offline_pages_.clear();
311 last_update_result_.reset(nullptr); 312 last_update_result_.reset(nullptr);
312 } 313 }
313 314
314 OfflinePageItem OfflinePageMetadataStoreTest::CheckThatStoreHasOneItem() { 315 OfflinePageItem OfflinePageMetadataStoreTest::CheckThatStoreHasOneItem() {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
349 std::swap(offline_pages_[0], offline_pages_[1]); 350 std::swap(offline_pages_[0], offline_pages_[1]);
350 } 351 }
351 EXPECT_EQ(offline_page, offline_pages_[0]); 352 EXPECT_EQ(offline_page, offline_pages_[0]);
352 } 353 }
353 354
354 std::unique_ptr<OfflinePageMetadataStore> 355 std::unique_ptr<OfflinePageMetadataStore>
355 OfflinePageMetadataStoreTest::BuildStore() { 356 OfflinePageMetadataStoreTest::BuildStore() {
356 std::unique_ptr<OfflinePageMetadataStore> store( 357 std::unique_ptr<OfflinePageMetadataStore> store(
357 factory_.BuildStore(temp_directory_.GetPath())); 358 factory_.BuildStore(temp_directory_.GetPath()));
358 PumpLoop(); 359 PumpLoop();
360 store->Initialize(
361 base::Bind(&OfflinePageMetadataStoreTest::InitializeCallback,
362 base::Unretained(this)));
363 PumpLoop();
359 store->GetOfflinePages( 364 store->GetOfflinePages(
360 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 365 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
361 base::Unretained(this))); 366 base::Unretained(this)));
362 PumpLoop(); 367 PumpLoop();
363 return store; 368 return store;
364 } 369 }
365 370
366 std::unique_ptr<OfflinePageMetadataStore> 371 std::unique_ptr<OfflinePageMetadataStore>
367 OfflinePageMetadataStoreTest::BuildStoreWithSchemaFromM52() { 372 OfflinePageMetadataStoreTest::BuildStoreWithSchemaFromM52() {
368 std::unique_ptr<OfflinePageMetadataStore> store( 373 std::unique_ptr<OfflinePageMetadataStore> store(
369 factory_.BuildStoreM52(temp_directory_.GetPath())); 374 factory_.BuildStoreM52(temp_directory_.GetPath()));
370 PumpLoop(); 375 PumpLoop();
376 store->Initialize(
377 base::Bind(&OfflinePageMetadataStoreTest::InitializeCallback,
378 base::Unretained(this)));
379 PumpLoop();
371 store->GetOfflinePages( 380 store->GetOfflinePages(
372 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 381 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
373 base::Unretained(this))); 382 base::Unretained(this)));
374 PumpLoop(); 383 PumpLoop();
375 return store; 384 return store;
376 } 385 }
377 386
378 std::unique_ptr<OfflinePageMetadataStore> 387 std::unique_ptr<OfflinePageMetadataStore>
379 OfflinePageMetadataStoreTest::BuildStoreWithSchemaFromM53() { 388 OfflinePageMetadataStoreTest::BuildStoreWithSchemaFromM53() {
380 std::unique_ptr<OfflinePageMetadataStore> store( 389 std::unique_ptr<OfflinePageMetadataStore> store(
381 factory_.BuildStoreM53(temp_directory_.GetPath())); 390 factory_.BuildStoreM53(temp_directory_.GetPath()));
382 PumpLoop(); 391 PumpLoop();
392 store->Initialize(
393 base::Bind(&OfflinePageMetadataStoreTest::InitializeCallback,
394 base::Unretained(this)));
395 PumpLoop();
383 store->GetOfflinePages( 396 store->GetOfflinePages(
384 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 397 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
385 base::Unretained(this))); 398 base::Unretained(this)));
386 PumpLoop(); 399 PumpLoop();
387 return store; 400 return store;
388 } 401 }
389 402
390 std::unique_ptr<OfflinePageMetadataStore> 403 std::unique_ptr<OfflinePageMetadataStore>
391 OfflinePageMetadataStoreTest::BuildStoreWithSchemaFromM54() { 404 OfflinePageMetadataStoreTest::BuildStoreWithSchemaFromM54() {
392 std::unique_ptr<OfflinePageMetadataStore> store( 405 std::unique_ptr<OfflinePageMetadataStore> store(
393 factory_.BuildStoreM53(temp_directory_.GetPath())); 406 factory_.BuildStoreM53(temp_directory_.GetPath()));
394 PumpLoop(); 407 PumpLoop();
408 store->Initialize(
409 base::Bind(&OfflinePageMetadataStoreTest::InitializeCallback,
410 base::Unretained(this)));
411 PumpLoop();
395 store->GetOfflinePages( 412 store->GetOfflinePages(
396 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 413 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
397 base::Unretained(this))); 414 base::Unretained(this)));
398 PumpLoop(); 415 PumpLoop();
399 return store; 416 return store;
400 } 417 }
401 418
402 // Loads empty store and makes sure that there are no offline pages stored in 419 // Loads empty store and makes sure that there are no offline pages stored in
403 // it. 420 // it.
404 TEST_F(OfflinePageMetadataStoreTest, LoadEmptyStore) { 421 TEST_F(OfflinePageMetadataStoreTest, LoadEmptyStore) {
405 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore()); 422 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore());
406 EXPECT_EQ(LOAD, last_called_callback_); 423 EXPECT_EQ(LOAD, last_called_callback_);
407 EXPECT_EQ(STATUS_TRUE, last_status_); 424 EXPECT_EQ(STATUS_TRUE, last_status_);
408 EXPECT_EQ(0U, offline_pages_.size()); 425 EXPECT_EQ(0U, offline_pages_.size());
409 } 426 }
410 427
411 TEST_F(OfflinePageMetadataStoreTest, GetOfflinePagesFromInvalidStore) { 428 TEST_F(OfflinePageMetadataStoreTest, GetOfflinePagesFromInvalidStore) {
412 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore()); 429 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore());
413 OfflinePageMetadataStoreSQL* sql_store = 430 OfflinePageMetadataStoreSQL* sql_store =
414 static_cast<OfflinePageMetadataStoreSQL*>(store.get()); 431 static_cast<OfflinePageMetadataStoreSQL*>(store.get());
415 432
416 sql_store->SetStateForTesting(StoreState::NOT_LOADED, false); 433 sql_store->SetStateForTesting(StoreState::NOT_LOADED, false);
417 store->GetOfflinePages( 434 store->GetOfflinePages(
418 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 435 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
419 base::Unretained(this))); 436 base::Unretained(this)));
420 PumpLoop(); 437 PumpLoop();
421 EXPECT_EQ(LOAD, last_called_callback_); 438 EXPECT_EQ(LOAD, last_called_callback_);
422 EXPECT_EQ(0UL, offline_pages_.size()); 439 EXPECT_EQ(0UL, offline_pages_.size());
423 EXPECT_EQ(STATUS_FALSE, last_status_); 440 EXPECT_EQ(StoreState::NOT_LOADED, store->state());
424 441
442 ClearResults();
425 sql_store->SetStateForTesting(StoreState::FAILED_LOADING, false); 443 sql_store->SetStateForTesting(StoreState::FAILED_LOADING, false);
426 store->GetOfflinePages( 444 store->GetOfflinePages(
427 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 445 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
428 base::Unretained(this))); 446 base::Unretained(this)));
429 PumpLoop(); 447 PumpLoop();
430 EXPECT_EQ(LOAD, last_called_callback_); 448 EXPECT_EQ(LOAD, last_called_callback_);
431 EXPECT_EQ(0UL, offline_pages_.size()); 449 EXPECT_EQ(0UL, offline_pages_.size());
432 EXPECT_EQ(STATUS_FALSE, last_status_); 450 EXPECT_EQ(StoreState::FAILED_LOADING, store->state());
433 451
452 ClearResults();
434 sql_store->SetStateForTesting(StoreState::FAILED_RESET, false); 453 sql_store->SetStateForTesting(StoreState::FAILED_RESET, false);
435 store->GetOfflinePages( 454 store->GetOfflinePages(
436 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 455 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
437 base::Unretained(this))); 456 base::Unretained(this)));
438 PumpLoop(); 457 PumpLoop();
439 EXPECT_EQ(LOAD, last_called_callback_); 458 EXPECT_EQ(LOAD, last_called_callback_);
440 EXPECT_EQ(0UL, offline_pages_.size()); 459 EXPECT_EQ(0UL, offline_pages_.size());
441 EXPECT_EQ(STATUS_FALSE, last_status_); 460 EXPECT_EQ(StoreState::FAILED_RESET, store->state());
442 461
462 ClearResults();
443 sql_store->SetStateForTesting(StoreState::LOADED, true); 463 sql_store->SetStateForTesting(StoreState::LOADED, true);
444 store->GetOfflinePages( 464 store->GetOfflinePages(
445 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 465 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
446 base::Unretained(this))); 466 base::Unretained(this)));
447 PumpLoop(); 467 PumpLoop();
448 EXPECT_EQ(LOAD, last_called_callback_); 468 EXPECT_EQ(LOAD, last_called_callback_);
449 EXPECT_EQ(0UL, offline_pages_.size()); 469 EXPECT_EQ(0UL, offline_pages_.size());
450 EXPECT_EQ(STATUS_FALSE, last_status_);
451 470
471 ClearResults();
452 sql_store->SetStateForTesting(StoreState::NOT_LOADED, true); 472 sql_store->SetStateForTesting(StoreState::NOT_LOADED, true);
453 store->GetOfflinePages( 473 store->GetOfflinePages(
454 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 474 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
455 base::Unretained(this))); 475 base::Unretained(this)));
456 PumpLoop(); 476 PumpLoop();
457 EXPECT_EQ(LOAD, last_called_callback_); 477 EXPECT_EQ(LOAD, last_called_callback_);
458 EXPECT_EQ(0UL, offline_pages_.size()); 478 EXPECT_EQ(0UL, offline_pages_.size());
459 EXPECT_EQ(STATUS_FALSE, last_status_);
460 479
480 ClearResults();
461 sql_store->SetStateForTesting(StoreState::FAILED_LOADING, false); 481 sql_store->SetStateForTesting(StoreState::FAILED_LOADING, false);
462 store->GetOfflinePages( 482 store->GetOfflinePages(
463 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 483 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
464 base::Unretained(this))); 484 base::Unretained(this)));
465 PumpLoop(); 485 PumpLoop();
466 EXPECT_EQ(LOAD, last_called_callback_); 486 EXPECT_EQ(LOAD, last_called_callback_);
467 EXPECT_EQ(0UL, offline_pages_.size()); 487 EXPECT_EQ(0UL, offline_pages_.size());
468 EXPECT_EQ(STATUS_FALSE, last_status_);
469 488
489 ClearResults();
470 sql_store->SetStateForTesting(StoreState::FAILED_RESET, false); 490 sql_store->SetStateForTesting(StoreState::FAILED_RESET, false);
471 store->GetOfflinePages( 491 store->GetOfflinePages(
472 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 492 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
473 base::Unretained(this))); 493 base::Unretained(this)));
474 PumpLoop(); 494 PumpLoop();
475 EXPECT_EQ(LOAD, last_called_callback_); 495 EXPECT_EQ(LOAD, last_called_callback_);
476 EXPECT_EQ(0UL, offline_pages_.size()); 496 EXPECT_EQ(0UL, offline_pages_.size());
477 EXPECT_EQ(STATUS_FALSE, last_status_);
478
479 } 497 }
480 498
481 // Loads a store which has an outdated schema. 499 // Loads a store which has an outdated schema.
482 // This test case would crash if it's not handling correctly when we're loading 500 // This test case would crash if it's not handling correctly when we're loading
483 // old version stores. 501 // old version stores.
484 // TODO(romax): Move this to sql_unittest. 502 // TODO(romax): Move this to sql_unittest.
485 TEST_F(OfflinePageMetadataStoreTest, LoadVersion52Store) { 503 TEST_F(OfflinePageMetadataStoreTest, LoadVersion52Store) {
486 std::unique_ptr<OfflinePageMetadataStore> store( 504 std::unique_ptr<OfflinePageMetadataStore> store(
487 BuildStoreWithSchemaFromM52()); 505 BuildStoreWithSchemaFromM52());
488 506
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 base::FilePath(kFilePath), kFileSize); 578 base::FilePath(kFilePath), kFileSize);
561 store->AddOfflinePage(offline_page, 579 store->AddOfflinePage(offline_page,
562 base::Bind(&OfflinePageMetadataStoreTest::AddCallback, 580 base::Bind(&OfflinePageMetadataStoreTest::AddCallback,
563 base::Unretained(this))); 581 base::Unretained(this)));
564 PumpLoop(); 582 PumpLoop();
565 EXPECT_EQ(ADD, last_called_callback_); 583 EXPECT_EQ(ADD, last_called_callback_);
566 EXPECT_EQ(STATUS_TRUE, last_status_); 584 EXPECT_EQ(STATUS_TRUE, last_status_);
567 585
568 ClearResults(); 586 ClearResults();
569 587
570 // Load the store. 588 // Get all pages from the store.
571 store->GetOfflinePages( 589 store->GetOfflinePages(
572 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 590 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
573 base::Unretained(this))); 591 base::Unretained(this)));
574 PumpLoop(); 592 PumpLoop();
575 EXPECT_EQ(LOAD, last_called_callback_); 593 EXPECT_EQ(LOAD, last_called_callback_);
576 EXPECT_EQ(1U, offline_pages_.size()); 594 EXPECT_EQ(1U, offline_pages_.size());
577 595
578 // Remove the offline page. 596 // Remove the offline page.
579 std::vector<int64_t> ids_to_remove; 597 std::vector<int64_t> ids_to_remove;
580 ids_to_remove.push_back(offline_page.offline_id); 598 ids_to_remove.push_back(offline_page.offline_id);
581 store->RemoveOfflinePages( 599 store->RemoveOfflinePages(
582 ids_to_remove, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, 600 ids_to_remove, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback,
583 base::Unretained(this), REMOVE)); 601 base::Unretained(this), REMOVE));
584 PumpLoop(); 602 PumpLoop();
585 EXPECT_EQ(REMOVE, last_called_callback_); 603 EXPECT_EQ(REMOVE, last_called_callback_);
586 EXPECT_EQ(STATUS_TRUE, last_status_); 604 EXPECT_EQ(STATUS_TRUE, last_status_);
587 ASSERT_TRUE(last_update_result() != nullptr); 605 ASSERT_TRUE(last_update_result() != nullptr);
588 EXPECT_EQ(1UL, last_update_result()->item_statuses.size()); 606 EXPECT_EQ(1UL, last_update_result()->item_statuses.size());
589 EXPECT_EQ(ItemActionStatus::SUCCESS, 607 EXPECT_EQ(ItemActionStatus::SUCCESS,
590 last_update_result()->item_statuses.begin()->second); 608 last_update_result()->item_statuses.begin()->second);
591 EXPECT_EQ(1UL, last_update_result()->updated_items.size()); 609 EXPECT_EQ(1UL, last_update_result()->updated_items.size());
592 EXPECT_EQ(offline_page, *(last_update_result()->updated_items.begin())); 610 EXPECT_EQ(offline_page, *(last_update_result()->updated_items.begin()));
593 611
594 ClearResults(); 612 ClearResults();
595 613
596 // Load the store. 614 // Get all pages from the store.
597 store->GetOfflinePages( 615 store->GetOfflinePages(
598 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 616 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
599 base::Unretained(this))); 617 base::Unretained(this)));
600 PumpLoop(); 618 PumpLoop();
601 EXPECT_EQ(LOAD, last_called_callback_); 619 EXPECT_EQ(LOAD, last_called_callback_);
602 EXPECT_EQ(0U, offline_pages_.size()); 620 EXPECT_EQ(0U, offline_pages_.size());
603 621
604 ClearResults(); 622 ClearResults();
605 623
606 // Close and reload the store. 624 // Close and reload the store.
(...skipping 29 matching lines...) Expand all
636 // Add anther offline page. 654 // Add anther offline page.
637 store->AddOfflinePage(offline_page_2, 655 store->AddOfflinePage(offline_page_2,
638 base::Bind(&OfflinePageMetadataStoreTest::AddCallback, 656 base::Bind(&OfflinePageMetadataStoreTest::AddCallback,
639 base::Unretained(this))); 657 base::Unretained(this)));
640 PumpLoop(); 658 PumpLoop();
641 EXPECT_EQ(ADD, last_called_callback_); 659 EXPECT_EQ(ADD, last_called_callback_);
642 EXPECT_EQ(STATUS_TRUE, last_status_); 660 EXPECT_EQ(STATUS_TRUE, last_status_);
643 661
644 ClearResults(); 662 ClearResults();
645 663
646 // Load the store. 664 // Get all pages from the store.
647 store->GetOfflinePages( 665 store->GetOfflinePages(
648 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 666 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
649 base::Unretained(this))); 667 base::Unretained(this)));
650 PumpLoop(); 668 PumpLoop();
651 669
652 EXPECT_EQ(LOAD, last_called_callback_); 670 EXPECT_EQ(LOAD, last_called_callback_);
653 EXPECT_EQ(STATUS_TRUE, last_status_);
654 EXPECT_EQ(2U, offline_pages_.size()); 671 EXPECT_EQ(2U, offline_pages_.size());
655 672
656 // Remove the offline page. 673 // Remove the offline page.
657 std::vector<int64_t> ids_to_remove; 674 std::vector<int64_t> ids_to_remove;
658 ids_to_remove.push_back(offline_page_1.offline_id); 675 ids_to_remove.push_back(offline_page_1.offline_id);
659 store->RemoveOfflinePages( 676 store->RemoveOfflinePages(
660 ids_to_remove, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, 677 ids_to_remove, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback,
661 base::Unretained(this), REMOVE)); 678 base::Unretained(this), REMOVE));
662 PumpLoop(); 679 PumpLoop();
663 EXPECT_EQ(REMOVE, last_called_callback_); 680 EXPECT_EQ(REMOVE, last_called_callback_);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
708 EXPECT_EQ(ADD, last_called_callback_); 725 EXPECT_EQ(ADD, last_called_callback_);
709 EXPECT_EQ(STATUS_TRUE, last_status_); 726 EXPECT_EQ(STATUS_TRUE, last_status_);
710 727
711 ClearResults(); 728 ClearResults();
712 store->GetOfflinePages( 729 store->GetOfflinePages(
713 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 730 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
714 base::Unretained(this))); 731 base::Unretained(this)));
715 PumpLoop(); 732 PumpLoop();
716 733
717 EXPECT_EQ(LOAD, last_called_callback_); 734 EXPECT_EQ(LOAD, last_called_callback_);
718 EXPECT_EQ(STATUS_TRUE, last_status_);
719 ASSERT_EQ(1U, offline_pages_.size()); 735 ASSERT_EQ(1U, offline_pages_.size());
720 EXPECT_EQ(offline_page, offline_pages_[0]); 736 EXPECT_EQ(offline_page, offline_pages_[0]);
721 737
722 // Then update some data. 738 // Then update some data.
723 offline_page.file_size = kFileSize + 1; 739 offline_page.file_size = kFileSize + 1;
724 offline_page.access_count++; 740 offline_page.access_count++;
725 offline_page.expiration_time = base::Time::Now(); 741 offline_page.expiration_time = base::Time::Now();
726 std::vector<OfflinePageItem> items_to_update; 742 std::vector<OfflinePageItem> items_to_update;
727 items_to_update.push_back(offline_page); 743 items_to_update.push_back(offline_page);
728 store->UpdateOfflinePages( 744 store->UpdateOfflinePages(
729 items_to_update, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback, 745 items_to_update, base::Bind(&OfflinePageMetadataStoreTest::UpdateCallback,
730 base::Unretained(this), UPDATE)); 746 base::Unretained(this), UPDATE));
731 PumpLoop(); 747 PumpLoop();
732 EXPECT_EQ(UPDATE, last_called_callback_); 748 EXPECT_EQ(UPDATE, last_called_callback_);
733 EXPECT_EQ(STATUS_TRUE, last_status_); 749 EXPECT_EQ(STATUS_TRUE, last_status_);
734 ASSERT_TRUE(last_update_result() != nullptr); 750 ASSERT_TRUE(last_update_result() != nullptr);
735 EXPECT_EQ(1UL, last_update_result()->item_statuses.size()); 751 EXPECT_EQ(1UL, last_update_result()->item_statuses.size());
736 EXPECT_EQ(ItemActionStatus::SUCCESS, 752 EXPECT_EQ(ItemActionStatus::SUCCESS,
737 last_update_result()->item_statuses.begin()->second); 753 last_update_result()->item_statuses.begin()->second);
738 EXPECT_EQ(1UL, last_update_result()->updated_items.size()); 754 EXPECT_EQ(1UL, last_update_result()->updated_items.size());
739 EXPECT_EQ(offline_page, *(last_update_result()->updated_items.begin())); 755 EXPECT_EQ(offline_page, *(last_update_result()->updated_items.begin()));
740 756
741 ClearResults(); 757 ClearResults();
742 store->GetOfflinePages( 758 store->GetOfflinePages(
743 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 759 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
744 base::Unretained(this))); 760 base::Unretained(this)));
745 PumpLoop(); 761 PumpLoop();
746 762
747 EXPECT_EQ(LOAD, last_called_callback_); 763 EXPECT_EQ(LOAD, last_called_callback_);
748 EXPECT_EQ(STATUS_TRUE, last_status_);
749 ASSERT_EQ(1U, offline_pages_.size()); 764 ASSERT_EQ(1U, offline_pages_.size());
750 EXPECT_EQ(offline_page, offline_pages_[0]); 765 EXPECT_EQ(offline_page, offline_pages_[0]);
751 } 766 }
752 767
753 TEST_F(OfflinePageMetadataStoreTest, ClearAllOfflinePages) { 768 TEST_F(OfflinePageMetadataStoreTest, ClearAllOfflinePages) {
754 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore()); 769 std::unique_ptr<OfflinePageMetadataStore> store(BuildStore());
755 770
756 // Add 2 offline pages. 771 // Add 2 offline pages.
757 OfflinePageItem offline_page(GURL(kTestURL), 1234LL, kTestClientId1, 772 OfflinePageItem offline_page(GURL(kTestURL), 1234LL, kTestClientId1,
758 base::FilePath(kFilePath), kFileSize); 773 base::FilePath(kFilePath), kFileSize);
(...skipping 10 matching lines...) Expand all
769 base::FilePath(kFilePath), kFileSize); 784 base::FilePath(kFilePath), kFileSize);
770 store->AddOfflinePage(offline_page2, 785 store->AddOfflinePage(offline_page2,
771 base::Bind(&OfflinePageMetadataStoreTest::AddCallback, 786 base::Bind(&OfflinePageMetadataStoreTest::AddCallback,
772 base::Unretained(this))); 787 base::Unretained(this)));
773 PumpLoop(); 788 PumpLoop();
774 EXPECT_EQ(ADD, last_called_callback_); 789 EXPECT_EQ(ADD, last_called_callback_);
775 EXPECT_EQ(STATUS_TRUE, last_status_); 790 EXPECT_EQ(STATUS_TRUE, last_status_);
776 791
777 ClearResults(); 792 ClearResults();
778 793
779 // Load the store. 794 // Get all pages from the store.
780 store->GetOfflinePages( 795 store->GetOfflinePages(
781 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 796 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
782 base::Unretained(this))); 797 base::Unretained(this)));
783 PumpLoop(); 798 PumpLoop();
784 799
785 EXPECT_EQ(LOAD, last_called_callback_); 800 EXPECT_EQ(LOAD, last_called_callback_);
786 EXPECT_EQ(STATUS_TRUE, last_status_);
787 EXPECT_EQ(2U, offline_pages_.size()); 801 EXPECT_EQ(2U, offline_pages_.size());
788 802
789 // Clear all records from the store. 803 // Clear all records from the store.
790 store->Reset(base::Bind(&OfflinePageMetadataStoreTest::ResetCallback, 804 store->Reset(base::Bind(&OfflinePageMetadataStoreTest::ResetCallback,
791 base::Unretained(this))); 805 base::Unretained(this)));
792 PumpLoop(); 806 PumpLoop();
793 EXPECT_EQ(RESET, last_called_callback_); 807 EXPECT_EQ(RESET, last_called_callback_);
794 EXPECT_EQ(STATUS_TRUE, last_status_); 808 EXPECT_EQ(STATUS_TRUE, last_status_);
795 809
796 // Load the store. 810 ClearResults();
811
812 // Get all pages from the store.
797 store->GetOfflinePages( 813 store->GetOfflinePages(
798 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback, 814 base::Bind(&OfflinePageMetadataStoreTest::GetOfflinePagesCallback,
799 base::Unretained(this))); 815 base::Unretained(this)));
800 PumpLoop(); 816 PumpLoop();
801 817
802 EXPECT_EQ(LOAD, last_called_callback_); 818 EXPECT_EQ(LOAD, last_called_callback_);
803 EXPECT_EQ(STATUS_TRUE, last_status_);
804 ASSERT_EQ(0U, offline_pages_.size()); 819 ASSERT_EQ(0U, offline_pages_.size());
805 } 820 }
806 821
807 } // namespace 822 } // namespace
808 } // namespace offline_pages 823 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698