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

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

Issue 2795763004: Treat touch icons just like non-touch icons on mobile
Patch Set: 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 <map>
10 #include <memory> 10 #include <memory>
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 const GURL kIconURLReturning500("http://www.google.com/500.png"); 563 const GURL kIconURLReturning500("http://www.google.com/500.png");
564 564
565 delegate_.fake_downloader().AddError(kIconURLReturning500, 500); 565 delegate_.fake_downloader().AddError(kIconURLReturning500, 500);
566 566
567 favicon_service_.fake()->Store( 567 favicon_service_.fake()->Store(
568 kPageURL, kIconURL64x64, 568 kPageURL, kIconURL64x64,
569 CreateRawBitmapResult(kIconURL64x64, TOUCH_ICON, 569 CreateRawBitmapResult(kIconURL64x64, TOUCH_ICON,
570 /*expired=*/true)); 570 /*expired=*/true));
571 571
572 EXPECT_CALL(delegate_, 572 EXPECT_CALL(delegate_,
573 OnFaviconUpdated(kPageURL, FaviconDriverObserver::TOUCH_LARGEST, 573 OnFaviconUpdated(kPageURL, FaviconDriverObserver::LARGEST,
574 kIconURL64x64, /*icon_url_changed=*/true, _)); 574 kIconURL64x64, /*icon_url_changed=*/true, _));
575 EXPECT_CALL(delegate_, 575 EXPECT_CALL(delegate_,
576 OnFaviconUpdated(kPageURL, FaviconDriverObserver::TOUCH_LARGEST, 576 OnFaviconUpdated(kPageURL, FaviconDriverObserver::LARGEST,
577 kIconURL64x64, /*icon_url_changed=*/false, _)); 577 kIconURL64x64, /*icon_url_changed=*/false, _));
578 578
579 RunHandlerWithCandidates( 579 RunHandlerWithCandidates(
580 FaviconDriverObserver::TOUCH_LARGEST, 580 FaviconDriverObserver::LARGEST,
581 { 581 {
582 FaviconURL(kIconURLReturning500, TOUCH_PRECOMPOSED_ICON, kEmptySizes), 582 FaviconURL(kIconURLReturning500, TOUCH_PRECOMPOSED_ICON, kEmptySizes),
583 FaviconURL(kIconURL64x64, TOUCH_ICON, kEmptySizes), 583 FaviconURL(kIconURL64x64, TOUCH_ICON, kEmptySizes),
584 }); 584 });
585 // First download fails, second succeeds. 585 // First download fails, second succeeds.
586 EXPECT_THAT(delegate_.downloads(), 586 EXPECT_THAT(delegate_.downloads(),
587 ElementsAre(kIconURLReturning500, kIconURL64x64)); 587 ElementsAre(kIconURLReturning500, kIconURL64x64));
588 } 588 }
589 589
590 // Test that download data for icon URLs other than the current favicon 590 // Test that download data for icon URLs other than the current favicon
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
898 898
899 const std::vector<favicon::FaviconURL> kSourceIconURLs{ 899 const std::vector<favicon::FaviconURL> kSourceIconURLs{
900 FaviconURL(kIconURL1_17, FAVICON, {gfx::Size(1, 1), gfx::Size(17, 17)}), 900 FaviconURL(kIconURL1_17, FAVICON, {gfx::Size(1, 1), gfx::Size(17, 17)}),
901 FaviconURL(kIconURL1024_512, FAVICON, 901 FaviconURL(kIconURL1024_512, FAVICON,
902 {gfx::Size(1024, 1024), gfx::Size(512, 512)}), 902 {gfx::Size(1024, 1024), gfx::Size(512, 512)}),
903 FaviconURL(kIconURL16_14, FAVICON, 903 FaviconURL(kIconURL16_14, FAVICON,
904 {gfx::Size(16, 16), gfx::Size(14, 14)}), 904 {gfx::Size(16, 16), gfx::Size(14, 14)}),
905 FaviconURL(kIconURLWithoutSize1, FAVICON, kEmptySizes), 905 FaviconURL(kIconURLWithoutSize1, FAVICON, kEmptySizes),
906 FaviconURL(kIconURLWithoutSize2, FAVICON, kEmptySizes)}; 906 FaviconURL(kIconURLWithoutSize2, FAVICON, kEmptySizes)};
907 907
908 std::unique_ptr<FaviconHandler> handler = RunHandlerWithCandidates( 908 std::unique_ptr<FaviconHandler> handler =
909 FaviconDriverObserver::NON_TOUCH_LARGEST, kSourceIconURLs); 909 RunHandlerWithCandidates(FaviconDriverObserver::LARGEST, kSourceIconURLs);
910 910
911 EXPECT_THAT( 911 EXPECT_THAT(
912 handler->GetIconURLs(), 912 handler->GetIconURLs(),
913 ElementsAre( 913 ElementsAre(
914 // The 512x512 bitmap is the best match for the desired size. 914 // The 512x512 bitmap is the best match for the desired size.
915 kIconURL1024_512, kIconURL1_17, kIconURL16_14, 915 kIconURL1024_512, kIconURL1_17, kIconURL16_14,
916 // The rest of bitmaps come in order, there is no "sizes" attribute. 916 // The rest of bitmaps come in order, there is no "sizes" attribute.
917 kIconURLWithoutSize1, kIconURLWithoutSize2)); 917 kIconURLWithoutSize1, kIconURLWithoutSize2));
918 } 918 }
919 919
920 TEST_F(FaviconHandlerTest, TestDownloadLargestFavicon) { 920 TEST_F(FaviconHandlerTest, TestDownloadLargestFavicon) {
921 // Names represent the bitmap sizes per icon. 921 // Names represent the bitmap sizes per icon.
922 const GURL kIconURL1024_512("http://www.google.com/a"); 922 const GURL kIconURL1024_512("http://www.google.com/a");
923 const GURL kIconURL15_14("http://www.google.com/b"); 923 const GURL kIconURL15_14("http://www.google.com/b");
924 const GURL kIconURL16_512("http://www.google.com/c"); 924 const GURL kIconURL16_512("http://www.google.com/c");
925 const GURL kIconURLWithoutSize1("http://www.google.com/d"); 925 const GURL kIconURLWithoutSize1("http://www.google.com/d");
926 const GURL kIconURLWithoutSize2("http://www.google.com/e"); 926 const GURL kIconURLWithoutSize2("http://www.google.com/e");
927 927
928 RunHandlerWithCandidates( 928 RunHandlerWithCandidates(
929 FaviconDriverObserver::NON_TOUCH_LARGEST, 929 FaviconDriverObserver::LARGEST,
930 {FaviconURL(kIconURL1024_512, FAVICON, 930 {FaviconURL(kIconURL1024_512, FAVICON,
931 {gfx::Size(1024, 1024), gfx::Size(512, 512)}), 931 {gfx::Size(1024, 1024), gfx::Size(512, 512)}),
932 FaviconURL(kIconURL15_14, FAVICON, 932 FaviconURL(kIconURL15_14, FAVICON,
933 {gfx::Size(15, 15), gfx::Size(14, 14)}), 933 {gfx::Size(15, 15), gfx::Size(14, 14)}),
934 FaviconURL(kIconURL16_512, FAVICON, 934 FaviconURL(kIconURL16_512, FAVICON,
935 {gfx::Size(16, 16), gfx::Size(512, 512)}), 935 {gfx::Size(16, 16), gfx::Size(512, 512)}),
936 FaviconURL(kIconURLWithoutSize1, FAVICON, kEmptySizes), 936 FaviconURL(kIconURLWithoutSize1, FAVICON, kEmptySizes),
937 FaviconURL(kIconURLWithoutSize2, FAVICON, kEmptySizes)}); 937 FaviconURL(kIconURLWithoutSize2, FAVICON, kEmptySizes)});
938 938
939 // Icon URLs are not registered and hence 404s will be produced, which 939 // Icon URLs are not registered and hence 404s will be produced, which
940 // allows checking whether the icons were requested according to their size. 940 // allows checking whether the icons were requested according to their size.
941 // The favicons should have been requested in decreasing order of their sizes. 941 // The favicons should have been requested in decreasing order of their sizes.
942 // Favicons without any <link sizes=""> attribute should have been downloaded 942 // Favicons without any <link sizes=""> attribute should have been downloaded
943 // last. 943 // last.
944 EXPECT_THAT(delegate_.downloads(), 944 EXPECT_THAT(delegate_.downloads(),
945 ElementsAre(kIconURL1024_512, kIconURL16_512, kIconURL15_14, 945 ElementsAre(kIconURL1024_512, kIconURL16_512, kIconURL15_14,
946 kIconURLWithoutSize1, kIconURLWithoutSize2)); 946 kIconURLWithoutSize1, kIconURLWithoutSize2));
947 } 947 }
948 948
949 TEST_F(FaviconHandlerTest, TestSelectLargestFavicon) { 949 TEST_F(FaviconHandlerTest, TestSelectLargestFavicon) {
950 const GURL kIconURL1("http://www.google.com/b"); 950 const GURL kIconURL1("http://www.google.com/b");
951 const GURL kIconURL2("http://www.google.com/c"); 951 const GURL kIconURL2("http://www.google.com/c");
952 952
953 delegate_.fake_downloader().Add(kIconURL1, IntVector{15}); 953 delegate_.fake_downloader().Add(kIconURL1, IntVector{15});
954 delegate_.fake_downloader().Add(kIconURL2, IntVector{14, 16}); 954 delegate_.fake_downloader().Add(kIconURL2, IntVector{14, 16});
955 955
956 // Verify NotifyFaviconAvailable(). 956 // Verify NotifyFaviconAvailable().
957 EXPECT_CALL(delegate_, 957 EXPECT_CALL(delegate_, OnFaviconUpdated(_, FaviconDriverObserver::LARGEST,
958 OnFaviconUpdated(_, FaviconDriverObserver::NON_TOUCH_LARGEST, 958 kIconURL2, _, _));
959 kIconURL2, _, _));
960 959
961 RunHandlerWithCandidates( 960 RunHandlerWithCandidates(
962 FaviconDriverObserver::NON_TOUCH_LARGEST, 961 FaviconDriverObserver::LARGEST,
963 {FaviconURL(kIconURL1, FAVICON, {gfx::Size(15, 15)}), 962 {FaviconURL(kIconURL1, FAVICON, {gfx::Size(15, 15)}),
964 FaviconURL(kIconURL2, FAVICON, {gfx::Size(14, 14), gfx::Size(16, 16)})}); 963 FaviconURL(kIconURL2, FAVICON, {gfx::Size(14, 14), gfx::Size(16, 16)})});
965 964
966 EXPECT_THAT(delegate_.downloads(), ElementsAre(kIconURL2)); 965 EXPECT_THAT(delegate_.downloads(), ElementsAre(kIconURL2));
967 } 966 }
968 967
969 TEST_F(FaviconHandlerTest, TestFaviconWasScaledAfterDownload) { 968 TEST_F(FaviconHandlerTest, TestFaviconWasScaledAfterDownload) {
970 const int kMaximalSize = FaviconHandler::GetMaximalIconSize( 969 const int kMaximalSize =
971 FaviconDriverObserver::NON_TOUCH_LARGEST); 970 FaviconHandler::GetMaximalIconSize(FaviconDriverObserver::LARGEST);
972 971
973 const GURL kIconURL1("http://www.google.com/b"); 972 const GURL kIconURL1("http://www.google.com/b");
974 const GURL kIconURL2("http://www.google.com/c"); 973 const GURL kIconURL2("http://www.google.com/c");
975 974
976 const int kOriginalSize1 = kMaximalSize + 1; 975 const int kOriginalSize1 = kMaximalSize + 1;
977 const int kOriginalSize2 = kMaximalSize + 2; 976 const int kOriginalSize2 = kMaximalSize + 2;
978 977
979 delegate_.fake_downloader().AddWithOriginalSizes( 978 delegate_.fake_downloader().AddWithOriginalSizes(
980 kIconURL1, IntVector{kMaximalSize}, IntVector{kOriginalSize1}); 979 kIconURL1, IntVector{kMaximalSize}, IntVector{kOriginalSize1});
981 delegate_.fake_downloader().AddWithOriginalSizes( 980 delegate_.fake_downloader().AddWithOriginalSizes(
982 kIconURL2, IntVector{kMaximalSize}, IntVector{kOriginalSize2}); 981 kIconURL2, IntVector{kMaximalSize}, IntVector{kOriginalSize2});
983 982
984 // Verify the best bitmap was selected (although smaller than |kIconURL2|) 983 // Verify the best bitmap was selected (although smaller than |kIconURL2|)
985 // and that it was scaled down to |kMaximalSize|. 984 // and that it was scaled down to |kMaximalSize|.
986 EXPECT_CALL(delegate_, 985 EXPECT_CALL(delegate_,
987 OnFaviconUpdated(_, _, kIconURL1, _, 986 OnFaviconUpdated(_, _, kIconURL1, _,
988 ImageSizeIs(kMaximalSize, kMaximalSize))); 987 ImageSizeIs(kMaximalSize, kMaximalSize)));
989 988
990 RunHandlerWithCandidates( 989 RunHandlerWithCandidates(
991 FaviconDriverObserver::NON_TOUCH_LARGEST, 990 FaviconDriverObserver::LARGEST,
992 {FaviconURL(kIconURL1, FAVICON, 991 {FaviconURL(kIconURL1, FAVICON,
993 SizeVector{gfx::Size(kOriginalSize1, kOriginalSize1)}), 992 SizeVector{gfx::Size(kOriginalSize1, kOriginalSize1)}),
994 FaviconURL(kIconURL2, FAVICON, 993 FaviconURL(kIconURL2, FAVICON,
995 SizeVector{gfx::Size(kOriginalSize2, kOriginalSize2)})}); 994 SizeVector{gfx::Size(kOriginalSize2, kOriginalSize2)})});
996 995
997 EXPECT_THAT(delegate_.downloads(), ElementsAre(kIconURL1)); 996 EXPECT_THAT(delegate_.downloads(), ElementsAre(kIconURL1));
998 } 997 }
999 998
1000 // Test that if several icons are downloaded because the icons are smaller than 999 // Test that if several icons are downloaded because the icons are smaller than
1001 // expected that OnFaviconUpdated() is called with the largest downloaded 1000 // expected that OnFaviconUpdated() is called with the largest downloaded
1002 // bitmap. 1001 // bitmap.
1003 TEST_F(FaviconHandlerTest, TestKeepDownloadedLargestFavicon) { 1002 TEST_F(FaviconHandlerTest, TestKeepDownloadedLargestFavicon) {
1004 EXPECT_CALL(delegate_, 1003 EXPECT_CALL(delegate_,
1005 OnFaviconUpdated(_, _, kIconURL12x12, _, ImageSizeIs(12, 12))); 1004 OnFaviconUpdated(_, _, kIconURL12x12, _, ImageSizeIs(12, 12)));
1006 1005
1007 RunHandlerWithCandidates( 1006 RunHandlerWithCandidates(
1008 FaviconDriverObserver::NON_TOUCH_LARGEST, 1007 FaviconDriverObserver::LARGEST,
1009 {FaviconURL(kIconURL10x10, FAVICON, SizeVector{gfx::Size(16, 16)}), 1008 {FaviconURL(kIconURL10x10, FAVICON, SizeVector{gfx::Size(16, 16)}),
1010 FaviconURL(kIconURL12x12, FAVICON, SizeVector{gfx::Size(15, 15)}), 1009 FaviconURL(kIconURL12x12, FAVICON, SizeVector{gfx::Size(15, 15)}),
1011 FaviconURL(kIconURL16x16, FAVICON, kEmptySizes)}); 1010 FaviconURL(kIconURL16x16, FAVICON, kEmptySizes)});
1012 } 1011 }
1013 1012
1014 } // namespace 1013 } // namespace
1015 } // namespace favicon 1014 } // namespace favicon
OLDNEW
« components/favicon/core/favicon_handler.cc ('K') | « components/favicon/core/favicon_handler.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698