@@ -97,7 +97,8 @@ class InPlaceResourceRecorderTest : public RewriteTestBase {
9797 StringPiece gzipped (reinterpret_cast <const char *>(&kGzippedData [0 ]),
9898 STATIC_STRLEN (kGzippedData ));
9999 recorder->Write (gzipped, message_handler ());
100- recorder.release ()->DoneAndSetHeaders (&final_headers);
100+ recorder.release ()->DoneAndSetHeaders (
101+ &final_headers, true /* complete response */ );
101102
102103 HTTPValue value_out;
103104 ResponseHeaders headers_out;
@@ -160,7 +161,8 @@ TEST_F(InPlaceResourceRecorderTest, BasicOperation) {
160161 InPlaceResourceRecorder::kPreliminaryHeaders , &prelim_headers);
161162 recorder->Write (kHello , message_handler ());
162163 recorder->Write (kBye , message_handler ());
163- recorder.release ()->DoneAndSetHeaders (&ok_headers);
164+ recorder.release ()->DoneAndSetHeaders (
165+ &ok_headers, true /* complete response */ );
164166
165167 HTTPValue value_out;
166168 ResponseHeaders headers_out;
@@ -171,6 +173,26 @@ TEST_F(InPlaceResourceRecorderTest, BasicOperation) {
171173 EXPECT_EQ (StrCat (kHello , kBye ), contents);
172174}
173175
176+ TEST_F (InPlaceResourceRecorderTest, IncompleteResponse) {
177+ ResponseHeaders prelim_headers;
178+ prelim_headers.set_status_code (HttpStatus::kOK );
179+
180+ ResponseHeaders ok_headers;
181+ SetDefaultLongCacheHeaders (&kContentTypeCss , &ok_headers);
182+
183+ scoped_ptr<InPlaceResourceRecorder> recorder (MakeRecorder (kTestUrl ));
184+ recorder->ConsiderResponseHeaders (
185+ InPlaceResourceRecorder::kPreliminaryHeaders , &prelim_headers);
186+ recorder->Write (kHello , message_handler ());
187+ recorder.release ()->DoneAndSetHeaders (
188+ &ok_headers, false /* incomplete response */ );
189+
190+ HTTPValue value_out;
191+ ResponseHeaders headers_out;
192+ EXPECT_EQ (HTTPCache::kNotFound ,
193+ HttpBlockingFind (kTestUrl , http_cache (), &value_out, &headers_out));
194+ }
195+
174196TEST_F (InPlaceResourceRecorderTest, CheckCacheableContentTypes) {
175197 CheckCacheableContentType (&kContentTypeJpeg );
176198 CheckCacheableContentType (&kContentTypeCss );
@@ -192,7 +214,8 @@ TEST_F(InPlaceResourceRecorderTest, BasicOperationFullHeaders) {
192214 InPlaceResourceRecorder::kFullHeaders , &ok_headers);
193215 recorder->Write (kHello , message_handler ());
194216 recorder->Write (kBye , message_handler ());
195- recorder.release ()->DoneAndSetHeaders (&ok_headers);
217+ recorder.release ()->DoneAndSetHeaders (
218+ &ok_headers, true /* complete response */ );
196219
197220 HTTPValue value_out;
198221 ResponseHeaders headers_out;
@@ -216,7 +239,8 @@ TEST_F(InPlaceResourceRecorderTest, DontRemember304) {
216239 scoped_ptr<InPlaceResourceRecorder> recorder (MakeRecorder (kTestUrl ));
217240 recorder->ConsiderResponseHeaders (
218241 InPlaceResourceRecorder::kPreliminaryHeaders , &prelim_headers);
219- recorder.release ()->DoneAndSetHeaders (¬_modified_headers);
242+ recorder.release ()->DoneAndSetHeaders (
243+ ¬_modified_headers, true /* complete response */ );
220244
221245 HTTPValue value_out;
222246 ResponseHeaders headers_out;
@@ -237,7 +261,8 @@ TEST_F(InPlaceResourceRecorderTest, Remember500AsFetchFailed) {
237261 scoped_ptr<InPlaceResourceRecorder> recorder (MakeRecorder (kTestUrl ));
238262 recorder->ConsiderResponseHeaders (
239263 InPlaceResourceRecorder::kPreliminaryHeaders , &prelim_headers);
240- recorder.release ()->DoneAndSetHeaders (&error_headers);
264+ recorder.release ()->DoneAndSetHeaders (
265+ &error_headers, true /* complete response */ );
241266
242267 HTTPValue value_out;
243268 ResponseHeaders headers_out;
@@ -252,7 +277,8 @@ TEST_F(InPlaceResourceRecorderTest, RememberEmpty) {
252277
253278 scoped_ptr<InPlaceResourceRecorder> recorder (MakeRecorder (kTestUrl ));
254279 // No contents written.
255- recorder.release ()->DoneAndSetHeaders (&ok_headers);
280+ recorder.release ()->DoneAndSetHeaders (
281+ &ok_headers, true /* complete response */ );
256282
257283 HTTPValue value_out;
258284 ResponseHeaders headers_out;
0 commit comments