| 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/files/file_path.h" | 9 #include "base/files/file_path.h" |
| 10 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
| 11 #include "base/files/scoped_temp_dir.h" | 11 #include "base/files/scoped_temp_dir.h" |
| 12 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
| 13 #include "base/strings/stringprintf.h" | 13 #include "base/strings/stringprintf.h" |
| 14 #include "base/strings/utf_string_conversions.h" | 14 #include "base/strings/utf_string_conversions.h" |
| 15 #include "chrome/browser/bookmarks/bookmark_model_factory.h" | 15 #include "chrome/browser/bookmarks/bookmark_model_factory.h" |
| 16 #include "chrome/browser/chrome_notification_types.h" | 16 #include "chrome/browser/chrome_notification_types.h" |
| 17 #include "chrome/browser/favicon/favicon_changed_details.h" | |
| 18 #include "chrome/browser/history/android/android_time.h" | 17 #include "chrome/browser/history/android/android_time.h" |
| 19 #include "chrome/browser/history/chrome_history_client.h" | 18 #include "chrome/browser/history/chrome_history_client.h" |
| 20 #include "chrome/browser/history/chrome_history_client_factory.h" | 19 #include "chrome/browser/history/chrome_history_client_factory.h" |
| 21 #include "chrome/browser/history/history_backend.h" | 20 #include "chrome/browser/history/history_backend.h" |
| 22 #include "chrome/browser/profiles/profile_manager.h" | 21 #include "chrome/browser/profiles/profile_manager.h" |
| 23 #include "chrome/common/chrome_constants.h" | 22 #include "chrome/common/chrome_constants.h" |
| 24 #include "chrome/test/base/testing_browser_process.h" | 23 #include "chrome/test/base/testing_browser_process.h" |
| 25 #include "chrome/test/base/testing_profile.h" | 24 #include "chrome/test/base/testing_profile.h" |
| 26 #include "chrome/test/base/testing_profile_manager.h" | 25 #include "chrome/test/base/testing_profile_manager.h" |
| 27 #include "components/bookmarks/browser/bookmark_model.h" | 26 #include "components/bookmarks/browser/bookmark_model.h" |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 | 65 |
| 67 } // namespace | 66 } // namespace |
| 68 | 67 |
| 69 class AndroidProviderBackendDelegate : public HistoryBackend::Delegate { | 68 class AndroidProviderBackendDelegate : public HistoryBackend::Delegate { |
| 70 public: | 69 public: |
| 71 AndroidProviderBackendDelegate() {} | 70 AndroidProviderBackendDelegate() {} |
| 72 | 71 |
| 73 virtual void NotifyProfileError(sql::InitStatus init_status) OVERRIDE {} | 72 virtual void NotifyProfileError(sql::InitStatus init_status) OVERRIDE {} |
| 74 virtual void SetInMemoryBackend( | 73 virtual void SetInMemoryBackend( |
| 75 scoped_ptr<InMemoryHistoryBackend> backend) OVERRIDE {} | 74 scoped_ptr<InMemoryHistoryBackend> backend) OVERRIDE {} |
| 75 virtual void NotifyFaviconChanged(const std::set<GURL>& url) OVERRIDE { |
| 76 favicon_changed_.reset(new std::set<GURL>(url.begin(), url.end())); |
| 77 } |
| 76 virtual void BroadcastNotifications( | 78 virtual void BroadcastNotifications( |
| 77 int type, | 79 int type, |
| 78 scoped_ptr<HistoryDetails> details) OVERRIDE { | 80 scoped_ptr<HistoryDetails> details) OVERRIDE { |
| 79 switch (type) { | 81 switch (type) { |
| 80 case chrome::NOTIFICATION_HISTORY_URLS_DELETED: | 82 case chrome::NOTIFICATION_HISTORY_URLS_DELETED: |
| 81 deleted_details_.reset( | 83 deleted_details_.reset( |
| 82 static_cast<URLsDeletedDetails*>(details.release())); | 84 static_cast<URLsDeletedDetails*>(details.release())); |
| 83 break; | 85 break; |
| 84 case chrome::NOTIFICATION_FAVICON_CHANGED: | |
| 85 favicon_details_.reset( | |
| 86 static_cast<FaviconChangedDetails*>(details.release())); | |
| 87 break; | |
| 88 case chrome::NOTIFICATION_HISTORY_URLS_MODIFIED: | 86 case chrome::NOTIFICATION_HISTORY_URLS_MODIFIED: |
| 89 modified_details_.reset( | 87 modified_details_.reset( |
| 90 static_cast<URLsModifiedDetails*>(details.release())); | 88 static_cast<URLsModifiedDetails*>(details.release())); |
| 91 break; | 89 break; |
| 92 } | 90 } |
| 93 } | 91 } |
| 94 virtual void DBLoaded() OVERRIDE {} | 92 virtual void DBLoaded() OVERRIDE {} |
| 95 virtual void NotifyVisitDBObserversOnAddVisit( | 93 virtual void NotifyVisitDBObserversOnAddVisit( |
| 96 const history::BriefVisitInfo& info) OVERRIDE {} | 94 const history::BriefVisitInfo& info) OVERRIDE {} |
| 97 | 95 |
| 98 URLsDeletedDetails* deleted_details() const { | 96 URLsDeletedDetails* deleted_details() const { |
| 99 return deleted_details_.get(); | 97 return deleted_details_.get(); |
| 100 } | 98 } |
| 101 | 99 |
| 102 URLsModifiedDetails* modified_details() const { | 100 URLsModifiedDetails* modified_details() const { |
| 103 return modified_details_.get(); | 101 return modified_details_.get(); |
| 104 } | 102 } |
| 105 | 103 |
| 106 FaviconChangedDetails* favicon_details() const { | 104 std::set<GURL>* favicon_changed() const { return favicon_changed_.get(); } |
| 107 return favicon_details_.get(); | |
| 108 } | |
| 109 | 105 |
| 110 void ResetDetails() { | 106 void ResetDetails() { |
| 111 deleted_details_.reset(); | 107 deleted_details_.reset(); |
| 112 modified_details_.reset(); | 108 modified_details_.reset(); |
| 113 favicon_details_.reset(); | 109 favicon_changed_.reset(); |
| 114 } | 110 } |
| 115 | 111 |
| 116 private: | 112 private: |
| 117 scoped_ptr<URLsDeletedDetails> deleted_details_; | 113 scoped_ptr<URLsDeletedDetails> deleted_details_; |
| 118 scoped_ptr<URLsModifiedDetails> modified_details_; | 114 scoped_ptr<URLsModifiedDetails> modified_details_; |
| 119 scoped_ptr<FaviconChangedDetails> favicon_details_; | 115 scoped_ptr<std::set<GURL> > favicon_changed_; |
| 120 | 116 |
| 121 DISALLOW_COPY_AND_ASSIGN(AndroidProviderBackendDelegate); | 117 DISALLOW_COPY_AND_ASSIGN(AndroidProviderBackendDelegate); |
| 122 }; | 118 }; |
| 123 | 119 |
| 124 class AndroidProviderBackendTest : public testing::Test { | 120 class AndroidProviderBackendTest : public testing::Test { |
| 125 public: | 121 public: |
| 126 AndroidProviderBackendTest() | 122 AndroidProviderBackendTest() |
| 127 : thumbnail_db_(NULL), | 123 : thumbnail_db_(NULL), |
| 128 profile_manager_( | 124 profile_manager_( |
| 129 TestingBrowserProcess::GetGlobal()), | 125 TestingBrowserProcess::GetGlobal()), |
| (...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 518 EXPECT_FALSE(delegate_.deleted_details()); | 514 EXPECT_FALSE(delegate_.deleted_details()); |
| 519 ASSERT_TRUE(delegate_.modified_details()); | 515 ASSERT_TRUE(delegate_.modified_details()); |
| 520 ASSERT_EQ(1u, delegate_.modified_details()->changed_urls.size()); | 516 ASSERT_EQ(1u, delegate_.modified_details()->changed_urls.size()); |
| 521 EXPECT_EQ(row1.url(), delegate_.modified_details()->changed_urls[0].url()); | 517 EXPECT_EQ(row1.url(), delegate_.modified_details()->changed_urls[0].url()); |
| 522 EXPECT_EQ(row1.last_visit_time(), | 518 EXPECT_EQ(row1.last_visit_time(), |
| 523 delegate_.modified_details()->changed_urls[0].last_visit()); | 519 delegate_.modified_details()->changed_urls[0].last_visit()); |
| 524 EXPECT_EQ(row1.visit_count(), | 520 EXPECT_EQ(row1.visit_count(), |
| 525 delegate_.modified_details()->changed_urls[0].visit_count()); | 521 delegate_.modified_details()->changed_urls[0].visit_count()); |
| 526 EXPECT_EQ(row1.title(), | 522 EXPECT_EQ(row1.title(), |
| 527 delegate_.modified_details()->changed_urls[0].title()); | 523 delegate_.modified_details()->changed_urls[0].title()); |
| 528 EXPECT_FALSE(delegate_.favicon_details()); | 524 EXPECT_FALSE(delegate_.favicon_changed()); |
| 529 content::RunAllPendingInMessageLoop(); | 525 content::RunAllPendingInMessageLoop(); |
| 530 ASSERT_EQ(1, bookmark_model_->mobile_node()->child_count()); | 526 ASSERT_EQ(1, bookmark_model_->mobile_node()->child_count()); |
| 531 const BookmarkNode* child = bookmark_model_->mobile_node()->GetChild(0); | 527 const BookmarkNode* child = bookmark_model_->mobile_node()->GetChild(0); |
| 532 ASSERT_TRUE(child); | 528 ASSERT_TRUE(child); |
| 533 EXPECT_EQ(row1.title(), child->GetTitle()); | 529 EXPECT_EQ(row1.title(), child->GetTitle()); |
| 534 EXPECT_EQ(row1.url(), child->url()); | 530 EXPECT_EQ(row1.url(), child->url()); |
| 535 | 531 |
| 536 delegate_.ResetDetails(); | 532 delegate_.ResetDetails(); |
| 537 ASSERT_TRUE(backend->InsertHistoryAndBookmark(row2)); | 533 ASSERT_TRUE(backend->InsertHistoryAndBookmark(row2)); |
| 538 EXPECT_FALSE(delegate_.deleted_details()); | 534 EXPECT_FALSE(delegate_.deleted_details()); |
| 539 ASSERT_TRUE(delegate_.modified_details()); | 535 ASSERT_TRUE(delegate_.modified_details()); |
| 540 ASSERT_EQ(1u, delegate_.modified_details()->changed_urls.size()); | 536 ASSERT_EQ(1u, delegate_.modified_details()->changed_urls.size()); |
| 541 EXPECT_EQ(row2.url(), delegate_.modified_details()->changed_urls[0].url()); | 537 EXPECT_EQ(row2.url(), delegate_.modified_details()->changed_urls[0].url()); |
| 542 EXPECT_EQ(row2.last_visit_time(), | 538 EXPECT_EQ(row2.last_visit_time(), |
| 543 delegate_.modified_details()->changed_urls[0].last_visit()); | 539 delegate_.modified_details()->changed_urls[0].last_visit()); |
| 544 EXPECT_EQ(row2.title(), | 540 EXPECT_EQ(row2.title(), |
| 545 delegate_.modified_details()->changed_urls[0].title()); | 541 delegate_.modified_details()->changed_urls[0].title()); |
| 546 ASSERT_TRUE(delegate_.favicon_details()); | 542 ASSERT_TRUE(delegate_.favicon_changed()); |
| 547 ASSERT_EQ(1u, delegate_.favicon_details()->urls.size()); | 543 ASSERT_EQ(1u, delegate_.favicon_changed()->size()); |
| 548 ASSERT_TRUE(delegate_.favicon_details()->urls.end() != | 544 ASSERT_TRUE(delegate_.favicon_changed()->end() != |
| 549 delegate_.favicon_details()->urls.find(row2.url())); | 545 delegate_.favicon_changed()->find(row2.url())); |
| 550 | 546 |
| 551 std::vector<HistoryAndBookmarkRow::ColumnID> projections; | 547 std::vector<HistoryAndBookmarkRow::ColumnID> projections; |
| 552 projections.push_back(HistoryAndBookmarkRow::ID); | 548 projections.push_back(HistoryAndBookmarkRow::ID); |
| 553 projections.push_back(HistoryAndBookmarkRow::URL); | 549 projections.push_back(HistoryAndBookmarkRow::URL); |
| 554 projections.push_back(HistoryAndBookmarkRow::TITLE); | 550 projections.push_back(HistoryAndBookmarkRow::TITLE); |
| 555 projections.push_back(HistoryAndBookmarkRow::CREATED); | 551 projections.push_back(HistoryAndBookmarkRow::CREATED); |
| 556 projections.push_back(HistoryAndBookmarkRow::LAST_VISIT_TIME); | 552 projections.push_back(HistoryAndBookmarkRow::LAST_VISIT_TIME); |
| 557 projections.push_back(HistoryAndBookmarkRow::VISIT_COUNT); | 553 projections.push_back(HistoryAndBookmarkRow::VISIT_COUNT); |
| 558 projections.push_back(HistoryAndBookmarkRow::FAVICON); | 554 projections.push_back(HistoryAndBookmarkRow::FAVICON); |
| 559 projections.push_back(HistoryAndBookmarkRow::BOOKMARK); | 555 projections.push_back(HistoryAndBookmarkRow::BOOKMARK); |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 649 | 645 |
| 650 // Verify notifications | 646 // Verify notifications |
| 651 ASSERT_TRUE(delegate_.deleted_details()); | 647 ASSERT_TRUE(delegate_.deleted_details()); |
| 652 EXPECT_FALSE(delegate_.modified_details()); | 648 EXPECT_FALSE(delegate_.modified_details()); |
| 653 EXPECT_EQ(1u, delegate_.deleted_details()->rows.size()); | 649 EXPECT_EQ(1u, delegate_.deleted_details()->rows.size()); |
| 654 EXPECT_EQ(row1.url(), delegate_.deleted_details()->rows[0].url()); | 650 EXPECT_EQ(row1.url(), delegate_.deleted_details()->rows[0].url()); |
| 655 EXPECT_EQ(row1.last_visit_time(), | 651 EXPECT_EQ(row1.last_visit_time(), |
| 656 delegate_.deleted_details()->rows[0].last_visit()); | 652 delegate_.deleted_details()->rows[0].last_visit()); |
| 657 EXPECT_EQ(row1.title(), | 653 EXPECT_EQ(row1.title(), |
| 658 delegate_.deleted_details()->rows[0].title()); | 654 delegate_.deleted_details()->rows[0].title()); |
| 659 EXPECT_FALSE(delegate_.favicon_details()); | 655 EXPECT_FALSE(delegate_.favicon_changed()); |
| 660 | 656 |
| 661 std::vector<HistoryAndBookmarkRow::ColumnID> projections; | 657 std::vector<HistoryAndBookmarkRow::ColumnID> projections; |
| 662 projections.push_back(HistoryAndBookmarkRow::ID); | 658 projections.push_back(HistoryAndBookmarkRow::ID); |
| 663 projections.push_back(HistoryAndBookmarkRow::URL); | 659 projections.push_back(HistoryAndBookmarkRow::URL); |
| 664 projections.push_back(HistoryAndBookmarkRow::TITLE); | 660 projections.push_back(HistoryAndBookmarkRow::TITLE); |
| 665 projections.push_back(HistoryAndBookmarkRow::CREATED); | 661 projections.push_back(HistoryAndBookmarkRow::CREATED); |
| 666 projections.push_back(HistoryAndBookmarkRow::LAST_VISIT_TIME); | 662 projections.push_back(HistoryAndBookmarkRow::LAST_VISIT_TIME); |
| 667 projections.push_back(HistoryAndBookmarkRow::VISIT_COUNT); | 663 projections.push_back(HistoryAndBookmarkRow::VISIT_COUNT); |
| 668 projections.push_back(HistoryAndBookmarkRow::FAVICON); | 664 projections.push_back(HistoryAndBookmarkRow::FAVICON); |
| 669 projections.push_back(HistoryAndBookmarkRow::BOOKMARK); | 665 projections.push_back(HistoryAndBookmarkRow::BOOKMARK); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 696 std::vector<base::string16>(), &deleted_count)); | 692 std::vector<base::string16>(), &deleted_count)); |
| 697 // Verify notifications | 693 // Verify notifications |
| 698 ASSERT_TRUE(delegate_.deleted_details()); | 694 ASSERT_TRUE(delegate_.deleted_details()); |
| 699 EXPECT_FALSE(delegate_.modified_details()); | 695 EXPECT_FALSE(delegate_.modified_details()); |
| 700 EXPECT_EQ(1u, delegate_.deleted_details()->rows.size()); | 696 EXPECT_EQ(1u, delegate_.deleted_details()->rows.size()); |
| 701 EXPECT_EQ(row2.url(), delegate_.deleted_details()->rows[0].url()); | 697 EXPECT_EQ(row2.url(), delegate_.deleted_details()->rows[0].url()); |
| 702 EXPECT_EQ(row2.last_visit_time(), | 698 EXPECT_EQ(row2.last_visit_time(), |
| 703 delegate_.deleted_details()->rows[0].last_visit()); | 699 delegate_.deleted_details()->rows[0].last_visit()); |
| 704 EXPECT_EQ(row2.title(), | 700 EXPECT_EQ(row2.title(), |
| 705 delegate_.deleted_details()->rows[0].title()); | 701 delegate_.deleted_details()->rows[0].title()); |
| 706 ASSERT_TRUE(delegate_.favicon_details()); | 702 ASSERT_TRUE(delegate_.favicon_changed()); |
| 707 ASSERT_EQ(1u, delegate_.favicon_details()->urls.size()); | 703 ASSERT_EQ(1u, delegate_.favicon_changed()->size()); |
| 708 ASSERT_TRUE(delegate_.favicon_details()->urls.end() != | 704 ASSERT_TRUE(delegate_.favicon_changed()->end() != |
| 709 delegate_.favicon_details()->urls.find(row2.url())); | 705 delegate_.favicon_changed()->find(row2.url())); |
| 710 | 706 |
| 711 ASSERT_EQ(1, deleted_count); | 707 ASSERT_EQ(1, deleted_count); |
| 712 scoped_ptr<AndroidStatement> statement1(backend->QueryHistoryAndBookmarks( | 708 scoped_ptr<AndroidStatement> statement1(backend->QueryHistoryAndBookmarks( |
| 713 projections, std::string(), std::vector<base::string16>(), | 709 projections, std::string(), std::vector<base::string16>(), |
| 714 std::string("url ASC"))); | 710 std::string("url ASC"))); |
| 715 ASSERT_FALSE(statement1->statement()->Step()); | 711 ASSERT_FALSE(statement1->statement()->Step()); |
| 716 } | 712 } |
| 717 | 713 |
| 718 TEST_F(AndroidProviderBackendTest, IsValidHistoryAndBookmarkRow) { | 714 TEST_F(AndroidProviderBackendTest, IsValidHistoryAndBookmarkRow) { |
| 719 ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_)); | 715 ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_)); |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 871 delegate_.deleted_details()->rows[0].title()); | 867 delegate_.deleted_details()->rows[0].title()); |
| 872 ASSERT_TRUE(delegate_.modified_details()); | 868 ASSERT_TRUE(delegate_.modified_details()); |
| 873 ASSERT_EQ(1u, delegate_.modified_details()->changed_urls.size()); | 869 ASSERT_EQ(1u, delegate_.modified_details()->changed_urls.size()); |
| 874 EXPECT_EQ(update_row1.url(), | 870 EXPECT_EQ(update_row1.url(), |
| 875 delegate_.modified_details()->changed_urls[0].url()); | 871 delegate_.modified_details()->changed_urls[0].url()); |
| 876 EXPECT_EQ(ToDatabaseTime(row1.last_visit_time()), | 872 EXPECT_EQ(ToDatabaseTime(row1.last_visit_time()), |
| 877 ToDatabaseTime( | 873 ToDatabaseTime( |
| 878 delegate_.modified_details()->changed_urls[0].last_visit())); | 874 delegate_.modified_details()->changed_urls[0].last_visit())); |
| 879 EXPECT_EQ(row1.title(), | 875 EXPECT_EQ(row1.title(), |
| 880 delegate_.modified_details()->changed_urls[0].title()); | 876 delegate_.modified_details()->changed_urls[0].title()); |
| 881 EXPECT_FALSE(delegate_.favicon_details()); | 877 EXPECT_FALSE(delegate_.favicon_changed()); |
| 882 | 878 |
| 883 EXPECT_EQ(1, update_count); | 879 EXPECT_EQ(1, update_count); |
| 884 // We shouldn't find orignal url anymore. | 880 // We shouldn't find orignal url anymore. |
| 885 EXPECT_FALSE(history_db_.GetRowForURL(row1.url(), NULL)); | 881 EXPECT_FALSE(history_db_.GetRowForURL(row1.url(), NULL)); |
| 886 visits.clear(); | 882 visits.clear(); |
| 887 EXPECT_TRUE(history_db_.GetVisitsForURL(url_id1, &visits)); | 883 EXPECT_TRUE(history_db_.GetVisitsForURL(url_id1, &visits)); |
| 888 EXPECT_EQ(0u, visits.size()); | 884 EXPECT_EQ(0u, visits.size()); |
| 889 // Verify new URL. | 885 // Verify new URL. |
| 890 URLRow new_row; | 886 URLRow new_row; |
| 891 EXPECT_TRUE(history_db_.GetRowForURL(update_row1.url(), &new_row)); | 887 EXPECT_TRUE(history_db_.GetRowForURL(update_row1.url(), &new_row)); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 931 delegate_.deleted_details()->rows[0].title()); | 927 delegate_.deleted_details()->rows[0].title()); |
| 932 ASSERT_TRUE(delegate_.modified_details()); | 928 ASSERT_TRUE(delegate_.modified_details()); |
| 933 ASSERT_EQ(1u, delegate_.modified_details()->changed_urls.size()); | 929 ASSERT_EQ(1u, delegate_.modified_details()->changed_urls.size()); |
| 934 EXPECT_EQ(update_row2.url(), | 930 EXPECT_EQ(update_row2.url(), |
| 935 delegate_.modified_details()->changed_urls[0].url()); | 931 delegate_.modified_details()->changed_urls[0].url()); |
| 936 EXPECT_EQ(ToDatabaseTime(update_row2.last_visit_time()), | 932 EXPECT_EQ(ToDatabaseTime(update_row2.last_visit_time()), |
| 937 ToDatabaseTime( | 933 ToDatabaseTime( |
| 938 delegate_.modified_details()->changed_urls[0].last_visit())); | 934 delegate_.modified_details()->changed_urls[0].last_visit())); |
| 939 EXPECT_EQ(update_row2.visit_count(), | 935 EXPECT_EQ(update_row2.visit_count(), |
| 940 delegate_.modified_details()->changed_urls[0].visit_count()); | 936 delegate_.modified_details()->changed_urls[0].visit_count()); |
| 941 ASSERT_TRUE(delegate_.favicon_details()); | 937 ASSERT_TRUE(delegate_.favicon_changed()); |
| 942 ASSERT_EQ(2u, delegate_.favicon_details()->urls.size()); | 938 ASSERT_EQ(2u, delegate_.favicon_changed()->size()); |
| 943 ASSERT_TRUE(delegate_.favicon_details()->urls.end() != | 939 ASSERT_TRUE(delegate_.favicon_changed()->end() != |
| 944 delegate_.favicon_details()->urls.find(row2.url())); | 940 delegate_.favicon_changed()->find(row2.url())); |
| 945 ASSERT_TRUE(delegate_.favicon_details()->urls.end() != | 941 ASSERT_TRUE(delegate_.favicon_changed()->end() != |
| 946 delegate_.favicon_details()->urls.find(update_row2.url())); | 942 delegate_.favicon_changed()->find(update_row2.url())); |
| 947 | 943 |
| 948 EXPECT_EQ(1, update_count); | 944 EXPECT_EQ(1, update_count); |
| 949 // We shouldn't find orignal url anymore. | 945 // We shouldn't find orignal url anymore. |
| 950 EXPECT_FALSE(history_db_.GetRowForURL(row2.url(), NULL)); | 946 EXPECT_FALSE(history_db_.GetRowForURL(row2.url(), NULL)); |
| 951 visits.clear(); | 947 visits.clear(); |
| 952 EXPECT_TRUE(history_db_.GetVisitsForURL(url_id2, &visits)); | 948 EXPECT_TRUE(history_db_.GetVisitsForURL(url_id2, &visits)); |
| 953 EXPECT_EQ(0u, visits.size()); | 949 EXPECT_EQ(0u, visits.size()); |
| 954 | 950 |
| 955 // Verify new URL. | 951 // Verify new URL. |
| 956 URLRow new_row2; | 952 URLRow new_row2; |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1018 EXPECT_FALSE(delegate_.deleted_details()); | 1014 EXPECT_FALSE(delegate_.deleted_details()); |
| 1019 ASSERT_TRUE(delegate_.modified_details()); | 1015 ASSERT_TRUE(delegate_.modified_details()); |
| 1020 ASSERT_EQ(1u, delegate_.modified_details()->changed_urls.size()); | 1016 ASSERT_EQ(1u, delegate_.modified_details()->changed_urls.size()); |
| 1021 EXPECT_EQ(row1.url(), | 1017 EXPECT_EQ(row1.url(), |
| 1022 delegate_.modified_details()->changed_urls[0].url()); | 1018 delegate_.modified_details()->changed_urls[0].url()); |
| 1023 EXPECT_EQ(ToDatabaseTime(row1.last_visit_time()), | 1019 EXPECT_EQ(ToDatabaseTime(row1.last_visit_time()), |
| 1024 ToDatabaseTime( | 1020 ToDatabaseTime( |
| 1025 delegate_.modified_details()->changed_urls[0].last_visit())); | 1021 delegate_.modified_details()->changed_urls[0].last_visit())); |
| 1026 EXPECT_EQ(update_row1.visit_count(), | 1022 EXPECT_EQ(update_row1.visit_count(), |
| 1027 delegate_.modified_details()->changed_urls[0].visit_count()); | 1023 delegate_.modified_details()->changed_urls[0].visit_count()); |
| 1028 EXPECT_FALSE(delegate_.favicon_details()); | 1024 EXPECT_FALSE(delegate_.favicon_changed()); |
| 1029 | 1025 |
| 1030 // All visits should be removed, and 5 new visit insertted. | 1026 // All visits should be removed, and 5 new visit insertted. |
| 1031 URLRow new_row1; | 1027 URLRow new_row1; |
| 1032 ASSERT_TRUE(history_db_.GetRowForURL(row1.url(), &new_row1)); | 1028 ASSERT_TRUE(history_db_.GetRowForURL(row1.url(), &new_row1)); |
| 1033 EXPECT_EQ(5, new_row1.visit_count()); | 1029 EXPECT_EQ(5, new_row1.visit_count()); |
| 1034 VisitVector visits; | 1030 VisitVector visits; |
| 1035 ASSERT_TRUE(history_db_.GetVisitsForURL(new_row1.id(), &visits)); | 1031 ASSERT_TRUE(history_db_.GetVisitsForURL(new_row1.id(), &visits)); |
| 1036 ASSERT_EQ(5u, visits.size()); | 1032 ASSERT_EQ(5u, visits.size()); |
| 1037 EXPECT_EQ(row1.last_visit_time(), visits[4].visit_time); | 1033 EXPECT_EQ(row1.last_visit_time(), visits[4].visit_time); |
| 1038 EXPECT_GT(row1.last_visit_time(), visits[0].visit_time); | 1034 EXPECT_GT(row1.last_visit_time(), visits[0].visit_time); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1099 update_args, &update_count)); | 1095 update_args, &update_count)); |
| 1100 // Verify notifications, Update involves modified URL. | 1096 // Verify notifications, Update involves modified URL. |
| 1101 EXPECT_FALSE(delegate_.deleted_details()); | 1097 EXPECT_FALSE(delegate_.deleted_details()); |
| 1102 ASSERT_TRUE(delegate_.modified_details()); | 1098 ASSERT_TRUE(delegate_.modified_details()); |
| 1103 ASSERT_EQ(1u, delegate_.modified_details()->changed_urls.size()); | 1099 ASSERT_EQ(1u, delegate_.modified_details()->changed_urls.size()); |
| 1104 EXPECT_EQ(row1.url(), | 1100 EXPECT_EQ(row1.url(), |
| 1105 delegate_.modified_details()->changed_urls[0].url()); | 1101 delegate_.modified_details()->changed_urls[0].url()); |
| 1106 EXPECT_EQ(ToDatabaseTime(update_row1.last_visit_time()), | 1102 EXPECT_EQ(ToDatabaseTime(update_row1.last_visit_time()), |
| 1107 ToDatabaseTime( | 1103 ToDatabaseTime( |
| 1108 delegate_.modified_details()->changed_urls[0].last_visit())); | 1104 delegate_.modified_details()->changed_urls[0].last_visit())); |
| 1109 EXPECT_FALSE(delegate_.favicon_details()); | 1105 EXPECT_FALSE(delegate_.favicon_changed()); |
| 1110 | 1106 |
| 1111 URLRow new_row1; | 1107 URLRow new_row1; |
| 1112 ASSERT_TRUE(history_db_.GetRowForURL(row1.url(), &new_row1)); | 1108 ASSERT_TRUE(history_db_.GetRowForURL(row1.url(), &new_row1)); |
| 1113 EXPECT_EQ(11, new_row1.visit_count()); | 1109 EXPECT_EQ(11, new_row1.visit_count()); |
| 1114 EXPECT_EQ(update_row1.last_visit_time(), new_row1.last_visit()); | 1110 EXPECT_EQ(update_row1.last_visit_time(), new_row1.last_visit()); |
| 1115 VisitVector visits; | 1111 VisitVector visits; |
| 1116 ASSERT_TRUE(history_db_.GetVisitsForURL(new_row1.id(), &visits)); | 1112 ASSERT_TRUE(history_db_.GetVisitsForURL(new_row1.id(), &visits)); |
| 1117 // 1 new visit insertted. | 1113 // 1 new visit insertted. |
| 1118 ASSERT_EQ(11u, visits.size()); | 1114 ASSERT_EQ(11u, visits.size()); |
| 1119 EXPECT_EQ(update_row1.last_visit_time(), visits[10].visit_time); | 1115 EXPECT_EQ(update_row1.last_visit_time(), visits[10].visit_time); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1159 std::vector<unsigned char> data; | 1155 std::vector<unsigned char> data; |
| 1160 data.push_back('1'); | 1156 data.push_back('1'); |
| 1161 update_row1.set_favicon(base::RefCountedBytes::TakeVector(&data)); | 1157 update_row1.set_favicon(base::RefCountedBytes::TakeVector(&data)); |
| 1162 update_args.push_back(UTF8ToUTF16(row1.raw_url())); | 1158 update_args.push_back(UTF8ToUTF16(row1.raw_url())); |
| 1163 delegate_.ResetDetails(); | 1159 delegate_.ResetDetails(); |
| 1164 ASSERT_TRUE(backend->UpdateHistoryAndBookmarks(update_row1, "url = ?", | 1160 ASSERT_TRUE(backend->UpdateHistoryAndBookmarks(update_row1, "url = ?", |
| 1165 update_args, &update_count)); | 1161 update_args, &update_count)); |
| 1166 // Verify notifications. | 1162 // Verify notifications. |
| 1167 EXPECT_FALSE(delegate_.deleted_details()); | 1163 EXPECT_FALSE(delegate_.deleted_details()); |
| 1168 EXPECT_FALSE(delegate_.modified_details()); | 1164 EXPECT_FALSE(delegate_.modified_details()); |
| 1169 ASSERT_TRUE(delegate_.favicon_details()); | 1165 ASSERT_TRUE(delegate_.favicon_changed()); |
| 1170 ASSERT_EQ(1u, delegate_.favicon_details()->urls.size()); | 1166 ASSERT_EQ(1u, delegate_.favicon_changed()->size()); |
| 1171 ASSERT_TRUE(delegate_.favicon_details()->urls.end() != | 1167 ASSERT_TRUE(delegate_.favicon_changed()->end() != |
| 1172 delegate_.favicon_details()->urls.find(row1.url())); | 1168 delegate_.favicon_changed()->find(row1.url())); |
| 1173 | 1169 |
| 1174 std::vector<IconMapping> icon_mappings; | 1170 std::vector<IconMapping> icon_mappings; |
| 1175 EXPECT_TRUE(thumbnail_db_.GetIconMappingsForPageURL( | 1171 EXPECT_TRUE(thumbnail_db_.GetIconMappingsForPageURL( |
| 1176 row1.url(), favicon_base::FAVICON, &icon_mappings)); | 1172 row1.url(), favicon_base::FAVICON, &icon_mappings)); |
| 1177 EXPECT_EQ(1u, icon_mappings.size()); | 1173 EXPECT_EQ(1u, icon_mappings.size()); |
| 1178 std::vector<FaviconBitmap> favicon_bitmaps; | 1174 std::vector<FaviconBitmap> favicon_bitmaps; |
| 1179 EXPECT_TRUE(thumbnail_db_.GetFaviconBitmaps(icon_mappings[0].icon_id, | 1175 EXPECT_TRUE(thumbnail_db_.GetFaviconBitmaps(icon_mappings[0].icon_id, |
| 1180 &favicon_bitmaps)); | 1176 &favicon_bitmaps)); |
| 1181 EXPECT_EQ(1u, favicon_bitmaps.size()); | 1177 EXPECT_EQ(1u, favicon_bitmaps.size()); |
| 1182 EXPECT_TRUE(favicon_bitmaps[0].bitmap_data.get()); | 1178 EXPECT_TRUE(favicon_bitmaps[0].bitmap_data.get()); |
| 1183 EXPECT_EQ(1u, favicon_bitmaps[0].bitmap_data->size()); | 1179 EXPECT_EQ(1u, favicon_bitmaps[0].bitmap_data->size()); |
| 1184 EXPECT_EQ('1', *favicon_bitmaps[0].bitmap_data->front()); | 1180 EXPECT_EQ('1', *favicon_bitmaps[0].bitmap_data->front()); |
| 1185 | 1181 |
| 1186 // Remove favicon. | 1182 // Remove favicon. |
| 1187 HistoryAndBookmarkRow update_row2; | 1183 HistoryAndBookmarkRow update_row2; |
| 1188 | 1184 |
| 1189 // Set favicon. | 1185 // Set favicon. |
| 1190 update_row1.set_favicon(new base::RefCountedBytes()); | 1186 update_row1.set_favicon(new base::RefCountedBytes()); |
| 1191 update_args.clear(); | 1187 update_args.clear(); |
| 1192 update_args.push_back(UTF8ToUTF16(row1.raw_url())); | 1188 update_args.push_back(UTF8ToUTF16(row1.raw_url())); |
| 1193 delegate_.ResetDetails(); | 1189 delegate_.ResetDetails(); |
| 1194 ASSERT_TRUE(backend->UpdateHistoryAndBookmarks(update_row1, "url = ?", | 1190 ASSERT_TRUE(backend->UpdateHistoryAndBookmarks(update_row1, "url = ?", |
| 1195 update_args, &update_count)); | 1191 update_args, &update_count)); |
| 1196 // Verify notifications. | 1192 // Verify notifications. |
| 1197 EXPECT_FALSE(delegate_.deleted_details()); | 1193 EXPECT_FALSE(delegate_.deleted_details()); |
| 1198 EXPECT_FALSE(delegate_.modified_details()); | 1194 EXPECT_FALSE(delegate_.modified_details()); |
| 1199 ASSERT_TRUE(delegate_.favicon_details()); | 1195 ASSERT_TRUE(delegate_.favicon_changed()); |
| 1200 ASSERT_EQ(1u, delegate_.favicon_details()->urls.size()); | 1196 ASSERT_EQ(1u, delegate_.favicon_changed()->size()); |
| 1201 ASSERT_TRUE(delegate_.favicon_details()->urls.end() != | 1197 ASSERT_TRUE(delegate_.favicon_changed()->end() != |
| 1202 delegate_.favicon_details()->urls.find(row1.url())); | 1198 delegate_.favicon_changed()->find(row1.url())); |
| 1203 | 1199 |
| 1204 EXPECT_FALSE(thumbnail_db_.GetIconMappingsForPageURL( | 1200 EXPECT_FALSE(thumbnail_db_.GetIconMappingsForPageURL( |
| 1205 row1.url(), favicon_base::FAVICON, NULL)); | 1201 row1.url(), favicon_base::FAVICON, NULL)); |
| 1206 } | 1202 } |
| 1207 | 1203 |
| 1208 TEST_F(AndroidProviderBackendTest, UpdateSearchTermTable) { | 1204 TEST_F(AndroidProviderBackendTest, UpdateSearchTermTable) { |
| 1209 ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_)); | 1205 ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_)); |
| 1210 ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_)); | 1206 ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_)); |
| 1211 scoped_ptr<AndroidProviderBackend> backend( | 1207 scoped_ptr<AndroidProviderBackend> backend( |
| 1212 new AndroidProviderBackend(android_cache_db_name_, | 1208 new AndroidProviderBackend(android_cache_db_name_, |
| (...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1642 EXPECT_EQ(row1.title(), child1->GetTitle()); | 1638 EXPECT_EQ(row1.title(), child1->GetTitle()); |
| 1643 EXPECT_EQ(row1.url(), child1->url()); | 1639 EXPECT_EQ(row1.url(), child1->url()); |
| 1644 | 1640 |
| 1645 // Verify notification | 1641 // Verify notification |
| 1646 ASSERT_TRUE(delegate_.deleted_details()); | 1642 ASSERT_TRUE(delegate_.deleted_details()); |
| 1647 ASSERT_EQ(2u, delegate_.deleted_details()->rows.size()); | 1643 ASSERT_EQ(2u, delegate_.deleted_details()->rows.size()); |
| 1648 EXPECT_EQ(row1.url(), | 1644 EXPECT_EQ(row1.url(), |
| 1649 delegate_.modified_details()->changed_urls[0].url()); | 1645 delegate_.modified_details()->changed_urls[0].url()); |
| 1650 EXPECT_EQ(Time::UnixEpoch(), | 1646 EXPECT_EQ(Time::UnixEpoch(), |
| 1651 delegate_.modified_details()->changed_urls[0].last_visit()); | 1647 delegate_.modified_details()->changed_urls[0].last_visit()); |
| 1652 EXPECT_EQ(1u, delegate_.favicon_details()->urls.size()); | 1648 EXPECT_EQ(1u, delegate_.favicon_changed()->size()); |
| 1653 } | 1649 } |
| 1654 | 1650 |
| 1655 TEST_F(AndroidProviderBackendTest, TestMultipleNestingTransaction) { | 1651 TEST_F(AndroidProviderBackendTest, TestMultipleNestingTransaction) { |
| 1656 ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_)); | 1652 ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_)); |
| 1657 ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_)); | 1653 ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_)); |
| 1658 scoped_ptr<AndroidProviderBackend> backend( | 1654 scoped_ptr<AndroidProviderBackend> backend( |
| 1659 new AndroidProviderBackend(android_cache_db_name_, | 1655 new AndroidProviderBackend(android_cache_db_name_, |
| 1660 &history_db_, | 1656 &history_db_, |
| 1661 &thumbnail_db_, | 1657 &thumbnail_db_, |
| 1662 history_client_, | 1658 history_client_, |
| (...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1940 EXPECT_FALSE(delegate_.deleted_details()); | 1936 EXPECT_FALSE(delegate_.deleted_details()); |
| 1941 ASSERT_TRUE(delegate_.modified_details()); | 1937 ASSERT_TRUE(delegate_.modified_details()); |
| 1942 ASSERT_EQ(1u, delegate_.modified_details()->changed_urls.size()); | 1938 ASSERT_EQ(1u, delegate_.modified_details()->changed_urls.size()); |
| 1943 EXPECT_EQ(row1.url(), delegate_.modified_details()->changed_urls[0].url()); | 1939 EXPECT_EQ(row1.url(), delegate_.modified_details()->changed_urls[0].url()); |
| 1944 EXPECT_EQ(row1.last_visit_time(), | 1940 EXPECT_EQ(row1.last_visit_time(), |
| 1945 delegate_.modified_details()->changed_urls[0].last_visit()); | 1941 delegate_.modified_details()->changed_urls[0].last_visit()); |
| 1946 EXPECT_EQ(row1.visit_count(), | 1942 EXPECT_EQ(row1.visit_count(), |
| 1947 delegate_.modified_details()->changed_urls[0].visit_count()); | 1943 delegate_.modified_details()->changed_urls[0].visit_count()); |
| 1948 EXPECT_EQ(row1.title(), | 1944 EXPECT_EQ(row1.title(), |
| 1949 delegate_.modified_details()->changed_urls[0].title()); | 1945 delegate_.modified_details()->changed_urls[0].title()); |
| 1950 EXPECT_FALSE(delegate_.favicon_details()); | 1946 EXPECT_FALSE(delegate_.favicon_changed()); |
| 1951 content::RunAllPendingInMessageLoop(); | 1947 content::RunAllPendingInMessageLoop(); |
| 1952 ASSERT_EQ(1, bookmark_model_->mobile_node()->child_count()); | 1948 ASSERT_EQ(1, bookmark_model_->mobile_node()->child_count()); |
| 1953 const BookmarkNode* child = bookmark_model_->mobile_node()->GetChild(0); | 1949 const BookmarkNode* child = bookmark_model_->mobile_node()->GetChild(0); |
| 1954 ASSERT_TRUE(child); | 1950 ASSERT_TRUE(child); |
| 1955 EXPECT_EQ(row1.title(), child->GetTitle()); | 1951 EXPECT_EQ(row1.title(), child->GetTitle()); |
| 1956 EXPECT_EQ(row1.url(), child->url()); | 1952 EXPECT_EQ(row1.url(), child->url()); |
| 1957 | 1953 |
| 1958 delegate_.ResetDetails(); | 1954 delegate_.ResetDetails(); |
| 1959 ASSERT_TRUE(backend->InsertHistoryAndBookmark(row2)); | 1955 ASSERT_TRUE(backend->InsertHistoryAndBookmark(row2)); |
| 1960 EXPECT_FALSE(delegate_.deleted_details()); | 1956 EXPECT_FALSE(delegate_.deleted_details()); |
| 1961 ASSERT_TRUE(delegate_.modified_details()); | 1957 ASSERT_TRUE(delegate_.modified_details()); |
| 1962 ASSERT_EQ(1u, delegate_.modified_details()->changed_urls.size()); | 1958 ASSERT_EQ(1u, delegate_.modified_details()->changed_urls.size()); |
| 1963 EXPECT_EQ(row2.url(), delegate_.modified_details()->changed_urls[0].url()); | 1959 EXPECT_EQ(row2.url(), delegate_.modified_details()->changed_urls[0].url()); |
| 1964 EXPECT_EQ(row2.last_visit_time(), | 1960 EXPECT_EQ(row2.last_visit_time(), |
| 1965 delegate_.modified_details()->changed_urls[0].last_visit()); | 1961 delegate_.modified_details()->changed_urls[0].last_visit()); |
| 1966 EXPECT_EQ(row2.title(), | 1962 EXPECT_EQ(row2.title(), |
| 1967 delegate_.modified_details()->changed_urls[0].title()); | 1963 delegate_.modified_details()->changed_urls[0].title()); |
| 1968 // Favicon details is still false because thumbnail database wasn't | 1964 // Favicon details is still false because thumbnail database wasn't |
| 1969 // initialized, we ignore any changes of favicon. | 1965 // initialized, we ignore any changes of favicon. |
| 1970 ASSERT_FALSE(delegate_.favicon_details()); | 1966 ASSERT_FALSE(delegate_.favicon_changed()); |
| 1971 } | 1967 } |
| 1972 | 1968 |
| 1973 TEST_F(AndroidProviderBackendTest, DeleteWithoutThumbnailDB) { | 1969 TEST_F(AndroidProviderBackendTest, DeleteWithoutThumbnailDB) { |
| 1974 HistoryAndBookmarkRow row1; | 1970 HistoryAndBookmarkRow row1; |
| 1975 row1.set_raw_url("cnn.com"); | 1971 row1.set_raw_url("cnn.com"); |
| 1976 row1.set_url(GURL("http://cnn.com")); | 1972 row1.set_url(GURL("http://cnn.com")); |
| 1977 row1.set_last_visit_time(Time::Now() - TimeDelta::FromDays(1)); | 1973 row1.set_last_visit_time(Time::Now() - TimeDelta::FromDays(1)); |
| 1978 row1.set_created(Time::Now() - TimeDelta::FromDays(20)); | 1974 row1.set_created(Time::Now() - TimeDelta::FromDays(20)); |
| 1979 row1.set_visit_count(10); | 1975 row1.set_visit_count(10); |
| 1980 row1.set_is_bookmark(true); | 1976 row1.set_is_bookmark(true); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2031 EXPECT_EQ(2, deleted_count); | 2027 EXPECT_EQ(2, deleted_count); |
| 2032 // Verify the rows was removed from bookmark model. | 2028 // Verify the rows was removed from bookmark model. |
| 2033 content::RunAllPendingInMessageLoop(); | 2029 content::RunAllPendingInMessageLoop(); |
| 2034 ASSERT_EQ(0, bookmark_model_->mobile_node()->child_count()); | 2030 ASSERT_EQ(0, bookmark_model_->mobile_node()->child_count()); |
| 2035 | 2031 |
| 2036 // Verify notifications | 2032 // Verify notifications |
| 2037 ASSERT_TRUE(delegate_.deleted_details()); | 2033 ASSERT_TRUE(delegate_.deleted_details()); |
| 2038 EXPECT_FALSE(delegate_.modified_details()); | 2034 EXPECT_FALSE(delegate_.modified_details()); |
| 2039 EXPECT_EQ(2u, delegate_.deleted_details()->rows.size()); | 2035 EXPECT_EQ(2u, delegate_.deleted_details()->rows.size()); |
| 2040 // No favicon has been deleted. | 2036 // No favicon has been deleted. |
| 2041 EXPECT_FALSE(delegate_.favicon_details()); | 2037 EXPECT_FALSE(delegate_.favicon_changed()); |
| 2042 | 2038 |
| 2043 // No row exists. | 2039 // No row exists. |
| 2044 std::vector<HistoryAndBookmarkRow::ColumnID> projections; | 2040 std::vector<HistoryAndBookmarkRow::ColumnID> projections; |
| 2045 projections.push_back(HistoryAndBookmarkRow::ID); | 2041 projections.push_back(HistoryAndBookmarkRow::ID); |
| 2046 projections.push_back(HistoryAndBookmarkRow::URL); | 2042 projections.push_back(HistoryAndBookmarkRow::URL); |
| 2047 projections.push_back(HistoryAndBookmarkRow::TITLE); | 2043 projections.push_back(HistoryAndBookmarkRow::TITLE); |
| 2048 projections.push_back(HistoryAndBookmarkRow::CREATED); | 2044 projections.push_back(HistoryAndBookmarkRow::CREATED); |
| 2049 projections.push_back(HistoryAndBookmarkRow::LAST_VISIT_TIME); | 2045 projections.push_back(HistoryAndBookmarkRow::LAST_VISIT_TIME); |
| 2050 projections.push_back(HistoryAndBookmarkRow::VISIT_COUNT); | 2046 projections.push_back(HistoryAndBookmarkRow::VISIT_COUNT); |
| 2051 projections.push_back(HistoryAndBookmarkRow::FAVICON); | 2047 projections.push_back(HistoryAndBookmarkRow::FAVICON); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2104 update_row1.set_favicon(base::RefCountedBytes::TakeVector(&data)); | 2100 update_row1.set_favicon(base::RefCountedBytes::TakeVector(&data)); |
| 2105 update_args.push_back(UTF8ToUTF16(row1.raw_url())); | 2101 update_args.push_back(UTF8ToUTF16(row1.raw_url())); |
| 2106 delegate_.ResetDetails(); | 2102 delegate_.ResetDetails(); |
| 2107 ASSERT_TRUE(backend->UpdateHistoryAndBookmarks(update_row1, "url = ?", | 2103 ASSERT_TRUE(backend->UpdateHistoryAndBookmarks(update_row1, "url = ?", |
| 2108 update_args, &update_count)); | 2104 update_args, &update_count)); |
| 2109 // Verify notifications. | 2105 // Verify notifications. |
| 2110 EXPECT_FALSE(delegate_.deleted_details()); | 2106 EXPECT_FALSE(delegate_.deleted_details()); |
| 2111 ASSERT_TRUE(delegate_.modified_details()); | 2107 ASSERT_TRUE(delegate_.modified_details()); |
| 2112 ASSERT_EQ(1u, delegate_.modified_details()->changed_urls.size()); | 2108 ASSERT_EQ(1u, delegate_.modified_details()->changed_urls.size()); |
| 2113 // No favicon will be updated as thumbnail database is missing. | 2109 // No favicon will be updated as thumbnail database is missing. |
| 2114 EXPECT_FALSE(delegate_.favicon_details()); | 2110 EXPECT_FALSE(delegate_.favicon_changed()); |
| 2115 } | 2111 } |
| 2116 | 2112 |
| 2117 } // namespace history | 2113 } // namespace history |
| OLD | NEW |