Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 // History unit tests come in two flavors: | 5 // History unit tests come in two flavors: |
| 6 // | 6 // |
| 7 // 1. The more complicated style is that the unit test creates a full history | 7 // 1. The more complicated style is that the unit test creates a full history |
| 8 // service. This spawns a background thread for the history backend, and | 8 // service. This spawns a background thread for the history backend, and |
| 9 // all communication is asynchronous. This is useful for testing more | 9 // all communication is asynchronous. This is useful for testing more |
| 10 // complicated things or end-to-end behavior. | 10 // complicated things or end-to-end behavior. |
| (...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 455 EXPECT_TRUE(statement.Step()); | 455 EXPECT_TRUE(statement.Step()); |
| 456 EXPECT_EQ(1, statement.ColumnInt(0)); | 456 EXPECT_EQ(1, statement.ColumnInt(0)); |
| 457 | 457 |
| 458 sql::Statement statement1(db.GetUniqueStatement( | 458 sql::Statement statement1(db.GetUniqueStatement( |
| 459 "Select Count(*) from downloads_url_chains")); | 459 "Select Count(*) from downloads_url_chains")); |
| 460 EXPECT_TRUE(statement1.Step()); | 460 EXPECT_TRUE(statement1.Step()); |
| 461 EXPECT_EQ(1, statement1.ColumnInt(0)); | 461 EXPECT_EQ(1, statement1.ColumnInt(0)); |
| 462 } | 462 } |
| 463 } | 463 } |
| 464 | 464 |
| 465 TEST_F(HistoryBackendDBTest, ConfirmDownloadInProgressCleanup) { | |
| 466 // Create the DB. | |
| 467 CreateBackendAndDatabase(); | |
| 468 | |
| 469 base::Time now(base::Time::Now()); | |
| 470 | |
| 471 // Put an IN_PROGRESS download in the DB. | |
| 472 AddDownload(DownloadItem::IN_PROGRESS, now); | |
| 473 | |
| 474 // Confirm that they made it into the DB unchanged. | |
| 475 DeleteBackend(); | |
| 476 { | |
| 477 sql::Connection db; | |
| 478 ASSERT_TRUE(db.Open(history_dir_.Append(chrome::kHistoryFilename))); | |
| 479 sql::Statement statement(db.GetUniqueStatement( | |
| 480 "Select Count(*) from downloads")); | |
| 481 EXPECT_TRUE(statement.Step()); | |
| 482 EXPECT_EQ(1, statement.ColumnInt(0)); | |
| 483 | |
| 484 sql::Statement statement1(db.GetUniqueStatement( | |
| 485 "Select state, interrupt_reason from downloads")); | |
| 486 EXPECT_TRUE(statement1.Step()); | |
| 487 EXPECT_EQ(DownloadDatabase::kStateInProgress, statement1.ColumnInt(0)); | |
| 488 EXPECT_EQ(content::DOWNLOAD_INTERRUPT_REASON_NONE, statement1.ColumnInt(1)); | |
| 489 EXPECT_FALSE(statement1.Step()); | |
| 490 } | |
| 491 | |
| 492 // Read in the DB through query downloads, then test that the | |
| 493 // right transformation was returned. | |
| 494 CreateBackendAndDatabase(); | |
| 495 std::vector<DownloadRow> results; | |
| 496 db_->QueryDownloads(&results); | |
| 497 ASSERT_EQ(1u, results.size()); | |
| 498 EXPECT_EQ(content::DownloadItem::INTERRUPTED, results[0].state); | |
| 499 EXPECT_EQ(content::DOWNLOAD_INTERRUPT_REASON_CRASH, | |
| 500 results[0].interrupt_reason); | |
|
benjhayden
2013/03/28 19:21:03
Do you want to also test that adding an in_progres
Randy Smith (Not in Mondays)
2013/03/28 19:40:12
I think chrome/browser/download/download_browserte
| |
| 501 | |
| 502 // Allow the update to propagate, shut down the DB, and confirm that | |
| 503 // the query updated the on disk database as well. | |
| 504 MessageLoop::current()->RunUntilIdle(); | |
| 505 DeleteBackend(); | |
| 506 { | |
| 507 sql::Connection db; | |
| 508 ASSERT_TRUE(db.Open(history_dir_.Append(chrome::kHistoryFilename))); | |
| 509 sql::Statement statement(db.GetUniqueStatement( | |
| 510 "Select Count(*) from downloads")); | |
| 511 EXPECT_TRUE(statement.Step()); | |
| 512 EXPECT_EQ(1, statement.ColumnInt(0)); | |
| 513 | |
| 514 sql::Statement statement1(db.GetUniqueStatement( | |
| 515 "Select state, interrupt_reason from downloads")); | |
| 516 EXPECT_TRUE(statement1.Step()); | |
| 517 EXPECT_EQ(DownloadDatabase::kStateInterrupted, statement1.ColumnInt(0)); | |
| 518 EXPECT_EQ(content::DOWNLOAD_INTERRUPT_REASON_CRASH, | |
| 519 statement1.ColumnInt(1)); | |
| 520 EXPECT_FALSE(statement1.Step()); | |
| 521 } | |
| 522 } | |
| 523 | |
| 465 struct InterruptReasonAssociation { | 524 struct InterruptReasonAssociation { |
| 466 std::string name; | 525 std::string name; |
| 467 int value; | 526 int value; |
| 468 }; | 527 }; |
| 469 | 528 |
| 470 // Test is dependent on interrupt reasons being listed in header file | 529 // Test is dependent on interrupt reasons being listed in header file |
| 471 // in order. | 530 // in order. |
| 472 const InterruptReasonAssociation current_reasons[] = { | 531 const InterruptReasonAssociation current_reasons[] = { |
| 473 #define INTERRUPT_REASON(a, b) { #a, b }, | 532 #define INTERRUPT_REASON(a, b) { #a, b }, |
| 474 #include "content/public/browser/download_interrupt_reason_values.h" | 533 #include "content/public/browser/download_interrupt_reason_values.h" |
| (...skipping 1102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1577 ASSERT_EQ(1u, results.size()); | 1636 ASSERT_EQ(1u, results.size()); |
| 1578 EXPECT_EQ(url, results[0]->GetURL()); | 1637 EXPECT_EQ(url, results[0]->GetURL()); |
| 1579 EXPECT_EQ(segment_id, results[0]->GetID()); | 1638 EXPECT_EQ(segment_id, results[0]->GetID()); |
| 1580 EXPECT_EQ(title, results[0]->GetTitle()); | 1639 EXPECT_EQ(title, results[0]->GetTitle()); |
| 1581 STLDeleteElements(&results); | 1640 STLDeleteElements(&results); |
| 1582 } | 1641 } |
| 1583 | 1642 |
| 1584 } // namespace | 1643 } // namespace |
| 1585 | 1644 |
| 1586 } // namespace history | 1645 } // namespace history |
| OLD | NEW |