Index: components/favicon/content/content_favicon_driver_unittest.cc |
diff --git a/components/favicon/content/content_favicon_driver_unittest.cc b/components/favicon/content/content_favicon_driver_unittest.cc |
index d1ede99adfffb8888b2b18cecbb4c564245131ae..73769c5f2f222429a58d1a09df570d5584f7127b 100644 |
--- a/components/favicon/content/content_favicon_driver_unittest.cc |
+++ b/components/favicon/content/content_favicon_driver_unittest.cc |
@@ -9,6 +9,7 @@ |
#include "base/macros.h" |
#include "base/run_loop.h" |
+#include "base/test/histogram_tester.h" |
#include "components/favicon/core/favicon_client.h" |
#include "components/favicon/core/favicon_handler.h" |
#include "components/favicon/core/test/mock_favicon_service.h" |
@@ -24,6 +25,7 @@ |
namespace favicon { |
namespace { |
+using testing::ElementsAre; |
using testing::Return; |
using testing::_; |
@@ -135,9 +137,9 @@ TEST_F(ContentFaviconDriverTest, FaviconUpdateNoLastCommittedEntry) { |
ASSERT_EQ(nullptr, web_contents()->GetController().GetLastCommittedEntry()); |
std::vector<content::FaviconURL> favicon_urls; |
- favicon_urls.push_back(content::FaviconURL( |
- GURL("http://www.google.ca/favicon.ico"), content::FaviconURL::FAVICON, |
- std::vector<gfx::Size>())); |
+ favicon_urls.push_back( |
+ content::FaviconURL(GURL("http://www.google.ca/favicon.ico"), |
+ content::FaviconURL::FAVICON, kEmptyIconSizes)); |
favicon::ContentFaviconDriver* driver = |
favicon::ContentFaviconDriver::FromWebContents(web_contents()); |
static_cast<content::WebContentsObserver*>(driver) |
@@ -147,5 +149,49 @@ TEST_F(ContentFaviconDriverTest, FaviconUpdateNoLastCommittedEntry) { |
EXPECT_TRUE(driver->favicon_urls().empty()); |
} |
+TEST_F(ContentFaviconDriverTest, RecordsHistorgramsForCandidates) { |
+ const std::vector<gfx::Size> kSizes16x16and32x32({{16, 16}, {32, 32}}); |
+ base::HistogramTester tester; |
+ content::WebContentsObserver* driver_as_observer = |
+ ContentFaviconDriver::FromWebContents(web_contents()); |
+ |
+ // Navigation to a page updating one icon. |
+ NavigateAndCommit(GURL("http://www.youtube.com")); |
+ driver_as_observer->DidUpdateFaviconURL( |
+ {content::FaviconURL(GURL("http://www.youtube.com/favicon.ico"), |
+ content::FaviconURL::FAVICON, kSizes16x16and32x32)}); |
+ |
+ EXPECT_THAT(tester.GetAllSamples("Favicons.CandidatesCount"), |
+ ElementsAre(base::Bucket(/*min=*/1, /*count=*/1))); |
+ EXPECT_THAT(tester.GetAllSamples("Favicons.CandidatesWithDefinedSizesCount"), |
+ ElementsAre(base::Bucket(/*min=*/1, /*count=*/1))); |
+ EXPECT_THAT(tester.GetAllSamples("Favicons.CandidatesWithTouchIconsCount"), |
+ ElementsAre(base::Bucket(/*min=*/0, /*count=*/1))); |
+ |
+ std::vector<content::FaviconURL> favicon_urls = { |
+ content::FaviconURL(GURL("http://www.google.ca/favicon.ico"), |
+ content::FaviconURL::FAVICON, kSizes16x16and32x32), |
+ content::FaviconURL(GURL("http://www.google.ca/precomposed_icon.png"), |
+ content::FaviconURL::TOUCH_PRECOMPOSED_ICON, |
+ kEmptyIconSizes), |
+ content::FaviconURL(GURL("http://www.google.ca/touch_icon.png"), |
+ content::FaviconURL::TOUCH_ICON, kEmptyIconSizes)}; |
+ |
+ // Double navigation to a page with 3 different icons. |
+ NavigateAndCommit(GURL("http://www.google.ca")); |
+ driver_as_observer->DidUpdateFaviconURL(favicon_urls); |
+ NavigateAndCommit(GURL("http://www.google.ca")); |
+ driver_as_observer->DidUpdateFaviconURL(favicon_urls); |
+ |
+ EXPECT_THAT(tester.GetAllSamples("Favicons.CandidatesCount"), |
+ ElementsAre(base::Bucket(/*min=*/1, /*count=*/1), |
+ base::Bucket(/*min=*/3, /*count=*/2))); |
+ EXPECT_THAT(tester.GetAllSamples("Favicons.CandidatesWithDefinedSizesCount"), |
+ ElementsAre(base::Bucket(/*min=*/1, /*count=*/3))); |
+ EXPECT_THAT(tester.GetAllSamples("Favicons.CandidatesWithTouchIconsCount"), |
+ ElementsAre(base::Bucket(/*min=*/0, /*count=*/1), |
+ base::Bucket(/*min=*/2, /*count=*/2))); |
+} |
+ |
} // namespace |
} // namespace favicon |