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

Side by Side Diff: content/child/web_url_loader_impl_unittest.cc

Issue 2510333002: Send encoded_body_length to renderer when response completed (2/3) (Closed)
Patch Set: rebase Created 4 years 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
« no previous file with comments | « content/child/web_url_loader_impl.cc ('k') | content/public/child/fixed_received_data.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/child/web_url_loader_impl.h" 5 #include "content/child/web_url_loader_impl.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <string.h> 8 #include <string.h>
9 9
10 #include <utility> 10 #include <utility>
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 void didDownloadData(blink::WebURLLoader* loader, 183 void didDownloadData(blink::WebURLLoader* loader,
184 int dataLength, 184 int dataLength,
185 int encodedDataLength) override { 185 int encodedDataLength) override {
186 EXPECT_TRUE(loader_); 186 EXPECT_TRUE(loader_);
187 EXPECT_EQ(loader_.get(), loader); 187 EXPECT_EQ(loader_.get(), loader);
188 } 188 }
189 189
190 void didReceiveData(blink::WebURLLoader* loader, 190 void didReceiveData(blink::WebURLLoader* loader,
191 const char* data, 191 const char* data,
192 int dataLength, 192 int dataLength,
193 int encodedDataLength, 193 int encodedDataLength) override {
194 int encodedBodyLength) override {
195 EXPECT_TRUE(loader_); 194 EXPECT_TRUE(loader_);
196 EXPECT_EQ(loader_.get(), loader); 195 EXPECT_EQ(loader_.get(), loader);
197 // The response should have started, but must not have finished, or failed. 196 // The response should have started, but must not have finished, or failed.
198 EXPECT_TRUE(did_receive_response_); 197 EXPECT_TRUE(did_receive_response_);
199 EXPECT_FALSE(did_finish_); 198 EXPECT_FALSE(did_finish_);
200 EXPECT_EQ(net::OK, error_.reason); 199 EXPECT_EQ(net::OK, error_.reason);
201 EXPECT_EQ("", error_.domain.utf8()); 200 EXPECT_EQ("", error_.domain.utf8());
202 201
203 received_data_.append(data, dataLength); 202 received_data_.append(data, dataLength);
204 203
205 if (delete_on_receive_data_) 204 if (delete_on_receive_data_)
206 loader_.reset(); 205 loader_.reset();
207 } 206 }
208 207
209 void didReceiveCachedMetadata(blink::WebURLLoader* loader, 208 void didReceiveCachedMetadata(blink::WebURLLoader* loader,
210 const char* data, 209 const char* data,
211 int dataLength) override { 210 int dataLength) override {
212 EXPECT_EQ(loader_.get(), loader); 211 EXPECT_EQ(loader_.get(), loader);
213 } 212 }
214 213
215 void didFinishLoading(blink::WebURLLoader* loader, 214 void didFinishLoading(blink::WebURLLoader* loader,
216 double finishTime, 215 double finishTime,
217 int64_t totalEncodedDataLength) override { 216 int64_t totalEncodedDataLength,
217 int64_t totalEncodedBodyLength) override {
218 EXPECT_TRUE(loader_); 218 EXPECT_TRUE(loader_);
219 EXPECT_EQ(loader_.get(), loader); 219 EXPECT_EQ(loader_.get(), loader);
220 EXPECT_TRUE(did_receive_response_); 220 EXPECT_TRUE(did_receive_response_);
221 EXPECT_FALSE(did_finish_); 221 EXPECT_FALSE(did_finish_);
222 did_finish_ = true; 222 did_finish_ = true;
223 223
224 if (delete_on_finish_) 224 if (delete_on_finish_)
225 loader_.reset(); 225 loader_.reset();
226 } 226 }
227 227
228 void didFail(blink::WebURLLoader* loader, 228 void didFail(blink::WebURLLoader* loader,
229 const blink::WebURLError& error, 229 const blink::WebURLError& error,
230 int64_t totalEncodedDataLength) override { 230 int64_t totalEncodedDataLength,
231 int64_t totalEncodedBodyLength) override {
231 EXPECT_TRUE(loader_); 232 EXPECT_TRUE(loader_);
232 EXPECT_EQ(loader_.get(), loader); 233 EXPECT_EQ(loader_.get(), loader);
233 EXPECT_FALSE(did_finish_); 234 EXPECT_FALSE(did_finish_);
234 error_ = error; 235 error_ = error;
235 236
236 if (delete_on_fail_) 237 if (delete_on_fail_)
237 loader_.reset(); 238 loader_.reset();
238 } 239 }
239 240
240 WebURLLoaderImpl* loader() { return loader_.get(); } 241 WebURLLoaderImpl* loader() { return loader_.get(); }
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 EXPECT_FALSE(client()->did_receive_response()); 331 EXPECT_FALSE(client()->did_receive_response());
331 peer()->OnReceivedResponse(content::ResourceResponseInfo()); 332 peer()->OnReceivedResponse(content::ResourceResponseInfo());
332 EXPECT_TRUE(client()->did_receive_response()); 333 EXPECT_TRUE(client()->did_receive_response());
333 } 334 }
334 335
335 // Assumes it is called only once for a request. 336 // Assumes it is called only once for a request.
336 void DoReceiveData() { 337 void DoReceiveData() {
337 EXPECT_EQ("", client()->received_data()); 338 EXPECT_EQ("", client()->received_data());
338 auto size = strlen(kTestData); 339 auto size = strlen(kTestData);
339 peer()->OnReceivedData( 340 peer()->OnReceivedData(
340 base::MakeUnique<FixedReceivedData>(kTestData, size, size, size)); 341 base::MakeUnique<FixedReceivedData>(kTestData, size, size));
341 EXPECT_EQ(kTestData, client()->received_data()); 342 EXPECT_EQ(kTestData, client()->received_data());
342 } 343 }
343 344
344 void DoCompleteRequest() { 345 void DoCompleteRequest() {
345 EXPECT_FALSE(client()->did_finish()); 346 EXPECT_FALSE(client()->did_finish());
346 peer()->OnCompletedRequest(net::OK, false, false, base::TimeTicks(), 347 peer()->OnCompletedRequest(net::OK, false, false, base::TimeTicks(),
347 strlen(kTestData)); 348 strlen(kTestData), strlen(kTestData));
348 EXPECT_TRUE(client()->did_finish()); 349 EXPECT_TRUE(client()->did_finish());
349 // There should be no error. 350 // There should be no error.
350 EXPECT_EQ(net::OK, client()->error().reason); 351 EXPECT_EQ(net::OK, client()->error().reason);
351 EXPECT_EQ("", client()->error().domain.utf8()); 352 EXPECT_EQ("", client()->error().domain.utf8());
352 } 353 }
353 354
354 void DoFailRequest() { 355 void DoFailRequest() {
355 EXPECT_FALSE(client()->did_finish()); 356 EXPECT_FALSE(client()->did_finish());
356 peer()->OnCompletedRequest(net::ERR_FAILED, false, false, 357 peer()->OnCompletedRequest(net::ERR_FAILED, false, false, base::TimeTicks(),
357 base::TimeTicks(), strlen(kTestData)); 358 strlen(kTestData), strlen(kTestData));
358 EXPECT_FALSE(client()->did_finish()); 359 EXPECT_FALSE(client()->did_finish());
359 EXPECT_EQ(net::ERR_FAILED, client()->error().reason); 360 EXPECT_EQ(net::ERR_FAILED, client()->error().reason);
360 EXPECT_EQ(net::kErrorDomain, client()->error().domain.utf8()); 361 EXPECT_EQ(net::kErrorDomain, client()->error().domain.utf8());
361 } 362 }
362 363
363 void DoReceiveResponseFtp() { 364 void DoReceiveResponseFtp() {
364 EXPECT_FALSE(client()->did_receive_response()); 365 EXPECT_FALSE(client()->did_receive_response());
365 content::ResourceResponseInfo response_info; 366 content::ResourceResponseInfo response_info;
366 response_info.mime_type = kFtpDirMimeType; 367 response_info.mime_type = kFtpDirMimeType;
367 peer()->OnReceivedResponse(response_info); 368 peer()->OnReceivedResponse(response_info);
368 EXPECT_TRUE(client()->did_receive_response()); 369 EXPECT_TRUE(client()->did_receive_response());
369 } 370 }
370 371
371 void DoReceiveDataFtp() { 372 void DoReceiveDataFtp() {
372 auto size = strlen(kFtpDirListing); 373 auto size = strlen(kFtpDirListing);
373 peer()->OnReceivedData( 374 peer()->OnReceivedData(
374 base::MakeUnique<FixedReceivedData>(kFtpDirListing, size, size, size)); 375 base::MakeUnique<FixedReceivedData>(kFtpDirListing, size, size));
375 // The FTP delegate should modify the data the client sees. 376 // The FTP delegate should modify the data the client sees.
376 EXPECT_NE(kFtpDirListing, client()->received_data()); 377 EXPECT_NE(kFtpDirListing, client()->received_data());
377 } 378 }
378 379
379 TestWebURLLoaderClient* client() { return client_.get(); } 380 TestWebURLLoaderClient* client() { return client_.get(); }
380 TestResourceDispatcher* dispatcher() { return &dispatcher_; } 381 TestResourceDispatcher* dispatcher() { return &dispatcher_; }
381 RequestPeer* peer() { return dispatcher()->peer(); } 382 RequestPeer* peer() { return dispatcher()->peer(); }
382 base::MessageLoop* message_loop() { return &message_loop_; } 383 base::MessageLoop* message_loop() { return &message_loop_; }
383 384
384 private: 385 private:
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 588
588 TEST_F(WebURLLoaderImplTest, FtpDeleteOnReceiveMoreData) { 589 TEST_F(WebURLLoaderImplTest, FtpDeleteOnReceiveMoreData) {
589 DoStartAsyncRequest(); 590 DoStartAsyncRequest();
590 DoReceiveResponseFtp(); 591 DoReceiveResponseFtp();
591 DoReceiveDataFtp(); 592 DoReceiveDataFtp();
592 593
593 // Directory listings are only parsed once the request completes, so this will 594 // Directory listings are only parsed once the request completes, so this will
594 // cancel in DoReceiveDataFtp, before the request finishes. 595 // cancel in DoReceiveDataFtp, before the request finishes.
595 client()->set_delete_on_receive_data(); 596 client()->set_delete_on_receive_data();
596 peer()->OnCompletedRequest(net::OK, false, false, base::TimeTicks(), 597 peer()->OnCompletedRequest(net::OK, false, false, base::TimeTicks(),
597 strlen(kTestData)); 598 strlen(kTestData), strlen(kTestData));
598 EXPECT_FALSE(client()->did_finish()); 599 EXPECT_FALSE(client()->did_finish());
599 } 600 }
600 601
601 TEST_F(WebURLLoaderImplTest, FtpDeleteOnFinish) { 602 TEST_F(WebURLLoaderImplTest, FtpDeleteOnFinish) {
602 client()->set_delete_on_finish(); 603 client()->set_delete_on_finish();
603 DoStartAsyncRequest(); 604 DoStartAsyncRequest();
604 DoReceiveResponseFtp(); 605 DoReceiveResponseFtp();
605 DoReceiveDataFtp(); 606 DoReceiveDataFtp();
606 DoCompleteRequest(); 607 DoCompleteRequest();
607 } 608 }
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
697 sync_load_response.data = kBodyData; 698 sync_load_response.data = kBodyData;
698 ASSERT_EQ(17u, sync_load_response.data.size()); 699 ASSERT_EQ(17u, sync_load_response.data.size());
699 sync_load_response.encoded_body_length = kEncodedBodyLength; 700 sync_load_response.encoded_body_length = kEncodedBodyLength;
700 sync_load_response.encoded_data_length = kEncodedDataLength; 701 sync_load_response.encoded_data_length = kEncodedDataLength;
701 dispatcher()->set_sync_load_response(sync_load_response); 702 dispatcher()->set_sync_load_response(sync_load_response);
702 703
703 blink::WebURLResponse response; 704 blink::WebURLResponse response;
704 blink::WebURLError error; 705 blink::WebURLError error;
705 blink::WebData data; 706 blink::WebData data;
706 int64_t encoded_data_length = 0; 707 int64_t encoded_data_length = 0;
707 client()->loader()->loadSynchronously(request, response, error, data, 708 int64_t encoded_body_length = 0;
708 encoded_data_length); 709 client()->loader()->loadSynchronously(
710 request, response, error, data, encoded_data_length, encoded_body_length);
709 711
710 EXPECT_EQ(kEncodedBodyLength, response.encodedBodyLengthForTesting()); 712 EXPECT_EQ(kEncodedBodyLength, encoded_body_length);
711 EXPECT_EQ(kEncodedDataLength, encoded_data_length); 713 EXPECT_EQ(kEncodedDataLength, encoded_data_length);
712 int expected_decoded_body_length = strlen(kBodyData);
713 EXPECT_EQ(expected_decoded_body_length,
714 response.decodedBodyLengthForTesting());
715 } 714 }
716 715
717 } // namespace 716 } // namespace
718 } // namespace content 717 } // namespace content
OLDNEW
« no previous file with comments | « content/child/web_url_loader_impl.cc ('k') | content/public/child/fixed_received_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698