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 |