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 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 | 44 |
45 const char kDummyUrl[] = "http://www.example.com"; | 45 const char kDummyUrl[] = "http://www.example.com"; |
46 const char kDummyIconUrl[] = "http://www.example.com/touch_icon.png"; | 46 const char kDummyIconUrl[] = "http://www.example.com/touch_icon.png"; |
47 const SkColor kTestColor = SK_ColorRED; | 47 const SkColor kTestColor = SK_ColorRED; |
48 | 48 |
49 ACTION_P(PostFetchReply, p0) { | 49 ACTION_P(PostFetchReply, p0) { |
50 base::ThreadTaskRunnerHandle::Get()->PostTask( | 50 base::ThreadTaskRunnerHandle::Get()->PostTask( |
51 FROM_HERE, base::Bind(arg2, arg0, p0, image_fetcher::RequestMetadata())); | 51 FROM_HERE, base::Bind(arg2, arg0, p0, image_fetcher::RequestMetadata())); |
52 } | 52 } |
53 | 53 |
| 54 ACTION_P2(PostFetchReplyWithMetadata, p0, p1) { |
| 55 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, |
| 56 base::Bind(arg2, arg0, p0, p1)); |
| 57 } |
| 58 |
54 ACTION_P(PostBoolReply, p0) { | 59 ACTION_P(PostBoolReply, p0) { |
55 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, | 60 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, |
56 base::Bind(arg4, p0)); | 61 base::Bind(arg4, p0)); |
57 } | 62 } |
58 | 63 |
59 SkBitmap CreateTestSkBitmap(int w, int h, SkColor color) { | 64 SkBitmap CreateTestSkBitmap(int w, int h, SkColor color) { |
60 SkBitmap bitmap; | 65 SkBitmap bitmap; |
61 bitmap.allocN32Pixels(w, h); | 66 bitmap.allocN32Pixels(w, h); |
62 bitmap.eraseColor(color); | 67 bitmap.eraseColor(color); |
63 return bitmap; | 68 return bitmap; |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
147 .WillOnce(PostBoolReply(true)); | 152 .WillOnce(PostBoolReply(true)); |
148 | 153 |
149 large_icon_service_ | 154 large_icon_service_ |
150 .GetLargeIconOrFallbackStyleFromGoogleServerSkippingLocalCache( | 155 .GetLargeIconOrFallbackStyleFromGoogleServerSkippingLocalCache( |
151 GURL(kDummyUrl), /*min_source_size_in_pixel=*/42, callback.Get()); | 156 GURL(kDummyUrl), /*min_source_size_in_pixel=*/42, callback.Get()); |
152 | 157 |
153 EXPECT_CALL(callback, Run(true)); | 158 EXPECT_CALL(callback, Run(true)); |
154 base::RunLoop().RunUntilIdle(); | 159 base::RunLoop().RunUntilIdle(); |
155 } | 160 } |
156 | 161 |
| 162 TEST_F(LargeIconServiceTest, ShouldGetFromGoogleServerWithOriginalUrl) { |
| 163 const GURL kExpectedServerUrl( |
| 164 "https://t0.gstatic.com/faviconV2?client=chrome&drop_404_icon=true" |
| 165 "&size=64&min_size=42&max_size=128&fallback_opts=TYPE,SIZE,URL" |
| 166 "&url=http://www.example.com/"); |
| 167 const GURL kExpectedOriginalUrl("http://www.example.com/favicon.png"); |
| 168 |
| 169 image_fetcher::RequestMetadata expected_metadata; |
| 170 expected_metadata.content_location_header = kExpectedOriginalUrl.spec(); |
| 171 EXPECT_CALL(*mock_image_fetcher_, |
| 172 StartOrQueueNetworkRequest(_, kExpectedServerUrl, _)) |
| 173 .WillOnce(PostFetchReplyWithMetadata( |
| 174 gfx::Image::CreateFrom1xBitmap( |
| 175 CreateTestSkBitmap(64, 64, kTestColor)), |
| 176 expected_metadata)); |
| 177 EXPECT_CALL(mock_favicon_service_, |
| 178 SetLastResortFavicons(GURL(kDummyUrl), kExpectedOriginalUrl, |
| 179 favicon_base::IconType::TOUCH_ICON, _, _)) |
| 180 .WillOnce(PostBoolReply(true)); |
| 181 |
| 182 base::MockCallback<base::Callback<void(bool success)>> callback; |
| 183 large_icon_service_ |
| 184 .GetLargeIconOrFallbackStyleFromGoogleServerSkippingLocalCache( |
| 185 GURL(kDummyUrl), /*min_source_size_in_pixel=*/42, callback.Get()); |
| 186 |
| 187 EXPECT_CALL(callback, Run(true)); |
| 188 base::RunLoop().RunUntilIdle(); |
| 189 } |
| 190 |
157 TEST_F(LargeIconServiceTest, ShouldTrimQueryParametersForGoogleServer) { | 191 TEST_F(LargeIconServiceTest, ShouldTrimQueryParametersForGoogleServer) { |
158 const GURL kDummyUrlWithQuery("http://www.example.com?foo=1"); | 192 const GURL kDummyUrlWithQuery("http://www.example.com?foo=1"); |
159 const GURL kExpectedServerUrl( | 193 const GURL kExpectedServerUrl( |
160 "https://t0.gstatic.com/faviconV2?client=chrome&drop_404_icon=true" | 194 "https://t0.gstatic.com/faviconV2?client=chrome&drop_404_icon=true" |
161 "&size=64&min_size=42&max_size=128&fallback_opts=TYPE,SIZE,URL" | 195 "&size=64&min_size=42&max_size=128&fallback_opts=TYPE,SIZE,URL" |
162 "&url=http://www.example.com/"); | 196 "&url=http://www.example.com/"); |
163 | 197 |
164 EXPECT_CALL(*mock_image_fetcher_, | 198 EXPECT_CALL(*mock_image_fetcher_, |
165 StartOrQueueNetworkRequest(_, kExpectedServerUrl, _)) | 199 StartOrQueueNetworkRequest(_, kExpectedServerUrl, _)) |
166 .WillOnce(PostFetchReply(gfx::Image::CreateFrom1xBitmap( | 200 .WillOnce(PostFetchReply(gfx::Image::CreateFrom1xBitmap( |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
385 | 419 |
386 // Every test will appear with suffix /0 (param false) and /1 (param true), e.g. | 420 // Every test will appear with suffix /0 (param false) and /1 (param true), e.g. |
387 // LargeIconServiceGetterTest.FallbackSinceTooPicky/0: get image. | 421 // LargeIconServiceGetterTest.FallbackSinceTooPicky/0: get image. |
388 // LargeIconServiceGetterTest.FallbackSinceTooPicky/1: get raw bitmap. | 422 // LargeIconServiceGetterTest.FallbackSinceTooPicky/1: get raw bitmap. |
389 INSTANTIATE_TEST_CASE_P(, // Empty instatiation name. | 423 INSTANTIATE_TEST_CASE_P(, // Empty instatiation name. |
390 LargeIconServiceGetterTest, | 424 LargeIconServiceGetterTest, |
391 ::testing::Values(false, true)); | 425 ::testing::Values(false, true)); |
392 | 426 |
393 } // namespace | 427 } // namespace |
394 } // namespace favicon | 428 } // namespace favicon |
OLD | NEW |