| 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 "net/base/request_priority.h" |
| 7 #include "net/http/http_transaction_unittest.h" | 8 #include "net/http/http_transaction_unittest.h" |
| 8 #include "net/url_request/url_request_test_util.h" | 9 #include "net/url_request/url_request_test_util.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| 10 | 11 |
| 12 namespace net { |
| 13 |
| 11 namespace { | 14 namespace { |
| 12 | 15 |
| 13 // This is a header that signals the end of the data. | 16 // This is a header that signals the end of the data. |
| 14 const char kGzipGata[] = "\x1f\x08b\x08\0\0\0\0\0\0\3\3\0\0\0\0\0\0\0\0"; | 17 const char kGzipGata[] = "\x1f\x08b\x08\0\0\0\0\0\0\3\3\0\0\0\0\0\0\0\0"; |
| 15 | 18 |
| 16 void GZipServer(const net::HttpRequestInfo* request, | 19 void GZipServer(const HttpRequestInfo* request, |
| 17 std::string* response_status, std::string* response_headers, | 20 std::string* response_status, |
| 21 std::string* response_headers, |
| 18 std::string* response_data) { | 22 std::string* response_data) { |
| 19 response_data->assign(kGzipGata, sizeof(kGzipGata)); | 23 response_data->assign(kGzipGata, sizeof(kGzipGata)); |
| 20 } | 24 } |
| 21 | 25 |
| 22 const MockTransaction kGZip_Transaction = { | 26 const MockTransaction kGZip_Transaction = { |
| 23 "http://www.google.com/gzyp", | 27 "http://www.google.com/gzyp", |
| 24 "GET", | 28 "GET", |
| 25 base::Time(), | 29 base::Time(), |
| 26 "", | 30 "", |
| 27 net::LOAD_NORMAL, | 31 LOAD_NORMAL, |
| 28 "HTTP/1.1 200 OK", | 32 "HTTP/1.1 200 OK", |
| 29 "Cache-Control: max-age=10000\n" | 33 "Cache-Control: max-age=10000\n" |
| 30 "Content-Encoding: gzip\n" | 34 "Content-Encoding: gzip\n" |
| 31 "Content-Length: 30\n", // Intentionally wrong. | 35 "Content-Length: 30\n", // Intentionally wrong. |
| 32 base::Time(), | 36 base::Time(), |
| 33 "", | 37 "", |
| 34 TEST_MODE_NORMAL, | 38 TEST_MODE_NORMAL, |
| 35 &GZipServer, | 39 &GZipServer, |
| 36 0, | 40 0, |
| 37 net::OK | 41 OK |
| 38 }; | 42 }; |
| 39 | 43 |
| 40 const MockTransaction kRedirect_Transaction = { | 44 const MockTransaction kRedirect_Transaction = { |
| 41 "http://www.google.com/redirect", | 45 "http://www.google.com/redirect", |
| 42 "GET", | 46 "GET", |
| 43 base::Time(), | 47 base::Time(), |
| 44 "", | 48 "", |
| 45 net::LOAD_NORMAL, | 49 LOAD_NORMAL, |
| 46 "HTTP/1.1 302 Found", | 50 "HTTP/1.1 302 Found", |
| 47 "Cache-Control: max-age=10000\n" | 51 "Cache-Control: max-age=10000\n" |
| 48 "Location: http://www.google.com/destination\n" | 52 "Location: http://www.google.com/destination\n" |
| 49 "Content-Length: 5\n", | 53 "Content-Length: 5\n", |
| 50 base::Time(), | 54 base::Time(), |
| 51 "hello", | 55 "hello", |
| 52 TEST_MODE_NORMAL, | 56 TEST_MODE_NORMAL, |
| 53 NULL, | 57 NULL, |
| 54 0, | 58 0, |
| 55 net::OK | 59 OK |
| 56 }; | 60 }; |
| 57 | 61 |
| 58 } // namespace | 62 } // namespace |
| 59 | 63 |
| 60 TEST(URLRequestJob, TransactionNotifiedWhenDone) { | 64 TEST(URLRequestJob, TransactionNotifiedWhenDone) { |
| 61 MockNetworkLayer network_layer; | 65 MockNetworkLayer network_layer; |
| 62 net::TestURLRequestContext context; | 66 TestURLRequestContext context; |
| 63 context.set_http_transaction_factory(&network_layer); | 67 context.set_http_transaction_factory(&network_layer); |
| 64 | 68 |
| 65 net::TestDelegate d; | 69 TestDelegate d; |
| 66 net::TestURLRequest req(GURL(kGZip_Transaction.url), &d, &context, NULL); | 70 TestURLRequest req( |
| 71 GURL(kGZip_Transaction.url), DEFAULT_PRIORITY, &d, &context); |
| 67 AddMockTransaction(&kGZip_Transaction); | 72 AddMockTransaction(&kGZip_Transaction); |
| 68 | 73 |
| 69 req.set_method("GET"); | 74 req.set_method("GET"); |
| 70 req.Start(); | 75 req.Start(); |
| 71 | 76 |
| 72 base::MessageLoop::current()->Run(); | 77 base::MessageLoop::current()->Run(); |
| 73 | 78 |
| 74 EXPECT_TRUE(network_layer.done_reading_called()); | 79 EXPECT_TRUE(network_layer.done_reading_called()); |
| 75 | 80 |
| 76 RemoveMockTransaction(&kGZip_Transaction); | 81 RemoveMockTransaction(&kGZip_Transaction); |
| 77 } | 82 } |
| 78 | 83 |
| 79 TEST(URLRequestJob, SyncTransactionNotifiedWhenDone) { | 84 TEST(URLRequestJob, SyncTransactionNotifiedWhenDone) { |
| 80 MockNetworkLayer network_layer; | 85 MockNetworkLayer network_layer; |
| 81 net::TestURLRequestContext context; | 86 TestURLRequestContext context; |
| 82 context.set_http_transaction_factory(&network_layer); | 87 context.set_http_transaction_factory(&network_layer); |
| 83 | 88 |
| 84 net::TestDelegate d; | 89 TestDelegate d; |
| 85 net::TestURLRequest req(GURL(kGZip_Transaction.url), &d, &context, NULL); | 90 TestURLRequest req( |
| 91 GURL(kGZip_Transaction.url), DEFAULT_PRIORITY, &d, &context); |
| 86 MockTransaction transaction(kGZip_Transaction); | 92 MockTransaction transaction(kGZip_Transaction); |
| 87 transaction.test_mode = TEST_MODE_SYNC_ALL; | 93 transaction.test_mode = TEST_MODE_SYNC_ALL; |
| 88 AddMockTransaction(&transaction); | 94 AddMockTransaction(&transaction); |
| 89 | 95 |
| 90 req.set_method("GET"); | 96 req.set_method("GET"); |
| 91 req.Start(); | 97 req.Start(); |
| 92 | 98 |
| 93 base::MessageLoop::current()->Run(); | 99 base::MessageLoop::current()->Run(); |
| 94 | 100 |
| 95 EXPECT_TRUE(network_layer.done_reading_called()); | 101 EXPECT_TRUE(network_layer.done_reading_called()); |
| 96 | 102 |
| 97 RemoveMockTransaction(&transaction); | 103 RemoveMockTransaction(&transaction); |
| 98 } | 104 } |
| 99 | 105 |
| 100 TEST(URLRequestJob, RedirectTransactionNotifiedWhenDone) { | 106 TEST(URLRequestJob, RedirectTransactionNotifiedWhenDone) { |
| 101 MockNetworkLayer network_layer; | 107 MockNetworkLayer network_layer; |
| 102 net::TestURLRequestContext context; | 108 TestURLRequestContext context; |
| 103 context.set_http_transaction_factory(&network_layer); | 109 context.set_http_transaction_factory(&network_layer); |
| 104 | 110 |
| 105 net::TestDelegate d; | 111 TestDelegate d; |
| 106 net::TestURLRequest req(GURL(kRedirect_Transaction.url), &d, &context, NULL); | 112 TestURLRequest req( |
| 113 GURL(kRedirect_Transaction.url), DEFAULT_PRIORITY, &d, &context); |
| 107 AddMockTransaction(&kRedirect_Transaction); | 114 AddMockTransaction(&kRedirect_Transaction); |
| 108 | 115 |
| 109 req.set_method("GET"); | 116 req.set_method("GET"); |
| 110 req.Start(); | 117 req.Start(); |
| 111 | 118 |
| 112 base::MessageLoop::current()->Run(); | 119 base::MessageLoop::current()->Run(); |
| 113 | 120 |
| 114 EXPECT_TRUE(network_layer.done_reading_called()); | 121 EXPECT_TRUE(network_layer.done_reading_called()); |
| 115 | 122 |
| 116 RemoveMockTransaction(&kRedirect_Transaction); | 123 RemoveMockTransaction(&kRedirect_Transaction); |
| 117 } | 124 } |
| 125 |
| 126 } // namespace net |
| OLD | NEW |