Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8700)

Unified Diff: chrome/browser/history/history_backend_unittest.cc

Issue 15275004: bookmarks: Get rid of the dependency on history_notifications.h (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: more android fixes Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/history/history_backend_unittest.cc
diff --git a/chrome/browser/history/history_backend_unittest.cc b/chrome/browser/history/history_backend_unittest.cc
index 2c8f15960e76cc497e4daba9f5a48004508337a8..f0bb15effbe113068490df660e2f1fafca6b18e8 100644
--- a/chrome/browser/history/history_backend_unittest.cc
+++ b/chrome/browser/history/history_backend_unittest.cc
@@ -19,10 +19,14 @@
#include "base/strings/string_number_conversions.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/bookmarks/bookmark_model.h"
+#include "chrome/browser/bookmarks/bookmark_model_factory.h"
#include "chrome/browser/bookmarks/bookmark_utils.h"
+#include "chrome/browser/favicon/favicon_changed_details.h"
#include "chrome/browser/favicon/imported_favicon_usage.h"
#include "chrome/browser/history/history_backend.h"
#include "chrome/browser/history/history_notifications.h"
+#include "chrome/browser/history/history_service.h"
+#include "chrome/browser/history/history_service_factory.h"
#include "chrome/browser/history/in_memory_database.h"
#include "chrome/browser/history/in_memory_history_backend.h"
#include "chrome/browser/history/visit_filter.h"
@@ -30,9 +34,12 @@
#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/thumbnail_score.h"
+#include "chrome/test/base/testing_profile.h"
+#include "chrome/test/base/ui_test_utils.h"
#include "chrome/tools/profiles/thumbnail-inl.h"
#include "content/public/browser/notification_details.h"
#include "content/public/browser/notification_source.h"
+#include "content/public/test/test_browser_thread.h"
#include "googleurl/src/gurl.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/skia/include/core/SkBitmap.h"
@@ -85,6 +92,8 @@ class HistoryBackendTestDelegate : public HistoryBackend::Delegate {
sql::InitStatus init_status) OVERRIDE {}
virtual void SetInMemoryBackend(int backend_id,
InMemoryHistoryBackend* backend) OVERRIDE;
+ virtual void SendFaviconChangedNotification(
+ chrome::FaviconChangedDetails* details) OVERRIDE;
virtual void BroadcastNotifications(int type,
HistoryDetails* details) OVERRIDE;
virtual void DBLoaded(int backend_id) OVERRIDE;
@@ -118,7 +127,9 @@ class HistoryBackendTest : public testing::Test {
HistoryBackendTest()
: bookmark_model_(NULL),
loaded_(false),
- num_broadcasted_notifications_(0) {
+ num_favicon_notifications_(0),
+ num_broadcasted_notifications_(0),
+ ui_thread_(content::BrowserThread::UI, &message_loop_) {
}
virtual ~HistoryBackendTest() {
@@ -144,6 +155,8 @@ class HistoryBackendTest : public testing::Test {
return filtered_list_;
}
+ int num_favicon_notifications() const { return num_favicon_notifications_; }
+
int num_broadcasted_notifications() const {
return num_broadcasted_notifications_;
}
@@ -391,6 +404,12 @@ class HistoryBackendTest : public testing::Test {
mem_backend_.reset(backend);
}
+ void SendFaviconChangedNotification(chrome::FaviconChangedDetails* details) {
+ ++num_favicon_notifications_;
+ // The backend passes ownership of the details pointer to us.
+ delete details;
+ }
+
void BroadcastNotifications(int type,
HistoryDetails* details) {
++num_broadcasted_notifications_;
@@ -403,10 +422,15 @@ class HistoryBackendTest : public testing::Test {
delete details;
}
+ // The number of chrome::NOTIFICATION_FAVICON_CHANGED notifications that were
+ // dispatched.
+ int num_favicon_notifications_;
+
// The number of notifications which were broadcasted.
int num_broadcasted_notifications_;
MessageLoop message_loop_;
+ content::TestBrowserThread ui_thread_;
base::FilePath test_dir_;
history::MostVisitedURLList most_visited_list_;
history::FilteredURLList filtered_list_;
@@ -417,6 +441,11 @@ void HistoryBackendTestDelegate::SetInMemoryBackend(int backend_id,
test_->SetInMemoryBackend(backend_id, backend);
}
+void HistoryBackendTestDelegate::SendFaviconChangedNotification(
+ chrome::FaviconChangedDetails* details) {
+ test_->SendFaviconChangedNotification(details);
+}
+
void HistoryBackendTestDelegate::BroadcastNotifications(
int type,
HistoryDetails* details) {
@@ -1476,7 +1505,7 @@ TEST_F(HistoryBackendTest, SetFaviconsDeleteBitmaps) {
&icon_mappings));
// Notifications should have been broadcast for each call to SetFavicons().
- EXPECT_EQ(3, num_broadcasted_notifications());
+ EXPECT_EQ(3, num_favicon_notifications());
}
// Test updating a single favicon bitmap's data via SetFavicons.
@@ -1507,7 +1536,7 @@ TEST_F(HistoryBackendTest, SetFaviconsReplaceBitmapData) {
GetOnlyFaviconBitmap(original_favicon_id, &original_favicon_bitmap));
EXPECT_TRUE(BitmapDataEqual('a', original_favicon_bitmap.bitmap_data));
- EXPECT_EQ(1, num_broadcasted_notifications());
+ EXPECT_EQ(1, num_favicon_notifications());
// Call SetFavicons() with completely identical data.
std::vector<unsigned char> updated_data;
@@ -1526,7 +1555,7 @@ TEST_F(HistoryBackendTest, SetFaviconsReplaceBitmapData) {
// Because the bitmap data is byte equivalent, no notifications should have
// been broadcasted.
- EXPECT_EQ(1, num_broadcasted_notifications());
+ EXPECT_EQ(1, num_favicon_notifications());
// Call SetFavicons() with identical data but a different bitmap.
updated_data[0] = 'b';
@@ -1549,7 +1578,7 @@ TEST_F(HistoryBackendTest, SetFaviconsReplaceBitmapData) {
// A notification should have been broadcasted as the favicon bitmap data has
// changed.
- EXPECT_EQ(2, num_broadcasted_notifications());
+ EXPECT_EQ(2, num_favicon_notifications());
}
// Test that if two pages share the same FaviconID, changing the favicon for
@@ -1621,7 +1650,7 @@ TEST_F(HistoryBackendTest, SetFaviconsSameFaviconURLForTwoPages) {
// A notification should have been broadcast for each call to SetFavicons()
// and each call to UpdateFaviconMappingsAndFetch().
- EXPECT_EQ(3, num_broadcasted_notifications());
+ EXPECT_EQ(3, num_favicon_notifications());
}
// Test that no notifications are broadcast as a result of calling
@@ -1639,7 +1668,7 @@ TEST_F(HistoryBackendTest, UpdateFaviconMappingsAndFetchNoChange) {
backend_->thumbnail_db_->GetFaviconIDForFaviconURL(
icon_url, chrome::FAVICON, NULL);
EXPECT_NE(0, icon_id);
- EXPECT_EQ(1, num_broadcasted_notifications());
+ EXPECT_EQ(1, num_favicon_notifications());
std::vector<GURL> icon_urls;
icon_urls.push_back(icon_url);
@@ -1654,7 +1683,7 @@ TEST_F(HistoryBackendTest, UpdateFaviconMappingsAndFetchNoChange) {
// No notification should have been broadcast as no icon mapping, favicon,
// or favicon bitmap was updated, added or removed.
- EXPECT_EQ(1, num_broadcasted_notifications());
+ EXPECT_EQ(1, num_favicon_notifications());
}
// Test repeatedly calling MergeFavicon(). |page_url| is initially not known
@@ -1729,7 +1758,7 @@ TEST_F(HistoryBackendTest, MergeFaviconPageURLInDB) {
EXPECT_TRUE(BitmapDataEqual('a', favicon_bitmap.bitmap_data));
EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size);
- EXPECT_EQ(1, num_broadcasted_notifications());
+ EXPECT_EQ(1, num_favicon_notifications());
// 1) Merge identical favicon bitmap.
std::vector<unsigned char> data;
@@ -1752,7 +1781,7 @@ TEST_F(HistoryBackendTest, MergeFaviconPageURLInDB) {
EXPECT_TRUE(BitmapDataEqual('a', favicon_bitmap.bitmap_data));
EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size);
- EXPECT_EQ(1, num_broadcasted_notifications());
+ EXPECT_EQ(1, num_favicon_notifications());
// 2) Merge favicon bitmap of the same size.
data[0] = 'b';
@@ -1826,7 +1855,7 @@ TEST_F(HistoryBackendTest, MergeFaviconPageURLInDB) {
// A notification should have been broadcast for each call to SetFavicons()
// and MergeFavicon().
- EXPECT_EQ(4, num_broadcasted_notifications());
+ EXPECT_EQ(4, num_favicon_notifications());
}
// Test calling MergeFavicon() when |icon_url| is known to the database but not
@@ -1911,7 +1940,7 @@ TEST_F(HistoryBackendTest, MergeFaviconIconURLMappedToDifferentPageURL) {
// A notification should have been broadcast for each call to SetFavicons()
// and MergeFavicon().
- EXPECT_EQ(3, num_broadcasted_notifications());
+ EXPECT_EQ(3, num_favicon_notifications());
}
// Test that MergeFavicon() does not add more than
@@ -2781,4 +2810,35 @@ TEST_F(HistoryBackendSegmentDurationTest, SegmentDuration) {
EXPECT_EQ(segment1_time_delta.InHours(), data[1]->duration().InHours());
}
+// Simple test that removes a bookmark. This test exercises the code paths in
+// History that block till bookmark bar model is loaded.
+TEST_F(HistoryBackendTest, RemoveNotification) {
+ scoped_ptr<TestingProfile> profile(new TestingProfile());
+ profile->CreateHistoryService(false, false);
+ profile->CreateBookmarkModel(true);
+
+ BookmarkModel* model = BookmarkModelFactory::GetForProfile(profile.get());
+ ui_test_utils::WaitForBookmarkModelToLoad(model);
+
+ // Add a URL.
+ GURL url("http://www.google.com");
+ bookmark_utils::AddIfNotBookmarked(model, url, string16());
+
+ HistoryService* service = HistoryServiceFactory::GetForProfile(
+ profile.get(), Profile::EXPLICIT_ACCESS);
+ service->AddPage(url,
+ base::Time::Now(),
+ NULL,
+ 1,
+ GURL(),
+ RedirectList(),
+ content::PAGE_TRANSITION_TYPED,
+ SOURCE_BROWSED,
+ false);
+
+ // This won't actually delete the URL, rather it'll empty out the visits.
+ // This triggers blocking on the BookmarkModel.
+ service->DeleteURL(url);
+}
+
} // namespace history

Powered by Google App Engine
This is Rietveld 408576698