| 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 #include "chrome/browser/history/android/android_provider_backend.h" | 5 #include "chrome/browser/history/android/android_provider_backend.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/file_path.h" | 9 #include "base/file_path.h" |
| 10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 GURL url2("http://www.example.com"); | 220 GURL url2("http://www.example.com"); |
| 221 URLID url_id2 = 0; | 221 URLID url_id2 = 0; |
| 222 std::vector<VisitInfo> visits2; | 222 std::vector<VisitInfo> visits2; |
| 223 Time last_visited2 = Time::Now(); | 223 Time last_visited2 = Time::Now(); |
| 224 Time created2 = last_visited2 - TimeDelta::FromDays(10); | 224 Time created2 = last_visited2 - TimeDelta::FromDays(10); |
| 225 visits2.push_back(VisitInfo(created2, content::PAGE_TRANSITION_LINK)); | 225 visits2.push_back(VisitInfo(created2, content::PAGE_TRANSITION_LINK)); |
| 226 visits2.push_back(VisitInfo(last_visited2 - TimeDelta::FromDays(5), | 226 visits2.push_back(VisitInfo(last_visited2 - TimeDelta::FromDays(5), |
| 227 content::PAGE_TRANSITION_LINK)); | 227 content::PAGE_TRANSITION_LINK)); |
| 228 visits2.push_back(VisitInfo(last_visited2, content::PAGE_TRANSITION_LINK)); | 228 visits2.push_back(VisitInfo(last_visited2, content::PAGE_TRANSITION_LINK)); |
| 229 | 229 |
| 230 // Add a bookmark which is not in the history. |
| 231 GURL url3("http://www.bookmark.com"); |
| 232 string16 title3(UTF8ToUTF16("bookmark")); |
| 233 ASSERT_TRUE(bookmark_model_->AddURL(bookmark_model_->bookmark_bar_node(), 0, |
| 234 title3, url3)); |
| 230 // Only use the HistoryBackend to generate the test data. | 235 // Only use the HistoryBackend to generate the test data. |
| 231 // HistoryBackend will shutdown after that. | 236 // HistoryBackend will shutdown after that. |
| 232 { | 237 { |
| 233 scoped_refptr<HistoryBackend> history_backend; | 238 scoped_refptr<HistoryBackend> history_backend; |
| 234 history_backend = new HistoryBackend(temp_dir_.path(), 0, | 239 history_backend = new HistoryBackend(temp_dir_.path(), 0, |
| 235 new AndroidProviderBackendDelegate(), bookmark_model_); | 240 new AndroidProviderBackendDelegate(), bookmark_model_); |
| 236 history_backend->Init(std::string(), false); | 241 history_backend->Init(std::string(), false); |
| 237 history_backend->AddVisits(url1, visits1, history::SOURCE_SYNCED); | 242 history_backend->AddVisits(url1, visits1, history::SOURCE_SYNCED); |
| 238 history_backend->AddVisits(url2, visits2, history::SOURCE_SYNCED); | 243 history_backend->AddVisits(url2, visits2, history::SOURCE_SYNCED); |
| 239 URLRow url_row; | 244 URLRow url_row; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 262 ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, NULL, | 267 ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, NULL, |
| 263 &history_db_)); | 268 &history_db_)); |
| 264 // Set url1 as bookmark. | 269 // Set url1 as bookmark. |
| 265 AddBookmark(url1); | 270 AddBookmark(url1); |
| 266 scoped_ptr<AndroidProviderBackend> backend( | 271 scoped_ptr<AndroidProviderBackend> backend( |
| 267 new AndroidProviderBackend(android_cache_db_name_, &history_db_, | 272 new AndroidProviderBackend(android_cache_db_name_, &history_db_, |
| 268 &thumbnail_db_, bookmark_model_, &delegate_)); | 273 &thumbnail_db_, bookmark_model_, &delegate_)); |
| 269 | 274 |
| 270 ASSERT_TRUE(backend->EnsureInitializedAndUpdated()); | 275 ASSERT_TRUE(backend->EnsureInitializedAndUpdated()); |
| 271 | 276 |
| 277 // First verify that the bookmark which was not in the history has been added |
| 278 // to history database. |
| 279 URLRow url_row; |
| 280 ASSERT_TRUE(history_db_.GetRowForURL(url3, &url_row)); |
| 281 URLID url_id3 = url_row.id(); |
| 282 ASSERT_EQ(url3, url_row.url()); |
| 283 ASSERT_EQ(title3, url_row.title()); |
| 284 |
| 272 std::vector<AndroidURLRow> android_url_rows; | 285 std::vector<AndroidURLRow> android_url_rows; |
| 273 ASSERT_TRUE(GetAndroidURLsRows(&android_url_rows, backend.get())); | 286 ASSERT_TRUE(GetAndroidURLsRows(&android_url_rows, backend.get())); |
| 274 ASSERT_EQ(2u, android_url_rows.size()); | 287 ASSERT_EQ(3u, android_url_rows.size()); |
| 275 std::vector<AndroidURLRow>::iterator i = android_url_rows.begin(); | 288 std::vector<AndroidURLRow>::iterator i = android_url_rows.begin(); |
| 276 EXPECT_EQ(url_id1, i->url_id); | 289 EXPECT_EQ(url_id1, i->url_id); |
| 277 EXPECT_EQ(url1.spec(), i->raw_url); | 290 EXPECT_EQ(url1.spec(), i->raw_url); |
| 278 i++; | 291 i++; |
| 279 EXPECT_EQ(url_id2, i->url_id); | 292 EXPECT_EQ(url_id2, i->url_id); |
| 280 EXPECT_EQ(url2.spec(), i->raw_url); | 293 EXPECT_EQ(url2.spec(), i->raw_url); |
| 294 i++; |
| 295 EXPECT_EQ(url_id3, i->url_id); |
| 296 EXPECT_EQ(url3.spec(), i->raw_url); |
| 281 | 297 |
| 282 std::vector<BookmarkCacheRow> bookmark_cache_rows; | 298 std::vector<BookmarkCacheRow> bookmark_cache_rows; |
| 283 ASSERT_TRUE(GetBookmarkCacheRows(&bookmark_cache_rows, backend.get())); | 299 ASSERT_TRUE(GetBookmarkCacheRows(&bookmark_cache_rows, backend.get())); |
| 284 ASSERT_EQ(2u, bookmark_cache_rows.size()); | 300 ASSERT_EQ(3u, bookmark_cache_rows.size()); |
| 285 std::vector<BookmarkCacheRow>::const_iterator j = bookmark_cache_rows.begin(); | 301 std::vector<BookmarkCacheRow>::const_iterator j = bookmark_cache_rows.begin(); |
| 286 EXPECT_EQ(url_id1, j->url_id_); | 302 EXPECT_EQ(url_id1, j->url_id_); |
| 287 EXPECT_EQ(ToDatabaseTime(last_visited1), ToDatabaseTime(j->last_visit_time_)); | 303 EXPECT_EQ(ToDatabaseTime(last_visited1), ToDatabaseTime(j->last_visit_time_)); |
| 288 EXPECT_EQ(ToDatabaseTime(created1), ToDatabaseTime(j->create_time_)); | 304 EXPECT_EQ(ToDatabaseTime(created1), ToDatabaseTime(j->create_time_)); |
| 289 EXPECT_EQ(0, j->favicon_id_); | 305 EXPECT_EQ(0, j->favicon_id_); |
| 290 EXPECT_TRUE(j->bookmark_); | 306 EXPECT_TRUE(j->bookmark_); |
| 291 j++; | 307 j++; |
| 292 EXPECT_EQ(url_id2, j->url_id_); | 308 EXPECT_EQ(url_id2, j->url_id_); |
| 293 EXPECT_EQ(ToDatabaseTime(last_visited2), ToDatabaseTime(j->last_visit_time_)); | 309 EXPECT_EQ(ToDatabaseTime(last_visited2), ToDatabaseTime(j->last_visit_time_)); |
| 294 EXPECT_EQ(ToDatabaseTime(created2), ToDatabaseTime(j->create_time_)); | 310 EXPECT_EQ(ToDatabaseTime(created2), ToDatabaseTime(j->create_time_)); |
| 295 EXPECT_NE(0, j->favicon_id_); | 311 EXPECT_NE(0, j->favicon_id_); |
| 296 EXPECT_FALSE(j->bookmark_); | 312 EXPECT_FALSE(j->bookmark_); |
| 297 | 313 |
| 298 // Delete url2 from database. | 314 // Delete url2 from database. |
| 299 ASSERT_TRUE(history_db_.DeleteURLRow(url_id2)); | 315 ASSERT_TRUE(history_db_.DeleteURLRow(url_id2)); |
| 300 VisitVector visit_rows; | 316 VisitVector visit_rows; |
| 301 ASSERT_TRUE(history_db_.GetMostRecentVisitsForURL(url_id2, 10, | 317 ASSERT_TRUE(history_db_.GetMostRecentVisitsForURL(url_id2, 10, |
| 302 &visit_rows)); | 318 &visit_rows)); |
| 303 ASSERT_EQ(3u, visit_rows.size()); | 319 ASSERT_EQ(3u, visit_rows.size()); |
| 304 for (VisitVector::const_iterator v = visit_rows.begin(); | 320 for (VisitVector::const_iterator v = visit_rows.begin(); |
| 305 v != visit_rows.end(); v++) | 321 v != visit_rows.end(); v++) |
| 306 history_db_.DeleteVisit(*v); | 322 history_db_.DeleteVisit(*v); |
| 307 | 323 |
| 308 backend->UpdateTables(); | 324 backend->UpdateTables(); |
| 309 | 325 |
| 310 android_url_rows.clear(); | 326 android_url_rows.clear(); |
| 311 ASSERT_TRUE(GetAndroidURLsRows(&android_url_rows, backend.get())); | 327 ASSERT_TRUE(GetAndroidURLsRows(&android_url_rows, backend.get())); |
| 312 ASSERT_EQ(1u, android_url_rows.size()); | 328 ASSERT_EQ(2u, android_url_rows.size()); |
| 313 i = android_url_rows.begin(); | 329 i = android_url_rows.begin(); |
| 314 EXPECT_EQ(url_id1, i->url_id); | 330 EXPECT_EQ(url_id1, i->url_id); |
| 315 EXPECT_EQ(url1.spec(), i->raw_url); | 331 EXPECT_EQ(url1.spec(), i->raw_url); |
| 332 ++i; |
| 333 EXPECT_EQ(url_id3, i->url_id); |
| 334 EXPECT_EQ(url3.spec(), i->raw_url); |
| 316 | 335 |
| 317 bookmark_cache_rows.clear(); | 336 bookmark_cache_rows.clear(); |
| 318 ASSERT_TRUE(GetBookmarkCacheRows(&bookmark_cache_rows, backend.get())); | 337 ASSERT_TRUE(GetBookmarkCacheRows(&bookmark_cache_rows, backend.get())); |
| 319 ASSERT_EQ(1u, bookmark_cache_rows.size()); | 338 ASSERT_EQ(2u, bookmark_cache_rows.size()); |
| 320 j = bookmark_cache_rows.begin(); | 339 j = bookmark_cache_rows.begin(); |
| 321 EXPECT_EQ(url_id1, j->url_id_); | 340 EXPECT_EQ(url_id1, j->url_id_); |
| 322 EXPECT_EQ(ToDatabaseTime(last_visited1), ToDatabaseTime(j->last_visit_time_)); | 341 EXPECT_EQ(ToDatabaseTime(last_visited1), ToDatabaseTime(j->last_visit_time_)); |
| 323 EXPECT_EQ(ToDatabaseTime(created1), ToDatabaseTime(j->create_time_)); | 342 EXPECT_EQ(ToDatabaseTime(created1), ToDatabaseTime(j->create_time_)); |
| 324 EXPECT_EQ(0, j->favicon_id_); | 343 EXPECT_EQ(0, j->favicon_id_); |
| 325 EXPECT_TRUE(j->bookmark_); | 344 EXPECT_TRUE(j->bookmark_); |
| 345 ++j; |
| 346 EXPECT_EQ(url_id3, j->url_id_); |
| 347 EXPECT_EQ(base::Time::UnixEpoch(), j->last_visit_time_); |
| 348 EXPECT_EQ(base::Time::UnixEpoch(), j->create_time_); |
| 349 EXPECT_EQ(0, j->favicon_id_); |
| 350 EXPECT_TRUE(j->bookmark_); |
| 326 } | 351 } |
| 327 | 352 |
| 328 TEST_F(AndroidProviderBackendTest, QueryHistoryAndBookmarks) { | 353 TEST_F(AndroidProviderBackendTest, QueryHistoryAndBookmarks) { |
| 329 GURL url1("http://www.cnn.com"); | 354 GURL url1("http://www.cnn.com"); |
| 330 URLID url_id1 = 0; | 355 URLID url_id1 = 0; |
| 331 const string16 title1(UTF8ToUTF16("cnn")); | 356 const string16 title1(UTF8ToUTF16("cnn")); |
| 332 std::vector<VisitInfo> visits1; | 357 std::vector<VisitInfo> visits1; |
| 333 Time last_visited1 = Time::Now() - TimeDelta::FromDays(1); | 358 Time last_visited1 = Time::Now() - TimeDelta::FromDays(1); |
| 334 Time created1 = last_visited1 - TimeDelta::FromDays(20); | 359 Time created1 = last_visited1 - TimeDelta::FromDays(20); |
| 335 visits1.push_back(VisitInfo(created1, content::PAGE_TRANSITION_LINK)); | 360 visits1.push_back(VisitInfo(created1, content::PAGE_TRANSITION_LINK)); |
| (...skipping 1390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1726 // Query by folder=1, the row2 should returned. | 1751 // Query by folder=1, the row2 should returned. |
| 1727 statement.reset(backend->QueryHistoryAndBookmarks( | 1752 statement.reset(backend->QueryHistoryAndBookmarks( |
| 1728 projections, std::string("folder=1"), std::vector<string16>(), | 1753 projections, std::string("folder=1"), std::vector<string16>(), |
| 1729 std::string("url ASC"))); | 1754 std::string("url ASC"))); |
| 1730 ASSERT_TRUE(statement->statement()->Step()); | 1755 ASSERT_TRUE(statement->statement()->Step()); |
| 1731 EXPECT_EQ(row2.url(), GURL(statement->statement()->ColumnString(0))); | 1756 EXPECT_EQ(row2.url(), GURL(statement->statement()->ColumnString(0))); |
| 1732 EXPECT_FALSE(statement->statement()->Step()); | 1757 EXPECT_FALSE(statement->statement()->Step()); |
| 1733 } | 1758 } |
| 1734 | 1759 |
| 1735 } // namespace history | 1760 } // namespace history |
| OLD | NEW |