OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2013, Google Inc. All rights reserved. | 2 * Copyright (c) 2013, Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 1227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1238 // loading. | 1238 // loading. |
1239 EXPECT_FALSE(observer->ImageNotifyFinishedCalled()); | 1239 EXPECT_FALSE(observer->ImageNotifyFinishedCalled()); |
1240 EXPECT_EQ(2, observer->ImageChangedCount()); | 1240 EXPECT_EQ(2, observer->ImageChangedCount()); |
1241 | 1241 |
1242 TestThatReloadIsStartedThenServeReload( | 1242 TestThatReloadIsStartedThenServeReload( |
1243 test_url, image_resource, image_resource->GetContent(), observer.get(), | 1243 test_url, image_resource, image_resource->GetContent(), observer.get(), |
1244 WebCachePolicy::kBypassingCache); | 1244 WebCachePolicy::kBypassingCache); |
1245 } | 1245 } |
1246 | 1246 |
1247 TEST(ImageResourceTest, FetchAllowPlaceholderPartialContentWithoutDimensions) { | 1247 TEST(ImageResourceTest, FetchAllowPlaceholderPartialContentWithoutDimensions) { |
1248 KURL test_url(kParsedURLString, kTestURL); | 1248 const struct { |
1249 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); | 1249 WebURLRequest::PreviewsState initial_previews_state; |
| 1250 WebURLRequest::PreviewsState expected_reload_previews_state; |
| 1251 } tests[] = { |
| 1252 {WebURLRequest::kPreviewsUnspecified, |
| 1253 WebURLRequest::kPreviewsNoTransform}, |
| 1254 {WebURLRequest::kClientLoFiOn, WebURLRequest::kPreviewsNoTransform | |
| 1255 WebURLRequest::kClientLoFiAutoReload}, |
| 1256 }; |
1250 | 1257 |
1251 FetchParameters params{ResourceRequest(test_url), FetchInitiatorInfo()}; | 1258 for (const auto& test : tests) { |
1252 params.SetAllowImagePlaceholder(); | 1259 KURL test_url(kParsedURLString, kTestURL); |
1253 ImageResource* image_resource = ImageResource::Fetch(params, CreateFetcher()); | 1260 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); |
1254 EXPECT_EQ(FetchParameters::kAllowPlaceholder, | |
1255 params.GetPlaceholderImageRequestType()); | |
1256 EXPECT_EQ("bytes=0-2047", | |
1257 image_resource->GetResourceRequest().HttpHeaderField("range")); | |
1258 EXPECT_TRUE(image_resource->ShouldShowPlaceholder()); | |
1259 std::unique_ptr<MockImageResourceObserver> observer = | |
1260 MockImageResourceObserver::Create(image_resource->GetContent()); | |
1261 | 1261 |
1262 // TODO(hiroshige): Make the range request header and partial content length | 1262 ResourceRequest resource_request(test_url); |
1263 // consistent. https://crbug.com/689760. | 1263 resource_request.SetPreviewsState(test.initial_previews_state); |
1264 ResourceResponse partial_response(test_url, "image/jpeg", | 1264 FetchParameters params{resource_request, FetchInitiatorInfo()}; |
1265 kJpegImageSubrangeWithoutDimensionsLength, | |
1266 g_null_atom); | |
1267 partial_response.SetHTTPStatusCode(206); | |
1268 partial_response.SetHTTPHeaderField( | |
1269 "content-range", | |
1270 BuildContentRange(kJpegImageSubrangeWithoutDimensionsLength, | |
1271 sizeof(kJpegImage))); | |
1272 | 1265 |
1273 image_resource->Loader()->DidReceiveResponse( | 1266 params.SetAllowImagePlaceholder(); |
1274 WrappedResourceResponse(partial_response)); | 1267 ImageResource* image_resource = |
1275 image_resource->Loader()->DidReceiveData( | 1268 ImageResource::Fetch(params, CreateFetcher()); |
1276 reinterpret_cast<const char*>(kJpegImage), | 1269 EXPECT_EQ(FetchParameters::kAllowPlaceholder, |
1277 kJpegImageSubrangeWithoutDimensionsLength); | 1270 params.GetPlaceholderImageRequestType()); |
| 1271 EXPECT_EQ("bytes=0-2047", |
| 1272 image_resource->GetResourceRequest().HttpHeaderField("range")); |
| 1273 EXPECT_TRUE(image_resource->ShouldShowPlaceholder()); |
| 1274 std::unique_ptr<MockImageResourceObserver> observer = |
| 1275 MockImageResourceObserver::Create(image_resource->GetContent()); |
1278 | 1276 |
1279 EXPECT_EQ(0, observer->ImageChangedCount()); | 1277 // TODO(hiroshige): Make the range request header and partial content length |
| 1278 // consistent. https://crbug.com/689760. |
| 1279 ResourceResponse partial_response(test_url, "image/jpeg", |
| 1280 kJpegImageSubrangeWithoutDimensionsLength, |
| 1281 g_null_atom); |
| 1282 partial_response.SetHTTPStatusCode(206); |
| 1283 partial_response.SetHTTPHeaderField( |
| 1284 "content-range", |
| 1285 BuildContentRange(kJpegImageSubrangeWithoutDimensionsLength, |
| 1286 sizeof(kJpegImage))); |
1280 | 1287 |
1281 image_resource->Loader()->DidFinishLoading( | 1288 image_resource->Loader()->DidReceiveResponse( |
1282 0.0, kJpegImageSubrangeWithoutDimensionsLength, | 1289 WrappedResourceResponse(partial_response)); |
1283 kJpegImageSubrangeWithoutDimensionsLength, | 1290 image_resource->Loader()->DidReceiveData( |
1284 kJpegImageSubrangeWithoutDimensionsLength); | 1291 reinterpret_cast<const char*>(kJpegImage), |
| 1292 kJpegImageSubrangeWithoutDimensionsLength); |
1285 | 1293 |
1286 EXPECT_FALSE(observer->ImageNotifyFinishedCalled()); | 1294 EXPECT_EQ(0, observer->ImageChangedCount()); |
1287 EXPECT_EQ(2, observer->ImageChangedCount()); | |
1288 | 1295 |
1289 TestThatReloadIsStartedThenServeReload( | 1296 image_resource->Loader()->DidFinishLoading( |
1290 test_url, image_resource, image_resource->GetContent(), observer.get(), | 1297 0.0, kJpegImageSubrangeWithoutDimensionsLength, |
1291 WebCachePolicy::kBypassingCache); | 1298 kJpegImageSubrangeWithoutDimensionsLength, |
| 1299 kJpegImageSubrangeWithoutDimensionsLength); |
| 1300 |
| 1301 EXPECT_FALSE(observer->ImageNotifyFinishedCalled()); |
| 1302 EXPECT_EQ(2, observer->ImageChangedCount()); |
| 1303 |
| 1304 TestThatReloadIsStartedThenServeReload( |
| 1305 test_url, image_resource, image_resource->GetContent(), observer.get(), |
| 1306 WebCachePolicy::kBypassingCache); |
| 1307 |
| 1308 EXPECT_EQ(test.expected_reload_previews_state, |
| 1309 image_resource->GetResourceRequest().GetPreviewsState()); |
| 1310 } |
1292 } | 1311 } |
1293 | 1312 |
1294 TEST(ImageResourceTest, FetchAllowPlaceholderThenDisallowPlaceholder) { | 1313 TEST(ImageResourceTest, FetchAllowPlaceholderThenDisallowPlaceholder) { |
1295 KURL test_url(kParsedURLString, kTestURL); | 1314 KURL test_url(kParsedURLString, kTestURL); |
1296 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); | 1315 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); |
1297 | 1316 |
1298 ResourceFetcher* fetcher = CreateFetcher(); | 1317 ResourceFetcher* fetcher = CreateFetcher(); |
1299 | 1318 |
1300 FetchParameters placeholder_params{ResourceRequest(test_url), | 1319 FetchParameters placeholder_params{ResourceRequest(test_url), |
1301 FetchInitiatorInfo()}; | 1320 FetchInitiatorInfo()}; |
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1604 EXPECT_TRUE(observer->ImageNotifyFinishedCalled()); | 1623 EXPECT_TRUE(observer->ImageNotifyFinishedCalled()); |
1605 EXPECT_TRUE(image_resource->GetContent()->GetImage()->IsBitmapImage()); | 1624 EXPECT_TRUE(image_resource->GetContent()->GetImage()->IsBitmapImage()); |
1606 EXPECT_EQ(50, image_resource->GetContent()->GetImage()->width()); | 1625 EXPECT_EQ(50, image_resource->GetContent()->GetImage()->width()); |
1607 EXPECT_EQ(50, image_resource->GetContent()->GetImage()->height()); | 1626 EXPECT_EQ(50, image_resource->GetContent()->GetImage()->height()); |
1608 | 1627 |
1609 WTF::SetTimeFunctionsForTesting(nullptr); | 1628 WTF::SetTimeFunctionsForTesting(nullptr); |
1610 } | 1629 } |
1611 | 1630 |
1612 } // namespace | 1631 } // namespace |
1613 } // namespace blink | 1632 } // namespace blink |
OLD | NEW |