| 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 ad19e9523446f9d3d4b69f86267cca5bee0a873d..0c75c52a22d38e76bbd200648c50ee2be985e97e 100644
|
| --- a/components/favicon/content/content_favicon_driver_unittest.cc
|
| +++ b/components/favicon/content/content_favicon_driver_unittest.cc
|
| @@ -5,14 +5,15 @@
|
| #include "components/favicon/content/content_favicon_driver.h"
|
|
|
| #include <memory>
|
| +#include <vector>
|
|
|
| #include "base/macros.h"
|
| #include "components/favicon/core/favicon_client.h"
|
| -#include "components/favicon/core/favicon_handler.h"
|
| -#include "components/favicon/core/favicon_service.h"
|
| +#include "components/favicon/core/test/mock_favicon_service.h"
|
| #include "content/public/browser/web_contents_observer.h"
|
| #include "content/public/common/favicon_url.h"
|
| #include "content/public/test/test_renderer_host.h"
|
| +#include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "third_party/skia/include/core/SkBitmap.h"
|
| #include "ui/gfx/favicon_size.h"
|
| @@ -20,8 +21,11 @@
|
| namespace favicon {
|
| namespace {
|
|
|
| +using testing::Mock;
|
| +using testing::Return;
|
| +
|
| class ContentFaviconDriverTest : public content::RenderViewHostTestHarness {
|
| - public:
|
| + protected:
|
| ContentFaviconDriverTest() {}
|
|
|
| ~ContentFaviconDriverTest() override {}
|
| @@ -30,26 +34,17 @@ class ContentFaviconDriverTest : public content::RenderViewHostTestHarness {
|
| void SetUp() override {
|
| RenderViewHostTestHarness::SetUp();
|
|
|
| - favicon_service_.reset(new FaviconService(nullptr, nullptr));
|
| ContentFaviconDriver::CreateForWebContents(
|
| - web_contents(), favicon_service(), nullptr, nullptr);
|
| - }
|
| -
|
| - FaviconService* favicon_service() {
|
| - return favicon_service_.get();
|
| + web_contents(), &favicon_service_, nullptr, nullptr);
|
| }
|
|
|
| - private:
|
| - std::unique_ptr<FaviconService> favicon_service_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ContentFaviconDriverTest);
|
| + testing::StrictMock<MockFaviconService> favicon_service_;
|
| };
|
|
|
| // Test that Favicon is not requested repeatedly during the same session if
|
| // server returns HTTP 404 status.
|
| TEST_F(ContentFaviconDriverTest, UnableToDownloadFavicon) {
|
| const GURL missing_icon_url("http://www.google.com/favicon.ico");
|
| - const GURL another_icon_url("http://www.youtube.com/favicon.ico");
|
|
|
| ContentFaviconDriver* content_favicon_driver =
|
| ContentFaviconDriver::FromWebContents(web_contents());
|
| @@ -59,54 +54,37 @@ TEST_F(ContentFaviconDriverTest, UnableToDownloadFavicon) {
|
| int download_id = 0;
|
|
|
| // Try to download missing icon.
|
| + EXPECT_CALL(favicon_service_, WasUnableToDownloadFavicon(missing_icon_url))
|
| + .WillOnce(Return(false));
|
| download_id = content_favicon_driver->StartDownload(missing_icon_url, 0);
|
| EXPECT_NE(0, download_id);
|
| - EXPECT_FALSE(favicon_service()->WasUnableToDownloadFavicon(missing_icon_url));
|
|
|
| // Report download failure with HTTP 503 status.
|
| content_favicon_driver->DidDownloadFavicon(download_id, 503, missing_icon_url,
|
| empty_icons, empty_icon_sizes);
|
| - // Icon is not marked as UnableToDownload as HTTP status is not 404.
|
| - EXPECT_FALSE(favicon_service()->WasUnableToDownloadFavicon(missing_icon_url));
|
| + Mock::VerifyAndClearExpectations(&favicon_service_);
|
|
|
| // Try to download again.
|
| + EXPECT_CALL(favicon_service_, WasUnableToDownloadFavicon(missing_icon_url))
|
| + .WillOnce(Return(false));
|
| download_id = content_favicon_driver->StartDownload(missing_icon_url, 0);
|
| EXPECT_NE(0, download_id);
|
| - EXPECT_FALSE(favicon_service()->WasUnableToDownloadFavicon(missing_icon_url));
|
| + Mock::VerifyAndClearExpectations(&favicon_service_);
|
|
|
| - // Report download failure with HTTP 404 status.
|
| + // Report download failure with HTTP 404 status, which causes the icon to be
|
| + // marked as UnableToDownload.
|
| + EXPECT_CALL(favicon_service_, UnableToDownloadFavicon(missing_icon_url));
|
| content_favicon_driver->DidDownloadFavicon(download_id, 404, missing_icon_url,
|
| empty_icons, empty_icon_sizes);
|
| - // Icon is marked as UnableToDownload.
|
| - EXPECT_TRUE(favicon_service()->WasUnableToDownloadFavicon(missing_icon_url));
|
| + Mock::VerifyAndClearExpectations(&favicon_service_);
|
|
|
| // Try to download again.
|
| + EXPECT_CALL(favicon_service_, WasUnableToDownloadFavicon(missing_icon_url))
|
| + .WillOnce(Return(true));
|
| download_id = content_favicon_driver->StartDownload(missing_icon_url, 0);
|
| // Download is not started and Icon is still marked as UnableToDownload.
|
| EXPECT_EQ(0, download_id);
|
| - EXPECT_TRUE(favicon_service()->WasUnableToDownloadFavicon(missing_icon_url));
|
| -
|
| - // Try to download another icon.
|
| - download_id = content_favicon_driver->StartDownload(another_icon_url, 0);
|
| - // Download is started as another icon URL is not same as missing_icon_url.
|
| - EXPECT_NE(0, download_id);
|
| - EXPECT_FALSE(favicon_service()->WasUnableToDownloadFavicon(another_icon_url));
|
| -
|
| - // Clear the list of missing icons.
|
| - favicon_service()->ClearUnableToDownloadFavicons();
|
| - EXPECT_FALSE(favicon_service()->WasUnableToDownloadFavicon(missing_icon_url));
|
| - EXPECT_FALSE(favicon_service()->WasUnableToDownloadFavicon(another_icon_url));
|
| -
|
| - // Try to download again.
|
| - download_id = content_favicon_driver->StartDownload(missing_icon_url, 0);
|
| - EXPECT_NE(0, download_id);
|
| - // Report download success with HTTP 200 status.
|
| - content_favicon_driver->DidDownloadFavicon(download_id, 200, missing_icon_url,
|
| - empty_icons, empty_icon_sizes);
|
| - // Icon is not marked as UnableToDownload as HTTP status is not 404.
|
| - EXPECT_FALSE(favicon_service()->WasUnableToDownloadFavicon(missing_icon_url));
|
| -
|
| - favicon_service()->Shutdown();
|
| + Mock::VerifyAndClearExpectations(&favicon_service_);
|
| }
|
|
|
| // Test that ContentFaviconDriver ignores updated favicon URLs if there is no
|
|
|