Index: components/history/core/browser/history_backend_db_unittest.cc |
diff --git a/components/history/core/browser/history_backend_db_unittest.cc b/components/history/core/browser/history_backend_db_unittest.cc |
index 1b210b2bf7dee1f0d9393a403efe18df5536a265..939e1c874d845bf8a2a25c9067d3e74914daceec 100644 |
--- a/components/history/core/browser/history_backend_db_unittest.cc |
+++ b/components/history/core/browser/history_backend_db_unittest.cc |
@@ -765,6 +765,44 @@ TEST_F(HistoryBackendDBTest, MigrateDownloadsSlicesTable) { |
} |
} |
+// Tests that last access time and transient is automatically added when |
+// migrating to version 36. |
+TEST_F(HistoryBackendDBTest, MigrateDownloadsLastAccessTimeAndTransient) { |
+ ASSERT_NO_FATAL_FAILURE(CreateDBVersion(32)); |
+ { |
+ sql::Connection db; |
+ ASSERT_TRUE(db.Open(history_dir_.Append(kHistoryFilename))); |
+ } |
+ |
+ // Re-open the db using the HistoryDatabase, which should migrate to the |
+ // current version. |
+ CreateBackendAndDatabase(); |
+ DeleteBackend(); |
+ { |
+ // Re-open the db for manual manipulation. |
+ sql::Connection db; |
+ ASSERT_TRUE(db.Open(history_dir_.Append(kHistoryFilename))); |
+ // The version should have been updated. |
+ int cur_version = HistoryDatabase::GetCurrentVersion(); |
+ ASSERT_LE(35, cur_version); |
+ { |
+ sql::Statement s(db.GetUniqueStatement( |
+ "SELECT value FROM meta WHERE key = 'version'")); |
+ EXPECT_TRUE(s.Step()); |
+ EXPECT_EQ(cur_version, s.ColumnInt(0)); |
+ } |
+ { |
+ // The downloads table should have last_access_time and transient |
+ // initialized to zero. |
+ sql::Statement s(db.GetUniqueStatement( |
+ "SELECT last_access_time, transient from downloads")); |
+ EXPECT_TRUE(s.Step()); |
+ EXPECT_EQ(base::Time(), base::Time::FromInternalValue(s.ColumnInt64(0))); |
+ EXPECT_EQ(0, s.ColumnInt(1)); |
+ } |
+ } |
+} |
+ |
TEST_F(HistoryBackendDBTest, DownloadCreateAndQuery) { |
CreateBackendAndDatabase(); |
@@ -788,7 +826,7 @@ TEST_F(HistoryBackendDBTest, DownloadCreateAndQuery) { |
"original/mime-type", start_time, end_time, "etag1", "last_modified_1", |
100, 1000, DownloadState::INTERRUPTED, DownloadDangerType::NOT_DANGEROUS, |
kTestDownloadInterruptReasonCrash, "hash-value1", 1, |
- "FE672168-26EF-4275-A149-FEC25F6A75F9", false, last_access_time, |
+ "FE672168-26EF-4275-A149-FEC25F6A75F9", false, last_access_time, true, |
"extension-id", "extension-name", std::vector<DownloadSliceInfo>()); |
ASSERT_TRUE(db_->CreateDownload(download_A)); |
@@ -807,7 +845,7 @@ TEST_F(HistoryBackendDBTest, DownloadCreateAndQuery) { |
"original/mime-type2", start_time2, end_time2, "etag2", "last_modified_2", |
1001, 1001, DownloadState::COMPLETE, DownloadDangerType::DANGEROUS_FILE, |
kTestDownloadInterruptReasonNone, std::string(), 2, |
- "b70f3869-7d75-4878-acb4-4caf7026d12b", false, last_access_time2, |
+ "b70f3869-7d75-4878-acb4-4caf7026d12b", false, last_access_time2, true, |
"extension-id", "extension-name", std::vector<DownloadSliceInfo>()); |
ASSERT_TRUE(db_->CreateDownload(download_B)); |
@@ -848,7 +886,7 @@ TEST_F(HistoryBackendDBTest, DownloadCreateAndUpdate_VolatileFields) { |
"original/mime-type", start_time, end_time, "etag1", "last_modified_1", |
100, 1000, DownloadState::INTERRUPTED, DownloadDangerType::NOT_DANGEROUS, |
3, "some-hash-value", 1, "FE672168-26EF-4275-A149-FEC25F6A75F9", false, |
- last_access_time, "extension-id", "extension-name", |
+ last_access_time, false, "extension-id", "extension-name", |
std::vector<DownloadSliceInfo>()); |
db_->CreateDownload(download); |
@@ -865,6 +903,7 @@ TEST_F(HistoryBackendDBTest, DownloadCreateAndUpdate_VolatileFields) { |
download.total_bytes += 1; |
download.hash = "some-other-hash"; |
download.opened = !download.opened; |
+ download.transient = !download.transient; |
download.by_ext_id = "by-new-extension-id"; |
download.by_ext_name = "by-new-extension-name"; |
download.etag = "new-etag"; |
@@ -964,7 +1003,7 @@ TEST_F(HistoryBackendDBTest, DownloadNukeRecordsMissingURLs) { |
"application/octet-stream", now, now, std::string(), std::string(), 0, |
512, DownloadState::COMPLETE, DownloadDangerType::NOT_DANGEROUS, |
kTestDownloadInterruptReasonNone, std::string(), 1, |
- "05AF6C8E-E4E0-45D7-B5CE-BC99F7019918", 0, now, "by_ext_id", |
+ "05AF6C8E-E4E0-45D7-B5CE-BC99F7019918", 0, now, false, "by_ext_id", |
"by_ext_name", std::vector<DownloadSliceInfo>()); |
// Creating records without any urls should fail. |
@@ -1095,7 +1134,7 @@ TEST_F(HistoryBackendDBTest, CreateAndUpdateDownloadingSlice) { |
received, 1500, DownloadState::INTERRUPTED, |
DownloadDangerType::NOT_DANGEROUS, kTestDownloadInterruptReasonCrash, |
"hash-value1", id, "FE672168-26EF-4275-A149-FEC25F6A75F9", false, |
- last_access_time, "extension-id", "extension-name", slice_info); |
+ last_access_time, false, "extension-id", "extension-name", slice_info); |
ASSERT_TRUE(db_->CreateDownload(download)); |
std::vector<DownloadRow> results; |
db_->QueryDownloads(&results); |
@@ -1130,7 +1169,7 @@ TEST_F(HistoryBackendDBTest, UpdateDownloadWithNewSlice) { |
"original/mime-type", start_time, end_time, "etag1", "last_modified_1", 0, |
1500, DownloadState::INTERRUPTED, DownloadDangerType::NOT_DANGEROUS, |
kTestDownloadInterruptReasonCrash, "hash-value1", id, |
- "FE672168-26EF-4275-A149-FEC25F6A75F9", false, last_access_time, |
+ "FE672168-26EF-4275-A149-FEC25F6A75F9", false, last_access_time, true, |
"extension-id", "extension-name", std::vector<DownloadSliceInfo>()); |
ASSERT_TRUE(db_->CreateDownload(download)); |
@@ -1171,7 +1210,7 @@ TEST_F(HistoryBackendDBTest, DownloadSliceDeletedIfEmpty) { |
received, 1500, DownloadState::INTERRUPTED, |
DownloadDangerType::NOT_DANGEROUS, kTestDownloadInterruptReasonCrash, |
"hash-value1", id, "FE672168-26EF-4275-A149-FEC25F6A75F9", false, |
- last_access_time, "extension-id", "extension-name", slice_info); |
+ last_access_time, true, "extension-id", "extension-name", slice_info); |
ASSERT_TRUE(db_->CreateDownload(download)); |
std::vector<DownloadRow> results; |
db_->QueryDownloads(&results); |