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

Side by Side Diff: third_party/WebKit/Source/core/loader/resource/ImageResourceTest.cpp

Issue 2873793002: Record Data Savings for Client-Side LoFi (Closed)
Patch Set: fix crash in DRPNetworkDelegate when lofi_ui_service is null. Created 3 years, 7 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 /* 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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698