| 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 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 181 WebCachePolicy policyForReload) { | 181 WebCachePolicy policyForReload) { |
| 182 const char* data = reinterpret_cast<const char*>(kJpegImage2); | 182 const char* data = reinterpret_cast<const char*>(kJpegImage2); |
| 183 constexpr size_t dataLength = sizeof(kJpegImage2); | 183 constexpr size_t dataLength = sizeof(kJpegImage2); |
| 184 constexpr int imageWidth = 50; | 184 constexpr int imageWidth = 50; |
| 185 constexpr int imageHeight = 50; | 185 constexpr int imageHeight = 50; |
| 186 | 186 |
| 187 // Checks that |imageResource| and |content| are ready for non-placeholder | 187 // Checks that |imageResource| and |content| are ready for non-placeholder |
| 188 // reloading. | 188 // reloading. |
| 189 EXPECT_EQ(ResourceStatus::Pending, imageResource->getStatus()); | 189 EXPECT_EQ(ResourceStatus::Pending, imageResource->getStatus()); |
| 190 EXPECT_FALSE(imageResource->resourceBuffer()); | 190 EXPECT_FALSE(imageResource->resourceBuffer()); |
| 191 EXPECT_FALSE(imageResource->isPlaceholder()); | 191 EXPECT_FALSE(imageResource->shouldShowPlaceholder()); |
| 192 EXPECT_EQ(nullAtom, | 192 EXPECT_EQ(nullAtom, |
| 193 imageResource->resourceRequest().httpHeaderField("range")); | 193 imageResource->resourceRequest().httpHeaderField("range")); |
| 194 EXPECT_EQ(policyForReload, imageResource->resourceRequest().getCachePolicy()); | 194 EXPECT_EQ(policyForReload, imageResource->resourceRequest().getCachePolicy()); |
| 195 EXPECT_EQ(content, imageResource->getContent()); | 195 EXPECT_EQ(content, imageResource->getContent()); |
| 196 EXPECT_FALSE(content->hasImage()); | 196 EXPECT_FALSE(content->hasImage()); |
| 197 | 197 |
| 198 // Checks |observer| before reloading. | 198 // Checks |observer| before reloading. |
| 199 const int originalImageChangedCount = observer->imageChangedCount(); | 199 const int originalImageChangedCount = observer->imageChangedCount(); |
| 200 const bool alreadyNotifiedFinish = observer->imageNotifyFinishedCalled(); | 200 const bool alreadyNotifiedFinish = observer->imageNotifyFinishedCalled(); |
| 201 const int imageWidthOnImageNotifyFinished = | 201 const int imageWidthOnImageNotifyFinished = |
| (...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 575 imageResource->loader()->didReceiveResponse( | 575 imageResource->loader()->didReceiveResponse( |
| 576 WrappedResourceResponse(response)); | 576 WrappedResourceResponse(response)); |
| 577 imageResource->loader()->didReceiveData( | 577 imageResource->loader()->didReceiveData( |
| 578 reinterpret_cast<const char*>(kJpegImage), | 578 reinterpret_cast<const char*>(kJpegImage), |
| 579 kJpegImageSubrangeWithDimensionsLength); | 579 kJpegImageSubrangeWithDimensionsLength); |
| 580 imageResource->loader()->didFinishLoading( | 580 imageResource->loader()->didFinishLoading( |
| 581 0.0, kJpegImageSubrangeWithDimensionsLength, | 581 0.0, kJpegImageSubrangeWithDimensionsLength, |
| 582 kJpegImageSubrangeWithDimensionsLength); | 582 kJpegImageSubrangeWithDimensionsLength); |
| 583 | 583 |
| 584 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); | 584 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); |
| 585 EXPECT_TRUE(imageResource->isPlaceholder()); | 585 EXPECT_TRUE(imageResource->shouldShowPlaceholder()); |
| 586 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); | 586 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); |
| 587 | 587 |
| 588 imageResource->reloadIfLoFiOrPlaceholderImage(fetcher, | 588 imageResource->reloadIfLoFiOrPlaceholderImage(fetcher, |
| 589 Resource::kReloadAlways); | 589 Resource::kReloadAlways); |
| 590 | 590 |
| 591 testThatReloadIsStartedThenServeReload( | 591 testThatReloadIsStartedThenServeReload( |
| 592 testURL, imageResource, imageResource->getContent(), observer.get(), | 592 testURL, imageResource, imageResource->getContent(), observer.get(), |
| 593 WebCachePolicy::BypassingCache); | 593 WebCachePolicy::BypassingCache); |
| 594 } | 594 } |
| 595 | 595 |
| (...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 956 TEST(ImageResourceTest, FetchDisallowPlaceholder) { | 956 TEST(ImageResourceTest, FetchDisallowPlaceholder) { |
| 957 KURL testURL(ParsedURLString, kTestURL); | 957 KURL testURL(ParsedURLString, kTestURL); |
| 958 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); | 958 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); |
| 959 | 959 |
| 960 FetchRequest request(testURL, FetchInitiatorInfo()); | 960 FetchRequest request(testURL, FetchInitiatorInfo()); |
| 961 ImageResource* imageResource = ImageResource::fetch(request, createFetcher()); | 961 ImageResource* imageResource = ImageResource::fetch(request, createFetcher()); |
| 962 EXPECT_EQ(FetchRequest::DisallowPlaceholder, | 962 EXPECT_EQ(FetchRequest::DisallowPlaceholder, |
| 963 request.placeholderImageRequestType()); | 963 request.placeholderImageRequestType()); |
| 964 EXPECT_EQ(nullAtom, | 964 EXPECT_EQ(nullAtom, |
| 965 imageResource->resourceRequest().httpHeaderField("range")); | 965 imageResource->resourceRequest().httpHeaderField("range")); |
| 966 EXPECT_FALSE(imageResource->isPlaceholder()); | 966 EXPECT_FALSE(imageResource->shouldShowPlaceholder()); |
| 967 std::unique_ptr<MockImageResourceObserver> observer = | 967 std::unique_ptr<MockImageResourceObserver> observer = |
| 968 MockImageResourceObserver::create(imageResource->getContent()); | 968 MockImageResourceObserver::create(imageResource->getContent()); |
| 969 | 969 |
| 970 imageResource->loader()->didReceiveResponse(WrappedResourceResponse( | 970 imageResource->loader()->didReceiveResponse(WrappedResourceResponse( |
| 971 ResourceResponse(testURL, "image/jpeg", sizeof(kJpegImage), nullAtom))); | 971 ResourceResponse(testURL, "image/jpeg", sizeof(kJpegImage), nullAtom))); |
| 972 imageResource->loader()->didReceiveData( | 972 imageResource->loader()->didReceiveData( |
| 973 reinterpret_cast<const char*>(kJpegImage), sizeof(kJpegImage)); | 973 reinterpret_cast<const char*>(kJpegImage), sizeof(kJpegImage)); |
| 974 imageResource->loader()->didFinishLoading(0.0, sizeof(kJpegImage), | 974 imageResource->loader()->didFinishLoading(0.0, sizeof(kJpegImage), |
| 975 sizeof(kJpegImage)); | 975 sizeof(kJpegImage)); |
| 976 | 976 |
| 977 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); | 977 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); |
| 978 EXPECT_EQ(sizeof(kJpegImage), imageResource->encodedSize()); | 978 EXPECT_EQ(sizeof(kJpegImage), imageResource->encodedSize()); |
| 979 EXPECT_FALSE(imageResource->isPlaceholder()); | 979 EXPECT_FALSE(imageResource->shouldShowPlaceholder()); |
| 980 EXPECT_LT(0, observer->imageChangedCount()); | 980 EXPECT_LT(0, observer->imageChangedCount()); |
| 981 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnLastImageChanged()); | 981 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnLastImageChanged()); |
| 982 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); | 982 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); |
| 983 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnImageNotifyFinished()); | 983 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnImageNotifyFinished()); |
| 984 | 984 |
| 985 ASSERT_TRUE(imageResource->getContent()->hasImage()); | 985 ASSERT_TRUE(imageResource->getContent()->hasImage()); |
| 986 EXPECT_EQ(1, imageResource->getContent()->getImage()->width()); | 986 EXPECT_EQ(1, imageResource->getContent()->getImage()->width()); |
| 987 EXPECT_EQ(1, imageResource->getContent()->getImage()->height()); | 987 EXPECT_EQ(1, imageResource->getContent()->getImage()->height()); |
| 988 EXPECT_TRUE(imageResource->getContent()->getImage()->isBitmapImage()); | 988 EXPECT_TRUE(imageResource->getContent()->getImage()->isBitmapImage()); |
| 989 } | 989 } |
| 990 | 990 |
| 991 TEST(ImageResourceTest, FetchAllowPlaceholderDataURL) { | 991 TEST(ImageResourceTest, FetchAllowPlaceholderDataURL) { |
| 992 KURL testURL(ParsedURLString, | 992 KURL testURL(ParsedURLString, |
| 993 "data:image/jpeg;base64," + | 993 "data:image/jpeg;base64," + |
| 994 base64Encode(reinterpret_cast<const char*>(kJpegImage), | 994 base64Encode(reinterpret_cast<const char*>(kJpegImage), |
| 995 sizeof(kJpegImage))); | 995 sizeof(kJpegImage))); |
| 996 FetchRequest request(testURL, FetchInitiatorInfo()); | 996 FetchRequest request(testURL, FetchInitiatorInfo()); |
| 997 request.setAllowImagePlaceholder(); | 997 request.setAllowImagePlaceholder(); |
| 998 ImageResource* imageResource = ImageResource::fetch(request, createFetcher()); | 998 ImageResource* imageResource = ImageResource::fetch(request, createFetcher()); |
| 999 EXPECT_EQ(FetchRequest::DisallowPlaceholder, | 999 EXPECT_EQ(FetchRequest::DisallowPlaceholder, |
| 1000 request.placeholderImageRequestType()); | 1000 request.placeholderImageRequestType()); |
| 1001 EXPECT_EQ(nullAtom, | 1001 EXPECT_EQ(nullAtom, |
| 1002 imageResource->resourceRequest().httpHeaderField("range")); | 1002 imageResource->resourceRequest().httpHeaderField("range")); |
| 1003 EXPECT_FALSE(imageResource->isPlaceholder()); | 1003 EXPECT_FALSE(imageResource->shouldShowPlaceholder()); |
| 1004 } | 1004 } |
| 1005 | 1005 |
| 1006 TEST(ImageResourceTest, FetchAllowPlaceholderPostRequest) { | 1006 TEST(ImageResourceTest, FetchAllowPlaceholderPostRequest) { |
| 1007 KURL testURL(ParsedURLString, kTestURL); | 1007 KURL testURL(ParsedURLString, kTestURL); |
| 1008 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); | 1008 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); |
| 1009 ResourceRequest resourceRequest(testURL); | 1009 ResourceRequest resourceRequest(testURL); |
| 1010 resourceRequest.setHTTPMethod("POST"); | 1010 resourceRequest.setHTTPMethod("POST"); |
| 1011 FetchRequest request(resourceRequest, FetchInitiatorInfo()); | 1011 FetchRequest request(resourceRequest, FetchInitiatorInfo()); |
| 1012 request.setAllowImagePlaceholder(); | 1012 request.setAllowImagePlaceholder(); |
| 1013 ImageResource* imageResource = ImageResource::fetch(request, createFetcher()); | 1013 ImageResource* imageResource = ImageResource::fetch(request, createFetcher()); |
| 1014 EXPECT_EQ(FetchRequest::DisallowPlaceholder, | 1014 EXPECT_EQ(FetchRequest::DisallowPlaceholder, |
| 1015 request.placeholderImageRequestType()); | 1015 request.placeholderImageRequestType()); |
| 1016 EXPECT_EQ(nullAtom, | 1016 EXPECT_EQ(nullAtom, |
| 1017 imageResource->resourceRequest().httpHeaderField("range")); | 1017 imageResource->resourceRequest().httpHeaderField("range")); |
| 1018 EXPECT_FALSE(imageResource->isPlaceholder()); | 1018 EXPECT_FALSE(imageResource->shouldShowPlaceholder()); |
| 1019 | 1019 |
| 1020 imageResource->loader()->cancel(); | 1020 imageResource->loader()->cancel(); |
| 1021 } | 1021 } |
| 1022 | 1022 |
| 1023 TEST(ImageResourceTest, FetchAllowPlaceholderExistingRangeHeader) { | 1023 TEST(ImageResourceTest, FetchAllowPlaceholderExistingRangeHeader) { |
| 1024 KURL testURL(ParsedURLString, kTestURL); | 1024 KURL testURL(ParsedURLString, kTestURL); |
| 1025 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); | 1025 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); |
| 1026 ResourceRequest resourceRequest(testURL); | 1026 ResourceRequest resourceRequest(testURL); |
| 1027 resourceRequest.setHTTPHeaderField("range", "bytes=128-255"); | 1027 resourceRequest.setHTTPHeaderField("range", "bytes=128-255"); |
| 1028 FetchRequest request(resourceRequest, FetchInitiatorInfo()); | 1028 FetchRequest request(resourceRequest, FetchInitiatorInfo()); |
| 1029 request.setAllowImagePlaceholder(); | 1029 request.setAllowImagePlaceholder(); |
| 1030 ImageResource* imageResource = ImageResource::fetch(request, createFetcher()); | 1030 ImageResource* imageResource = ImageResource::fetch(request, createFetcher()); |
| 1031 EXPECT_EQ(FetchRequest::DisallowPlaceholder, | 1031 EXPECT_EQ(FetchRequest::DisallowPlaceholder, |
| 1032 request.placeholderImageRequestType()); | 1032 request.placeholderImageRequestType()); |
| 1033 EXPECT_EQ("bytes=128-255", | 1033 EXPECT_EQ("bytes=128-255", |
| 1034 imageResource->resourceRequest().httpHeaderField("range")); | 1034 imageResource->resourceRequest().httpHeaderField("range")); |
| 1035 EXPECT_FALSE(imageResource->isPlaceholder()); | 1035 EXPECT_FALSE(imageResource->shouldShowPlaceholder()); |
| 1036 | 1036 |
| 1037 imageResource->loader()->cancel(); | 1037 imageResource->loader()->cancel(); |
| 1038 } | 1038 } |
| 1039 | 1039 |
| 1040 TEST(ImageResourceTest, FetchAllowPlaceholderSuccessful) { | 1040 TEST(ImageResourceTest, FetchAllowPlaceholderSuccessful) { |
| 1041 KURL testURL(ParsedURLString, kTestURL); | 1041 KURL testURL(ParsedURLString, kTestURL); |
| 1042 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); | 1042 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); |
| 1043 | 1043 |
| 1044 FetchRequest request(testURL, FetchInitiatorInfo()); | 1044 FetchRequest request(testURL, FetchInitiatorInfo()); |
| 1045 request.setAllowImagePlaceholder(); | 1045 request.setAllowImagePlaceholder(); |
| 1046 ImageResource* imageResource = ImageResource::fetch(request, createFetcher()); | 1046 ImageResource* imageResource = ImageResource::fetch(request, createFetcher()); |
| 1047 EXPECT_EQ(FetchRequest::AllowPlaceholder, | 1047 EXPECT_EQ(FetchRequest::AllowPlaceholder, |
| 1048 request.placeholderImageRequestType()); | 1048 request.placeholderImageRequestType()); |
| 1049 EXPECT_EQ("bytes=0-2047", | 1049 EXPECT_EQ("bytes=0-2047", |
| 1050 imageResource->resourceRequest().httpHeaderField("range")); | 1050 imageResource->resourceRequest().httpHeaderField("range")); |
| 1051 EXPECT_TRUE(imageResource->isPlaceholder()); | 1051 EXPECT_TRUE(imageResource->shouldShowPlaceholder()); |
| 1052 std::unique_ptr<MockImageResourceObserver> observer = | 1052 std::unique_ptr<MockImageResourceObserver> observer = |
| 1053 MockImageResourceObserver::create(imageResource->getContent()); | 1053 MockImageResourceObserver::create(imageResource->getContent()); |
| 1054 | 1054 |
| 1055 ResourceResponse response(testURL, "image/jpeg", | 1055 ResourceResponse response(testURL, "image/jpeg", |
| 1056 kJpegImageSubrangeWithDimensionsLength, nullAtom); | 1056 kJpegImageSubrangeWithDimensionsLength, nullAtom); |
| 1057 response.setHTTPStatusCode(206); | 1057 response.setHTTPStatusCode(206); |
| 1058 response.setHTTPHeaderField( | 1058 response.setHTTPHeaderField( |
| 1059 "content-range", buildContentRange(kJpegImageSubrangeWithDimensionsLength, | 1059 "content-range", buildContentRange(kJpegImageSubrangeWithDimensionsLength, |
| 1060 sizeof(kJpegImage))); | 1060 sizeof(kJpegImage))); |
| 1061 imageResource->loader()->didReceiveResponse( | 1061 imageResource->loader()->didReceiveResponse( |
| 1062 WrappedResourceResponse(response)); | 1062 WrappedResourceResponse(response)); |
| 1063 imageResource->loader()->didReceiveData( | 1063 imageResource->loader()->didReceiveData( |
| 1064 reinterpret_cast<const char*>(kJpegImage), | 1064 reinterpret_cast<const char*>(kJpegImage), |
| 1065 kJpegImageSubrangeWithDimensionsLength); | 1065 kJpegImageSubrangeWithDimensionsLength); |
| 1066 imageResource->loader()->didFinishLoading( | 1066 imageResource->loader()->didFinishLoading( |
| 1067 0.0, kJpegImageSubrangeWithDimensionsLength, | 1067 0.0, kJpegImageSubrangeWithDimensionsLength, |
| 1068 kJpegImageSubrangeWithDimensionsLength); | 1068 kJpegImageSubrangeWithDimensionsLength); |
| 1069 | 1069 |
| 1070 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); | 1070 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); |
| 1071 EXPECT_EQ(kJpegImageSubrangeWithDimensionsLength, | 1071 EXPECT_EQ(kJpegImageSubrangeWithDimensionsLength, |
| 1072 imageResource->encodedSize()); | 1072 imageResource->encodedSize()); |
| 1073 EXPECT_TRUE(imageResource->isPlaceholder()); | 1073 EXPECT_TRUE(imageResource->shouldShowPlaceholder()); |
| 1074 EXPECT_LT(0, observer->imageChangedCount()); | 1074 EXPECT_LT(0, observer->imageChangedCount()); |
| 1075 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnLastImageChanged()); | 1075 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnLastImageChanged()); |
| 1076 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); | 1076 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); |
| 1077 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnImageNotifyFinished()); | 1077 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnImageNotifyFinished()); |
| 1078 | 1078 |
| 1079 ASSERT_TRUE(imageResource->getContent()->hasImage()); | 1079 ASSERT_TRUE(imageResource->getContent()->hasImage()); |
| 1080 EXPECT_EQ(1, imageResource->getContent()->getImage()->width()); | 1080 EXPECT_EQ(1, imageResource->getContent()->getImage()->width()); |
| 1081 EXPECT_EQ(1, imageResource->getContent()->getImage()->height()); | 1081 EXPECT_EQ(1, imageResource->getContent()->getImage()->height()); |
| 1082 EXPECT_FALSE(imageResource->getContent()->getImage()->isBitmapImage()); | 1082 EXPECT_FALSE(imageResource->getContent()->getImage()->isBitmapImage()); |
| 1083 EXPECT_FALSE(imageResource->getContent()->getImage()->isSVGImage()); | 1083 EXPECT_FALSE(imageResource->getContent()->getImage()->isSVGImage()); |
| 1084 } | 1084 } |
| 1085 | 1085 |
| 1086 TEST(ImageResourceTest, FetchAllowPlaceholderUnsuccessful) { | 1086 TEST(ImageResourceTest, FetchAllowPlaceholderUnsuccessful) { |
| 1087 KURL testURL(ParsedURLString, kTestURL); | 1087 KURL testURL(ParsedURLString, kTestURL); |
| 1088 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); | 1088 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); |
| 1089 | 1089 |
| 1090 FetchRequest request(testURL, FetchInitiatorInfo()); | 1090 FetchRequest request(testURL, FetchInitiatorInfo()); |
| 1091 request.setAllowImagePlaceholder(); | 1091 request.setAllowImagePlaceholder(); |
| 1092 ImageResource* imageResource = ImageResource::fetch(request, createFetcher()); | 1092 ImageResource* imageResource = ImageResource::fetch(request, createFetcher()); |
| 1093 EXPECT_EQ(FetchRequest::AllowPlaceholder, | 1093 EXPECT_EQ(FetchRequest::AllowPlaceholder, |
| 1094 request.placeholderImageRequestType()); | 1094 request.placeholderImageRequestType()); |
| 1095 EXPECT_EQ("bytes=0-2047", | 1095 EXPECT_EQ("bytes=0-2047", |
| 1096 imageResource->resourceRequest().httpHeaderField("range")); | 1096 imageResource->resourceRequest().httpHeaderField("range")); |
| 1097 EXPECT_TRUE(imageResource->isPlaceholder()); | 1097 EXPECT_TRUE(imageResource->shouldShowPlaceholder()); |
| 1098 std::unique_ptr<MockImageResourceObserver> observer = | 1098 std::unique_ptr<MockImageResourceObserver> observer = |
| 1099 MockImageResourceObserver::create(imageResource->getContent()); | 1099 MockImageResourceObserver::create(imageResource->getContent()); |
| 1100 | 1100 |
| 1101 const char kBadData[] = "notanimageresponse"; | 1101 const char kBadData[] = "notanimageresponse"; |
| 1102 | 1102 |
| 1103 ResourceResponse badResponse(testURL, "image/jpeg", sizeof(kBadData), | 1103 ResourceResponse badResponse(testURL, "image/jpeg", sizeof(kBadData), |
| 1104 nullAtom); | 1104 nullAtom); |
| 1105 badResponse.setHTTPStatusCode(206); | 1105 badResponse.setHTTPStatusCode(206); |
| 1106 badResponse.setHTTPHeaderField( | 1106 badResponse.setHTTPHeaderField( |
| 1107 "content-range", buildContentRange(sizeof(kBadData), sizeof(kJpegImage))); | 1107 "content-range", buildContentRange(sizeof(kBadData), sizeof(kJpegImage))); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1127 KURL testURL(ParsedURLString, kTestURL); | 1127 KURL testURL(ParsedURLString, kTestURL); |
| 1128 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); | 1128 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); |
| 1129 | 1129 |
| 1130 FetchRequest request(testURL, FetchInitiatorInfo()); | 1130 FetchRequest request(testURL, FetchInitiatorInfo()); |
| 1131 request.setAllowImagePlaceholder(); | 1131 request.setAllowImagePlaceholder(); |
| 1132 ImageResource* imageResource = ImageResource::fetch(request, createFetcher()); | 1132 ImageResource* imageResource = ImageResource::fetch(request, createFetcher()); |
| 1133 EXPECT_EQ(FetchRequest::AllowPlaceholder, | 1133 EXPECT_EQ(FetchRequest::AllowPlaceholder, |
| 1134 request.placeholderImageRequestType()); | 1134 request.placeholderImageRequestType()); |
| 1135 EXPECT_EQ("bytes=0-2047", | 1135 EXPECT_EQ("bytes=0-2047", |
| 1136 imageResource->resourceRequest().httpHeaderField("range")); | 1136 imageResource->resourceRequest().httpHeaderField("range")); |
| 1137 EXPECT_TRUE(imageResource->isPlaceholder()); | 1137 EXPECT_TRUE(imageResource->shouldShowPlaceholder()); |
| 1138 std::unique_ptr<MockImageResourceObserver> observer = | 1138 std::unique_ptr<MockImageResourceObserver> observer = |
| 1139 MockImageResourceObserver::create(imageResource->getContent()); | 1139 MockImageResourceObserver::create(imageResource->getContent()); |
| 1140 | 1140 |
| 1141 // TODO(hiroshige): Make the range request header and partial content length | 1141 // TODO(hiroshige): Make the range request header and partial content length |
| 1142 // consistent. https://crbug.com/689760. | 1142 // consistent. https://crbug.com/689760. |
| 1143 ResourceResponse partialResponse(testURL, "image/jpeg", | 1143 ResourceResponse partialResponse(testURL, "image/jpeg", |
| 1144 kJpegImageSubrangeWithoutDimensionsLength, | 1144 kJpegImageSubrangeWithoutDimensionsLength, |
| 1145 nullAtom); | 1145 nullAtom); |
| 1146 partialResponse.setHTTPStatusCode(206); | 1146 partialResponse.setHTTPStatusCode(206); |
| 1147 partialResponse.setHTTPHeaderField( | 1147 partialResponse.setHTTPHeaderField( |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1217 imageResource->loader()->didReceiveData( | 1217 imageResource->loader()->didReceiveData( |
| 1218 reinterpret_cast<const char*>(kJpegImage), | 1218 reinterpret_cast<const char*>(kJpegImage), |
| 1219 kJpegImageSubrangeWithDimensionsLength); | 1219 kJpegImageSubrangeWithDimensionsLength); |
| 1220 imageResource->loader()->didFinishLoading( | 1220 imageResource->loader()->didFinishLoading( |
| 1221 0.0, kJpegImageSubrangeWithDimensionsLength, | 1221 0.0, kJpegImageSubrangeWithDimensionsLength, |
| 1222 kJpegImageSubrangeWithDimensionsLength); | 1222 kJpegImageSubrangeWithDimensionsLength); |
| 1223 | 1223 |
| 1224 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); | 1224 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); |
| 1225 EXPECT_EQ(kJpegImageSubrangeWithDimensionsLength, | 1225 EXPECT_EQ(kJpegImageSubrangeWithDimensionsLength, |
| 1226 imageResource->encodedSize()); | 1226 imageResource->encodedSize()); |
| 1227 EXPECT_TRUE(imageResource->isPlaceholder()); | 1227 EXPECT_TRUE(imageResource->shouldShowPlaceholder()); |
| 1228 EXPECT_LT(0, observer->imageChangedCount()); | 1228 EXPECT_LT(0, observer->imageChangedCount()); |
| 1229 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); | 1229 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); |
| 1230 | 1230 |
| 1231 FetchRequest nonPlaceholderRequest(testURL, FetchInitiatorInfo()); | 1231 FetchRequest nonPlaceholderRequest(testURL, FetchInitiatorInfo()); |
| 1232 ImageResource* secondImageResource = | 1232 ImageResource* secondImageResource = |
| 1233 ImageResource::fetch(nonPlaceholderRequest, fetcher); | 1233 ImageResource::fetch(nonPlaceholderRequest, fetcher); |
| 1234 EXPECT_EQ(imageResource, secondImageResource); | 1234 EXPECT_EQ(imageResource, secondImageResource); |
| 1235 | 1235 |
| 1236 testThatReloadIsStartedThenServeReload( | 1236 testThatReloadIsStartedThenServeReload( |
| 1237 testURL, imageResource, imageResource->getContent(), observer.get(), | 1237 testURL, imageResource, imageResource->getContent(), observer.get(), |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1252 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); | 1252 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); |
| 1253 | 1253 |
| 1254 FetchRequest request(testURL, FetchInitiatorInfo()); | 1254 FetchRequest request(testURL, FetchInitiatorInfo()); |
| 1255 request.setAllowImagePlaceholder(); | 1255 request.setAllowImagePlaceholder(); |
| 1256 ImageResource* imageResource = | 1256 ImageResource* imageResource = |
| 1257 ImageResource::fetch(request, createFetcher()); | 1257 ImageResource::fetch(request, createFetcher()); |
| 1258 EXPECT_EQ(FetchRequest::AllowPlaceholder, | 1258 EXPECT_EQ(FetchRequest::AllowPlaceholder, |
| 1259 request.placeholderImageRequestType()); | 1259 request.placeholderImageRequestType()); |
| 1260 EXPECT_EQ("bytes=0-2047", | 1260 EXPECT_EQ("bytes=0-2047", |
| 1261 imageResource->resourceRequest().httpHeaderField("range")); | 1261 imageResource->resourceRequest().httpHeaderField("range")); |
| 1262 EXPECT_TRUE(imageResource->isPlaceholder()); | 1262 EXPECT_TRUE(imageResource->shouldShowPlaceholder()); |
| 1263 std::unique_ptr<MockImageResourceObserver> observer = | 1263 std::unique_ptr<MockImageResourceObserver> observer = |
| 1264 MockImageResourceObserver::create(imageResource->getContent()); | 1264 MockImageResourceObserver::create(imageResource->getContent()); |
| 1265 | 1265 |
| 1266 ResourceResponse response(testURL, "image/jpeg", sizeof(kJpegImage), | 1266 ResourceResponse response(testURL, "image/jpeg", sizeof(kJpegImage), |
| 1267 nullAtom); | 1267 nullAtom); |
| 1268 response.setHTTPStatusCode(test.statusCode); | 1268 response.setHTTPStatusCode(test.statusCode); |
| 1269 if (test.contentRange != nullAtom) | 1269 if (test.contentRange != nullAtom) |
| 1270 response.setHTTPHeaderField("content-range", test.contentRange); | 1270 response.setHTTPHeaderField("content-range", test.contentRange); |
| 1271 imageResource->loader()->didReceiveResponse( | 1271 imageResource->loader()->didReceiveResponse( |
| 1272 WrappedResourceResponse(response)); | 1272 WrappedResourceResponse(response)); |
| 1273 imageResource->loader()->didReceiveData( | 1273 imageResource->loader()->didReceiveData( |
| 1274 reinterpret_cast<const char*>(kJpegImage), sizeof(kJpegImage)); | 1274 reinterpret_cast<const char*>(kJpegImage), sizeof(kJpegImage)); |
| 1275 imageResource->loader()->didFinishLoading(0.0, sizeof(kJpegImage), | 1275 imageResource->loader()->didFinishLoading(0.0, sizeof(kJpegImage), |
| 1276 sizeof(kJpegImage)); | 1276 sizeof(kJpegImage)); |
| 1277 | 1277 |
| 1278 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); | 1278 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); |
| 1279 EXPECT_EQ(sizeof(kJpegImage), imageResource->encodedSize()); | 1279 EXPECT_EQ(sizeof(kJpegImage), imageResource->encodedSize()); |
| 1280 EXPECT_FALSE(imageResource->isPlaceholder()); | 1280 EXPECT_FALSE(imageResource->shouldShowPlaceholder()); |
| 1281 EXPECT_LT(0, observer->imageChangedCount()); | 1281 EXPECT_LT(0, observer->imageChangedCount()); |
| 1282 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnLastImageChanged()); | 1282 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnLastImageChanged()); |
| 1283 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); | 1283 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); |
| 1284 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnImageNotifyFinished()); | 1284 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnImageNotifyFinished()); |
| 1285 | 1285 |
| 1286 ASSERT_TRUE(imageResource->getContent()->hasImage()); | 1286 ASSERT_TRUE(imageResource->getContent()->hasImage()); |
| 1287 EXPECT_EQ(1, imageResource->getContent()->getImage()->width()); | 1287 EXPECT_EQ(1, imageResource->getContent()->getImage()->width()); |
| 1288 EXPECT_EQ(1, imageResource->getContent()->getImage()->height()); | 1288 EXPECT_EQ(1, imageResource->getContent()->getImage()->height()); |
| 1289 EXPECT_TRUE(imageResource->getContent()->getImage()->isBitmapImage()); | 1289 EXPECT_TRUE(imageResource->getContent()->getImage()->isBitmapImage()); |
| 1290 } | 1290 } |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1309 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); | 1309 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); |
| 1310 | 1310 |
| 1311 FetchRequest request(testURL, FetchInitiatorInfo()); | 1311 FetchRequest request(testURL, FetchInitiatorInfo()); |
| 1312 request.setAllowImagePlaceholder(); | 1312 request.setAllowImagePlaceholder(); |
| 1313 ImageResource* imageResource = | 1313 ImageResource* imageResource = |
| 1314 ImageResource::fetch(request, createFetcher()); | 1314 ImageResource::fetch(request, createFetcher()); |
| 1315 EXPECT_EQ(FetchRequest::AllowPlaceholder, | 1315 EXPECT_EQ(FetchRequest::AllowPlaceholder, |
| 1316 request.placeholderImageRequestType()); | 1316 request.placeholderImageRequestType()); |
| 1317 EXPECT_EQ("bytes=0-2047", | 1317 EXPECT_EQ("bytes=0-2047", |
| 1318 imageResource->resourceRequest().httpHeaderField("range")); | 1318 imageResource->resourceRequest().httpHeaderField("range")); |
| 1319 EXPECT_TRUE(imageResource->isPlaceholder()); | 1319 EXPECT_TRUE(imageResource->shouldShowPlaceholder()); |
| 1320 std::unique_ptr<MockImageResourceObserver> observer = | 1320 std::unique_ptr<MockImageResourceObserver> observer = |
| 1321 MockImageResourceObserver::create(imageResource->getContent()); | 1321 MockImageResourceObserver::create(imageResource->getContent()); |
| 1322 | 1322 |
| 1323 ResourceResponse response(testURL, "image/jpeg", test.dataSize, nullAtom); | 1323 ResourceResponse response(testURL, "image/jpeg", test.dataSize, nullAtom); |
| 1324 response.setHTTPStatusCode(test.statusCode); | 1324 response.setHTTPStatusCode(test.statusCode); |
| 1325 if (test.contentRange != nullAtom) | 1325 if (test.contentRange != nullAtom) |
| 1326 response.setHTTPHeaderField("content-range", test.contentRange); | 1326 response.setHTTPHeaderField("content-range", test.contentRange); |
| 1327 imageResource->loader()->didReceiveResponse( | 1327 imageResource->loader()->didReceiveResponse( |
| 1328 WrappedResourceResponse(response)); | 1328 WrappedResourceResponse(response)); |
| 1329 imageResource->loader()->didReceiveData(kBadImageData, test.dataSize); | 1329 imageResource->loader()->didReceiveData(kBadImageData, test.dataSize); |
| 1330 | 1330 |
| 1331 EXPECT_EQ(ResourceStatus::DecodeError, imageResource->getStatus()); | 1331 EXPECT_EQ(ResourceStatus::DecodeError, imageResource->getStatus()); |
| 1332 EXPECT_FALSE(imageResource->isPlaceholder()); | 1332 EXPECT_FALSE(imageResource->shouldShowPlaceholder()); |
| 1333 } | 1333 } |
| 1334 } | 1334 } |
| 1335 | 1335 |
| 1336 TEST(ImageResourceTest, | 1336 TEST(ImageResourceTest, |
| 1337 FetchAllowPlaceholderFullResponseDecodeFailureWithReload) { | 1337 FetchAllowPlaceholderFullResponseDecodeFailureWithReload) { |
| 1338 const int kStatusCodes[] = {404, 500}; | 1338 const int kStatusCodes[] = {404, 500}; |
| 1339 for (int statusCode : kStatusCodes) { | 1339 for (int statusCode : kStatusCodes) { |
| 1340 KURL testURL(ParsedURLString, kTestURL); | 1340 KURL testURL(ParsedURLString, kTestURL); |
| 1341 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); | 1341 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); |
| 1342 | 1342 |
| 1343 FetchRequest request(testURL, FetchInitiatorInfo()); | 1343 FetchRequest request(testURL, FetchInitiatorInfo()); |
| 1344 request.setAllowImagePlaceholder(); | 1344 request.setAllowImagePlaceholder(); |
| 1345 ImageResource* imageResource = | 1345 ImageResource* imageResource = |
| 1346 ImageResource::fetch(request, createFetcher()); | 1346 ImageResource::fetch(request, createFetcher()); |
| 1347 EXPECT_EQ(FetchRequest::AllowPlaceholder, | 1347 EXPECT_EQ(FetchRequest::AllowPlaceholder, |
| 1348 request.placeholderImageRequestType()); | 1348 request.placeholderImageRequestType()); |
| 1349 EXPECT_EQ("bytes=0-2047", | 1349 EXPECT_EQ("bytes=0-2047", |
| 1350 imageResource->resourceRequest().httpHeaderField("range")); | 1350 imageResource->resourceRequest().httpHeaderField("range")); |
| 1351 EXPECT_TRUE(imageResource->isPlaceholder()); | 1351 EXPECT_TRUE(imageResource->shouldShowPlaceholder()); |
| 1352 std::unique_ptr<MockImageResourceObserver> observer = | 1352 std::unique_ptr<MockImageResourceObserver> observer = |
| 1353 MockImageResourceObserver::create(imageResource->getContent()); | 1353 MockImageResourceObserver::create(imageResource->getContent()); |
| 1354 | 1354 |
| 1355 static const char kBadImageData[] = "bad image data"; | 1355 static const char kBadImageData[] = "bad image data"; |
| 1356 | 1356 |
| 1357 ResourceResponse response(testURL, "image/jpeg", sizeof(kBadImageData), | 1357 ResourceResponse response(testURL, "image/jpeg", sizeof(kBadImageData), |
| 1358 nullAtom); | 1358 nullAtom); |
| 1359 response.setHTTPStatusCode(statusCode); | 1359 response.setHTTPStatusCode(statusCode); |
| 1360 imageResource->loader()->didReceiveResponse( | 1360 imageResource->loader()->didReceiveResponse( |
| 1361 WrappedResourceResponse(response)); | 1361 WrappedResourceResponse(response)); |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1453 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); | 1453 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); |
| 1454 EXPECT_TRUE(imageResource->getContent()->getImage()->isBitmapImage()); | 1454 EXPECT_TRUE(imageResource->getContent()->getImage()->isBitmapImage()); |
| 1455 EXPECT_EQ(50, imageResource->getContent()->getImage()->width()); | 1455 EXPECT_EQ(50, imageResource->getContent()->getImage()->width()); |
| 1456 EXPECT_EQ(50, imageResource->getContent()->getImage()->height()); | 1456 EXPECT_EQ(50, imageResource->getContent()->getImage()->height()); |
| 1457 | 1457 |
| 1458 WTF::setTimeFunctionsForTesting(nullptr); | 1458 WTF::setTimeFunctionsForTesting(nullptr); |
| 1459 } | 1459 } |
| 1460 | 1460 |
| 1461 } // namespace | 1461 } // namespace |
| 1462 } // namespace blink | 1462 } // namespace blink |
| OLD | NEW |