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

Unified Diff: chrome/browser/favicon/favicon_handler_unittest.cc

Issue 684983003: Add Observer in FaviconTabHelper (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addresses comments and sync Created 6 years, 1 month 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
« no previous file with comments | « chrome/browser/favicon/favicon_handler.cc ('k') | chrome/browser/favicon/favicon_tab_helper.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/favicon/favicon_handler_unittest.cc
diff --git a/chrome/browser/favicon/favicon_handler_unittest.cc b/chrome/browser/favicon/favicon_handler_unittest.cc
index f0e2f24b109b7f69a149520a911013a75629ea50..266d1a8ed7e60f3737c722aefbaeb6363315e163 100644
--- a/chrome/browser/favicon/favicon_handler_unittest.cc
+++ b/chrome/browser/favicon/favicon_handler_unittest.cc
@@ -189,7 +189,10 @@ class TestFaviconClient : public FaviconClient {
class TestFaviconDriver : public FaviconDriver {
public:
- TestFaviconDriver() : favicon_validity_(false) {}
+ TestFaviconDriver()
+ : favicon_validity_(false),
+ num_favicon_available_(0),
+ update_active_favicon_(false) {}
virtual ~TestFaviconDriver() {
}
@@ -204,13 +207,11 @@ class TestFaviconDriver : public FaviconDriver {
const GURL GetActiveURL() override { return url_; }
- void SetActiveFaviconImage(gfx::Image image) override { image_ = image; }
+ void SetActiveFaviconImage(gfx::Image image) { image_ = image; }
- void SetActiveFaviconURL(GURL favicon_url) override {
- favicon_url_ = favicon_url;
- }
+ void SetActiveFaviconURL(GURL favicon_url) { favicon_url_ = favicon_url; }
- void SetActiveFaviconValidity(bool favicon_validity) override {
+ void SetActiveFaviconValidity(bool favicon_validity) {
favicon_validity_ = favicon_validity;
}
@@ -220,18 +221,45 @@ class TestFaviconDriver : public FaviconDriver {
return -1;
}
- void NotifyFaviconUpdated(bool icon_url_changed) override {
- ADD_FAILURE() << "TestFaviconDriver::NotifyFaviconUpdated() "
- << "should never be called in tests.";
+ void OnFaviconAvailable(const gfx::Image& image,
+ const GURL& icon_url,
+ bool update_active_favicon) override {
+ available_image_ = image;
+ available_icon_url_ = icon_url;
+ update_active_favicon_ = update_active_favicon;
+ if (!update_active_favicon)
+ return;
+
+ ++num_favicon_available_;
+ SetActiveFaviconURL(icon_url);
+ SetActiveFaviconValidity(true);
+ SetActiveFaviconImage(image);
}
+ size_t num_favicon_available() const { return num_favicon_available_; }
+
+ void ResetNumFaviconAvailable() { num_favicon_available_ = 0; }
+
void SetActiveURL(GURL url) { url_ = url; }
+ const gfx::Image available_favicon() { return available_image_; }
+
+ const GURL available_icon_url() { return available_icon_url_; }
+
+ bool update_active_favicon() { return update_active_favicon_; }
+
private:
GURL favicon_url_;
GURL url_;
gfx::Image image_;
bool favicon_validity_;
+
+ // The number of times that NotifyFaviconAvailable() has been called.
+ size_t num_favicon_available_;
+ gfx::Image available_image_;
+ GURL available_icon_url_;
+ bool update_active_favicon_;
+
DISALLOW_COPY_AND_ASSIGN(TestFaviconDriver);
};
@@ -250,8 +278,7 @@ class TestFaviconHandler : public FaviconHandler {
Type type,
bool download_largest_icon)
: FaviconHandler(client, driver, type, download_largest_icon),
- download_id_(0),
- num_favicon_updates_(0) {
+ download_id_(0) {
driver->SetActiveURL(page_url);
download_handler_.reset(new DownloadHandler(this));
}
@@ -271,14 +298,6 @@ class TestFaviconHandler : public FaviconHandler {
return download_handler_.get();
}
- size_t num_favicon_update_notifications() const {
- return num_favicon_updates_;
- }
-
- void ResetNumFaviconUpdateNotifications() {
- num_favicon_updates_ = 0;
- }
-
// Methods to access favicon internals.
const std::vector<FaviconURL>& urls() {
return image_urls_;
@@ -343,10 +362,6 @@ class TestFaviconHandler : public FaviconHandler {
bool ShouldSaveFavicon(const GURL& url) override { return true; }
- void NotifyFaviconUpdated(bool icon_url_changed) override {
- ++num_favicon_updates_;
- }
-
GURL page_url_;
private:
@@ -358,9 +373,6 @@ class TestFaviconHandler : public FaviconHandler {
scoped_ptr<DownloadHandler> download_handler_;
scoped_ptr<HistoryRequestHandler> history_handler_;
- // The number of times that NotifyFaviconUpdated() has been called.
- size_t num_favicon_updates_;
-
DISALLOW_COPY_AND_ASSIGN(TestFaviconHandler);
};
@@ -410,11 +422,13 @@ class FaviconHandlerTest : public ChromeRenderViewHostTestHarness {
// - The favicons at |candidate_icons| have edge pixel sizes of
// |candidate_icon_sizes|.
void DownloadTillDoneIgnoringHistory(
+ TestFaviconDriver* favicon_driver,
TestFaviconHandler* favicon_handler,
const GURL& page_url,
const std::vector<FaviconURL>& candidate_icons,
const int* candidate_icon_sizes) {
- UpdateFaviconURL(favicon_handler, page_url, candidate_icons);
+ UpdateFaviconURL(
+ favicon_driver, favicon_handler, page_url, candidate_icons);
EXPECT_EQ(candidate_icons.size(), favicon_handler->image_urls().size());
DownloadHandler* download_handler = favicon_handler->download_handler();
@@ -429,16 +443,16 @@ class FaviconHandlerTest : public ChromeRenderViewHostTestHarness {
download_handler->SetImageSizes(sizes);
download_handler->InvokeCallback();
- if (favicon_handler->num_favicon_update_notifications())
+ if (favicon_driver->num_favicon_available())
return;
}
}
- void UpdateFaviconURL(
- TestFaviconHandler* favicon_handler,
- const GURL& page_url,
- const std::vector<FaviconURL>& candidate_icons) {
- favicon_handler->ResetNumFaviconUpdateNotifications();
+ void UpdateFaviconURL(TestFaviconDriver* favicon_driver,
+ TestFaviconHandler* favicon_handler,
+ const GURL& page_url,
+ const std::vector<FaviconURL>& candidate_icons) {
+ favicon_driver->ResetNumFaviconAvailable();
favicon_handler->FetchFavicon(page_url);
favicon_handler->history_handler()->InvokeCallback();
@@ -1070,7 +1084,8 @@ TEST_F(FaviconHandlerTest, MultipleFavicons) {
const int kSizes1[] = { 16, 24, 32, 48, 256 };
std::vector<FaviconURL> urls1(kSourceIconURLs,
kSourceIconURLs + arraysize(kSizes1));
- DownloadTillDoneIgnoringHistory(&handler1, kPageURL, urls1, kSizes1);
+ DownloadTillDoneIgnoringHistory(
+ &driver1, &handler1, kPageURL, urls1, kSizes1);
EXPECT_EQ(0u, handler1.image_urls().size());
EXPECT_TRUE(driver1.GetActiveFaviconValidity());
@@ -1091,7 +1106,8 @@ TEST_F(FaviconHandlerTest, MultipleFavicons) {
const int kSizes2[] = { 16, 24, 48, 256 };
std::vector<FaviconURL> urls2(kSourceIconURLs,
kSourceIconURLs + arraysize(kSizes2));
- DownloadTillDoneIgnoringHistory(&handler2, kPageURL, urls2, kSizes2);
+ DownloadTillDoneIgnoringHistory(
+ &driver2, &handler2, kPageURL, urls2, kSizes2);
EXPECT_TRUE(driver2.GetActiveFaviconValidity());
expected_index = 0u;
EXPECT_EQ(16, kSizes2[expected_index]);
@@ -1107,7 +1123,8 @@ TEST_F(FaviconHandlerTest, MultipleFavicons) {
const int kSizes3[] = { 256, 48 };
std::vector<FaviconURL> urls3(kSourceIconURLs,
kSourceIconURLs + arraysize(kSizes3));
- DownloadTillDoneIgnoringHistory(&handler3, kPageURL, urls3, kSizes3);
+ DownloadTillDoneIgnoringHistory(
+ &driver3, &handler3, kPageURL, urls3, kSizes3);
EXPECT_TRUE(driver3.GetActiveFaviconValidity());
expected_index = 1u;
EXPECT_EQ(48, kSizes3[expected_index]);
@@ -1121,7 +1138,8 @@ TEST_F(FaviconHandlerTest, MultipleFavicons) {
const int kSizes4[] = { 17, 256 };
std::vector<FaviconURL> urls4(kSourceIconURLs,
kSourceIconURLs + arraysize(kSizes4));
- DownloadTillDoneIgnoringHistory(&handler4, kPageURL, urls4, kSizes4);
+ DownloadTillDoneIgnoringHistory(
+ &driver4, &handler4, kPageURL, urls4, kSizes4);
EXPECT_TRUE(driver4.GetActiveFaviconValidity());
expected_index = 0u;
EXPECT_EQ(17, kSizes4[expected_index]);
@@ -1162,7 +1180,7 @@ TEST_F(FaviconHandlerTest, TestSortFavicon) {
kPageURL, &client, &driver1, FaviconHandler::FAVICON, true);
std::vector<FaviconURL> urls1(kSourceIconURLs,
kSourceIconURLs + arraysize(kSourceIconURLs));
- UpdateFaviconURL(&handler1, kPageURL, urls1);
+ UpdateFaviconURL(&driver1, &handler1, kPageURL, urls1);
struct ExpectedResult {
// The favicon's index in kSourceIconURLs.
@@ -1226,7 +1244,7 @@ TEST_F(FaviconHandlerTest, TestDownloadLargestFavicon) {
kPageURL, &client, &driver1, FaviconHandler::FAVICON, true);
std::vector<FaviconURL> urls1(kSourceIconURLs,
kSourceIconURLs + arraysize(kSourceIconURLs));
- UpdateFaviconURL(&handler1, kPageURL, urls1);
+ UpdateFaviconURL(&driver1, &handler1, kPageURL, urls1);
// Simulate the download failed, to check whether the icons were requested
// to download according their size.
@@ -1292,7 +1310,7 @@ TEST_F(FaviconHandlerTest, TestSelectLargestFavicon) {
kPageURL, &client, &driver1, FaviconHandler::FAVICON, true);
std::vector<FaviconURL> urls1(kSourceIconURLs,
kSourceIconURLs + arraysize(kSourceIconURLs));
- UpdateFaviconURL(&handler1, kPageURL, urls1);
+ UpdateFaviconURL(&driver1, &handler1, kPageURL, urls1);
ASSERT_EQ(2u, handler1.urls().size());
@@ -1330,6 +1348,11 @@ TEST_F(FaviconHandlerTest, TestSelectLargestFavicon) {
EXPECT_EQ(kSourceIconURLs[i].icon_url, handler1.history_handler()->icon_url_);
EXPECT_EQ(kSourceIconURLs[i].icon_sizes[b],
handler1.history_handler()->size_);
+ // Verify NotifyFaviconAvailable().
+ EXPECT_FALSE(driver1.update_active_favicon());
+ EXPECT_EQ(kSourceIconURLs[i].icon_url, driver1.available_icon_url());
+ EXPECT_EQ(kSourceIconURLs[i].icon_sizes[b],
+ driver1.available_favicon().Size());
}
TEST_F(FaviconHandlerTest, TestFaviconWasScaledAfterDownload) {
@@ -1355,7 +1378,7 @@ TEST_F(FaviconHandlerTest, TestFaviconWasScaledAfterDownload) {
kPageURL, &client, &driver1, FaviconHandler::FAVICON, true);
std::vector<FaviconURL> urls1(kSourceIconURLs,
kSourceIconURLs + arraysize(kSourceIconURLs));
- UpdateFaviconURL(&handler1, kPageURL, urls1);
+ UpdateFaviconURL(&driver1, &handler1, kPageURL, urls1);
ASSERT_EQ(2u, handler1.urls().size());
@@ -1417,7 +1440,7 @@ TEST_F(FaviconHandlerTest, TestKeepDownloadedLargestFavicon) {
kPageURL, &client, &driver1, FaviconHandler::FAVICON, true);
std::vector<FaviconURL> urls1(kSourceIconURLs,
kSourceIconURLs + arraysize(kSourceIconURLs));
- UpdateFaviconURL(&handler1, kPageURL, urls1);
+ UpdateFaviconURL(&driver1, &handler1, kPageURL, urls1);
ASSERT_EQ(3u, handler1.urls().size());
// Simulate no favicon from history.
« no previous file with comments | « chrome/browser/favicon/favicon_handler.cc ('k') | chrome/browser/favicon/favicon_tab_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698