OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/loader/intercepting_resource_handler.h" | 5 #include "content/browser/loader/intercepting_resource_handler.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 #include <string> | 10 #include <string> |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 | 80 |
81 // Tests that the handler behaves properly when it doesn't have to use an | 81 // Tests that the handler behaves properly when it doesn't have to use an |
82 // alternate next handler. | 82 // alternate next handler. |
83 TEST_F(InterceptingResourceHandlerTest, NoSwitching) { | 83 TEST_F(InterceptingResourceHandlerTest, NoSwitching) { |
84 const std::string kData = "The data"; | 84 const std::string kData = "The data"; |
85 const std::string kData2 = "Data 2"; | 85 const std::string kData2 = "Data 2"; |
86 | 86 |
87 // Simulate the MimeSniffingResourceHandler buffering the data. | 87 // Simulate the MimeSniffingResourceHandler buffering the data. |
88 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 88 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
89 mock_loader_->OnWillStart(request_->url())); | 89 mock_loader_->OnWillStart(request_->url())); |
90 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); | |
91 | |
92 ASSERT_NE(mock_loader_->io_buffer(), old_handler_->buffer()); | |
93 | 90 |
94 // The response is received. The handler should not change. | 91 // The response is received. The handler should not change. |
95 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 92 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
96 mock_loader_->OnResponseStarted( | 93 mock_loader_->OnResponseStarted( |
97 make_scoped_refptr(new ResourceResponse()))); | 94 make_scoped_refptr(new ResourceResponse()))); |
98 | 95 |
99 // The read is replayed by the MimeSniffingResourceHandler. The data should | 96 // The OnWillRead and OnReadCompleted are replayed by the |
100 // have been received by the old intercepting_handler. | 97 // MimeSniffingResourceHandler. No buffering is done by the |
| 98 // InterceptingResourceHandler, so the buffer used should be from |
| 99 // the old handling. |
| 100 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); |
| 101 ASSERT_EQ(mock_loader_->io_buffer(), old_handler_->buffer()); |
101 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 102 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
102 mock_loader_->OnReadCompleted(kData)); | 103 mock_loader_->OnReadCompleted(kData)); |
| 104 |
| 105 // The data should be received by the original handler. |
103 EXPECT_EQ(kData, old_handler_body_); | 106 EXPECT_EQ(kData, old_handler_body_); |
104 | 107 |
105 // Make sure another read behaves as expected. | 108 // Make sure another read behaves as expected. |
106 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); | 109 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); |
107 ASSERT_EQ(mock_loader_->io_buffer(), old_handler_->buffer()); | 110 ASSERT_EQ(mock_loader_->io_buffer(), old_handler_->buffer()); |
108 | 111 |
109 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 112 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
110 mock_loader_->OnReadCompleted(kData2)); | 113 mock_loader_->OnReadCompleted(kData2)); |
111 EXPECT_EQ(kData + kData2, old_handler_body_); | 114 EXPECT_EQ(kData + kData2, old_handler_body_); |
112 } | 115 } |
113 | 116 |
114 // Tests that the data received is transmitted to the newly created | 117 // Tests that the data received is transmitted to the newly created |
115 // ResourceHandler. | 118 // ResourceHandler. |
116 TEST_F(InterceptingResourceHandlerTest, HandlerSwitchNoPayload) { | 119 TEST_F(InterceptingResourceHandlerTest, HandlerSwitchNoPayload) { |
117 const std::string kData = "The data"; | 120 const std::string kData = "The data"; |
118 const std::string kData2 = "Data 2"; | 121 const std::string kData2 = "Data 2"; |
119 | 122 |
120 // Simulate the MimeSniffingResourceHandler buffering the data. | 123 // Simulate the MimeSniffingResourceHandler buffering the data. |
121 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 124 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
122 mock_loader_->OnWillStart(request_->url())); | 125 mock_loader_->OnWillStart(request_->url())); |
123 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); | |
124 | |
125 ASSERT_NE(mock_loader_->io_buffer(), old_handler_->buffer()); | |
126 | 126 |
127 // Simulate the MimeSniffingResourceHandler asking the | 127 // Simulate the MimeSniffingResourceHandler asking the |
128 // InterceptingResourceHandler to switch to a new handler. | 128 // InterceptingResourceHandler to switch to a new handler. |
129 net::URLRequestStatus new_handler_status; | 129 net::URLRequestStatus new_handler_status; |
130 std::string new_handler_body; | 130 std::string new_handler_body; |
131 std::unique_ptr<TestResourceHandler> new_handler_scoped( | 131 std::unique_ptr<TestResourceHandler> new_handler_scoped( |
132 new TestResourceHandler(&new_handler_status, &new_handler_body)); | 132 new TestResourceHandler(&new_handler_status, &new_handler_body)); |
133 TestResourceHandler* new_test_handler = new_handler_scoped.get(); | 133 TestResourceHandler* new_test_handler = new_handler_scoped.get(); |
134 intercepting_handler_->UseNewHandler(std::move(new_handler_scoped), | 134 intercepting_handler_->UseNewHandler(std::move(new_handler_scoped), |
135 std::string()); | 135 std::string()); |
136 | 136 |
137 // The response is received. The new ResourceHandler should be used to handle | 137 // The response is received. The new ResourceHandler should be used to handle |
138 // the download. | 138 // the download. |
139 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 139 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
140 mock_loader_->OnResponseStarted( | 140 mock_loader_->OnResponseStarted( |
141 make_scoped_refptr(new ResourceResponse()))); | 141 make_scoped_refptr(new ResourceResponse()))); |
142 | 142 |
| 143 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); |
| 144 |
| 145 // The old handler should have been destroyed at the beginning of the |
| 146 // replace. |
| 147 ASSERT_FALSE(old_handler_.get()); |
| 148 ASSERT_TRUE(mock_loader_->io_buffer()); |
| 149 |
143 EXPECT_FALSE(old_handler_status_.is_success()); | 150 EXPECT_FALSE(old_handler_status_.is_success()); |
144 EXPECT_EQ(net::ERR_ABORTED, old_handler_status_.error()); | 151 EXPECT_EQ(net::ERR_ABORTED, old_handler_status_.error()); |
145 EXPECT_EQ(std::string(), old_handler_body_); | 152 EXPECT_EQ(std::string(), old_handler_body_); |
146 | 153 |
147 // The read is replayed by the MimeSniffingResourceHandler. The data should | 154 // The read is replayed by the MimeSniffingResourceHandler. The data should |
148 // have been received by the new handler. | 155 // have been received by the new handler. |
149 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 156 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
150 mock_loader_->OnReadCompleted(kData)); | 157 mock_loader_->OnReadCompleted(kData)); |
151 EXPECT_EQ(kData, new_handler_body); | 158 EXPECT_EQ(kData, new_handler_body); |
152 | 159 |
(...skipping 16 matching lines...) Expand all Loading... |
169 // When sending a payload to the old ResourceHandler, the | 176 // When sending a payload to the old ResourceHandler, the |
170 // InterceptingResourceHandler doesn't send a final EOF read. | 177 // InterceptingResourceHandler doesn't send a final EOF read. |
171 // TODO(mmenke): Should it? Or can we just get rid of that 0-byte read | 178 // TODO(mmenke): Should it? Or can we just get rid of that 0-byte read |
172 // entirely? | 179 // entirely? |
173 old_handler_->set_expect_eof_read(false); | 180 old_handler_->set_expect_eof_read(false); |
174 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); | 181 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); |
175 | 182 |
176 // Simulate the MimeSniffingResourceHandler buffering the data. | 183 // Simulate the MimeSniffingResourceHandler buffering the data. |
177 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 184 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
178 mock_loader_->OnWillStart(request_->url())); | 185 mock_loader_->OnWillStart(request_->url())); |
179 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); | |
180 | |
181 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get()); | |
182 | 186 |
183 // Simulate the MimeSniffingResourceHandler asking the | 187 // Simulate the MimeSniffingResourceHandler asking the |
184 // InterceptingResourceHandler to switch to a new handler. | 188 // InterceptingResourceHandler to switch to a new handler. |
185 net::URLRequestStatus new_handler_status; | 189 net::URLRequestStatus new_handler_status; |
186 std::string new_handler_body; | 190 std::string new_handler_body; |
187 std::unique_ptr<TestResourceHandler> new_handler_scoped( | 191 std::unique_ptr<TestResourceHandler> new_handler_scoped( |
188 new TestResourceHandler(&new_handler_status, &new_handler_body)); | 192 new TestResourceHandler(&new_handler_status, &new_handler_body)); |
189 TestResourceHandler* new_test_handler = new_handler_scoped.get(); | 193 TestResourceHandler* new_test_handler = new_handler_scoped.get(); |
190 intercepting_handler_->UseNewHandler(std::move(new_handler_scoped), kPayload); | 194 intercepting_handler_->UseNewHandler(std::move(new_handler_scoped), kPayload); |
191 | 195 |
192 // The old handler should not have received the payload yet. | 196 // The old handler should not have received the payload yet. |
193 ASSERT_EQ(std::string(), old_handler_body_); | 197 ASSERT_EQ(std::string(), old_handler_body_); |
194 | 198 |
195 // The response is received. The new ResourceHandler should be used to handle | 199 // The response is received. The new ResourceHandler should be used to handle |
196 // the download. | 200 // the download. |
197 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 201 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
198 mock_loader_->OnResponseStarted( | 202 mock_loader_->OnResponseStarted( |
199 make_scoped_refptr(new ResourceResponse()))); | 203 make_scoped_refptr(new ResourceResponse()))); |
200 | 204 |
201 // The old handler should have received the payload. | 205 // The old handler should have received the payload... |
202 EXPECT_EQ(kPayload, old_handler_body_); | 206 EXPECT_EQ(kPayload, old_handler_body_); |
203 | 207 |
| 208 // ... and been destroyed. |
| 209 ASSERT_FALSE(old_handler_.get()); |
| 210 |
204 EXPECT_TRUE(old_handler_status_.is_success()); | 211 EXPECT_TRUE(old_handler_status_.is_success()); |
205 EXPECT_EQ(net::OK, old_handler_status_.error()); | 212 EXPECT_EQ(net::OK, old_handler_status_.error()); |
206 | 213 |
207 // The read is replayed by the MimeSniffingResourceHandler. The data should | 214 // The read is replayed by the MimeSniffingResourceHandler. The data should |
208 // have been received by the new handler. | 215 // have been received by the new handler. |
| 216 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); |
| 217 ASSERT_TRUE(mock_loader_->io_buffer()); |
209 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 218 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
210 mock_loader_->OnReadCompleted(kData)); | 219 mock_loader_->OnReadCompleted(kData)); |
211 EXPECT_EQ(kData, new_handler_body); | 220 EXPECT_EQ(kData, new_handler_body); |
212 | 221 |
213 // Make sure another read behaves as expected. | 222 // Make sure another read behaves as expected. |
214 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); | 223 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); |
215 ASSERT_EQ(mock_loader_->io_buffer(), new_test_handler->buffer()); | 224 ASSERT_EQ(mock_loader_->io_buffer(), new_test_handler->buffer()); |
216 | 225 |
217 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 226 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
218 mock_loader_->OnReadCompleted(kData2)); | 227 mock_loader_->OnReadCompleted(kData2)); |
219 EXPECT_EQ(kData + kData2, new_handler_body); | 228 EXPECT_EQ(kData + kData2, new_handler_body); |
220 } | 229 } |
221 | 230 |
222 // Tests that the handler behaves properly if the old handler fails will read. | 231 // Tests that the handler behaves properly if the old handler fails will read. |
223 TEST_F(InterceptingResourceHandlerTest, OldHandlerFailsWillRead) { | 232 TEST_F(InterceptingResourceHandlerTest, OldHandlerFailsWillRead) { |
224 old_handler_->set_on_will_read_result(false); | 233 old_handler_->set_on_will_read_result(false); |
225 | 234 |
226 // Simulate the MimeSniffingResourceHandler buffering the data. The old | 235 // Simulate the MimeSniffingResourceHandler buffering the data. The old |
227 // handler should tell the caller to fail. | 236 // handler should tell the caller to fail. |
228 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 237 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
229 mock_loader_->OnWillStart(request_->url())); | 238 mock_loader_->OnWillStart(request_->url())); |
| 239 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
| 240 mock_loader_->OnResponseStarted( |
| 241 make_scoped_refptr(new ResourceResponse()))); |
230 ASSERT_EQ(MockResourceLoader::Status::CANCELED, mock_loader_->OnWillRead()); | 242 ASSERT_EQ(MockResourceLoader::Status::CANCELED, mock_loader_->OnWillRead()); |
231 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code()); | 243 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code()); |
232 } | 244 } |
233 | 245 |
234 // Tests that the handler behaves properly if the new handler fails in | 246 // Tests that the handler behaves properly if the new handler fails in |
235 // OnWillStart. | 247 // OnWillStart. |
236 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsOnWillStart) { | 248 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsOnWillStart) { |
237 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); | 249 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); |
238 | 250 |
239 // Simulate the MimeSniffingResourceHandler buffering the data. | 251 // Simulate the MimeSniffingResourceHandler buffering the data. |
240 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 252 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
241 mock_loader_->OnWillStart(request_->url())); | 253 mock_loader_->OnWillStart(request_->url())); |
242 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); | |
243 | |
244 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get()); | |
245 | |
246 // Simulate the MimeSniffingResourceHandler asking the | 254 // Simulate the MimeSniffingResourceHandler asking the |
247 // InterceptingResourceHandler to switch to a new handler. | 255 // InterceptingResourceHandler to switch to a new handler. |
248 net::URLRequestStatus new_handler_status; | 256 net::URLRequestStatus new_handler_status; |
249 std::string new_handler_body; | 257 std::string new_handler_body; |
250 std::unique_ptr<TestResourceHandler> new_handler( | 258 std::unique_ptr<TestResourceHandler> new_handler( |
251 new TestResourceHandler(&new_handler_status, &new_handler_body)); | 259 new TestResourceHandler(&new_handler_status, &new_handler_body)); |
252 new_handler->set_on_will_start_result(false); | 260 new_handler->set_on_will_start_result(false); |
253 intercepting_handler_->UseNewHandler(std::move(new_handler), std::string()); | 261 intercepting_handler_->UseNewHandler(std::move(new_handler), std::string()); |
254 | 262 |
255 // The response is received. The new ResourceHandler should tell us to fail. | 263 // The response is received. The new ResourceHandler should tell us to fail. |
256 ASSERT_EQ(MockResourceLoader::Status::CANCELED, | 264 ASSERT_EQ(MockResourceLoader::Status::CANCELED, |
257 mock_loader_->OnResponseStarted( | 265 mock_loader_->OnResponseStarted( |
258 make_scoped_refptr(new ResourceResponse()))); | 266 make_scoped_refptr(new ResourceResponse()))); |
| 267 |
259 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code()); | 268 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code()); |
260 } | 269 } |
261 | 270 |
262 // Tests that the handler behaves properly if the new handler fails response | 271 // Tests that the handler behaves properly if the new handler fails response |
263 // started. | 272 // started. |
264 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsResponseStarted) { | 273 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsResponseStarted) { |
265 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); | 274 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); |
266 | 275 |
267 // Simulate the MimeSniffingResourceHandler buffering the data. | 276 // Simulate the MimeSniffingResourceHandler buffering the data. |
268 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 277 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
269 mock_loader_->OnWillStart(request_->url())); | 278 mock_loader_->OnWillStart(request_->url())); |
270 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); | |
271 | |
272 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get()); | |
273 | |
274 // Simulate the MimeSniffingResourceHandler asking the | 279 // Simulate the MimeSniffingResourceHandler asking the |
275 // InterceptingResourceHandler to switch to a new handler. | 280 // InterceptingResourceHandler to switch to a new handler. |
276 net::URLRequestStatus new_handler_status; | 281 net::URLRequestStatus new_handler_status; |
277 std::string new_handler_body; | 282 std::string new_handler_body; |
278 std::unique_ptr<TestResourceHandler> new_handler( | 283 std::unique_ptr<TestResourceHandler> new_handler( |
279 new TestResourceHandler(&new_handler_status, &new_handler_body)); | 284 new TestResourceHandler(&new_handler_status, &new_handler_body)); |
280 new_handler->set_on_response_started_result(false); | 285 new_handler->set_on_response_started_result(false); |
281 intercepting_handler_->UseNewHandler(std::move(new_handler), std::string()); | 286 intercepting_handler_->UseNewHandler(std::move(new_handler), std::string()); |
282 | 287 |
283 // The response is received. The new ResourceHandler should tell us to fail. | 288 // The response is received. The new ResourceHandler should tell us to fail. |
284 ASSERT_EQ(MockResourceLoader::Status::CANCELED, | 289 ASSERT_EQ(MockResourceLoader::Status::CANCELED, |
285 mock_loader_->OnResponseStarted( | 290 mock_loader_->OnResponseStarted( |
286 make_scoped_refptr(new ResourceResponse()))); | 291 make_scoped_refptr(new ResourceResponse()))); |
287 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code()); | 292 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code()); |
288 } | 293 } |
289 | 294 |
290 // Tests that the handler behaves properly if the new handler fails will read. | 295 // Tests that the handler behaves properly if the new handler fails will read. |
291 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsWillRead) { | 296 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsWillRead) { |
292 const char kData[] = "The data"; | |
293 | |
294 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); | 297 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); |
295 | 298 |
296 // Simulate the MimeSniffingResourceHandler buffering the data. | 299 // Simulate the MimeSniffingResourceHandler buffering the data. |
297 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 300 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
298 mock_loader_->OnWillStart(request_->url())); | 301 mock_loader_->OnWillStart(request_->url())); |
299 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); | |
300 | |
301 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get()); | |
302 | |
303 // Simulate the MimeSniffingResourceHandler asking the | 302 // Simulate the MimeSniffingResourceHandler asking the |
304 // InterceptingResourceHandler to switch to a new handler. | 303 // InterceptingResourceHandler to switch to a new handler. |
305 net::URLRequestStatus new_handler_status; | 304 net::URLRequestStatus new_handler_status; |
306 std::string new_handler_body; | 305 std::string new_handler_body; |
307 std::unique_ptr<TestResourceHandler> new_handler( | 306 std::unique_ptr<TestResourceHandler> new_handler( |
308 new TestResourceHandler(&new_handler_status, &new_handler_body)); | 307 new TestResourceHandler(&new_handler_status, &new_handler_body)); |
309 new_handler->set_on_will_read_result(false); | 308 new_handler->set_on_will_read_result(false); |
310 intercepting_handler_->UseNewHandler(std::move(new_handler), std::string()); | 309 intercepting_handler_->UseNewHandler(std::move(new_handler), std::string()); |
311 | 310 |
312 // The response is received. The new handler should not have been asked to | 311 // The response is received. The new handler should not have been asked to |
313 // read yet. | 312 // read yet. |
314 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 313 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
315 mock_loader_->OnResponseStarted( | 314 mock_loader_->OnResponseStarted( |
316 make_scoped_refptr(new ResourceResponse()))); | 315 make_scoped_refptr(new ResourceResponse()))); |
317 EXPECT_EQ(net::URLRequestStatus::CANCELED, old_handler_status_.status()); | |
318 EXPECT_EQ(net::ERR_ABORTED, old_handler_status_.error()); | |
319 | 316 |
320 // The read is replayed by the MimeSniffingResourceHandler. The new | 317 // The read is replayed by the MimeSniffingResourceHandler. The new |
321 // handler should tell the caller to fail. | 318 // handler should tell the caller to fail. |
| 319 ASSERT_EQ(MockResourceLoader::Status::CANCELED, mock_loader_->OnWillRead()); |
| 320 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code()); |
322 | 321 |
323 ASSERT_EQ(MockResourceLoader::Status::CANCELED, | 322 EXPECT_EQ(net::URLRequestStatus::CANCELED, old_handler_status_.status()); |
324 mock_loader_->OnReadCompleted(kData)); | 323 EXPECT_EQ(net::ERR_ABORTED, old_handler_status_.error()); |
325 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code()); | |
326 } | 324 } |
327 | 325 |
328 // Tests that the handler behaves properly if the new handler fails read | 326 // Tests that the handler behaves properly if the new handler fails read |
329 // completed. | 327 // completed. |
330 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsReadCompleted) { | 328 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsReadCompleted) { |
331 const char kData[] = "The data"; | 329 const char kData[] = "The data"; |
332 | 330 |
333 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); | 331 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); |
334 | 332 |
335 // Simulate the MimeSniffingResourceHandler buffering the data. | |
336 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 333 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
337 mock_loader_->OnWillStart(request_->url())); | 334 mock_loader_->OnWillStart(request_->url())); |
338 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); | |
339 | |
340 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get()); | |
341 | 335 |
342 // Simulate the MimeSniffingResourceHandler asking the | 336 // Simulate the MimeSniffingResourceHandler asking the |
343 // InterceptingResourceHandler to switch to a new handler. | 337 // InterceptingResourceHandler to switch to a new handler. |
344 net::URLRequestStatus new_handler_status; | 338 net::URLRequestStatus new_handler_status; |
345 std::string new_handler_body; | 339 std::string new_handler_body; |
346 std::unique_ptr<TestResourceHandler> new_handler( | 340 std::unique_ptr<TestResourceHandler> new_handler( |
347 new TestResourceHandler(&new_handler_status, &new_handler_body)); | 341 new TestResourceHandler(&new_handler_status, &new_handler_body)); |
348 new_handler->set_on_read_completed_result(false); | 342 new_handler->set_on_read_completed_result(false); |
349 intercepting_handler_->UseNewHandler(std::move(new_handler), std::string()); | 343 intercepting_handler_->UseNewHandler(std::move(new_handler), std::string()); |
350 | 344 |
351 // The response is received. | 345 // The response is received. |
352 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 346 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
353 mock_loader_->OnResponseStarted( | 347 mock_loader_->OnResponseStarted( |
354 make_scoped_refptr(new ResourceResponse()))); | 348 make_scoped_refptr(new ResourceResponse()))); |
355 EXPECT_EQ(net::URLRequestStatus::CANCELED, old_handler_status_.status()); | 349 EXPECT_EQ(net::URLRequestStatus::CANCELED, old_handler_status_.status()); |
356 EXPECT_EQ(net::ERR_ABORTED, old_handler_status_.error()); | 350 EXPECT_EQ(net::ERR_ABORTED, old_handler_status_.error()); |
357 | 351 |
| 352 // Simulate the MimeSniffingResourceHandler buffering the data. |
358 // The read is replayed by the MimeSniffingResourceHandler. The new handler | 353 // The read is replayed by the MimeSniffingResourceHandler. The new handler |
359 // should tell the caller to fail. | 354 // should tell the caller to fail. |
| 355 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); |
| 356 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get()); |
360 ASSERT_EQ(MockResourceLoader::Status::CANCELED, | 357 ASSERT_EQ(MockResourceLoader::Status::CANCELED, |
361 mock_loader_->OnReadCompleted(kData)); | 358 mock_loader_->OnReadCompleted(kData)); |
362 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code()); | 359 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code()); |
363 } | 360 } |
364 | 361 |
365 // The old handler sets |defer| to true in OnReadCompleted and | 362 // The old handler sets |defer| to true in OnReadCompleted and |
366 // OnResponseCompleted. The new handler sets |defer| to true in | 363 // OnResponseCompleted. The new handler sets |defer| to true in |
367 // OnResponseStarted and OnReadCompleted. | 364 // OnResponseStarted and OnReadCompleted. |
368 TEST_F(InterceptingResourceHandlerTest, DeferredOperations) { | 365 TEST_F(InterceptingResourceHandlerTest, DeferredOperations) { |
369 const char kData[] = "The data"; | 366 const char kData[] = "The data"; |
370 const char kPayload[] = "The long long long long long payload"; | 367 const char kPayload[] = "The long long long long long payload"; |
371 // This should be less than half the size of the payload, so it needs at least | 368 // This should be less than half the size of the payload, so it needs at least |
372 // 3 reads to receive. | 369 // 3 reads to receive. |
373 const int kOldHandlerBufferSize = arraysize(kPayload) / 3; | 370 const int kOldHandlerBufferSize = arraysize(kPayload) / 3; |
374 | 371 |
375 // When sending a payload to the old ResourceHandler, the | 372 // When sending a payload to the old ResourceHandler, the |
376 // InterceptingResourceHandler doesn't send a final EOF read. | 373 // InterceptingResourceHandler doesn't send a final EOF read. |
377 // TODO(mmenke): Should it? Or can we just get rid of that 0-byte read | 374 // TODO(mmenke): Should it? Or can we just get rid of that 0-byte read |
378 // entirely? | 375 // entirely? |
379 old_handler_->set_expect_eof_read(false); | 376 old_handler_->set_expect_eof_read(false); |
380 old_handler_->SetBufferSize(kOldHandlerBufferSize); | 377 old_handler_->SetBufferSize(kOldHandlerBufferSize); |
381 old_handler_->set_defer_on_will_read(true); | 378 old_handler_->set_defer_on_will_read(true); |
382 old_handler_->set_defer_on_read_completed(true); | 379 old_handler_->set_defer_on_read_completed(true); |
383 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); | 380 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); |
384 | 381 |
385 // Simulate the MimeSniffingResourceHandler buffering the data. | 382 // Simulate the MimeSniffingResourceHandler buffering the data. |
386 | 383 |
387 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 384 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
388 mock_loader_->OnWillStart(request_->url())); | 385 mock_loader_->OnWillStart(request_->url())); |
389 // The old handler defers the read. | |
390 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, | |
391 mock_loader_->OnWillRead()); | |
392 old_handler_->WaitUntilDeferred(); | |
393 | |
394 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, old_handler_status_.status()); | |
395 EXPECT_EQ(1, old_handler_->on_will_read_called()); | |
396 EXPECT_EQ(0, old_handler_->on_read_completed_called()); | |
397 EXPECT_EQ(0, old_handler_->on_response_completed_called()); | |
398 | |
399 // Defer the next OnWillRead, too. This is needed to test the case where | |
400 // OnWillRead completes asynchronously when passing the payload to the old | |
401 // handler. | |
402 old_handler_->set_defer_on_will_read(true); | |
403 | |
404 // The old handle resumes the request. | |
405 old_handler_->Resume(); | |
406 | |
407 // Resume() call may do work asynchronously. Wait until that's done. | |
408 mock_loader_->WaitUntilIdleOrCanceled(); | |
409 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->status()); | |
410 | 386 |
411 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get()); | 387 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get()); |
412 | 388 |
413 // Simulate the MimeSniffingResourceHandler asking the | 389 // Simulate the MimeSniffingResourceHandler asking the |
414 // InterceptingResourceHandler to switch to a new handler. | 390 // InterceptingResourceHandler to switch to a new handler. |
415 net::URLRequestStatus new_handler_status = {net::URLRequestStatus::IO_PENDING, | 391 net::URLRequestStatus new_handler_status = {net::URLRequestStatus::IO_PENDING, |
416 0}; | 392 0}; |
417 | 393 |
418 std::string new_handler_body; | 394 std::string new_handler_body; |
419 std::unique_ptr<TestResourceHandler> scoped_new_handler( | 395 std::unique_ptr<TestResourceHandler> scoped_new_handler( |
420 new TestResourceHandler(&new_handler_status, &new_handler_body)); | 396 new TestResourceHandler(&new_handler_status, &new_handler_body)); |
421 base::WeakPtr<TestResourceHandler> new_handler = | 397 base::WeakPtr<TestResourceHandler> new_handler = |
422 scoped_new_handler->GetWeakPtr(); | 398 scoped_new_handler->GetWeakPtr(); |
423 scoped_new_handler->SetBufferSize(1); | |
424 scoped_new_handler->set_defer_on_will_start(true); | 399 scoped_new_handler->set_defer_on_will_start(true); |
425 scoped_new_handler->set_defer_on_response_started(true); | 400 scoped_new_handler->set_defer_on_response_started(true); |
426 scoped_new_handler->set_defer_on_will_read(true); | 401 scoped_new_handler->set_defer_on_will_read(true); |
427 scoped_new_handler->set_defer_on_read_completed(true); | 402 scoped_new_handler->set_defer_on_read_completed(true); |
428 scoped_new_handler->set_defer_on_response_completed(true); | 403 scoped_new_handler->set_defer_on_response_completed(true); |
429 intercepting_handler_->UseNewHandler(std::move(scoped_new_handler), kPayload); | 404 intercepting_handler_->UseNewHandler(std::move(scoped_new_handler), kPayload); |
430 | 405 |
431 // The response is received, and then deferred by the old handler's | 406 // The response is received, and then deferred by the old handler's |
432 // OnReadCompleted method. | 407 // OnReadCompleted method. |
433 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, | 408 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, |
434 mock_loader_->OnResponseStarted( | 409 mock_loader_->OnResponseStarted( |
435 make_scoped_refptr(new ResourceResponse()))); | 410 make_scoped_refptr(new ResourceResponse()))); |
436 old_handler_->WaitUntilDeferred(); | 411 old_handler_->WaitUntilDeferred(); |
437 | 412 |
| 413 EXPECT_EQ(1, old_handler_->on_will_read_called()); |
| 414 EXPECT_EQ(0, old_handler_->on_read_completed_called()); |
| 415 EXPECT_EQ(0, old_handler_->on_response_completed_called()); |
| 416 EXPECT_EQ(0, new_handler->on_response_started_called()); |
| 417 old_handler_->Resume(); |
| 418 old_handler_->WaitUntilDeferred(); |
| 419 |
438 EXPECT_EQ(1, old_handler_->on_read_completed_called()); | 420 EXPECT_EQ(1, old_handler_->on_read_completed_called()); |
439 EXPECT_EQ(0, old_handler_->on_response_completed_called()); | 421 EXPECT_EQ(0, old_handler_->on_response_completed_called()); |
440 EXPECT_EQ(0, new_handler->on_response_started_called()); | 422 EXPECT_EQ(0, new_handler->on_response_started_called()); |
441 | 423 |
442 // The old handler has received the first N bytes of the payload synchronously | 424 // The old handler has received the first N bytes of the payload synchronously |
443 // where N is the size of the buffer exposed via OnWillRead. | 425 // where N is the size of the buffer exposed via OnWillRead. |
444 EXPECT_EQ(std::string(kPayload, 0, kOldHandlerBufferSize), old_handler_body_); | 426 EXPECT_EQ(std::string(kPayload, 0, kOldHandlerBufferSize), old_handler_body_); |
445 EXPECT_EQ(std::string(), new_handler_body); | 427 EXPECT_EQ(std::string(), new_handler_body); |
446 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, old_handler_status_.status()); | 428 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, old_handler_status_.status()); |
447 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, new_handler_status.status()); | |
448 | |
449 // Run until the old handler's OnWillRead method defers the request while | |
450 // replaying the payload. | |
451 old_handler_->Resume(); | |
452 old_handler_->WaitUntilDeferred(); | |
453 EXPECT_EQ(2, old_handler_->on_will_read_called()); | |
454 EXPECT_EQ(1, old_handler_->on_read_completed_called()); | |
455 EXPECT_EQ(0, old_handler_->on_response_completed_called()); | |
456 EXPECT_EQ(std::string(kPayload, 0, kOldHandlerBufferSize), old_handler_body_); | |
457 EXPECT_EQ(std::string(), new_handler_body); | |
458 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, old_handler_status_.status()); | |
459 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, new_handler_status.status()); | 429 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, new_handler_status.status()); |
460 | 430 |
461 // Run until the new handler's OnWillStart method defers the request. | 431 // Run until the new handler's OnWillStart method defers the request. |
462 old_handler_->Resume(); | 432 old_handler_->Resume(); |
463 new_handler->WaitUntilDeferred(); | 433 new_handler->WaitUntilDeferred(); |
464 | 434 |
465 EXPECT_EQ(1, new_handler->on_will_start_called()); | 435 EXPECT_EQ(1, new_handler->on_will_start_called()); |
466 EXPECT_EQ(0, new_handler->on_response_started_called()); | 436 EXPECT_EQ(0, new_handler->on_response_started_called()); |
467 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, | 437 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, |
468 mock_loader_->status()); | 438 mock_loader_->status()); |
469 EXPECT_EQ(kPayload, old_handler_body_); | 439 EXPECT_EQ(kPayload, old_handler_body_); |
470 EXPECT_EQ(net::URLRequestStatus::SUCCESS, old_handler_status_.status()); | 440 EXPECT_EQ(net::URLRequestStatus::SUCCESS, old_handler_status_.status()); |
471 EXPECT_FALSE(old_handler_); | 441 EXPECT_FALSE(old_handler_); |
472 EXPECT_EQ(std::string(), new_handler_body); | 442 EXPECT_EQ(std::string(), new_handler_body); |
473 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, new_handler_status.status()); | 443 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, new_handler_status.status()); |
474 | 444 |
475 // Run until the new handler's OnResponseStarted method defers the request. | 445 // Run until the new handler's OnResponseStarted method defers the request. |
476 new_handler->Resume(); | 446 new_handler->Resume(); |
477 // Resume() call may do work asynchronously. Wait until that's done. | 447 // Resume() call may do work asynchronously. Wait until that's done. |
478 new_handler->WaitUntilDeferred(); | 448 new_handler->WaitUntilDeferred(); |
479 | 449 |
| 450 EXPECT_EQ(1, new_handler->on_will_start_called()); |
480 EXPECT_EQ(1, new_handler->on_response_started_called()); | 451 EXPECT_EQ(1, new_handler->on_response_started_called()); |
481 EXPECT_EQ(0, new_handler->on_will_read_called()); | 452 EXPECT_EQ(0, new_handler->on_will_read_called()); |
482 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, | 453 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, |
483 mock_loader_->status()); | 454 mock_loader_->status()); |
484 EXPECT_EQ(std::string(), new_handler_body); | 455 EXPECT_EQ(std::string(), new_handler_body); |
485 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, new_handler_status.status()); | 456 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, new_handler_status.status()); |
486 | |
487 // Resuming should finally call back into the ResourceController. | |
488 new_handler->Resume(); | 457 new_handler->Resume(); |
489 mock_loader_->WaitUntilIdleOrCanceled(); | |
490 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->status()); | 458 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->status()); |
491 | 459 |
492 // Data is read, the new handler defers OnWillRead. | 460 // Data is read, the new handler defers completion of the read buffer return. |
| 461 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, |
| 462 mock_loader_->OnWillRead()); |
| 463 new_handler->WaitUntilDeferred(); |
| 464 EXPECT_EQ(1, new_handler->on_will_read_called()); |
| 465 EXPECT_EQ(0, new_handler->on_read_completed_called()); |
| 466 new_handler->Resume(); |
| 467 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->status()); |
| 468 |
| 469 // As well as completion of the read itself. |
493 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, | 470 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, |
494 mock_loader_->OnReadCompleted(kData)); | 471 mock_loader_->OnReadCompleted(kData)); |
495 new_handler->WaitUntilDeferred(); | 472 new_handler->WaitUntilDeferred(); |
496 EXPECT_EQ(1, new_handler->on_will_read_called()); | |
497 EXPECT_EQ(0, new_handler->on_read_completed_called()); | |
498 | |
499 // The new ResourceHandler resumes, and then defers again in OnReadCompleted. | |
500 new_handler->Resume(); | |
501 new_handler->WaitUntilDeferred(); | |
502 EXPECT_EQ(1, new_handler->on_will_read_called()); | |
503 EXPECT_EQ(1, new_handler->on_read_completed_called()); | 473 EXPECT_EQ(1, new_handler->on_read_completed_called()); |
| 474 EXPECT_EQ(0, new_handler->on_read_eof_called()); |
504 EXPECT_EQ(0, new_handler->on_response_completed_called()); | 475 EXPECT_EQ(0, new_handler->on_response_completed_called()); |
505 | 476 |
506 EXPECT_EQ("T", new_handler_body); | |
507 | |
508 // New handler resumes again, everything continues synchronously until all | 477 // New handler resumes again, everything continues synchronously until all |
509 // written data is consumed. | 478 // written data is consumed. |
510 new_handler->Resume(); | 479 new_handler->Resume(); |
511 mock_loader_->WaitUntilIdleOrCanceled(); | 480 mock_loader_->WaitUntilIdleOrCanceled(); |
512 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->status()); | 481 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->status()); |
513 EXPECT_EQ(kData, new_handler_body); | 482 EXPECT_EQ(kData, new_handler_body); |
514 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, new_handler_status.status()); | 483 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, new_handler_status.status()); |
515 EXPECT_EQ(0, new_handler->on_read_eof_called()); | 484 EXPECT_EQ(0, new_handler->on_read_eof_called()); |
516 EXPECT_EQ(0, new_handler->on_response_completed_called()); | 485 EXPECT_EQ(0, new_handler->on_response_completed_called()); |
517 | 486 |
(...skipping 28 matching lines...) Expand all Loading... |
546 | 515 |
547 // When sending a payload to the old ResourceHandler, the | 516 // When sending a payload to the old ResourceHandler, the |
548 // InterceptingResourceHandler doesn't send a final EOF read. | 517 // InterceptingResourceHandler doesn't send a final EOF read. |
549 // TODO(mmenke): Should it? Or can we just get rid of that 0-byte read | 518 // TODO(mmenke): Should it? Or can we just get rid of that 0-byte read |
550 // entirely? | 519 // entirely? |
551 old_handler_->set_expect_eof_read(false); | 520 old_handler_->set_expect_eof_read(false); |
552 | 521 |
553 // Simulate the MimeSniffingResourceHandler buffering the data. | 522 // Simulate the MimeSniffingResourceHandler buffering the data. |
554 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 523 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
555 mock_loader_->OnWillStart(request_->url())); | 524 mock_loader_->OnWillStart(request_->url())); |
556 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); | |
557 | 525 |
558 // Simulate the MimeSniffingResourceHandler asking the | 526 // Simulate the MimeSniffingResourceHandler asking the |
559 // InterceptingResourceHandler to switch to a new handler. | 527 // InterceptingResourceHandler to switch to a new handler. |
560 net::URLRequestStatus new_handler_status = {net::URLRequestStatus::IO_PENDING, | 528 net::URLRequestStatus new_handler_status = {net::URLRequestStatus::IO_PENDING, |
561 0}; | 529 0}; |
562 | 530 |
563 std::string new_handler_body; | 531 std::string new_handler_body; |
564 std::unique_ptr<TestResourceHandler> new_handler( | 532 std::unique_ptr<TestResourceHandler> new_handler( |
565 new TestResourceHandler(&new_handler_status, &new_handler_body)); | 533 new TestResourceHandler(&new_handler_status, &new_handler_body)); |
566 new_handler->SetBufferSize(1); | 534 new_handler->SetBufferSize(1); |
(...skipping 20 matching lines...) Expand all Loading... |
587 // Test cancellation where there are both the old and the new handlers in an | 555 // Test cancellation where there are both the old and the new handlers in an |
588 // InterceptingResourceHandler. | 556 // InterceptingResourceHandler. |
589 TEST_F(InterceptingResourceHandlerTest, CancelBothHandlers) { | 557 TEST_F(InterceptingResourceHandlerTest, CancelBothHandlers) { |
590 const std::string kPayload = "The payload"; | 558 const std::string kPayload = "The payload"; |
591 | 559 |
592 old_handler_->set_defer_on_read_completed(true); | 560 old_handler_->set_defer_on_read_completed(true); |
593 | 561 |
594 // Simulate the MimeSniffingResourceHandler buffering the data. | 562 // Simulate the MimeSniffingResourceHandler buffering the data. |
595 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 563 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
596 mock_loader_->OnWillStart(request_->url())); | 564 mock_loader_->OnWillStart(request_->url())); |
597 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); | |
598 | 565 |
599 // Simulate the MimeSniffingResourceHandler asking the | 566 // Simulate the MimeSniffingResourceHandler asking the |
600 // InterceptingResourceHandler to switch to a new handler. | 567 // InterceptingResourceHandler to switch to a new handler. |
601 net::URLRequestStatus new_handler_status = {net::URLRequestStatus::IO_PENDING, | 568 net::URLRequestStatus new_handler_status = {net::URLRequestStatus::IO_PENDING, |
602 0}; | 569 0}; |
603 | 570 |
604 std::string new_handler_body; | 571 std::string new_handler_body; |
605 std::unique_ptr<TestResourceHandler> new_handler( | 572 std::unique_ptr<TestResourceHandler> new_handler( |
606 new TestResourceHandler(&new_handler_status, &new_handler_body)); | 573 new TestResourceHandler(&new_handler_status, &new_handler_body)); |
607 new_handler->SetBufferSize(1); | 574 new_handler->SetBufferSize(1); |
(...skipping 13 matching lines...) Expand all Loading... |
621 {net::URLRequestStatus::CANCELED, net::ERR_FAILED})); | 588 {net::URLRequestStatus::CANCELED, net::ERR_FAILED})); |
622 EXPECT_EQ(net::URLRequestStatus::CANCELED, old_handler_status_.status()); | 589 EXPECT_EQ(net::URLRequestStatus::CANCELED, old_handler_status_.status()); |
623 EXPECT_EQ(net::ERR_FAILED, old_handler_status_.error()); | 590 EXPECT_EQ(net::ERR_FAILED, old_handler_status_.error()); |
624 EXPECT_EQ(net::URLRequestStatus::CANCELED, new_handler_status.status()); | 591 EXPECT_EQ(net::URLRequestStatus::CANCELED, new_handler_status.status()); |
625 EXPECT_EQ(net::ERR_FAILED, new_handler_status.error()); | 592 EXPECT_EQ(net::ERR_FAILED, new_handler_status.error()); |
626 } | 593 } |
627 | 594 |
628 } // namespace | 595 } // namespace |
629 | 596 |
630 } // namespace content | 597 } // namespace content |
OLD | NEW |