| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/large_icon_service.h" | 5 #include "components/favicon/core/large_icon_service.h" |
| 6 | 6 |
| 7 #include <deque> | 7 #include <deque> |
| 8 #include <memory> | 8 #include <memory> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 "&fallback_opts=TYPE,SIZE,URL&url=http://www.example.com/"); | 150 "&fallback_opts=TYPE,SIZE,URL&url=http://www.example.com/"); |
| 151 | 151 |
| 152 EXPECT_CALL(mock_favicon_service_, UnableToDownloadFavicon(_)).Times(0); | 152 EXPECT_CALL(mock_favicon_service_, UnableToDownloadFavicon(_)).Times(0); |
| 153 | 153 |
| 154 base::MockCallback<base::Callback<void(bool success)>> callback; | 154 base::MockCallback<base::Callback<void(bool success)>> callback; |
| 155 EXPECT_CALL(*mock_image_fetcher_, | 155 EXPECT_CALL(*mock_image_fetcher_, |
| 156 StartOrQueueNetworkRequest(_, kExpectedServerUrl, _, _)) | 156 StartOrQueueNetworkRequest(_, kExpectedServerUrl, _, _)) |
| 157 .WillOnce(PostFetchReply(gfx::Image::CreateFrom1xBitmap( | 157 .WillOnce(PostFetchReply(gfx::Image::CreateFrom1xBitmap( |
| 158 CreateTestSkBitmap(64, 64, kTestColor)))); | 158 CreateTestSkBitmap(64, 64, kTestColor)))); |
| 159 EXPECT_CALL(mock_favicon_service_, | 159 EXPECT_CALL(mock_favicon_service_, |
| 160 SetLastResortFavicons(GURL(kDummyUrl), kExpectedServerUrl, | 160 SetOnDemandFavicons(GURL(kDummyUrl), kExpectedServerUrl, |
| 161 favicon_base::IconType::TOUCH_ICON, _, _)) | 161 favicon_base::IconType::TOUCH_ICON, _, _)) |
| 162 .WillOnce(PostBoolReply(true)); | 162 .WillOnce(PostBoolReply(true)); |
| 163 | 163 |
| 164 large_icon_service_ | 164 large_icon_service_ |
| 165 .GetLargeIconOrFallbackStyleFromGoogleServerSkippingLocalCache( | 165 .GetLargeIconOrFallbackStyleFromGoogleServerSkippingLocalCache( |
| 166 GURL(kDummyUrl), /*min_source_size_in_pixel=*/42, | 166 GURL(kDummyUrl), /*min_source_size_in_pixel=*/42, |
| 167 /*desired_size_in_pixel=*/61, /*may_page_url_be_private=*/true, | 167 /*desired_size_in_pixel=*/61, /*may_page_url_be_private=*/true, |
| 168 TRAFFIC_ANNOTATION_FOR_TESTS, callback.Get()); | 168 TRAFFIC_ANNOTATION_FOR_TESTS, callback.Get()); |
| 169 | 169 |
| 170 EXPECT_CALL(callback, Run(true)); | 170 EXPECT_CALL(callback, Run(true)); |
| 171 base::RunLoop().RunUntilIdle(); | 171 base::RunLoop().RunUntilIdle(); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 187 "size=61&min_size=43&max_size=91&url=http://www.example.com/"); | 187 "size=61&min_size=43&max_size=91&url=http://www.example.com/"); |
| 188 | 188 |
| 189 EXPECT_CALL(mock_favicon_service_, UnableToDownloadFavicon(_)).Times(0); | 189 EXPECT_CALL(mock_favicon_service_, UnableToDownloadFavicon(_)).Times(0); |
| 190 | 190 |
| 191 base::MockCallback<base::Callback<void(bool success)>> callback; | 191 base::MockCallback<base::Callback<void(bool success)>> callback; |
| 192 EXPECT_CALL(*mock_image_fetcher_, | 192 EXPECT_CALL(*mock_image_fetcher_, |
| 193 StartOrQueueNetworkRequest(_, kExpectedServerUrl, _, _)) | 193 StartOrQueueNetworkRequest(_, kExpectedServerUrl, _, _)) |
| 194 .WillOnce(PostFetchReply(gfx::Image::CreateFrom1xBitmap( | 194 .WillOnce(PostFetchReply(gfx::Image::CreateFrom1xBitmap( |
| 195 CreateTestSkBitmap(64, 64, kTestColor)))); | 195 CreateTestSkBitmap(64, 64, kTestColor)))); |
| 196 EXPECT_CALL(mock_favicon_service_, | 196 EXPECT_CALL(mock_favicon_service_, |
| 197 SetLastResortFavicons(GURL(kDummyUrl), kExpectedServerUrl, | 197 SetOnDemandFavicons(GURL(kDummyUrl), kExpectedServerUrl, |
| 198 favicon_base::IconType::TOUCH_ICON, _, _)) | 198 favicon_base::IconType::TOUCH_ICON, _, _)) |
| 199 .WillOnce(PostBoolReply(true)); | 199 .WillOnce(PostBoolReply(true)); |
| 200 | 200 |
| 201 large_icon_service_ | 201 large_icon_service_ |
| 202 .GetLargeIconOrFallbackStyleFromGoogleServerSkippingLocalCache( | 202 .GetLargeIconOrFallbackStyleFromGoogleServerSkippingLocalCache( |
| 203 GURL(kDummyUrl), /*min_source_size_in_pixel=*/42, | 203 GURL(kDummyUrl), /*min_source_size_in_pixel=*/42, |
| 204 /*desired_size_in_pixel=*/61, /*may_page_url_be_private=*/true, | 204 /*desired_size_in_pixel=*/61, /*may_page_url_be_private=*/true, |
| 205 TRAFFIC_ANNOTATION_FOR_TESTS, callback.Get()); | 205 TRAFFIC_ANNOTATION_FOR_TESTS, callback.Get()); |
| 206 | 206 |
| 207 EXPECT_CALL(callback, Run(true)); | 207 EXPECT_CALL(callback, Run(true)); |
| 208 base::RunLoop().RunUntilIdle(); | 208 base::RunLoop().RunUntilIdle(); |
| 209 } | 209 } |
| 210 | 210 |
| 211 TEST_F(LargeIconServiceTest, ShouldGetFromGoogleServerWithOriginalUrl) { | 211 TEST_F(LargeIconServiceTest, ShouldGetFromGoogleServerWithOriginalUrl) { |
| 212 const GURL kExpectedServerUrl( | 212 const GURL kExpectedServerUrl( |
| 213 "https://t0.gstatic.com/faviconV2?client=chrome&drop_404_icon=true" | 213 "https://t0.gstatic.com/faviconV2?client=chrome&drop_404_icon=true" |
| 214 "&check_seen=true&size=61&min_size=42&max_size=122" | 214 "&check_seen=true&size=61&min_size=42&max_size=122" |
| 215 "&fallback_opts=TYPE,SIZE,URL&url=http://www.example.com/"); | 215 "&fallback_opts=TYPE,SIZE,URL&url=http://www.example.com/"); |
| 216 const GURL kExpectedOriginalUrl("http://www.example.com/favicon.png"); | 216 const GURL kExpectedOriginalUrl("http://www.example.com/favicon.png"); |
| 217 | 217 |
| 218 image_fetcher::RequestMetadata expected_metadata; | 218 image_fetcher::RequestMetadata expected_metadata; |
| 219 expected_metadata.content_location_header = kExpectedOriginalUrl.spec(); | 219 expected_metadata.content_location_header = kExpectedOriginalUrl.spec(); |
| 220 EXPECT_CALL(*mock_image_fetcher_, | 220 EXPECT_CALL(*mock_image_fetcher_, |
| 221 StartOrQueueNetworkRequest(_, kExpectedServerUrl, _, _)) | 221 StartOrQueueNetworkRequest(_, kExpectedServerUrl, _, _)) |
| 222 .WillOnce(PostFetchReplyWithMetadata( | 222 .WillOnce(PostFetchReplyWithMetadata( |
| 223 gfx::Image::CreateFrom1xBitmap( | 223 gfx::Image::CreateFrom1xBitmap( |
| 224 CreateTestSkBitmap(64, 64, kTestColor)), | 224 CreateTestSkBitmap(64, 64, kTestColor)), |
| 225 expected_metadata)); | 225 expected_metadata)); |
| 226 EXPECT_CALL(mock_favicon_service_, | 226 EXPECT_CALL(mock_favicon_service_, |
| 227 SetLastResortFavicons(GURL(kDummyUrl), kExpectedOriginalUrl, | 227 SetOnDemandFavicons(GURL(kDummyUrl), kExpectedOriginalUrl, |
| 228 favicon_base::IconType::TOUCH_ICON, _, _)) | 228 favicon_base::IconType::TOUCH_ICON, _, _)) |
| 229 .WillOnce(PostBoolReply(true)); | 229 .WillOnce(PostBoolReply(true)); |
| 230 | 230 |
| 231 base::MockCallback<base::Callback<void(bool success)>> callback; | 231 base::MockCallback<base::Callback<void(bool success)>> callback; |
| 232 large_icon_service_ | 232 large_icon_service_ |
| 233 .GetLargeIconOrFallbackStyleFromGoogleServerSkippingLocalCache( | 233 .GetLargeIconOrFallbackStyleFromGoogleServerSkippingLocalCache( |
| 234 GURL(kDummyUrl), /*min_source_size_in_pixel=*/42, | 234 GURL(kDummyUrl), /*min_source_size_in_pixel=*/42, |
| 235 /*desired_size_in_pixel=*/61, /*may_page_url_be_private=*/true, | 235 /*desired_size_in_pixel=*/61, /*may_page_url_be_private=*/true, |
| 236 TRAFFIC_ANNOTATION_FOR_TESTS, callback.Get()); | 236 TRAFFIC_ANNOTATION_FOR_TESTS, callback.Get()); |
| 237 | 237 |
| 238 EXPECT_CALL(callback, Run(true)); | 238 EXPECT_CALL(callback, Run(true)); |
| 239 base::RunLoop().RunUntilIdle(); | 239 base::RunLoop().RunUntilIdle(); |
| 240 } | 240 } |
| 241 | 241 |
| 242 TEST_F(LargeIconServiceTest, ShouldTrimQueryParametersForGoogleServer) { | 242 TEST_F(LargeIconServiceTest, ShouldTrimQueryParametersForGoogleServer) { |
| 243 const GURL kDummyUrlWithQuery("http://www.example.com?foo=1"); | 243 const GURL kDummyUrlWithQuery("http://www.example.com?foo=1"); |
| 244 const GURL kExpectedServerUrl( | 244 const GURL kExpectedServerUrl( |
| 245 "https://t0.gstatic.com/faviconV2?client=chrome&drop_404_icon=true" | 245 "https://t0.gstatic.com/faviconV2?client=chrome&drop_404_icon=true" |
| 246 "&check_seen=true&size=61&min_size=42&max_size=122" | 246 "&check_seen=true&size=61&min_size=42&max_size=122" |
| 247 "&fallback_opts=TYPE,SIZE,URL&url=http://www.example.com/"); | 247 "&fallback_opts=TYPE,SIZE,URL&url=http://www.example.com/"); |
| 248 | 248 |
| 249 EXPECT_CALL(*mock_image_fetcher_, | 249 EXPECT_CALL(*mock_image_fetcher_, |
| 250 StartOrQueueNetworkRequest(_, kExpectedServerUrl, _, _)) | 250 StartOrQueueNetworkRequest(_, kExpectedServerUrl, _, _)) |
| 251 .WillOnce(PostFetchReply(gfx::Image::CreateFrom1xBitmap( | 251 .WillOnce(PostFetchReply(gfx::Image::CreateFrom1xBitmap( |
| 252 CreateTestSkBitmap(64, 64, kTestColor)))); | 252 CreateTestSkBitmap(64, 64, kTestColor)))); |
| 253 // Verify that the non-trimmed page URL is used when writing to the database. | 253 // Verify that the non-trimmed page URL is used when writing to the database. |
| 254 EXPECT_CALL(mock_favicon_service_, | 254 EXPECT_CALL(mock_favicon_service_, |
| 255 SetLastResortFavicons(_, kExpectedServerUrl, _, _, _)); | 255 SetOnDemandFavicons(_, kExpectedServerUrl, _, _, _)); |
| 256 | 256 |
| 257 large_icon_service_ | 257 large_icon_service_ |
| 258 .GetLargeIconOrFallbackStyleFromGoogleServerSkippingLocalCache( | 258 .GetLargeIconOrFallbackStyleFromGoogleServerSkippingLocalCache( |
| 259 GURL(kDummyUrlWithQuery), /*min_source_size_in_pixel=*/42, | 259 GURL(kDummyUrlWithQuery), /*min_source_size_in_pixel=*/42, |
| 260 /*desired_size_in_pixel=*/61, /*may_page_url_be_private=*/true, | 260 /*desired_size_in_pixel=*/61, /*may_page_url_be_private=*/true, |
| 261 TRAFFIC_ANNOTATION_FOR_TESTS, base::Callback<void(bool success)>()); | 261 TRAFFIC_ANNOTATION_FOR_TESTS, base::Callback<void(bool success)>()); |
| 262 | 262 |
| 263 base::RunLoop().RunUntilIdle(); | 263 base::RunLoop().RunUntilIdle(); |
| 264 } | 264 } |
| 265 | 265 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 IsEmpty()); | 304 IsEmpty()); |
| 305 } | 305 } |
| 306 | 306 |
| 307 TEST_F(LargeIconServiceTest, ShouldReportUnavailableIfFetchFromServerFails) { | 307 TEST_F(LargeIconServiceTest, ShouldReportUnavailableIfFetchFromServerFails) { |
| 308 const GURL kDummyUrlWithQuery("http://www.example.com?foo=1"); | 308 const GURL kDummyUrlWithQuery("http://www.example.com?foo=1"); |
| 309 const GURL kExpectedServerUrl( | 309 const GURL kExpectedServerUrl( |
| 310 "https://t0.gstatic.com/faviconV2?client=chrome&drop_404_icon=true" | 310 "https://t0.gstatic.com/faviconV2?client=chrome&drop_404_icon=true" |
| 311 "&check_seen=true&size=61&min_size=42&max_size=122" | 311 "&check_seen=true&size=61&min_size=42&max_size=122" |
| 312 "&fallback_opts=TYPE,SIZE,URL&url=http://www.example.com/"); | 312 "&fallback_opts=TYPE,SIZE,URL&url=http://www.example.com/"); |
| 313 | 313 |
| 314 EXPECT_CALL(mock_favicon_service_, SetLastResortFavicons(_, _, _, _, _)) | 314 EXPECT_CALL(mock_favicon_service_, SetOnDemandFavicons(_, _, _, _, _)) |
| 315 .Times(0); | 315 .Times(0); |
| 316 | 316 |
| 317 base::MockCallback<base::Callback<void(bool success)>> callback; | 317 base::MockCallback<base::Callback<void(bool success)>> callback; |
| 318 EXPECT_CALL(*mock_image_fetcher_, | 318 EXPECT_CALL(*mock_image_fetcher_, |
| 319 StartOrQueueNetworkRequest(_, kExpectedServerUrl, _, _)) | 319 StartOrQueueNetworkRequest(_, kExpectedServerUrl, _, _)) |
| 320 .WillOnce(PostFetchReply(gfx::Image())); | 320 .WillOnce(PostFetchReply(gfx::Image())); |
| 321 EXPECT_CALL(mock_favicon_service_, | 321 EXPECT_CALL(mock_favicon_service_, |
| 322 UnableToDownloadFavicon(kExpectedServerUrl)); | 322 UnableToDownloadFavicon(kExpectedServerUrl)); |
| 323 | 323 |
| 324 large_icon_service_ | 324 large_icon_service_ |
| (...skipping 14 matching lines...) Expand all Loading... |
| 339 mock_favicon_service_, | 339 mock_favicon_service_, |
| 340 WasUnableToDownloadFavicon(GURL( | 340 WasUnableToDownloadFavicon(GURL( |
| 341 "https://t0.gstatic.com/faviconV2?client=chrome&drop_404_icon=true" | 341 "https://t0.gstatic.com/faviconV2?client=chrome&drop_404_icon=true" |
| 342 "&check_seen=true&size=61&min_size=42&max_size=122" | 342 "&check_seen=true&size=61&min_size=42&max_size=122" |
| 343 "&fallback_opts=TYPE,SIZE,URL&url=http://www.example.com/"))) | 343 "&fallback_opts=TYPE,SIZE,URL&url=http://www.example.com/"))) |
| 344 .WillByDefault(Return(true)); | 344 .WillByDefault(Return(true)); |
| 345 | 345 |
| 346 EXPECT_CALL(mock_favicon_service_, UnableToDownloadFavicon(_)).Times(0); | 346 EXPECT_CALL(mock_favicon_service_, UnableToDownloadFavicon(_)).Times(0); |
| 347 EXPECT_CALL(*mock_image_fetcher_, StartOrQueueNetworkRequest(_, _, _, _)) | 347 EXPECT_CALL(*mock_image_fetcher_, StartOrQueueNetworkRequest(_, _, _, _)) |
| 348 .Times(0); | 348 .Times(0); |
| 349 EXPECT_CALL(mock_favicon_service_, SetLastResortFavicons(_, _, _, _, _)) | 349 EXPECT_CALL(mock_favicon_service_, SetOnDemandFavicons(_, _, _, _, _)) |
| 350 .Times(0); | 350 .Times(0); |
| 351 | 351 |
| 352 base::MockCallback<base::Callback<void(bool success)>> callback; | 352 base::MockCallback<base::Callback<void(bool success)>> callback; |
| 353 large_icon_service_ | 353 large_icon_service_ |
| 354 .GetLargeIconOrFallbackStyleFromGoogleServerSkippingLocalCache( | 354 .GetLargeIconOrFallbackStyleFromGoogleServerSkippingLocalCache( |
| 355 GURL(kDummyUrl), /*min_source_size_in_pixel=*/42, | 355 GURL(kDummyUrl), /*min_source_size_in_pixel=*/42, |
| 356 /*desired_size_in_pixel=*/61, /*may_page_url_be_private=*/true, | 356 /*desired_size_in_pixel=*/61, /*may_page_url_be_private=*/true, |
| 357 TRAFFIC_ANNOTATION_FOR_TESTS, callback.Get()); | 357 TRAFFIC_ANNOTATION_FOR_TESTS, callback.Get()); |
| 358 | 358 |
| 359 EXPECT_CALL(callback, Run(false)); | 359 EXPECT_CALL(callback, Run(false)); |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 516 | 516 |
| 517 // Every test will appear with suffix /0 (param false) and /1 (param true), e.g. | 517 // Every test will appear with suffix /0 (param false) and /1 (param true), e.g. |
| 518 // LargeIconServiceGetterTest.FallbackSinceTooPicky/0: get image. | 518 // LargeIconServiceGetterTest.FallbackSinceTooPicky/0: get image. |
| 519 // LargeIconServiceGetterTest.FallbackSinceTooPicky/1: get raw bitmap. | 519 // LargeIconServiceGetterTest.FallbackSinceTooPicky/1: get raw bitmap. |
| 520 INSTANTIATE_TEST_CASE_P(, // Empty instatiation name. | 520 INSTANTIATE_TEST_CASE_P(, // Empty instatiation name. |
| 521 LargeIconServiceGetterTest, | 521 LargeIconServiceGetterTest, |
| 522 ::testing::Values(false, true)); | 522 ::testing::Values(false, true)); |
| 523 | 523 |
| 524 } // namespace | 524 } // namespace |
| 525 } // namespace favicon | 525 } // namespace favicon |
| OLD | NEW |