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 |