| 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 404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 606 imageResource->loader()->didReceiveResponse( | 606 imageResource->loader()->didReceiveResponse( |
| 607 WrappedResourceResponse(response)); | 607 WrappedResourceResponse(response)); |
| 608 imageResource->loader()->didReceiveData( | 608 imageResource->loader()->didReceiveData( |
| 609 reinterpret_cast<const char*>(kJpegImage), | 609 reinterpret_cast<const char*>(kJpegImage), |
| 610 kJpegImageSubrangeWithDimensionsLength); | 610 kJpegImageSubrangeWithDimensionsLength); |
| 611 imageResource->loader()->didFinishLoading( | 611 imageResource->loader()->didFinishLoading( |
| 612 0.0, kJpegImageSubrangeWithDimensionsLength, | 612 0.0, kJpegImageSubrangeWithDimensionsLength, |
| 613 kJpegImageSubrangeWithDimensionsLength); | 613 kJpegImageSubrangeWithDimensionsLength); |
| 614 | 614 |
| 615 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); | 615 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); |
| 616 EXPECT_TRUE(imageResource->isPlaceholder()); | 616 EXPECT_TRUE(imageResource->shouldShowPlaceholder()); |
| 617 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); | 617 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); |
| 618 | 618 |
| 619 imageResource->reloadIfLoFiOrPlaceholderImage(fetcher, | 619 imageResource->reloadIfLoFiOrPlaceholderImage(fetcher, |
| 620 Resource::kReloadAlways); | 620 Resource::kReloadAlways); |
| 621 | 621 |
| 622 testThatReloadIsStartedThenServeReload( | 622 testThatReloadIsStartedThenServeReload( |
| 623 testURL, imageResource, imageResource->getContent(), observer.get(), | 623 testURL, imageResource, imageResource->getContent(), observer.get(), |
| 624 WebCachePolicy::BypassingCache); | 624 WebCachePolicy::BypassingCache); |
| 625 } | 625 } |
| 626 | 626 |
| (...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 992 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); | 992 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); |
| 993 | 993 |
| 994 FetchRequest request(testURL, FetchInitiatorInfo()); | 994 FetchRequest request(testURL, FetchInitiatorInfo()); |
| 995 ImageResource* imageResource = ImageResource::fetch( | 995 ImageResource* imageResource = ImageResource::fetch( |
| 996 request, | 996 request, |
| 997 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); | 997 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); |
| 998 EXPECT_EQ(FetchRequest::DisallowPlaceholder, | 998 EXPECT_EQ(FetchRequest::DisallowPlaceholder, |
| 999 request.placeholderImageRequestType()); | 999 request.placeholderImageRequestType()); |
| 1000 EXPECT_EQ(nullAtom, | 1000 EXPECT_EQ(nullAtom, |
| 1001 imageResource->resourceRequest().httpHeaderField("range")); | 1001 imageResource->resourceRequest().httpHeaderField("range")); |
| 1002 EXPECT_FALSE(imageResource->isPlaceholder()); | 1002 EXPECT_FALSE(imageResource->shouldShowPlaceholder()); |
| 1003 std::unique_ptr<MockImageResourceObserver> observer = | 1003 std::unique_ptr<MockImageResourceObserver> observer = |
| 1004 MockImageResourceObserver::create(imageResource->getContent()); | 1004 MockImageResourceObserver::create(imageResource->getContent()); |
| 1005 | 1005 |
| 1006 imageResource->loader()->didReceiveResponse(WrappedResourceResponse( | 1006 imageResource->loader()->didReceiveResponse(WrappedResourceResponse( |
| 1007 ResourceResponse(testURL, "image/jpeg", sizeof(kJpegImage), nullAtom))); | 1007 ResourceResponse(testURL, "image/jpeg", sizeof(kJpegImage), nullAtom))); |
| 1008 imageResource->loader()->didReceiveData( | 1008 imageResource->loader()->didReceiveData( |
| 1009 reinterpret_cast<const char*>(kJpegImage), sizeof(kJpegImage)); | 1009 reinterpret_cast<const char*>(kJpegImage), sizeof(kJpegImage)); |
| 1010 imageResource->loader()->didFinishLoading(0.0, sizeof(kJpegImage), | 1010 imageResource->loader()->didFinishLoading(0.0, sizeof(kJpegImage), |
| 1011 sizeof(kJpegImage)); | 1011 sizeof(kJpegImage)); |
| 1012 | 1012 |
| 1013 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); | 1013 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); |
| 1014 EXPECT_EQ(sizeof(kJpegImage), imageResource->encodedSize()); | 1014 EXPECT_EQ(sizeof(kJpegImage), imageResource->encodedSize()); |
| 1015 EXPECT_FALSE(imageResource->isPlaceholder()); | 1015 EXPECT_FALSE(imageResource->shouldShowPlaceholder()); |
| 1016 EXPECT_LT(0, observer->imageChangedCount()); | 1016 EXPECT_LT(0, observer->imageChangedCount()); |
| 1017 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnLastImageChanged()); | 1017 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnLastImageChanged()); |
| 1018 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); | 1018 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); |
| 1019 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnImageNotifyFinished()); | 1019 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnImageNotifyFinished()); |
| 1020 | 1020 |
| 1021 ASSERT_TRUE(imageResource->getContent()->hasImage()); | 1021 ASSERT_TRUE(imageResource->getContent()->hasImage()); |
| 1022 EXPECT_EQ(1, imageResource->getContent()->getImage()->width()); | 1022 EXPECT_EQ(1, imageResource->getContent()->getImage()->width()); |
| 1023 EXPECT_EQ(1, imageResource->getContent()->getImage()->height()); | 1023 EXPECT_EQ(1, imageResource->getContent()->getImage()->height()); |
| 1024 EXPECT_TRUE(imageResource->getContent()->getImage()->isBitmapImage()); | 1024 EXPECT_TRUE(imageResource->getContent()->getImage()->isBitmapImage()); |
| 1025 } | 1025 } |
| 1026 | 1026 |
| 1027 TEST(ImageResourceTest, FetchAllowPlaceholderDataURL) { | 1027 TEST(ImageResourceTest, FetchAllowPlaceholderDataURL) { |
| 1028 KURL testURL(ParsedURLString, | 1028 KURL testURL(ParsedURLString, |
| 1029 "data:image/jpeg;base64," + | 1029 "data:image/jpeg;base64," + |
| 1030 base64Encode(reinterpret_cast<const char*>(kJpegImage), | 1030 base64Encode(reinterpret_cast<const char*>(kJpegImage), |
| 1031 sizeof(kJpegImage))); | 1031 sizeof(kJpegImage))); |
| 1032 FetchRequest request(testURL, FetchInitiatorInfo()); | 1032 FetchRequest request(testURL, FetchInitiatorInfo()); |
| 1033 request.setAllowImagePlaceholder(); | 1033 request.setAllowImagePlaceholder(); |
| 1034 ImageResource* imageResource = ImageResource::fetch( | 1034 ImageResource* imageResource = ImageResource::fetch( |
| 1035 request, | 1035 request, |
| 1036 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); | 1036 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); |
| 1037 EXPECT_EQ(FetchRequest::DisallowPlaceholder, | 1037 EXPECT_EQ(FetchRequest::DisallowPlaceholder, |
| 1038 request.placeholderImageRequestType()); | 1038 request.placeholderImageRequestType()); |
| 1039 EXPECT_EQ(nullAtom, | 1039 EXPECT_EQ(nullAtom, |
| 1040 imageResource->resourceRequest().httpHeaderField("range")); | 1040 imageResource->resourceRequest().httpHeaderField("range")); |
| 1041 EXPECT_FALSE(imageResource->isPlaceholder()); | 1041 EXPECT_FALSE(imageResource->shouldShowPlaceholder()); |
| 1042 } | 1042 } |
| 1043 | 1043 |
| 1044 TEST(ImageResourceTest, FetchAllowPlaceholderPostRequest) { | 1044 TEST(ImageResourceTest, FetchAllowPlaceholderPostRequest) { |
| 1045 KURL testURL(ParsedURLString, kTestURL); | 1045 KURL testURL(ParsedURLString, kTestURL); |
| 1046 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); | 1046 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); |
| 1047 ResourceRequest resourceRequest(testURL); | 1047 ResourceRequest resourceRequest(testURL); |
| 1048 resourceRequest.setHTTPMethod("POST"); | 1048 resourceRequest.setHTTPMethod("POST"); |
| 1049 FetchRequest request(resourceRequest, FetchInitiatorInfo()); | 1049 FetchRequest request(resourceRequest, FetchInitiatorInfo()); |
| 1050 request.setAllowImagePlaceholder(); | 1050 request.setAllowImagePlaceholder(); |
| 1051 ImageResource* imageResource = ImageResource::fetch( | 1051 ImageResource* imageResource = ImageResource::fetch( |
| 1052 request, | 1052 request, |
| 1053 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); | 1053 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); |
| 1054 EXPECT_EQ(FetchRequest::DisallowPlaceholder, | 1054 EXPECT_EQ(FetchRequest::DisallowPlaceholder, |
| 1055 request.placeholderImageRequestType()); | 1055 request.placeholderImageRequestType()); |
| 1056 EXPECT_EQ(nullAtom, | 1056 EXPECT_EQ(nullAtom, |
| 1057 imageResource->resourceRequest().httpHeaderField("range")); | 1057 imageResource->resourceRequest().httpHeaderField("range")); |
| 1058 EXPECT_FALSE(imageResource->isPlaceholder()); | 1058 EXPECT_FALSE(imageResource->shouldShowPlaceholder()); |
| 1059 | 1059 |
| 1060 imageResource->loader()->cancel(); | 1060 imageResource->loader()->cancel(); |
| 1061 } | 1061 } |
| 1062 | 1062 |
| 1063 TEST(ImageResourceTest, FetchAllowPlaceholderExistingRangeHeader) { | 1063 TEST(ImageResourceTest, FetchAllowPlaceholderExistingRangeHeader) { |
| 1064 KURL testURL(ParsedURLString, kTestURL); | 1064 KURL testURL(ParsedURLString, kTestURL); |
| 1065 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); | 1065 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); |
| 1066 ResourceRequest resourceRequest(testURL); | 1066 ResourceRequest resourceRequest(testURL); |
| 1067 resourceRequest.setHTTPHeaderField("range", "bytes=128-255"); | 1067 resourceRequest.setHTTPHeaderField("range", "bytes=128-255"); |
| 1068 FetchRequest request(resourceRequest, FetchInitiatorInfo()); | 1068 FetchRequest request(resourceRequest, FetchInitiatorInfo()); |
| 1069 request.setAllowImagePlaceholder(); | 1069 request.setAllowImagePlaceholder(); |
| 1070 ImageResource* imageResource = ImageResource::fetch( | 1070 ImageResource* imageResource = ImageResource::fetch( |
| 1071 request, | 1071 request, |
| 1072 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); | 1072 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); |
| 1073 EXPECT_EQ(FetchRequest::DisallowPlaceholder, | 1073 EXPECT_EQ(FetchRequest::DisallowPlaceholder, |
| 1074 request.placeholderImageRequestType()); | 1074 request.placeholderImageRequestType()); |
| 1075 EXPECT_EQ("bytes=128-255", | 1075 EXPECT_EQ("bytes=128-255", |
| 1076 imageResource->resourceRequest().httpHeaderField("range")); | 1076 imageResource->resourceRequest().httpHeaderField("range")); |
| 1077 EXPECT_FALSE(imageResource->isPlaceholder()); | 1077 EXPECT_FALSE(imageResource->shouldShowPlaceholder()); |
| 1078 | 1078 |
| 1079 imageResource->loader()->cancel(); | 1079 imageResource->loader()->cancel(); |
| 1080 } | 1080 } |
| 1081 | 1081 |
| 1082 TEST(ImageResourceTest, FetchAllowPlaceholderSuccessful) { | 1082 TEST(ImageResourceTest, FetchAllowPlaceholderSuccessful) { |
| 1083 KURL testURL(ParsedURLString, kTestURL); | 1083 KURL testURL(ParsedURLString, kTestURL); |
| 1084 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); | 1084 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); |
| 1085 | 1085 |
| 1086 FetchRequest request(testURL, FetchInitiatorInfo()); | 1086 FetchRequest request(testURL, FetchInitiatorInfo()); |
| 1087 request.setAllowImagePlaceholder(); | 1087 request.setAllowImagePlaceholder(); |
| 1088 ImageResource* imageResource = ImageResource::fetch( | 1088 ImageResource* imageResource = ImageResource::fetch( |
| 1089 request, | 1089 request, |
| 1090 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); | 1090 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); |
| 1091 EXPECT_EQ(FetchRequest::AllowPlaceholder, | 1091 EXPECT_EQ(FetchRequest::AllowPlaceholder, |
| 1092 request.placeholderImageRequestType()); | 1092 request.placeholderImageRequestType()); |
| 1093 EXPECT_EQ("bytes=0-2047", | 1093 EXPECT_EQ("bytes=0-2047", |
| 1094 imageResource->resourceRequest().httpHeaderField("range")); | 1094 imageResource->resourceRequest().httpHeaderField("range")); |
| 1095 EXPECT_TRUE(imageResource->isPlaceholder()); | 1095 EXPECT_TRUE(imageResource->shouldShowPlaceholder()); |
| 1096 std::unique_ptr<MockImageResourceObserver> observer = | 1096 std::unique_ptr<MockImageResourceObserver> observer = |
| 1097 MockImageResourceObserver::create(imageResource->getContent()); | 1097 MockImageResourceObserver::create(imageResource->getContent()); |
| 1098 | 1098 |
| 1099 ResourceResponse response(testURL, "image/jpeg", | 1099 ResourceResponse response(testURL, "image/jpeg", |
| 1100 kJpegImageSubrangeWithDimensionsLength, nullAtom); | 1100 kJpegImageSubrangeWithDimensionsLength, nullAtom); |
| 1101 response.setHTTPStatusCode(206); | 1101 response.setHTTPStatusCode(206); |
| 1102 response.setHTTPHeaderField( | 1102 response.setHTTPHeaderField( |
| 1103 "content-range", buildContentRange(kJpegImageSubrangeWithDimensionsLength, | 1103 "content-range", buildContentRange(kJpegImageSubrangeWithDimensionsLength, |
| 1104 sizeof(kJpegImage))); | 1104 sizeof(kJpegImage))); |
| 1105 imageResource->loader()->didReceiveResponse( | 1105 imageResource->loader()->didReceiveResponse( |
| 1106 WrappedResourceResponse(response)); | 1106 WrappedResourceResponse(response)); |
| 1107 imageResource->loader()->didReceiveData( | 1107 imageResource->loader()->didReceiveData( |
| 1108 reinterpret_cast<const char*>(kJpegImage), | 1108 reinterpret_cast<const char*>(kJpegImage), |
| 1109 kJpegImageSubrangeWithDimensionsLength); | 1109 kJpegImageSubrangeWithDimensionsLength); |
| 1110 imageResource->loader()->didFinishLoading( | 1110 imageResource->loader()->didFinishLoading( |
| 1111 0.0, kJpegImageSubrangeWithDimensionsLength, | 1111 0.0, kJpegImageSubrangeWithDimensionsLength, |
| 1112 kJpegImageSubrangeWithDimensionsLength); | 1112 kJpegImageSubrangeWithDimensionsLength); |
| 1113 | 1113 |
| 1114 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); | 1114 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); |
| 1115 EXPECT_EQ(kJpegImageSubrangeWithDimensionsLength, | 1115 EXPECT_EQ(kJpegImageSubrangeWithDimensionsLength, |
| 1116 imageResource->encodedSize()); | 1116 imageResource->encodedSize()); |
| 1117 EXPECT_TRUE(imageResource->isPlaceholder()); | 1117 EXPECT_TRUE(imageResource->shouldShowPlaceholder()); |
| 1118 EXPECT_LT(0, observer->imageChangedCount()); | 1118 EXPECT_LT(0, observer->imageChangedCount()); |
| 1119 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnLastImageChanged()); | 1119 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnLastImageChanged()); |
| 1120 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); | 1120 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); |
| 1121 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnImageNotifyFinished()); | 1121 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnImageNotifyFinished()); |
| 1122 | 1122 |
| 1123 ASSERT_TRUE(imageResource->getContent()->hasImage()); | 1123 ASSERT_TRUE(imageResource->getContent()->hasImage()); |
| 1124 EXPECT_EQ(1, imageResource->getContent()->getImage()->width()); | 1124 EXPECT_EQ(1, imageResource->getContent()->getImage()->width()); |
| 1125 EXPECT_EQ(1, imageResource->getContent()->getImage()->height()); | 1125 EXPECT_EQ(1, imageResource->getContent()->getImage()->height()); |
| 1126 EXPECT_FALSE(imageResource->getContent()->getImage()->isBitmapImage()); | 1126 EXPECT_FALSE(imageResource->getContent()->getImage()->isBitmapImage()); |
| 1127 EXPECT_FALSE(imageResource->getContent()->getImage()->isSVGImage()); | 1127 EXPECT_FALSE(imageResource->getContent()->getImage()->isSVGImage()); |
| 1128 } | 1128 } |
| 1129 | 1129 |
| 1130 TEST(ImageResourceTest, FetchAllowPlaceholderUnsuccessful) { | 1130 TEST(ImageResourceTest, FetchAllowPlaceholderUnsuccessful) { |
| 1131 KURL testURL(ParsedURLString, kTestURL); | 1131 KURL testURL(ParsedURLString, kTestURL); |
| 1132 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); | 1132 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); |
| 1133 | 1133 |
| 1134 FetchRequest request(testURL, FetchInitiatorInfo()); | 1134 FetchRequest request(testURL, FetchInitiatorInfo()); |
| 1135 request.setAllowImagePlaceholder(); | 1135 request.setAllowImagePlaceholder(); |
| 1136 ImageResource* imageResource = ImageResource::fetch( | 1136 ImageResource* imageResource = ImageResource::fetch( |
| 1137 request, | 1137 request, |
| 1138 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); | 1138 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); |
| 1139 EXPECT_EQ(FetchRequest::AllowPlaceholder, | 1139 EXPECT_EQ(FetchRequest::AllowPlaceholder, |
| 1140 request.placeholderImageRequestType()); | 1140 request.placeholderImageRequestType()); |
| 1141 EXPECT_EQ("bytes=0-2047", | 1141 EXPECT_EQ("bytes=0-2047", |
| 1142 imageResource->resourceRequest().httpHeaderField("range")); | 1142 imageResource->resourceRequest().httpHeaderField("range")); |
| 1143 EXPECT_TRUE(imageResource->isPlaceholder()); | 1143 EXPECT_TRUE(imageResource->shouldShowPlaceholder()); |
| 1144 std::unique_ptr<MockImageResourceObserver> observer = | 1144 std::unique_ptr<MockImageResourceObserver> observer = |
| 1145 MockImageResourceObserver::create(imageResource->getContent()); | 1145 MockImageResourceObserver::create(imageResource->getContent()); |
| 1146 | 1146 |
| 1147 const char kBadData[] = "notanimageresponse"; | 1147 const char kBadData[] = "notanimageresponse"; |
| 1148 | 1148 |
| 1149 ResourceResponse badResponse(testURL, "image/jpeg", sizeof(kBadData), | 1149 ResourceResponse badResponse(testURL, "image/jpeg", sizeof(kBadData), |
| 1150 nullAtom); | 1150 nullAtom); |
| 1151 badResponse.setHTTPStatusCode(206); | 1151 badResponse.setHTTPStatusCode(206); |
| 1152 badResponse.setHTTPHeaderField( | 1152 badResponse.setHTTPHeaderField( |
| 1153 "content-range", buildContentRange(sizeof(kBadData), sizeof(kJpegImage))); | 1153 "content-range", buildContentRange(sizeof(kBadData), sizeof(kJpegImage))); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1175 | 1175 |
| 1176 FetchRequest request(testURL, FetchInitiatorInfo()); | 1176 FetchRequest request(testURL, FetchInitiatorInfo()); |
| 1177 request.setAllowImagePlaceholder(); | 1177 request.setAllowImagePlaceholder(); |
| 1178 ImageResource* imageResource = ImageResource::fetch( | 1178 ImageResource* imageResource = ImageResource::fetch( |
| 1179 request, | 1179 request, |
| 1180 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); | 1180 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); |
| 1181 EXPECT_EQ(FetchRequest::AllowPlaceholder, | 1181 EXPECT_EQ(FetchRequest::AllowPlaceholder, |
| 1182 request.placeholderImageRequestType()); | 1182 request.placeholderImageRequestType()); |
| 1183 EXPECT_EQ("bytes=0-2047", | 1183 EXPECT_EQ("bytes=0-2047", |
| 1184 imageResource->resourceRequest().httpHeaderField("range")); | 1184 imageResource->resourceRequest().httpHeaderField("range")); |
| 1185 EXPECT_TRUE(imageResource->isPlaceholder()); | 1185 EXPECT_TRUE(imageResource->shouldShowPlaceholder()); |
| 1186 std::unique_ptr<MockImageResourceObserver> observer = | 1186 std::unique_ptr<MockImageResourceObserver> observer = |
| 1187 MockImageResourceObserver::create(imageResource->getContent()); | 1187 MockImageResourceObserver::create(imageResource->getContent()); |
| 1188 | 1188 |
| 1189 // TODO(hiroshige): Make the range request header and partial content length | 1189 // TODO(hiroshige): Make the range request header and partial content length |
| 1190 // consistent. https://crbug.com/689760. | 1190 // consistent. https://crbug.com/689760. |
| 1191 ResourceResponse partialResponse(testURL, "image/jpeg", | 1191 ResourceResponse partialResponse(testURL, "image/jpeg", |
| 1192 kJpegImageSubrangeWithoutDimensionsLength, | 1192 kJpegImageSubrangeWithoutDimensionsLength, |
| 1193 nullAtom); | 1193 nullAtom); |
| 1194 partialResponse.setHTTPStatusCode(206); | 1194 partialResponse.setHTTPStatusCode(206); |
| 1195 partialResponse.setHTTPHeaderField( | 1195 partialResponse.setHTTPHeaderField( |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1267 imageResource->loader()->didReceiveData( | 1267 imageResource->loader()->didReceiveData( |
| 1268 reinterpret_cast<const char*>(kJpegImage), | 1268 reinterpret_cast<const char*>(kJpegImage), |
| 1269 kJpegImageSubrangeWithDimensionsLength); | 1269 kJpegImageSubrangeWithDimensionsLength); |
| 1270 imageResource->loader()->didFinishLoading( | 1270 imageResource->loader()->didFinishLoading( |
| 1271 0.0, kJpegImageSubrangeWithDimensionsLength, | 1271 0.0, kJpegImageSubrangeWithDimensionsLength, |
| 1272 kJpegImageSubrangeWithDimensionsLength); | 1272 kJpegImageSubrangeWithDimensionsLength); |
| 1273 | 1273 |
| 1274 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); | 1274 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); |
| 1275 EXPECT_EQ(kJpegImageSubrangeWithDimensionsLength, | 1275 EXPECT_EQ(kJpegImageSubrangeWithDimensionsLength, |
| 1276 imageResource->encodedSize()); | 1276 imageResource->encodedSize()); |
| 1277 EXPECT_TRUE(imageResource->isPlaceholder()); | 1277 EXPECT_TRUE(imageResource->shouldShowPlaceholder()); |
| 1278 EXPECT_LT(0, observer->imageChangedCount()); | 1278 EXPECT_LT(0, observer->imageChangedCount()); |
| 1279 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); | 1279 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); |
| 1280 | 1280 |
| 1281 FetchRequest nonPlaceholderRequest(testURL, FetchInitiatorInfo()); | 1281 FetchRequest nonPlaceholderRequest(testURL, FetchInitiatorInfo()); |
| 1282 ImageResource* secondImageResource = | 1282 ImageResource* secondImageResource = |
| 1283 ImageResource::fetch(nonPlaceholderRequest, fetcher); | 1283 ImageResource::fetch(nonPlaceholderRequest, fetcher); |
| 1284 EXPECT_EQ(imageResource, secondImageResource); | 1284 EXPECT_EQ(imageResource, secondImageResource); |
| 1285 | 1285 |
| 1286 testThatReloadIsStartedThenServeReload( | 1286 testThatReloadIsStartedThenServeReload( |
| 1287 testURL, imageResource, imageResource->getContent(), observer.get(), | 1287 testURL, imageResource, imageResource->getContent(), observer.get(), |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1303 | 1303 |
| 1304 FetchRequest request(testURL, FetchInitiatorInfo()); | 1304 FetchRequest request(testURL, FetchInitiatorInfo()); |
| 1305 request.setAllowImagePlaceholder(); | 1305 request.setAllowImagePlaceholder(); |
| 1306 ImageResource* imageResource = ImageResource::fetch( | 1306 ImageResource* imageResource = ImageResource::fetch( |
| 1307 request, | 1307 request, |
| 1308 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); | 1308 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); |
| 1309 EXPECT_EQ(FetchRequest::AllowPlaceholder, | 1309 EXPECT_EQ(FetchRequest::AllowPlaceholder, |
| 1310 request.placeholderImageRequestType()); | 1310 request.placeholderImageRequestType()); |
| 1311 EXPECT_EQ("bytes=0-2047", | 1311 EXPECT_EQ("bytes=0-2047", |
| 1312 imageResource->resourceRequest().httpHeaderField("range")); | 1312 imageResource->resourceRequest().httpHeaderField("range")); |
| 1313 EXPECT_TRUE(imageResource->isPlaceholder()); | 1313 EXPECT_TRUE(imageResource->shouldShowPlaceholder()); |
| 1314 std::unique_ptr<MockImageResourceObserver> observer = | 1314 std::unique_ptr<MockImageResourceObserver> observer = |
| 1315 MockImageResourceObserver::create(imageResource->getContent()); | 1315 MockImageResourceObserver::create(imageResource->getContent()); |
| 1316 | 1316 |
| 1317 ResourceResponse response(testURL, "image/jpeg", sizeof(kJpegImage), | 1317 ResourceResponse response(testURL, "image/jpeg", sizeof(kJpegImage), |
| 1318 nullAtom); | 1318 nullAtom); |
| 1319 response.setHTTPStatusCode(test.statusCode); | 1319 response.setHTTPStatusCode(test.statusCode); |
| 1320 if (test.contentRange != nullAtom) | 1320 if (test.contentRange != nullAtom) |
| 1321 response.setHTTPHeaderField("content-range", test.contentRange); | 1321 response.setHTTPHeaderField("content-range", test.contentRange); |
| 1322 imageResource->loader()->didReceiveResponse( | 1322 imageResource->loader()->didReceiveResponse( |
| 1323 WrappedResourceResponse(response)); | 1323 WrappedResourceResponse(response)); |
| 1324 imageResource->loader()->didReceiveData( | 1324 imageResource->loader()->didReceiveData( |
| 1325 reinterpret_cast<const char*>(kJpegImage), sizeof(kJpegImage)); | 1325 reinterpret_cast<const char*>(kJpegImage), sizeof(kJpegImage)); |
| 1326 imageResource->loader()->didFinishLoading(0.0, sizeof(kJpegImage), | 1326 imageResource->loader()->didFinishLoading(0.0, sizeof(kJpegImage), |
| 1327 sizeof(kJpegImage)); | 1327 sizeof(kJpegImage)); |
| 1328 | 1328 |
| 1329 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); | 1329 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); |
| 1330 EXPECT_EQ(sizeof(kJpegImage), imageResource->encodedSize()); | 1330 EXPECT_EQ(sizeof(kJpegImage), imageResource->encodedSize()); |
| 1331 EXPECT_FALSE(imageResource->isPlaceholder()); | 1331 EXPECT_FALSE(imageResource->shouldShowPlaceholder()); |
| 1332 EXPECT_LT(0, observer->imageChangedCount()); | 1332 EXPECT_LT(0, observer->imageChangedCount()); |
| 1333 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnLastImageChanged()); | 1333 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnLastImageChanged()); |
| 1334 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); | 1334 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); |
| 1335 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnImageNotifyFinished()); | 1335 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnImageNotifyFinished()); |
| 1336 | 1336 |
| 1337 ASSERT_TRUE(imageResource->getContent()->hasImage()); | 1337 ASSERT_TRUE(imageResource->getContent()->hasImage()); |
| 1338 EXPECT_EQ(1, imageResource->getContent()->getImage()->width()); | 1338 EXPECT_EQ(1, imageResource->getContent()->getImage()->width()); |
| 1339 EXPECT_EQ(1, imageResource->getContent()->getImage()->height()); | 1339 EXPECT_EQ(1, imageResource->getContent()->getImage()->height()); |
| 1340 EXPECT_TRUE(imageResource->getContent()->getImage()->isBitmapImage()); | 1340 EXPECT_TRUE(imageResource->getContent()->getImage()->isBitmapImage()); |
| 1341 } | 1341 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1361 | 1361 |
| 1362 FetchRequest request(testURL, FetchInitiatorInfo()); | 1362 FetchRequest request(testURL, FetchInitiatorInfo()); |
| 1363 request.setAllowImagePlaceholder(); | 1363 request.setAllowImagePlaceholder(); |
| 1364 ImageResource* imageResource = ImageResource::fetch( | 1364 ImageResource* imageResource = ImageResource::fetch( |
| 1365 request, | 1365 request, |
| 1366 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); | 1366 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); |
| 1367 EXPECT_EQ(FetchRequest::AllowPlaceholder, | 1367 EXPECT_EQ(FetchRequest::AllowPlaceholder, |
| 1368 request.placeholderImageRequestType()); | 1368 request.placeholderImageRequestType()); |
| 1369 EXPECT_EQ("bytes=0-2047", | 1369 EXPECT_EQ("bytes=0-2047", |
| 1370 imageResource->resourceRequest().httpHeaderField("range")); | 1370 imageResource->resourceRequest().httpHeaderField("range")); |
| 1371 EXPECT_TRUE(imageResource->isPlaceholder()); | 1371 EXPECT_TRUE(imageResource->shouldShowPlaceholder()); |
| 1372 std::unique_ptr<MockImageResourceObserver> observer = | 1372 std::unique_ptr<MockImageResourceObserver> observer = |
| 1373 MockImageResourceObserver::create(imageResource->getContent()); | 1373 MockImageResourceObserver::create(imageResource->getContent()); |
| 1374 | 1374 |
| 1375 ResourceResponse response(testURL, "image/jpeg", test.dataSize, nullAtom); | 1375 ResourceResponse response(testURL, "image/jpeg", test.dataSize, nullAtom); |
| 1376 response.setHTTPStatusCode(test.statusCode); | 1376 response.setHTTPStatusCode(test.statusCode); |
| 1377 if (test.contentRange != nullAtom) | 1377 if (test.contentRange != nullAtom) |
| 1378 response.setHTTPHeaderField("content-range", test.contentRange); | 1378 response.setHTTPHeaderField("content-range", test.contentRange); |
| 1379 imageResource->loader()->didReceiveResponse( | 1379 imageResource->loader()->didReceiveResponse( |
| 1380 WrappedResourceResponse(response)); | 1380 WrappedResourceResponse(response)); |
| 1381 imageResource->loader()->didReceiveData(kBadImageData, test.dataSize); | 1381 imageResource->loader()->didReceiveData(kBadImageData, test.dataSize); |
| 1382 | 1382 |
| 1383 EXPECT_EQ(ResourceStatus::DecodeError, imageResource->getStatus()); | 1383 EXPECT_EQ(ResourceStatus::DecodeError, imageResource->getStatus()); |
| 1384 EXPECT_FALSE(imageResource->isPlaceholder()); | 1384 EXPECT_FALSE(imageResource->shouldShowPlaceholder()); |
| 1385 } | 1385 } |
| 1386 } | 1386 } |
| 1387 | 1387 |
| 1388 TEST(ImageResourceTest, | 1388 TEST(ImageResourceTest, |
| 1389 FetchAllowPlaceholderFullResponseDecodeFailureWithReload) { | 1389 FetchAllowPlaceholderFullResponseDecodeFailureWithReload) { |
| 1390 const int kStatusCodes[] = {404, 500}; | 1390 const int kStatusCodes[] = {404, 500}; |
| 1391 for (int statusCode : kStatusCodes) { | 1391 for (int statusCode : kStatusCodes) { |
| 1392 KURL testURL(ParsedURLString, kTestURL); | 1392 KURL testURL(ParsedURLString, kTestURL); |
| 1393 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); | 1393 ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); |
| 1394 | 1394 |
| 1395 FetchRequest request(testURL, FetchInitiatorInfo()); | 1395 FetchRequest request(testURL, FetchInitiatorInfo()); |
| 1396 request.setAllowImagePlaceholder(); | 1396 request.setAllowImagePlaceholder(); |
| 1397 ImageResource* imageResource = ImageResource::fetch( | 1397 ImageResource* imageResource = ImageResource::fetch( |
| 1398 request, | 1398 request, |
| 1399 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); | 1399 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); |
| 1400 EXPECT_EQ(FetchRequest::AllowPlaceholder, | 1400 EXPECT_EQ(FetchRequest::AllowPlaceholder, |
| 1401 request.placeholderImageRequestType()); | 1401 request.placeholderImageRequestType()); |
| 1402 EXPECT_EQ("bytes=0-2047", | 1402 EXPECT_EQ("bytes=0-2047", |
| 1403 imageResource->resourceRequest().httpHeaderField("range")); | 1403 imageResource->resourceRequest().httpHeaderField("range")); |
| 1404 EXPECT_TRUE(imageResource->isPlaceholder()); | 1404 EXPECT_TRUE(imageResource->shouldShowPlaceholder()); |
| 1405 std::unique_ptr<MockImageResourceObserver> observer = | 1405 std::unique_ptr<MockImageResourceObserver> observer = |
| 1406 MockImageResourceObserver::create(imageResource->getContent()); | 1406 MockImageResourceObserver::create(imageResource->getContent()); |
| 1407 | 1407 |
| 1408 static const char kBadImageData[] = "bad image data"; | 1408 static const char kBadImageData[] = "bad image data"; |
| 1409 | 1409 |
| 1410 ResourceResponse response(testURL, "image/jpeg", sizeof(kBadImageData), | 1410 ResourceResponse response(testURL, "image/jpeg", sizeof(kBadImageData), |
| 1411 nullAtom); | 1411 nullAtom); |
| 1412 response.setHTTPStatusCode(statusCode); | 1412 response.setHTTPStatusCode(statusCode); |
| 1413 imageResource->loader()->didReceiveResponse( | 1413 imageResource->loader()->didReceiveResponse( |
| 1414 WrappedResourceResponse(response)); | 1414 WrappedResourceResponse(response)); |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1506 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); | 1506 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); |
| 1507 EXPECT_TRUE(imageResource->getContent()->getImage()->isBitmapImage()); | 1507 EXPECT_TRUE(imageResource->getContent()->getImage()->isBitmapImage()); |
| 1508 EXPECT_EQ(50, imageResource->getContent()->getImage()->width()); | 1508 EXPECT_EQ(50, imageResource->getContent()->getImage()->width()); |
| 1509 EXPECT_EQ(50, imageResource->getContent()->getImage()->height()); | 1509 EXPECT_EQ(50, imageResource->getContent()->getImage()->height()); |
| 1510 | 1510 |
| 1511 WTF::setTimeFunctionsForTesting(nullptr); | 1511 WTF::setTimeFunctionsForTesting(nullptr); |
| 1512 } | 1512 } |
| 1513 | 1513 |
| 1514 } // namespace | 1514 } // namespace |
| 1515 } // namespace blink | 1515 } // namespace blink |
| OLD | NEW |