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

Side by Side Diff: components/favicon/core/favicon_handler_unittest.cc

Issue 2739173002: Always select best favicon bitmap (Closed)
Patch Set: Return default value after NOTREACHED. Created 3 years, 8 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 unified diff | Download patch
OLDNEW
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 "components/favicon/core/favicon_handler.h" 5 #include "components/favicon/core/favicon_handler.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <map>
9 #include <memory> 10 #include <memory>
10 #include <set> 11 #include <set>
11 #include <vector> 12 #include <vector>
12 13
13 #include "base/macros.h" 14 #include "base/macros.h"
14 #include "base/memory/ptr_util.h" 15 #include "base/memory/ptr_util.h"
15 #include "base/message_loop/message_loop.h" 16 #include "base/message_loop/message_loop.h"
16 #include "base/run_loop.h" 17 #include "base/run_loop.h"
17 #include "base/strings/stringprintf.h" 18 #include "base/strings/stringprintf.h"
18 #include "components/favicon/core/favicon_driver.h" 19 #include "components/favicon/core/favicon_driver.h"
(...skipping 862 matching lines...) Expand 10 before | Expand all | Expand 10 after
881 const GURL kInvalidFormatURL("invalid"); 882 const GURL kInvalidFormatURL("invalid");
882 ASSERT_TRUE(kInvalidFormatURL.is_empty()); 883 ASSERT_TRUE(kInvalidFormatURL.is_empty());
883 884
884 EXPECT_CALL(delegate_, OnFaviconUpdated(_, _, _, _, _)).Times(0); 885 EXPECT_CALL(delegate_, OnFaviconUpdated(_, _, _, _, _)).Times(0);
885 886
886 RunHandlerWithSimpleFaviconCandidates({kInvalidFormatURL}); 887 RunHandlerWithSimpleFaviconCandidates({kInvalidFormatURL});
887 EXPECT_THAT(delegate_.downloads(), IsEmpty()); 888 EXPECT_THAT(delegate_.downloads(), IsEmpty());
888 } 889 }
889 890
890 TEST_F(FaviconHandlerTest, TestSortFavicon) { 891 TEST_F(FaviconHandlerTest, TestSortFavicon) {
892 // Names represent the bitmap sizes per icon.
893 const GURL kIconURL1_17("http://www.google.com/a");
894 const GURL kIconURL1024_512("http://www.google.com/b");
895 const GURL kIconURL16_14("http://www.google.com/c");
896 const GURL kIconURLWithoutSize1("http://www.google.com/d");
897 const GURL kIconURLWithoutSize2("http://www.google.com/e");
898
891 const std::vector<favicon::FaviconURL> kSourceIconURLs{ 899 const std::vector<favicon::FaviconURL> kSourceIconURLs{
892 FaviconURL(GURL("http://www.google.com/a"), FAVICON, 900 FaviconURL(kIconURL1_17, FAVICON, {gfx::Size(1, 1), gfx::Size(17, 17)}),
893 {gfx::Size(1, 1), gfx::Size(17, 17)}), 901 FaviconURL(kIconURL1024_512, FAVICON,
894 FaviconURL(GURL("http://www.google.com/b"), FAVICON,
895 {gfx::Size(1024, 1024), gfx::Size(512, 512)}), 902 {gfx::Size(1024, 1024), gfx::Size(512, 512)}),
896 FaviconURL(GURL("http://www.google.com/c"), FAVICON, 903 FaviconURL(kIconURL16_14, FAVICON,
897 {gfx::Size(16, 16), gfx::Size(14, 14)}), 904 {gfx::Size(16, 16), gfx::Size(14, 14)}),
898 FaviconURL(GURL("http://www.google.com/d"), FAVICON, kEmptySizes), 905 FaviconURL(kIconURLWithoutSize1, FAVICON, kEmptySizes),
899 FaviconURL(GURL("http://www.google.com/e"), FAVICON, kEmptySizes)}; 906 FaviconURL(kIconURLWithoutSize2, FAVICON, kEmptySizes)};
900 907
901 std::unique_ptr<FaviconHandler> handler = RunHandlerWithCandidates( 908 std::unique_ptr<FaviconHandler> handler = RunHandlerWithCandidates(
902 FaviconDriverObserver::NON_TOUCH_LARGEST, kSourceIconURLs); 909 FaviconDriverObserver::NON_TOUCH_LARGEST, kSourceIconURLs);
903 910
904 struct ExpectedResult { 911 EXPECT_THAT(
905 // The favicon's index in kSourceIconURLs. 912 handler->GetIconURLs(),
906 size_t favicon_index; 913 ElementsAre(
907 // Width of largest bitmap. 914 // The 512x512 bitmap is the best match for the desired size.
908 int width; 915 kIconURL1024_512, kIconURL1_17, kIconURL16_14,
909 } results[] = { 916 // The rest of bitmaps come in order, there is no "sizes" attribute.
910 // First is icon2, though its size larger than maximal. 917 kIconURLWithoutSize1, kIconURLWithoutSize2));
911 {1, 1024},
912 // Second is icon1
913 // The 17x17 is largest.
914 {0, 17},
915 // Third is icon3.
916 // The 16x16 is largest.
917 {2, 16},
918 // The rest of bitmaps come in order, there is no "sizes" attribute.
919 {3, -1},
920 {4, -1},
921 };
922 const std::vector<FaviconURL>& icons = handler->image_urls();
923 ASSERT_EQ(5u, icons.size());
924 for (size_t i = 0; i < icons.size(); ++i) {
925 EXPECT_EQ(kSourceIconURLs[results[i].favicon_index].icon_url,
926 icons[i].icon_url);
927 if (results[i].width != -1)
928 EXPECT_EQ(results[i].width, icons[i].icon_sizes[0].width());
929 }
930 } 918 }
931 919
932 TEST_F(FaviconHandlerTest, TestDownloadLargestFavicon) { 920 TEST_F(FaviconHandlerTest, TestDownloadLargestFavicon) {
933 // Names represent the bitmap sizes per icon. 921 // Names represent the bitmap sizes per icon.
934 const GURL kIconURL1024_512("http://www.google.com/a"); 922 const GURL kIconURL1024_512("http://www.google.com/a");
935 const GURL kIconURL15_14("http://www.google.com/b"); 923 const GURL kIconURL15_14("http://www.google.com/b");
936 const GURL kIconURL16_512("http://www.google.com/c"); 924 const GURL kIconURL16_512("http://www.google.com/c");
937 const GURL kIconURLWithoutSize1("http://www.google.com/d"); 925 const GURL kIconURLWithoutSize1("http://www.google.com/d");
938 const GURL kIconURLWithoutSize2("http://www.google.com/e"); 926 const GURL kIconURLWithoutSize2("http://www.google.com/e");
939 927
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
972 960
973 RunHandlerWithCandidates( 961 RunHandlerWithCandidates(
974 FaviconDriverObserver::NON_TOUCH_LARGEST, 962 FaviconDriverObserver::NON_TOUCH_LARGEST,
975 {FaviconURL(kIconURL1, FAVICON, {gfx::Size(15, 15)}), 963 {FaviconURL(kIconURL1, FAVICON, {gfx::Size(15, 15)}),
976 FaviconURL(kIconURL2, FAVICON, {gfx::Size(14, 14), gfx::Size(16, 16)})}); 964 FaviconURL(kIconURL2, FAVICON, {gfx::Size(14, 14), gfx::Size(16, 16)})});
977 965
978 EXPECT_THAT(delegate_.downloads(), ElementsAre(kIconURL2)); 966 EXPECT_THAT(delegate_.downloads(), ElementsAre(kIconURL2));
979 } 967 }
980 968
981 TEST_F(FaviconHandlerTest, TestFaviconWasScaledAfterDownload) { 969 TEST_F(FaviconHandlerTest, TestFaviconWasScaledAfterDownload) {
982 const int kMaximalSize = FaviconHandler::GetMaximalIconSize(FAVICON); 970 const int kMaximalSize = FaviconHandler::GetMaximalIconSize(
971 FaviconDriverObserver::NON_TOUCH_LARGEST);
983 972
984 const GURL kIconURL1("http://www.google.com/b"); 973 const GURL kIconURL1("http://www.google.com/b");
985 const GURL kIconURL2("http://www.google.com/c"); 974 const GURL kIconURL2("http://www.google.com/c");
986 975
987 const int kOriginalSize1 = kMaximalSize + 1; 976 const int kOriginalSize1 = kMaximalSize + 1;
988 const int kOriginalSize2 = kMaximalSize + 2; 977 const int kOriginalSize2 = kMaximalSize + 2;
989 978
990 delegate_.fake_downloader().AddWithOriginalSizes( 979 delegate_.fake_downloader().AddWithOriginalSizes(
991 kIconURL1, IntVector{kMaximalSize}, IntVector{kOriginalSize1}); 980 kIconURL1, IntVector{kMaximalSize}, IntVector{kOriginalSize1});
992 delegate_.fake_downloader().AddWithOriginalSizes( 981 delegate_.fake_downloader().AddWithOriginalSizes(
993 kIconURL2, IntVector{kMaximalSize}, IntVector{kOriginalSize2}); 982 kIconURL2, IntVector{kMaximalSize}, IntVector{kOriginalSize2});
994 983
995 // Verify the largest bitmap was selected although it was scaled down to 984 // Verify the best bitmap was selected (although smaller than |kIconURL2|)
996 // maximal size and smaller than |kIconURL1| now. 985 // and that it was scaled down to |kMaximalSize|.
997 EXPECT_CALL(delegate_, 986 EXPECT_CALL(delegate_,
998 OnFaviconUpdated(_, _, kIconURL2, _, 987 OnFaviconUpdated(_, _, kIconURL1, _,
999 ImageSizeIs(kMaximalSize, kMaximalSize))); 988 ImageSizeIs(kMaximalSize, kMaximalSize)));
1000 989
1001 RunHandlerWithCandidates( 990 RunHandlerWithCandidates(
1002 FaviconDriverObserver::NON_TOUCH_LARGEST, 991 FaviconDriverObserver::NON_TOUCH_LARGEST,
1003 {FaviconURL(kIconURL1, FAVICON, 992 {FaviconURL(kIconURL1, FAVICON,
1004 SizeVector{gfx::Size(kOriginalSize1, kOriginalSize1)}), 993 SizeVector{gfx::Size(kOriginalSize1, kOriginalSize1)}),
1005 FaviconURL(kIconURL2, FAVICON, 994 FaviconURL(kIconURL2, FAVICON,
1006 SizeVector{gfx::Size(kOriginalSize2, kOriginalSize2)})}); 995 SizeVector{gfx::Size(kOriginalSize2, kOriginalSize2)})});
1007 996
1008 EXPECT_THAT(delegate_.downloads(), ElementsAre(kIconURL2)); 997 EXPECT_THAT(delegate_.downloads(), ElementsAre(kIconURL1));
1009 } 998 }
1010 999
1011 // Test that if several icons are downloaded because the icons are smaller than 1000 // Test that if several icons are downloaded because the icons are smaller than
1012 // expected that OnFaviconUpdated() is called with the largest downloaded 1001 // expected that OnFaviconUpdated() is called with the largest downloaded
1013 // bitmap. 1002 // bitmap.
1014 TEST_F(FaviconHandlerTest, TestKeepDownloadedLargestFavicon) { 1003 TEST_F(FaviconHandlerTest, TestKeepDownloadedLargestFavicon) {
1015 EXPECT_CALL(delegate_, 1004 EXPECT_CALL(delegate_,
1016 OnFaviconUpdated(_, _, kIconURL12x12, _, ImageSizeIs(12, 12))); 1005 OnFaviconUpdated(_, _, kIconURL12x12, _, ImageSizeIs(12, 12)));
1017 1006
1018 RunHandlerWithCandidates( 1007 RunHandlerWithCandidates(
1019 FaviconDriverObserver::NON_TOUCH_LARGEST, 1008 FaviconDriverObserver::NON_TOUCH_LARGEST,
1020 {FaviconURL(kIconURL10x10, FAVICON, SizeVector{gfx::Size(16, 16)}), 1009 {FaviconURL(kIconURL10x10, FAVICON, SizeVector{gfx::Size(16, 16)}),
1021 FaviconURL(kIconURL12x12, FAVICON, SizeVector{gfx::Size(15, 15)}), 1010 FaviconURL(kIconURL12x12, FAVICON, SizeVector{gfx::Size(15, 15)}),
1022 FaviconURL(kIconURL16x16, FAVICON, kEmptySizes)}); 1011 FaviconURL(kIconURL16x16, FAVICON, kEmptySizes)});
1023 } 1012 }
1024 1013
1025 } // namespace 1014 } // namespace
1026 } // namespace favicon 1015 } // namespace favicon
OLDNEW
« no previous file with comments | « components/favicon/core/favicon_handler.cc ('k') | components/favicon_base/select_favicon_frames.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698