| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "net/url_request/url_request_job.h" | 5 #include "net/url_request/url_request_job.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
| 10 #include "net/base/request_priority.h" | 10 #include "net/base/request_priority.h" |
| 11 #include "net/http/http_transaction_test_util.h" | 11 #include "net/http/http_transaction_test_util.h" |
| 12 #include "net/test/cert_test_util.h" | 12 #include "net/test/cert_test_util.h" |
| 13 #include "net/test/gtest_util.h" | 13 #include "net/test/gtest_util.h" |
| 14 #include "net/test/test_data_directory.h" | 14 #include "net/test/test_data_directory.h" |
| 15 #include "net/traffic_annotation/network_traffic_annotation_test_helper.h" |
| 15 #include "net/url_request/url_request.h" | 16 #include "net/url_request/url_request.h" |
| 16 #include "net/url_request/url_request_test_util.h" | 17 #include "net/url_request/url_request_test_util.h" |
| 17 #include "testing/gmock/include/gmock/gmock.h" | 18 #include "testing/gmock/include/gmock/gmock.h" |
| 18 #include "testing/gtest/include/gtest/gtest.h" | 19 #include "testing/gtest/include/gtest/gtest.h" |
| 19 | 20 |
| 20 using net::test::IsError; | 21 using net::test::IsError; |
| 21 using net::test::IsOk; | 22 using net::test::IsOk; |
| 22 | 23 |
| 23 namespace net { | 24 namespace net { |
| 24 | 25 |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 }; | 172 }; |
| 172 | 173 |
| 173 } // namespace | 174 } // namespace |
| 174 | 175 |
| 175 TEST(URLRequestJob, TransactionNoFilter) { | 176 TEST(URLRequestJob, TransactionNoFilter) { |
| 176 MockNetworkLayer network_layer; | 177 MockNetworkLayer network_layer; |
| 177 TestURLRequestContext context; | 178 TestURLRequestContext context; |
| 178 context.set_http_transaction_factory(&network_layer); | 179 context.set_http_transaction_factory(&network_layer); |
| 179 | 180 |
| 180 TestDelegate d; | 181 TestDelegate d; |
| 181 std::unique_ptr<URLRequest> req(context.CreateRequest( | 182 std::unique_ptr<URLRequest> req( |
| 182 GURL(kNoFilter_Transaction.url), DEFAULT_PRIORITY, &d)); | 183 context.CreateRequest(GURL(kNoFilter_Transaction.url), DEFAULT_PRIORITY, |
| 184 &d, TRAFFIC_ANNOTATION_FOR_TESTS)); |
| 183 AddMockTransaction(&kNoFilter_Transaction); | 185 AddMockTransaction(&kNoFilter_Transaction); |
| 184 | 186 |
| 185 req->set_method("GET"); | 187 req->set_method("GET"); |
| 186 req->Start(); | 188 req->Start(); |
| 187 | 189 |
| 188 base::RunLoop().Run(); | 190 base::RunLoop().Run(); |
| 189 | 191 |
| 190 EXPECT_FALSE(d.request_failed()); | 192 EXPECT_FALSE(d.request_failed()); |
| 191 EXPECT_EQ(200, req->GetResponseCode()); | 193 EXPECT_EQ(200, req->GetResponseCode()); |
| 192 EXPECT_EQ("hello", d.data_received()); | 194 EXPECT_EQ("hello", d.data_received()); |
| 193 EXPECT_TRUE(network_layer.done_reading_called()); | 195 EXPECT_TRUE(network_layer.done_reading_called()); |
| 194 | 196 |
| 195 RemoveMockTransaction(&kNoFilter_Transaction); | 197 RemoveMockTransaction(&kNoFilter_Transaction); |
| 196 } | 198 } |
| 197 | 199 |
| 198 TEST(URLRequestJob, TransactionNotifiedWhenDone) { | 200 TEST(URLRequestJob, TransactionNotifiedWhenDone) { |
| 199 MockNetworkLayer network_layer; | 201 MockNetworkLayer network_layer; |
| 200 TestURLRequestContext context; | 202 TestURLRequestContext context; |
| 201 context.set_http_transaction_factory(&network_layer); | 203 context.set_http_transaction_factory(&network_layer); |
| 202 | 204 |
| 203 TestDelegate d; | 205 TestDelegate d; |
| 204 std::unique_ptr<URLRequest> req( | 206 std::unique_ptr<URLRequest> req( |
| 205 context.CreateRequest(GURL(kGZip_Transaction.url), DEFAULT_PRIORITY, &d)); | 207 context.CreateRequest(GURL(kGZip_Transaction.url), DEFAULT_PRIORITY, &d, |
| 208 TRAFFIC_ANNOTATION_FOR_TESTS)); |
| 206 AddMockTransaction(&kGZip_Transaction); | 209 AddMockTransaction(&kGZip_Transaction); |
| 207 | 210 |
| 208 req->set_method("GET"); | 211 req->set_method("GET"); |
| 209 req->Start(); | 212 req->Start(); |
| 210 | 213 |
| 211 base::RunLoop().Run(); | 214 base::RunLoop().Run(); |
| 212 | 215 |
| 213 EXPECT_TRUE(d.response_completed()); | 216 EXPECT_TRUE(d.response_completed()); |
| 214 EXPECT_EQ(OK, d.request_status()); | 217 EXPECT_EQ(OK, d.request_status()); |
| 215 EXPECT_EQ(200, req->GetResponseCode()); | 218 EXPECT_EQ(200, req->GetResponseCode()); |
| 216 EXPECT_EQ("", d.data_received()); | 219 EXPECT_EQ("", d.data_received()); |
| 217 EXPECT_TRUE(network_layer.done_reading_called()); | 220 EXPECT_TRUE(network_layer.done_reading_called()); |
| 218 | 221 |
| 219 RemoveMockTransaction(&kGZip_Transaction); | 222 RemoveMockTransaction(&kGZip_Transaction); |
| 220 } | 223 } |
| 221 | 224 |
| 222 TEST(URLRequestJob, SyncTransactionNotifiedWhenDone) { | 225 TEST(URLRequestJob, SyncTransactionNotifiedWhenDone) { |
| 223 MockNetworkLayer network_layer; | 226 MockNetworkLayer network_layer; |
| 224 TestURLRequestContext context; | 227 TestURLRequestContext context; |
| 225 context.set_http_transaction_factory(&network_layer); | 228 context.set_http_transaction_factory(&network_layer); |
| 226 | 229 |
| 227 TestDelegate d; | 230 TestDelegate d; |
| 228 std::unique_ptr<URLRequest> req( | 231 std::unique_ptr<URLRequest> req( |
| 229 context.CreateRequest(GURL(kGZip_Transaction.url), DEFAULT_PRIORITY, &d)); | 232 context.CreateRequest(GURL(kGZip_Transaction.url), DEFAULT_PRIORITY, &d, |
| 233 TRAFFIC_ANNOTATION_FOR_TESTS)); |
| 230 MockTransaction transaction(kGZip_Transaction); | 234 MockTransaction transaction(kGZip_Transaction); |
| 231 transaction.test_mode = TEST_MODE_SYNC_ALL; | 235 transaction.test_mode = TEST_MODE_SYNC_ALL; |
| 232 AddMockTransaction(&transaction); | 236 AddMockTransaction(&transaction); |
| 233 | 237 |
| 234 req->set_method("GET"); | 238 req->set_method("GET"); |
| 235 req->Start(); | 239 req->Start(); |
| 236 | 240 |
| 237 base::RunLoop().Run(); | 241 base::RunLoop().Run(); |
| 238 | 242 |
| 239 EXPECT_TRUE(d.response_completed()); | 243 EXPECT_TRUE(d.response_completed()); |
| 240 EXPECT_EQ(OK, d.request_status()); | 244 EXPECT_EQ(OK, d.request_status()); |
| 241 EXPECT_EQ(200, req->GetResponseCode()); | 245 EXPECT_EQ(200, req->GetResponseCode()); |
| 242 EXPECT_EQ("", d.data_received()); | 246 EXPECT_EQ("", d.data_received()); |
| 243 EXPECT_TRUE(network_layer.done_reading_called()); | 247 EXPECT_TRUE(network_layer.done_reading_called()); |
| 244 | 248 |
| 245 RemoveMockTransaction(&transaction); | 249 RemoveMockTransaction(&transaction); |
| 246 } | 250 } |
| 247 | 251 |
| 248 // Tests processing a large gzip header one byte at a time. | 252 // Tests processing a large gzip header one byte at a time. |
| 249 TEST(URLRequestJob, SyncSlowTransaction) { | 253 TEST(URLRequestJob, SyncSlowTransaction) { |
| 250 MockNetworkLayer network_layer; | 254 MockNetworkLayer network_layer; |
| 251 TestURLRequestContext context; | 255 TestURLRequestContext context; |
| 252 context.set_http_transaction_factory(&network_layer); | 256 context.set_http_transaction_factory(&network_layer); |
| 253 | 257 |
| 254 TestDelegate d; | 258 TestDelegate d; |
| 255 std::unique_ptr<URLRequest> req( | 259 std::unique_ptr<URLRequest> req( |
| 256 context.CreateRequest(GURL(kGZip_Transaction.url), DEFAULT_PRIORITY, &d)); | 260 context.CreateRequest(GURL(kGZip_Transaction.url), DEFAULT_PRIORITY, &d, |
| 261 TRAFFIC_ANNOTATION_FOR_TESTS)); |
| 257 MockTransaction transaction(kGZip_Transaction); | 262 MockTransaction transaction(kGZip_Transaction); |
| 258 transaction.test_mode = TEST_MODE_SYNC_ALL | TEST_MODE_SLOW_READ; | 263 transaction.test_mode = TEST_MODE_SYNC_ALL | TEST_MODE_SLOW_READ; |
| 259 transaction.handler = &BigGZipServer; | 264 transaction.handler = &BigGZipServer; |
| 260 AddMockTransaction(&transaction); | 265 AddMockTransaction(&transaction); |
| 261 | 266 |
| 262 req->set_method("GET"); | 267 req->set_method("GET"); |
| 263 req->Start(); | 268 req->Start(); |
| 264 | 269 |
| 265 base::RunLoop().Run(); | 270 base::RunLoop().Run(); |
| 266 | 271 |
| 267 EXPECT_TRUE(d.response_completed()); | 272 EXPECT_TRUE(d.response_completed()); |
| 268 EXPECT_EQ(OK, d.request_status()); | 273 EXPECT_EQ(OK, d.request_status()); |
| 269 EXPECT_EQ(200, req->GetResponseCode()); | 274 EXPECT_EQ(200, req->GetResponseCode()); |
| 270 EXPECT_EQ("", d.data_received()); | 275 EXPECT_EQ("", d.data_received()); |
| 271 EXPECT_TRUE(network_layer.done_reading_called()); | 276 EXPECT_TRUE(network_layer.done_reading_called()); |
| 272 | 277 |
| 273 RemoveMockTransaction(&transaction); | 278 RemoveMockTransaction(&transaction); |
| 274 } | 279 } |
| 275 | 280 |
| 276 TEST(URLRequestJob, RedirectTransactionNotifiedWhenDone) { | 281 TEST(URLRequestJob, RedirectTransactionNotifiedWhenDone) { |
| 277 MockNetworkLayer network_layer; | 282 MockNetworkLayer network_layer; |
| 278 TestURLRequestContext context; | 283 TestURLRequestContext context; |
| 279 context.set_http_transaction_factory(&network_layer); | 284 context.set_http_transaction_factory(&network_layer); |
| 280 | 285 |
| 281 TestDelegate d; | 286 TestDelegate d; |
| 282 std::unique_ptr<URLRequest> req(context.CreateRequest( | 287 std::unique_ptr<URLRequest> req( |
| 283 GURL(kRedirect_Transaction.url), DEFAULT_PRIORITY, &d)); | 288 context.CreateRequest(GURL(kRedirect_Transaction.url), DEFAULT_PRIORITY, |
| 289 &d, TRAFFIC_ANNOTATION_FOR_TESTS)); |
| 284 AddMockTransaction(&kRedirect_Transaction); | 290 AddMockTransaction(&kRedirect_Transaction); |
| 285 | 291 |
| 286 req->set_method("GET"); | 292 req->set_method("GET"); |
| 287 req->Start(); | 293 req->Start(); |
| 288 | 294 |
| 289 base::RunLoop().Run(); | 295 base::RunLoop().Run(); |
| 290 | 296 |
| 291 EXPECT_TRUE(network_layer.done_reading_called()); | 297 EXPECT_TRUE(network_layer.done_reading_called()); |
| 292 | 298 |
| 293 RemoveMockTransaction(&kRedirect_Transaction); | 299 RemoveMockTransaction(&kRedirect_Transaction); |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 461 MakeMockReferrerPolicyTransaction(test.original_url, | 467 MakeMockReferrerPolicyTransaction(test.original_url, |
| 462 request_headers.c_str(), | 468 request_headers.c_str(), |
| 463 test.response_headers, &transaction); | 469 test.response_headers, &transaction); |
| 464 | 470 |
| 465 MockNetworkLayer network_layer; | 471 MockNetworkLayer network_layer; |
| 466 TestURLRequestContext context; | 472 TestURLRequestContext context; |
| 467 context.set_http_transaction_factory(&network_layer); | 473 context.set_http_transaction_factory(&network_layer); |
| 468 | 474 |
| 469 TestDelegate d; | 475 TestDelegate d; |
| 470 std::unique_ptr<URLRequest> req( | 476 std::unique_ptr<URLRequest> req( |
| 471 context.CreateRequest(GURL(transaction.url), DEFAULT_PRIORITY, &d)); | 477 context.CreateRequest(GURL(transaction.url), DEFAULT_PRIORITY, &d, |
| 478 TRAFFIC_ANNOTATION_FOR_TESTS)); |
| 472 AddMockTransaction(&transaction); | 479 AddMockTransaction(&transaction); |
| 473 | 480 |
| 474 req->set_referrer_policy(test.original_referrer_policy); | 481 req->set_referrer_policy(test.original_referrer_policy); |
| 475 req->SetReferrer(test.original_referrer); | 482 req->SetReferrer(test.original_referrer); |
| 476 | 483 |
| 477 req->set_method("GET"); | 484 req->set_method("GET"); |
| 478 req->Start(); | 485 req->Start(); |
| 479 | 486 |
| 480 base::RunLoop().Run(); | 487 base::RunLoop().Run(); |
| 481 | 488 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 493 TEST(URLRequestJob, TransactionNotCachedWhenNetworkDelegateRedirects) { | 500 TEST(URLRequestJob, TransactionNotCachedWhenNetworkDelegateRedirects) { |
| 494 MockNetworkLayer network_layer; | 501 MockNetworkLayer network_layer; |
| 495 TestNetworkDelegate network_delegate; | 502 TestNetworkDelegate network_delegate; |
| 496 network_delegate.set_redirect_on_headers_received_url(GURL("http://foo")); | 503 network_delegate.set_redirect_on_headers_received_url(GURL("http://foo")); |
| 497 TestURLRequestContext context; | 504 TestURLRequestContext context; |
| 498 context.set_http_transaction_factory(&network_layer); | 505 context.set_http_transaction_factory(&network_layer); |
| 499 context.set_network_delegate(&network_delegate); | 506 context.set_network_delegate(&network_delegate); |
| 500 | 507 |
| 501 TestDelegate d; | 508 TestDelegate d; |
| 502 std::unique_ptr<URLRequest> req( | 509 std::unique_ptr<URLRequest> req( |
| 503 context.CreateRequest(GURL(kGZip_Transaction.url), DEFAULT_PRIORITY, &d)); | 510 context.CreateRequest(GURL(kGZip_Transaction.url), DEFAULT_PRIORITY, &d, |
| 511 TRAFFIC_ANNOTATION_FOR_TESTS)); |
| 504 AddMockTransaction(&kGZip_Transaction); | 512 AddMockTransaction(&kGZip_Transaction); |
| 505 | 513 |
| 506 req->set_method("GET"); | 514 req->set_method("GET"); |
| 507 req->Start(); | 515 req->Start(); |
| 508 | 516 |
| 509 base::RunLoop().Run(); | 517 base::RunLoop().Run(); |
| 510 | 518 |
| 511 EXPECT_TRUE(network_layer.stop_caching_called()); | 519 EXPECT_TRUE(network_layer.stop_caching_called()); |
| 512 | 520 |
| 513 RemoveMockTransaction(&kGZip_Transaction); | 521 RemoveMockTransaction(&kGZip_Transaction); |
| 514 } | 522 } |
| 515 | 523 |
| 516 // Makes sure that ReadRawDataComplete correctly updates request status before | 524 // Makes sure that ReadRawDataComplete correctly updates request status before |
| 517 // calling ReadFilteredData. | 525 // calling ReadFilteredData. |
| 518 // Regression test for crbug.com/553300. | 526 // Regression test for crbug.com/553300. |
| 519 TEST(URLRequestJob, EmptyBodySkipFilter) { | 527 TEST(URLRequestJob, EmptyBodySkipFilter) { |
| 520 MockNetworkLayer network_layer; | 528 MockNetworkLayer network_layer; |
| 521 TestURLRequestContext context; | 529 TestURLRequestContext context; |
| 522 context.set_http_transaction_factory(&network_layer); | 530 context.set_http_transaction_factory(&network_layer); |
| 523 | 531 |
| 524 TestDelegate d; | 532 TestDelegate d; |
| 525 std::unique_ptr<URLRequest> req(context.CreateRequest( | 533 std::unique_ptr<URLRequest> req(context.CreateRequest( |
| 526 GURL(kEmptyBodyGzip_Transaction.url), DEFAULT_PRIORITY, &d)); | 534 GURL(kEmptyBodyGzip_Transaction.url), DEFAULT_PRIORITY, &d, |
| 535 TRAFFIC_ANNOTATION_FOR_TESTS)); |
| 527 AddMockTransaction(&kEmptyBodyGzip_Transaction); | 536 AddMockTransaction(&kEmptyBodyGzip_Transaction); |
| 528 | 537 |
| 529 req->set_method("GET"); | 538 req->set_method("GET"); |
| 530 req->Start(); | 539 req->Start(); |
| 531 | 540 |
| 532 base::RunLoop().Run(); | 541 base::RunLoop().Run(); |
| 533 | 542 |
| 534 EXPECT_FALSE(d.request_failed()); | 543 EXPECT_FALSE(d.request_failed()); |
| 535 EXPECT_EQ(200, req->GetResponseCode()); | 544 EXPECT_EQ(200, req->GetResponseCode()); |
| 536 EXPECT_TRUE(d.data_received().empty()); | 545 EXPECT_TRUE(d.data_received().empty()); |
| 537 EXPECT_TRUE(network_layer.done_reading_called()); | 546 EXPECT_TRUE(network_layer.done_reading_called()); |
| 538 | 547 |
| 539 RemoveMockTransaction(&kEmptyBodyGzip_Transaction); | 548 RemoveMockTransaction(&kEmptyBodyGzip_Transaction); |
| 540 } | 549 } |
| 541 | 550 |
| 542 // Regression test for crbug.com/575213. | 551 // Regression test for crbug.com/575213. |
| 543 TEST(URLRequestJob, InvalidContentGZipTransaction) { | 552 TEST(URLRequestJob, InvalidContentGZipTransaction) { |
| 544 MockNetworkLayer network_layer; | 553 MockNetworkLayer network_layer; |
| 545 TestURLRequestContext context; | 554 TestURLRequestContext context; |
| 546 context.set_http_transaction_factory(&network_layer); | 555 context.set_http_transaction_factory(&network_layer); |
| 547 | 556 |
| 548 TestDelegate d; | 557 TestDelegate d; |
| 549 std::unique_ptr<URLRequest> req(context.CreateRequest( | 558 std::unique_ptr<URLRequest> req(context.CreateRequest( |
| 550 GURL(kInvalidContentGZip_Transaction.url), DEFAULT_PRIORITY, &d)); | 559 GURL(kInvalidContentGZip_Transaction.url), DEFAULT_PRIORITY, &d, |
| 560 TRAFFIC_ANNOTATION_FOR_TESTS)); |
| 551 AddMockTransaction(&kInvalidContentGZip_Transaction); | 561 AddMockTransaction(&kInvalidContentGZip_Transaction); |
| 552 | 562 |
| 553 req->set_method("GET"); | 563 req->set_method("GET"); |
| 554 req->Start(); | 564 req->Start(); |
| 555 | 565 |
| 556 base::RunLoop().Run(); | 566 base::RunLoop().Run(); |
| 557 | 567 |
| 558 // Request failed indicates the request failed before headers were received, | 568 // Request failed indicates the request failed before headers were received, |
| 559 // so should be false. | 569 // so should be false. |
| 560 EXPECT_FALSE(d.request_failed()); | 570 EXPECT_FALSE(d.request_failed()); |
| 561 EXPECT_EQ(200, req->GetResponseCode()); | 571 EXPECT_EQ(200, req->GetResponseCode()); |
| 562 EXPECT_FALSE(req->status().is_success()); | 572 EXPECT_FALSE(req->status().is_success()); |
| 563 EXPECT_EQ(ERR_CONTENT_DECODING_FAILED, d.request_status()); | 573 EXPECT_EQ(ERR_CONTENT_DECODING_FAILED, d.request_status()); |
| 564 EXPECT_TRUE(d.data_received().empty()); | 574 EXPECT_TRUE(d.data_received().empty()); |
| 565 EXPECT_FALSE(network_layer.done_reading_called()); | 575 EXPECT_FALSE(network_layer.done_reading_called()); |
| 566 | 576 |
| 567 RemoveMockTransaction(&kInvalidContentGZip_Transaction); | 577 RemoveMockTransaction(&kInvalidContentGZip_Transaction); |
| 568 } | 578 } |
| 569 | 579 |
| 570 // Regression test for crbug.com/553300. | 580 // Regression test for crbug.com/553300. |
| 571 TEST(URLRequestJob, SlowFilterRead) { | 581 TEST(URLRequestJob, SlowFilterRead) { |
| 572 MockNetworkLayer network_layer; | 582 MockNetworkLayer network_layer; |
| 573 TestURLRequestContext context; | 583 TestURLRequestContext context; |
| 574 context.set_http_transaction_factory(&network_layer); | 584 context.set_http_transaction_factory(&network_layer); |
| 575 | 585 |
| 576 TestDelegate d; | 586 TestDelegate d; |
| 577 std::unique_ptr<URLRequest> req(context.CreateRequest( | 587 std::unique_ptr<URLRequest> req( |
| 578 GURL(kGzip_Slow_Transaction.url), DEFAULT_PRIORITY, &d)); | 588 context.CreateRequest(GURL(kGzip_Slow_Transaction.url), DEFAULT_PRIORITY, |
| 589 &d, TRAFFIC_ANNOTATION_FOR_TESTS)); |
| 579 AddMockTransaction(&kGzip_Slow_Transaction); | 590 AddMockTransaction(&kGzip_Slow_Transaction); |
| 580 | 591 |
| 581 req->set_method("GET"); | 592 req->set_method("GET"); |
| 582 req->Start(); | 593 req->Start(); |
| 583 | 594 |
| 584 base::RunLoop().Run(); | 595 base::RunLoop().Run(); |
| 585 | 596 |
| 586 EXPECT_FALSE(d.request_failed()); | 597 EXPECT_FALSE(d.request_failed()); |
| 587 EXPECT_EQ(200, req->GetResponseCode()); | 598 EXPECT_EQ(200, req->GetResponseCode()); |
| 588 EXPECT_EQ("hello\n", d.data_received()); | 599 EXPECT_EQ("hello\n", d.data_received()); |
| 589 EXPECT_TRUE(network_layer.done_reading_called()); | 600 EXPECT_TRUE(network_layer.done_reading_called()); |
| 590 | 601 |
| 591 RemoveMockTransaction(&kGzip_Slow_Transaction); | 602 RemoveMockTransaction(&kGzip_Slow_Transaction); |
| 592 } | 603 } |
| 593 | 604 |
| 594 TEST(URLRequestJob, SlowBrotliRead) { | 605 TEST(URLRequestJob, SlowBrotliRead) { |
| 595 MockNetworkLayer network_layer; | 606 MockNetworkLayer network_layer; |
| 596 TestURLRequestContext context; | 607 TestURLRequestContext context; |
| 597 context.set_http_transaction_factory(&network_layer); | 608 context.set_http_transaction_factory(&network_layer); |
| 598 | 609 |
| 599 TestDelegate d; | 610 TestDelegate d; |
| 600 std::unique_ptr<URLRequest> req(context.CreateRequest( | 611 std::unique_ptr<URLRequest> req(context.CreateRequest( |
| 601 GURL(kBrotli_Slow_Transaction.url), DEFAULT_PRIORITY, &d)); | 612 GURL(kBrotli_Slow_Transaction.url), DEFAULT_PRIORITY, &d, |
| 613 TRAFFIC_ANNOTATION_FOR_TESTS)); |
| 602 AddMockTransaction(&kBrotli_Slow_Transaction); | 614 AddMockTransaction(&kBrotli_Slow_Transaction); |
| 603 | 615 |
| 604 req->set_method("GET"); | 616 req->set_method("GET"); |
| 605 req->Start(); | 617 req->Start(); |
| 606 | 618 |
| 607 base::RunLoop().RunUntilIdle(); | 619 base::RunLoop().RunUntilIdle(); |
| 608 | 620 |
| 609 EXPECT_FALSE(d.request_failed()); | 621 EXPECT_FALSE(d.request_failed()); |
| 610 EXPECT_EQ(200, req->GetResponseCode()); | 622 EXPECT_EQ(200, req->GetResponseCode()); |
| 611 EXPECT_EQ(kHelloData, d.data_received()); | 623 EXPECT_EQ(kHelloData, d.data_received()); |
| 612 EXPECT_TRUE(network_layer.done_reading_called()); | 624 EXPECT_TRUE(network_layer.done_reading_called()); |
| 613 | 625 |
| 614 RemoveMockTransaction(&kBrotli_Slow_Transaction); | 626 RemoveMockTransaction(&kBrotli_Slow_Transaction); |
| 615 } | 627 } |
| 616 | 628 |
| 617 } // namespace net | 629 } // namespace net |
| OLD | NEW |