| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |