| 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 "content/browser/streams/stream_url_request_job.h" | 5 #include "content/browser/streams/stream_url_request_job.h" |
| 6 | 6 |
| 7 #include "base/memory/ptr_util.h" | 7 #include "base/memory/ptr_util.h" |
| 8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
| 9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
| 10 #include "base/test/test_simple_task_runner.h" | 10 #include "base/test/test_simple_task_runner.h" |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 | 61 |
| 62 url_request_job_factory_.SetProtocolHandler( | 62 url_request_job_factory_.SetProtocolHandler( |
| 63 "blob", base::MakeUnique<MockProtocolHandler>(registry_.get())); | 63 "blob", base::MakeUnique<MockProtocolHandler>(registry_.get())); |
| 64 url_request_context_.set_job_factory(&url_request_job_factory_); | 64 url_request_context_.set_job_factory(&url_request_job_factory_); |
| 65 } | 65 } |
| 66 | 66 |
| 67 void TearDown() override {} | 67 void TearDown() override {} |
| 68 | 68 |
| 69 void TestSuccessRequest(const GURL& url, | 69 void TestSuccessRequest(const GURL& url, |
| 70 const std::string& expected_response) { | 70 const std::string& expected_response) { |
| 71 TestRequest("GET", url, net::HttpRequestHeaders(), 200, expected_response); | 71 TestRequest("GET", url, net::HttpRequestHeaders(), 200, net::OK, |
| 72 expected_response); |
| 72 } | 73 } |
| 73 | 74 |
| 74 void TestRequest(const std::string& method, | 75 void TestRequest(const std::string& method, |
| 75 const GURL& url, | 76 const GURL& url, |
| 76 const net::HttpRequestHeaders& extra_headers, | 77 const net::HttpRequestHeaders& extra_headers, |
| 77 int expected_status_code, | 78 int expected_status_code, |
| 79 int expected_error_code, |
| 78 const std::string& expected_response) { | 80 const std::string& expected_response) { |
| 79 net::TestDelegate delegate; | 81 net::TestDelegate delegate; |
| 80 request_ = url_request_context_.CreateRequest( | 82 request_ = url_request_context_.CreateRequest( |
| 81 url, net::DEFAULT_PRIORITY, &delegate); | 83 url, net::DEFAULT_PRIORITY, &delegate); |
| 82 request_->set_method(method); | 84 request_->set_method(method); |
| 83 if (!extra_headers.IsEmpty()) | 85 if (!extra_headers.IsEmpty()) |
| 84 request_->SetExtraRequestHeaders(extra_headers); | 86 request_->SetExtraRequestHeaders(extra_headers); |
| 85 request_->Start(); | 87 request_->Start(); |
| 86 | 88 |
| 87 base::RunLoop().RunUntilIdle(); | 89 base::RunLoop().RunUntilIdle(); |
| 88 | 90 |
| 89 // Verify response. | 91 // Verify response. |
| 90 EXPECT_TRUE(request_->status().is_success()); | 92 if (expected_error_code) |
| 93 EXPECT_EQ(expected_error_code, request_->status().error()); |
| 94 else |
| 95 EXPECT_TRUE(request_->status().is_success()); |
| 91 ASSERT_TRUE(request_->response_headers()); | 96 ASSERT_TRUE(request_->response_headers()); |
| 92 EXPECT_EQ(expected_status_code, | 97 EXPECT_EQ(expected_status_code, |
| 93 request_->response_headers()->response_code()); | 98 request_->response_headers()->response_code()); |
| 94 EXPECT_EQ(expected_response, delegate.data_received()); | 99 EXPECT_EQ(expected_response, delegate.data_received()); |
| 95 } | 100 } |
| 96 | 101 |
| 97 protected: | 102 protected: |
| 98 base::MessageLoopForIO message_loop_; | 103 base::MessageLoopForIO message_loop_; |
| 99 std::unique_ptr<StreamRegistry> registry_; | 104 std::unique_ptr<StreamRegistry> registry_; |
| 100 | 105 |
| 101 net::URLRequestContext url_request_context_; | 106 net::URLRequestContext url_request_context_; |
| 102 net::URLRequestJobFactoryImpl url_request_job_factory_; | 107 net::URLRequestJobFactoryImpl url_request_job_factory_; |
| 103 std::unique_ptr<net::URLRequest> request_; | 108 std::unique_ptr<net::URLRequest> request_; |
| 104 }; | 109 }; |
| 105 | 110 |
| 106 TEST_F(StreamURLRequestJobTest, TestGetSimpleDataRequest) { | 111 TEST_F(StreamURLRequestJobTest, TestGetSimpleDataRequest) { |
| 107 scoped_refptr<Stream> stream( | 112 scoped_refptr<Stream> stream( |
| 108 new Stream(registry_.get(), NULL, kStreamURL)); | 113 new Stream(registry_.get(), NULL, kStreamURL)); |
| 109 | 114 |
| 110 scoped_refptr<net::StringIOBuffer> buffer( | 115 scoped_refptr<net::StringIOBuffer> buffer( |
| 111 new net::StringIOBuffer(kTestData1)); | 116 new net::StringIOBuffer(kTestData1)); |
| 112 | 117 |
| 113 stream->AddData(buffer, buffer->size()); | 118 stream->AddData(buffer, buffer->size()); |
| 114 stream->Finalize(); | 119 stream->Finalize(net::OK); |
| 115 | 120 |
| 116 TestSuccessRequest(kStreamURL, kTestData1); | 121 TestSuccessRequest(kStreamURL, kTestData1); |
| 117 } | 122 } |
| 118 | 123 |
| 119 TEST_F(StreamURLRequestJobTest, TestGetLargeStreamRequest) { | 124 TEST_F(StreamURLRequestJobTest, TestGetLargeStreamRequest) { |
| 120 scoped_refptr<Stream> stream( | 125 scoped_refptr<Stream> stream( |
| 121 new Stream(registry_.get(), NULL, kStreamURL)); | 126 new Stream(registry_.get(), NULL, kStreamURL)); |
| 122 | 127 |
| 123 std::string large_data; | 128 std::string large_data; |
| 124 large_data.reserve(kBufferSize * 5); | 129 large_data.reserve(kBufferSize * 5); |
| 125 for (int i = 0; i < kBufferSize * 5; ++i) | 130 for (int i = 0; i < kBufferSize * 5; ++i) |
| 126 large_data.append(1, static_cast<char>(i % 256)); | 131 large_data.append(1, static_cast<char>(i % 256)); |
| 127 | 132 |
| 128 scoped_refptr<net::StringIOBuffer> buffer( | 133 scoped_refptr<net::StringIOBuffer> buffer( |
| 129 new net::StringIOBuffer(large_data)); | 134 new net::StringIOBuffer(large_data)); |
| 130 | 135 |
| 131 stream->AddData(buffer, buffer->size()); | 136 stream->AddData(buffer, buffer->size()); |
| 132 stream->Finalize(); | 137 stream->Finalize(net::OK); |
| 133 TestSuccessRequest(kStreamURL, large_data); | 138 TestSuccessRequest(kStreamURL, large_data); |
| 134 } | 139 } |
| 135 | 140 |
| 136 TEST_F(StreamURLRequestJobTest, TestGetNonExistentStreamRequest) { | 141 TEST_F(StreamURLRequestJobTest, TestGetNonExistentStreamRequest) { |
| 137 net::TestDelegate delegate; | 142 net::TestDelegate delegate; |
| 138 request_ = url_request_context_.CreateRequest( | 143 request_ = url_request_context_.CreateRequest( |
| 139 kStreamURL, net::DEFAULT_PRIORITY, &delegate); | 144 kStreamURL, net::DEFAULT_PRIORITY, &delegate); |
| 140 request_->set_method("GET"); | 145 request_->set_method("GET"); |
| 141 request_->Start(); | 146 request_->Start(); |
| 142 | 147 |
| 143 base::RunLoop().RunUntilIdle(); | 148 base::RunLoop().RunUntilIdle(); |
| 144 | 149 |
| 145 // Verify response. | 150 // Verify response. |
| 146 EXPECT_FALSE(request_->status().is_success()); | 151 EXPECT_FALSE(request_->status().is_success()); |
| 147 } | 152 } |
| 148 | 153 |
| 149 TEST_F(StreamURLRequestJobTest, TestRangeDataRequest) { | 154 TEST_F(StreamURLRequestJobTest, TestRangeDataRequest) { |
| 150 scoped_refptr<Stream> stream( | 155 scoped_refptr<Stream> stream( |
| 151 new Stream(registry_.get(), NULL, kStreamURL)); | 156 new Stream(registry_.get(), NULL, kStreamURL)); |
| 152 | 157 |
| 153 scoped_refptr<net::StringIOBuffer> buffer( | 158 scoped_refptr<net::StringIOBuffer> buffer( |
| 154 new net::StringIOBuffer(kTestData2)); | 159 new net::StringIOBuffer(kTestData2)); |
| 155 | 160 |
| 156 stream->AddData(buffer, buffer->size()); | 161 stream->AddData(buffer, buffer->size()); |
| 157 stream->Finalize(); | 162 stream->Finalize(net::OK); |
| 158 | 163 |
| 159 net::HttpRequestHeaders extra_headers; | 164 net::HttpRequestHeaders extra_headers; |
| 160 extra_headers.SetHeader(net::HttpRequestHeaders::kRange, | 165 extra_headers.SetHeader(net::HttpRequestHeaders::kRange, |
| 161 net::HttpByteRange::Bounded(0, 3).GetHeaderValue()); | 166 net::HttpByteRange::Bounded(0, 3).GetHeaderValue()); |
| 162 TestRequest("GET", kStreamURL, extra_headers, | 167 TestRequest("GET", kStreamURL, extra_headers, |
| 163 200, std::string(kTestData2, 4)); | 168 200, net::OK, std::string(kTestData2, 4)); |
| 164 } | 169 } |
| 165 | 170 |
| 166 TEST_F(StreamURLRequestJobTest, TestInvalidRangeDataRequest) { | 171 TEST_F(StreamURLRequestJobTest, TestInvalidRangeDataRequest) { |
| 167 scoped_refptr<Stream> stream( | 172 scoped_refptr<Stream> stream( |
| 168 new Stream(registry_.get(), NULL, kStreamURL)); | 173 new Stream(registry_.get(), NULL, kStreamURL)); |
| 169 | 174 |
| 170 scoped_refptr<net::StringIOBuffer> buffer( | 175 scoped_refptr<net::StringIOBuffer> buffer( |
| 171 new net::StringIOBuffer(kTestData2)); | 176 new net::StringIOBuffer(kTestData2)); |
| 172 | 177 |
| 173 stream->AddData(buffer, buffer->size()); | 178 stream->AddData(buffer, buffer->size()); |
| 174 stream->Finalize(); | 179 stream->Finalize(net::OK); |
| 175 | 180 |
| 176 net::HttpRequestHeaders extra_headers; | 181 net::HttpRequestHeaders extra_headers; |
| 177 extra_headers.SetHeader(net::HttpRequestHeaders::kRange, | 182 extra_headers.SetHeader(net::HttpRequestHeaders::kRange, |
| 178 net::HttpByteRange::Bounded(1, 3).GetHeaderValue()); | 183 net::HttpByteRange::Bounded(1, 3).GetHeaderValue()); |
| 179 TestRequest("GET", kStreamURL, extra_headers, 405, std::string()); | 184 TestRequest("GET", kStreamURL, extra_headers, 405, |
| 185 net::ERR_METHOD_NOT_SUPPORTED, std::string()); |
| 180 } | 186 } |
| 181 | 187 |
| 182 } // namespace content | 188 } // namespace content |
| OLD | NEW |