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

Side by Side Diff: content/browser/streams/stream_url_request_job_unittest.cc

Issue 2368913002: Fix stream errors that occur after a stream starts not propagating. (Closed)
Patch Set: review comments Created 4 years, 2 months 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
OLDNEW
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
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
OLDNEW
« no previous file with comments | « content/browser/streams/stream_url_request_job.cc ('k') | content/public/test/browser_side_navigation_test_utils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698