| OLD | NEW |
| 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 26 matching lines...) Expand all Loading... |
| 37 #include "third_party/WebKit/public/platform/WebURLError.h" | 37 #include "third_party/WebKit/public/platform/WebURLError.h" |
| 38 #include "third_party/WebKit/public/platform/WebURLLoaderClient.h" | 38 #include "third_party/WebKit/public/platform/WebURLLoaderClient.h" |
| 39 #include "third_party/WebKit/public/platform/WebURLRequest.h" | 39 #include "third_party/WebKit/public/platform/WebURLRequest.h" |
| 40 #include "third_party/WebKit/public/platform/WebURLResponse.h" | 40 #include "third_party/WebKit/public/platform/WebURLResponse.h" |
| 41 #include "url/gurl.h" | 41 #include "url/gurl.h" |
| 42 | 42 |
| 43 namespace content { | 43 namespace content { |
| 44 namespace { | 44 namespace { |
| 45 | 45 |
| 46 const char kTestURL[] = "http://foo"; | 46 const char kTestURL[] = "http://foo"; |
| 47 const char kTestHTTPSURL[] = "https://foo"; |
| 47 const char kTestData[] = "blah!"; | 48 const char kTestData[] = "blah!"; |
| 48 | 49 |
| 49 const char kFtpDirMimeType[] = "text/vnd.chromium.ftp-dir"; | 50 const char kFtpDirMimeType[] = "text/vnd.chromium.ftp-dir"; |
| 50 // Simple FTP directory listing. Tests are not concerned with correct parsing, | 51 // Simple FTP directory listing. Tests are not concerned with correct parsing, |
| 51 // but rather correct cleanup when deleted while parsing. Important details of | 52 // but rather correct cleanup when deleted while parsing. Important details of |
| 52 // this list are that it contains more than one entry that are not "." or "..". | 53 // this list are that it contains more than one entry that are not "." or "..". |
| 53 const char kFtpDirListing[] = | 54 const char kFtpDirListing[] = |
| 54 "drwxr-xr-x 3 ftp ftp 4096 May 15 18:11 goat\n" | 55 "drwxr-xr-x 3 ftp ftp 4096 May 15 18:11 goat\n" |
| 55 "drwxr-xr-x 3 ftp ftp 4096 May 15 18:11 hat"; | 56 "drwxr-xr-x 3 ftp ftp 4096 May 15 18:11 hat"; |
| 56 | 57 |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 302 net::RedirectInfo redirect_info; | 303 net::RedirectInfo redirect_info; |
| 303 redirect_info.status_code = 302; | 304 redirect_info.status_code = 302; |
| 304 redirect_info.new_method = "GET"; | 305 redirect_info.new_method = "GET"; |
| 305 redirect_info.new_url = GURL(kTestURL); | 306 redirect_info.new_url = GURL(kTestURL); |
| 306 redirect_info.new_first_party_for_cookies = GURL(kTestURL); | 307 redirect_info.new_first_party_for_cookies = GURL(kTestURL); |
| 307 peer()->OnReceivedRedirect(redirect_info, | 308 peer()->OnReceivedRedirect(redirect_info, |
| 308 content::ResourceResponseInfo()); | 309 content::ResourceResponseInfo()); |
| 309 EXPECT_TRUE(client()->did_receive_redirect()); | 310 EXPECT_TRUE(client()->did_receive_redirect()); |
| 310 } | 311 } |
| 311 | 312 |
| 313 void DoReceiveHTTPSRedirect() { |
| 314 EXPECT_FALSE(client()->did_receive_redirect()); |
| 315 net::RedirectInfo redirect_info; |
| 316 redirect_info.status_code = 302; |
| 317 redirect_info.new_method = "GET"; |
| 318 redirect_info.new_url = GURL(kTestHTTPSURL); |
| 319 redirect_info.new_first_party_for_cookies = GURL(kTestHTTPSURL); |
| 320 peer()->OnReceivedRedirect(redirect_info, |
| 321 content::ResourceResponseInfo()); |
| 322 EXPECT_TRUE(client()->did_receive_redirect()); |
| 323 } |
| 324 |
| 312 void DoReceiveResponse() { | 325 void DoReceiveResponse() { |
| 313 EXPECT_FALSE(client()->did_receive_response()); | 326 EXPECT_FALSE(client()->did_receive_response()); |
| 314 peer()->OnReceivedResponse(content::ResourceResponseInfo()); | 327 peer()->OnReceivedResponse(content::ResourceResponseInfo()); |
| 315 EXPECT_TRUE(client()->did_receive_response()); | 328 EXPECT_TRUE(client()->did_receive_response()); |
| 316 } | 329 } |
| 317 | 330 |
| 318 // Assumes it is called only once for a request. | 331 // Assumes it is called only once for a request. |
| 319 void DoReceiveData() { | 332 void DoReceiveData() { |
| 320 EXPECT_EQ("", client()->received_data()); | 333 EXPECT_EQ("", client()->received_data()); |
| 321 auto size = strlen(kTestData); | 334 auto size = strlen(kTestData); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 TEST_F(WebURLLoaderImplTest, Redirect) { | 395 TEST_F(WebURLLoaderImplTest, Redirect) { |
| 383 DoStartAsyncRequest(); | 396 DoStartAsyncRequest(); |
| 384 DoReceiveRedirect(); | 397 DoReceiveRedirect(); |
| 385 DoReceiveResponse(); | 398 DoReceiveResponse(); |
| 386 DoReceiveData(); | 399 DoReceiveData(); |
| 387 DoCompleteRequest(); | 400 DoCompleteRequest(); |
| 388 EXPECT_FALSE(dispatcher()->canceled()); | 401 EXPECT_FALSE(dispatcher()->canceled()); |
| 389 EXPECT_EQ(kTestData, client()->received_data()); | 402 EXPECT_EQ(kTestData, client()->received_data()); |
| 390 } | 403 } |
| 391 | 404 |
| 405 // Tests that a redirect to an HTTPS URL with no security info does not |
| 406 // crash. Regression test for https://crbug.com/519120 |
| 407 TEST_F(WebURLLoaderImplTest, RedirectToHTTPSWithEmptySecurityInfo) { |
| 408 DoStartAsyncRequest(); |
| 409 DoReceiveHTTPSRedirect(); |
| 410 DoReceiveResponse(); |
| 411 DoReceiveData(); |
| 412 DoCompleteRequest(); |
| 413 EXPECT_FALSE(dispatcher()->canceled()); |
| 414 EXPECT_EQ(kTestData, client()->received_data()); |
| 415 } |
| 416 |
| 392 TEST_F(WebURLLoaderImplTest, RedirectCorrectPriority) { | 417 TEST_F(WebURLLoaderImplTest, RedirectCorrectPriority) { |
| 393 DoStartAsyncRequestWithPriority( | 418 DoStartAsyncRequestWithPriority( |
| 394 blink::WebURLRequest::Priority::PriorityVeryHigh); | 419 blink::WebURLRequest::Priority::PriorityVeryHigh); |
| 395 client()->set_redirect_request_priority( | 420 client()->set_redirect_request_priority( |
| 396 blink::WebURLRequest::Priority::PriorityVeryHigh); | 421 blink::WebURLRequest::Priority::PriorityVeryHigh); |
| 397 DoReceiveRedirect(); | 422 DoReceiveRedirect(); |
| 398 DoReceiveResponse(); | 423 DoReceiveResponse(); |
| 399 DoReceiveData(); | 424 DoReceiveData(); |
| 400 DoCompleteRequest(); | 425 DoCompleteRequest(); |
| 401 EXPECT_FALSE(dispatcher()->canceled()); | 426 EXPECT_FALSE(dispatcher()->canceled()); |
| (...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 698 encoded_data_length); | 723 encoded_data_length); |
| 699 | 724 |
| 700 EXPECT_EQ(kEncodedBodyLength, response.encodedBodyLength()); | 725 EXPECT_EQ(kEncodedBodyLength, response.encodedBodyLength()); |
| 701 EXPECT_EQ(kEncodedDataLength, encoded_data_length); | 726 EXPECT_EQ(kEncodedDataLength, encoded_data_length); |
| 702 int expected_decoded_body_length = strlen(kBodyData); | 727 int expected_decoded_body_length = strlen(kBodyData); |
| 703 EXPECT_EQ(expected_decoded_body_length, response.decodedBodyLength()); | 728 EXPECT_EQ(expected_decoded_body_length, response.decodedBodyLength()); |
| 704 } | 729 } |
| 705 | 730 |
| 706 } // namespace | 731 } // namespace |
| 707 } // namespace content | 732 } // namespace content |
| OLD | NEW |