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 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 | 96 |
97 // Tests that the handler behaves properly when it doesn't have to use an | 97 // Tests that the handler behaves properly when it doesn't have to use an |
98 // alternate next handler. | 98 // alternate next handler. |
99 TEST_F(InterceptingResourceHandlerTest, NoSwitching) { | 99 TEST_F(InterceptingResourceHandlerTest, NoSwitching) { |
100 const std::string kData = "The data"; | 100 const std::string kData = "The data"; |
101 const std::string kData2 = "Data 2"; | 101 const std::string kData2 = "Data 2"; |
102 | 102 |
103 // Simulate the MimeSniffingResourceHandler buffering the data. | 103 // Simulate the MimeSniffingResourceHandler buffering the data. |
104 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 104 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
105 mock_loader_->OnWillStart(request_->url())); | 105 mock_loader_->OnWillStart(request_->url())); |
106 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); | 106 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); |
107 | 107 |
108 ASSERT_NE(mock_loader_->io_buffer(), old_handler_->buffer()); | 108 ASSERT_NE(mock_loader_->io_buffer(), old_handler_->buffer()); |
109 | 109 |
110 // The response is received. The handler should not change. | 110 // The response is received. The handler should not change. |
111 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 111 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
112 mock_loader_->OnResponseStarted( | 112 mock_loader_->OnResponseStarted( |
113 make_scoped_refptr(new ResourceResponse()))); | 113 make_scoped_refptr(new ResourceResponse()))); |
114 | 114 |
115 // The read is replayed by the MimeSniffingResourceHandler. The data should | 115 // The read is replayed by the MimeSniffingResourceHandler. The data should |
116 // have been received by the old intercepting_handler. | 116 // have been received by the old intercepting_handler. |
117 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 117 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
118 mock_loader_->OnReadCompleted(kData)); | 118 mock_loader_->OnReadCompleted(kData)); |
119 EXPECT_EQ(kData, old_handler_body_); | 119 EXPECT_EQ(kData, old_handler_body_); |
120 | 120 |
121 // Make sure another read behaves as expected. | 121 // Make sure another read behaves as expected. |
122 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); | 122 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); |
123 ASSERT_EQ(mock_loader_->io_buffer(), old_handler_->buffer()); | 123 ASSERT_EQ(mock_loader_->io_buffer(), old_handler_->buffer()); |
124 | 124 |
125 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 125 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
126 mock_loader_->OnReadCompleted(kData2)); | 126 mock_loader_->OnReadCompleted(kData2)); |
127 EXPECT_EQ(kData + kData2, old_handler_body_); | 127 EXPECT_EQ(kData + kData2, old_handler_body_); |
128 } | 128 } |
129 | 129 |
130 // Tests that the data received is transmitted to the newly created | 130 // Tests that the data received is transmitted to the newly created |
131 // ResourceHandler. | 131 // ResourceHandler. |
132 TEST_F(InterceptingResourceHandlerTest, HandlerSwitchNoPayload) { | 132 TEST_F(InterceptingResourceHandlerTest, HandlerSwitchNoPayload) { |
133 const std::string kData = "The data"; | 133 const std::string kData = "The data"; |
134 const std::string kData2 = "Data 2"; | 134 const std::string kData2 = "Data 2"; |
135 | 135 |
136 // Simulate the MimeSniffingResourceHandler buffering the data. | 136 // Simulate the MimeSniffingResourceHandler buffering the data. |
137 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 137 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
138 mock_loader_->OnWillStart(request_->url())); | 138 mock_loader_->OnWillStart(request_->url())); |
139 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); | 139 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); |
140 | 140 |
141 ASSERT_NE(mock_loader_->io_buffer(), old_handler_->buffer()); | 141 ASSERT_NE(mock_loader_->io_buffer(), old_handler_->buffer()); |
142 | 142 |
143 // Simulate the MimeSniffingResourceHandler asking the | 143 // Simulate the MimeSniffingResourceHandler asking the |
144 // InterceptingResourceHandler to switch to a new handler. | 144 // InterceptingResourceHandler to switch to a new handler. |
145 net::URLRequestStatus new_handler_status; | 145 net::URLRequestStatus new_handler_status; |
146 std::string new_handler_body; | 146 std::string new_handler_body; |
147 std::unique_ptr<TestResourceHandler> new_handler_scoped( | 147 std::unique_ptr<TestResourceHandler> new_handler_scoped( |
148 new TestResourceHandler(&new_handler_status, &new_handler_body)); | 148 new TestResourceHandler(&new_handler_status, &new_handler_body)); |
149 TestResourceHandler* new_test_handler = new_handler_scoped.get(); | 149 TestResourceHandler* new_test_handler = new_handler_scoped.get(); |
(...skipping 10 matching lines...) Expand all Loading... |
160 EXPECT_EQ(net::ERR_ABORTED, old_handler_status_.error()); | 160 EXPECT_EQ(net::ERR_ABORTED, old_handler_status_.error()); |
161 EXPECT_EQ(std::string(), old_handler_body_); | 161 EXPECT_EQ(std::string(), old_handler_body_); |
162 | 162 |
163 // The read is replayed by the MimeSniffingResourceHandler. The data should | 163 // The read is replayed by the MimeSniffingResourceHandler. The data should |
164 // have been received by the new handler. | 164 // have been received by the new handler. |
165 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 165 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
166 mock_loader_->OnReadCompleted(kData)); | 166 mock_loader_->OnReadCompleted(kData)); |
167 EXPECT_EQ(kData, new_handler_body); | 167 EXPECT_EQ(kData, new_handler_body); |
168 | 168 |
169 // Make sure another read behaves as expected. | 169 // Make sure another read behaves as expected. |
170 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); | 170 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); |
171 ASSERT_EQ(mock_loader_->io_buffer(), new_test_handler->buffer()); | 171 ASSERT_EQ(mock_loader_->io_buffer(), new_test_handler->buffer()); |
172 | 172 |
173 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 173 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
174 mock_loader_->OnReadCompleted(kData2)); | 174 mock_loader_->OnReadCompleted(kData2)); |
175 EXPECT_EQ(kData + kData2, new_handler_body); | 175 EXPECT_EQ(kData + kData2, new_handler_body); |
176 } | 176 } |
177 | 177 |
178 // Tests that the data received is transmitted to the newly created | 178 // Tests that the data received is transmitted to the newly created |
179 // ResourceHandler and the specified payload to the old ResourceHandler. | 179 // ResourceHandler and the specified payload to the old ResourceHandler. |
180 TEST_F(InterceptingResourceHandlerTest, HandlerSwitchWithPayload) { | 180 TEST_F(InterceptingResourceHandlerTest, HandlerSwitchWithPayload) { |
181 const std::string kData = "The data"; | 181 const std::string kData = "The data"; |
182 const std::string kData2 = "Data 2"; | 182 const std::string kData2 = "Data 2"; |
183 const std::string kPayload = "The payload"; | 183 const std::string kPayload = "The payload"; |
184 | 184 |
185 // When sending a payload to the old ResourceHandler, the | 185 // When sending a payload to the old ResourceHandler, the |
186 // InterceptingResourceHandler doesn't send a final EOF read. | 186 // InterceptingResourceHandler doesn't send a final EOF read. |
187 // TODO(mmenke): Should it? Or can we just get rid of that 0-byte read | 187 // TODO(mmenke): Should it? Or can we just get rid of that 0-byte read |
188 // entirely? | 188 // entirely? |
189 old_handler_->set_expect_eof_read(false); | 189 old_handler_->set_expect_eof_read(false); |
190 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); | 190 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); |
191 | 191 |
192 // Simulate the MimeSniffingResourceHandler buffering the data. | 192 // Simulate the MimeSniffingResourceHandler buffering the data. |
193 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 193 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
194 mock_loader_->OnWillStart(request_->url())); | 194 mock_loader_->OnWillStart(request_->url())); |
195 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); | 195 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); |
196 | 196 |
197 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get()); | 197 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get()); |
198 | 198 |
199 // Simulate the MimeSniffingResourceHandler asking the | 199 // Simulate the MimeSniffingResourceHandler asking the |
200 // InterceptingResourceHandler to switch to a new handler. | 200 // InterceptingResourceHandler to switch to a new handler. |
201 net::URLRequestStatus new_handler_status; | 201 net::URLRequestStatus new_handler_status; |
202 std::string new_handler_body; | 202 std::string new_handler_body; |
203 std::unique_ptr<TestResourceHandler> new_handler_scoped( | 203 std::unique_ptr<TestResourceHandler> new_handler_scoped( |
204 new TestResourceHandler(&new_handler_status, &new_handler_body)); | 204 new TestResourceHandler(&new_handler_status, &new_handler_body)); |
205 TestResourceHandler* new_test_handler = new_handler_scoped.get(); | 205 TestResourceHandler* new_test_handler = new_handler_scoped.get(); |
(...skipping 14 matching lines...) Expand all Loading... |
220 EXPECT_TRUE(old_handler_status_.is_success()); | 220 EXPECT_TRUE(old_handler_status_.is_success()); |
221 EXPECT_EQ(net::OK, old_handler_status_.error()); | 221 EXPECT_EQ(net::OK, old_handler_status_.error()); |
222 | 222 |
223 // The read is replayed by the MimeSniffingResourceHandler. The data should | 223 // The read is replayed by the MimeSniffingResourceHandler. The data should |
224 // have been received by the new handler. | 224 // have been received by the new handler. |
225 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 225 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
226 mock_loader_->OnReadCompleted(kData)); | 226 mock_loader_->OnReadCompleted(kData)); |
227 EXPECT_EQ(kData, new_handler_body); | 227 EXPECT_EQ(kData, new_handler_body); |
228 | 228 |
229 // Make sure another read behaves as expected. | 229 // Make sure another read behaves as expected. |
230 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); | 230 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); |
231 ASSERT_EQ(mock_loader_->io_buffer(), new_test_handler->buffer()); | 231 ASSERT_EQ(mock_loader_->io_buffer(), new_test_handler->buffer()); |
232 | 232 |
233 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 233 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
234 mock_loader_->OnReadCompleted(kData2)); | 234 mock_loader_->OnReadCompleted(kData2)); |
235 EXPECT_EQ(kData + kData2, new_handler_body); | 235 EXPECT_EQ(kData + kData2, new_handler_body); |
236 } | 236 } |
237 | 237 |
238 // Tests that the handler behaves properly if the old handler fails will read. | 238 // Tests that the handler behaves properly if the old handler fails will read. |
239 TEST_F(InterceptingResourceHandlerTest, OldHandlerFailsWillRead) { | 239 TEST_F(InterceptingResourceHandlerTest, OldHandlerFailsWillRead) { |
240 old_handler_->set_on_will_read_result(false); | 240 old_handler_->set_on_will_read_result(false); |
241 | 241 |
242 // Simulate the MimeSniffingResourceHandler buffering the data. The old | 242 // Simulate the MimeSniffingResourceHandler buffering the data. The old |
243 // handler should tell the caller to fail. | 243 // handler should tell the caller to fail. |
244 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 244 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
245 mock_loader_->OnWillStart(request_->url())); | 245 mock_loader_->OnWillStart(request_->url())); |
246 ASSERT_EQ(MockResourceLoader::Status::CANCELED, mock_loader_->OnWillRead(-1)); | 246 ASSERT_EQ(MockResourceLoader::Status::CANCELED, mock_loader_->OnWillRead()); |
247 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code()); | 247 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code()); |
248 } | 248 } |
249 | 249 |
250 // Tests that the handler behaves properly if the new handler fails in | 250 // Tests that the handler behaves properly if the new handler fails in |
251 // OnWillStart. | 251 // OnWillStart. |
252 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsOnWillStart) { | 252 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsOnWillStart) { |
253 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); | 253 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); |
254 | 254 |
255 // Simulate the MimeSniffingResourceHandler buffering the data. | 255 // Simulate the MimeSniffingResourceHandler buffering the data. |
256 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 256 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
257 mock_loader_->OnWillStart(request_->url())); | 257 mock_loader_->OnWillStart(request_->url())); |
258 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); | 258 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); |
259 | 259 |
260 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get()); | 260 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get()); |
261 | 261 |
262 // Simulate the MimeSniffingResourceHandler asking the | 262 // Simulate the MimeSniffingResourceHandler asking the |
263 // InterceptingResourceHandler to switch to a new handler. | 263 // InterceptingResourceHandler to switch to a new handler. |
264 net::URLRequestStatus new_handler_status; | 264 net::URLRequestStatus new_handler_status; |
265 std::string new_handler_body; | 265 std::string new_handler_body; |
266 std::unique_ptr<TestResourceHandler> new_handler( | 266 std::unique_ptr<TestResourceHandler> new_handler( |
267 new TestResourceHandler(&new_handler_status, &new_handler_body)); | 267 new TestResourceHandler(&new_handler_status, &new_handler_body)); |
268 new_handler->set_on_will_start_result(false); | 268 new_handler->set_on_will_start_result(false); |
269 intercepting_handler_->UseNewHandler(std::move(new_handler), std::string()); | 269 intercepting_handler_->UseNewHandler(std::move(new_handler), std::string()); |
270 | 270 |
271 // The response is received. The new ResourceHandler should tell us to fail. | 271 // The response is received. The new ResourceHandler should tell us to fail. |
272 ASSERT_EQ(MockResourceLoader::Status::CANCELED, | 272 ASSERT_EQ(MockResourceLoader::Status::CANCELED, |
273 mock_loader_->OnResponseStarted( | 273 mock_loader_->OnResponseStarted( |
274 make_scoped_refptr(new ResourceResponse()))); | 274 make_scoped_refptr(new ResourceResponse()))); |
275 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code()); | 275 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code()); |
276 } | 276 } |
277 | 277 |
278 // Tests that the handler behaves properly if the new handler fails response | 278 // Tests that the handler behaves properly if the new handler fails response |
279 // started. | 279 // started. |
280 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsResponseStarted) { | 280 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsResponseStarted) { |
281 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); | 281 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); |
282 | 282 |
283 // Simulate the MimeSniffingResourceHandler buffering the data. | 283 // Simulate the MimeSniffingResourceHandler buffering the data. |
284 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 284 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
285 mock_loader_->OnWillStart(request_->url())); | 285 mock_loader_->OnWillStart(request_->url())); |
286 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); | 286 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); |
287 | 287 |
288 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get()); | 288 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get()); |
289 | 289 |
290 // Simulate the MimeSniffingResourceHandler asking the | 290 // Simulate the MimeSniffingResourceHandler asking the |
291 // InterceptingResourceHandler to switch to a new handler. | 291 // InterceptingResourceHandler to switch to a new handler. |
292 net::URLRequestStatus new_handler_status; | 292 net::URLRequestStatus new_handler_status; |
293 std::string new_handler_body; | 293 std::string new_handler_body; |
294 std::unique_ptr<TestResourceHandler> new_handler( | 294 std::unique_ptr<TestResourceHandler> new_handler( |
295 new TestResourceHandler(&new_handler_status, &new_handler_body)); | 295 new TestResourceHandler(&new_handler_status, &new_handler_body)); |
296 new_handler->set_on_response_started_result(false); | 296 new_handler->set_on_response_started_result(false); |
297 intercepting_handler_->UseNewHandler(std::move(new_handler), std::string()); | 297 intercepting_handler_->UseNewHandler(std::move(new_handler), std::string()); |
298 | 298 |
299 // The response is received. The new ResourceHandler should tell us to fail. | 299 // The response is received. The new ResourceHandler should tell us to fail. |
300 ASSERT_EQ(MockResourceLoader::Status::CANCELED, | 300 ASSERT_EQ(MockResourceLoader::Status::CANCELED, |
301 mock_loader_->OnResponseStarted( | 301 mock_loader_->OnResponseStarted( |
302 make_scoped_refptr(new ResourceResponse()))); | 302 make_scoped_refptr(new ResourceResponse()))); |
303 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code()); | 303 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code()); |
304 } | 304 } |
305 | 305 |
306 // Tests that the handler behaves properly if the new handler fails will read. | 306 // Tests that the handler behaves properly if the new handler fails will read. |
307 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsWillRead) { | 307 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsWillRead) { |
308 const char kData[] = "The data"; | 308 const char kData[] = "The data"; |
309 | 309 |
310 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); | 310 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); |
311 | 311 |
312 // Simulate the MimeSniffingResourceHandler buffering the data. | 312 // Simulate the MimeSniffingResourceHandler buffering the data. |
313 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 313 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
314 mock_loader_->OnWillStart(request_->url())); | 314 mock_loader_->OnWillStart(request_->url())); |
315 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); | 315 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); |
316 | 316 |
317 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get()); | 317 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get()); |
318 | 318 |
319 // Simulate the MimeSniffingResourceHandler asking the | 319 // Simulate the MimeSniffingResourceHandler asking the |
320 // InterceptingResourceHandler to switch to a new handler. | 320 // InterceptingResourceHandler to switch to a new handler. |
321 net::URLRequestStatus new_handler_status; | 321 net::URLRequestStatus new_handler_status; |
322 std::string new_handler_body; | 322 std::string new_handler_body; |
323 std::unique_ptr<TestResourceHandler> new_handler( | 323 std::unique_ptr<TestResourceHandler> new_handler( |
324 new TestResourceHandler(&new_handler_status, &new_handler_body)); | 324 new TestResourceHandler(&new_handler_status, &new_handler_body)); |
325 new_handler->set_on_will_read_result(false); | 325 new_handler->set_on_will_read_result(false); |
(...skipping 18 matching lines...) Expand all Loading... |
344 // Tests that the handler behaves properly if the new handler fails read | 344 // Tests that the handler behaves properly if the new handler fails read |
345 // completed. | 345 // completed. |
346 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsReadCompleted) { | 346 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsReadCompleted) { |
347 const char kData[] = "The data"; | 347 const char kData[] = "The data"; |
348 | 348 |
349 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); | 349 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); |
350 | 350 |
351 // Simulate the MimeSniffingResourceHandler buffering the data. | 351 // Simulate the MimeSniffingResourceHandler buffering the data. |
352 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 352 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
353 mock_loader_->OnWillStart(request_->url())); | 353 mock_loader_->OnWillStart(request_->url())); |
354 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); | 354 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); |
355 | 355 |
356 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get()); | 356 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get()); |
357 | 357 |
358 // Simulate the MimeSniffingResourceHandler asking the | 358 // Simulate the MimeSniffingResourceHandler asking the |
359 // InterceptingResourceHandler to switch to a new handler. | 359 // InterceptingResourceHandler to switch to a new handler. |
360 net::URLRequestStatus new_handler_status; | 360 net::URLRequestStatus new_handler_status; |
361 std::string new_handler_body; | 361 std::string new_handler_body; |
362 std::unique_ptr<TestResourceHandler> new_handler( | 362 std::unique_ptr<TestResourceHandler> new_handler( |
363 new TestResourceHandler(&new_handler_status, &new_handler_body)); | 363 new TestResourceHandler(&new_handler_status, &new_handler_body)); |
364 new_handler->set_on_read_completed_result(false); | 364 new_handler->set_on_read_completed_result(false); |
(...skipping 26 matching lines...) Expand all Loading... |
391 // TODO(mmenke): Should it? Or can we just get rid of that 0-byte read | 391 // TODO(mmenke): Should it? Or can we just get rid of that 0-byte read |
392 // entirely? | 392 // entirely? |
393 old_handler_->set_expect_eof_read(false); | 393 old_handler_->set_expect_eof_read(false); |
394 old_handler_->SetBufferSize(kOldHandlerBufferSize); | 394 old_handler_->SetBufferSize(kOldHandlerBufferSize); |
395 old_handler_->set_defer_on_read_completed(true); | 395 old_handler_->set_defer_on_read_completed(true); |
396 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); | 396 scoped_refptr<net::IOBuffer> old_buffer = old_handler_->buffer(); |
397 | 397 |
398 // Simulate the MimeSniffingResourceHandler buffering the data. | 398 // Simulate the MimeSniffingResourceHandler buffering the data. |
399 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 399 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
400 mock_loader_->OnWillStart(request_->url())); | 400 mock_loader_->OnWillStart(request_->url())); |
401 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); | 401 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); |
402 | 402 |
403 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get()); | 403 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get()); |
404 | 404 |
405 // Simulate the MimeSniffingResourceHandler asking the | 405 // Simulate the MimeSniffingResourceHandler asking the |
406 // InterceptingResourceHandler to switch to a new handler. | 406 // InterceptingResourceHandler to switch to a new handler. |
407 net::URLRequestStatus new_handler_status = {net::URLRequestStatus::IO_PENDING, | 407 net::URLRequestStatus new_handler_status = {net::URLRequestStatus::IO_PENDING, |
408 0}; | 408 0}; |
409 | 409 |
410 std::string new_handler_body; | 410 std::string new_handler_body; |
411 std::unique_ptr<TestResourceHandler> scoped_new_handler( | 411 std::unique_ptr<TestResourceHandler> scoped_new_handler( |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
464 | 464 |
465 EXPECT_EQ("T", new_handler_body); | 465 EXPECT_EQ("T", new_handler_body); |
466 | 466 |
467 new_handler->Resume(); | 467 new_handler->Resume(); |
468 mock_loader_->WaitUntilIdleOrCanceled(); | 468 mock_loader_->WaitUntilIdleOrCanceled(); |
469 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->status()); | 469 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->status()); |
470 EXPECT_EQ(kData, new_handler_body); | 470 EXPECT_EQ(kData, new_handler_body); |
471 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, new_handler_status.status()); | 471 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, new_handler_status.status()); |
472 | 472 |
473 // Final EOF byte is read. | 473 // Final EOF byte is read. |
474 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); | 474 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); |
475 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 475 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
476 mock_loader_->OnReadCompleted("")); | 476 mock_loader_->OnReadCompleted("")); |
477 | 477 |
478 ASSERT_EQ( | 478 ASSERT_EQ( |
479 MockResourceLoader::Status::CALLBACK_PENDING, | 479 MockResourceLoader::Status::CALLBACK_PENDING, |
480 mock_loader_->OnResponseCompleted({net::URLRequestStatus::SUCCESS, 0})); | 480 mock_loader_->OnResponseCompleted({net::URLRequestStatus::SUCCESS, 0})); |
481 EXPECT_EQ(net::URLRequestStatus::SUCCESS, new_handler_status.status()); | 481 EXPECT_EQ(net::URLRequestStatus::SUCCESS, new_handler_status.status()); |
482 } | 482 } |
483 | 483 |
484 // Test cancellation where there is only the old handler in an | 484 // Test cancellation where there is only the old handler in an |
(...skipping 13 matching lines...) Expand all Loading... |
498 | 498 |
499 // When sending a payload to the old ResourceHandler, the | 499 // When sending a payload to the old ResourceHandler, the |
500 // InterceptingResourceHandler doesn't send a final EOF read. | 500 // InterceptingResourceHandler doesn't send a final EOF read. |
501 // TODO(mmenke): Should it? Or can we just get rid of that 0-byte read | 501 // TODO(mmenke): Should it? Or can we just get rid of that 0-byte read |
502 // entirely? | 502 // entirely? |
503 old_handler_->set_expect_eof_read(false); | 503 old_handler_->set_expect_eof_read(false); |
504 | 504 |
505 // Simulate the MimeSniffingResourceHandler buffering the data. | 505 // Simulate the MimeSniffingResourceHandler buffering the data. |
506 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 506 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
507 mock_loader_->OnWillStart(request_->url())); | 507 mock_loader_->OnWillStart(request_->url())); |
508 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); | 508 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); |
509 | 509 |
510 // Simulate the MimeSniffingResourceHandler asking the | 510 // Simulate the MimeSniffingResourceHandler asking the |
511 // InterceptingResourceHandler to switch to a new handler. | 511 // InterceptingResourceHandler to switch to a new handler. |
512 net::URLRequestStatus new_handler_status = {net::URLRequestStatus::IO_PENDING, | 512 net::URLRequestStatus new_handler_status = {net::URLRequestStatus::IO_PENDING, |
513 0}; | 513 0}; |
514 | 514 |
515 std::string new_handler_body; | 515 std::string new_handler_body; |
516 std::unique_ptr<TestResourceHandler> new_handler( | 516 std::unique_ptr<TestResourceHandler> new_handler( |
517 new TestResourceHandler(&new_handler_status, &new_handler_body)); | 517 new TestResourceHandler(&new_handler_status, &new_handler_body)); |
518 new_handler->SetBufferSize(1); | 518 new_handler->SetBufferSize(1); |
(...skipping 20 matching lines...) Expand all Loading... |
539 // Test cancellation where there are both the old and the new handlers in an | 539 // Test cancellation where there are both the old and the new handlers in an |
540 // InterceptingResourceHandler. | 540 // InterceptingResourceHandler. |
541 TEST_F(InterceptingResourceHandlerTest, CancelBothHandlers) { | 541 TEST_F(InterceptingResourceHandlerTest, CancelBothHandlers) { |
542 const std::string kPayload = "The payload"; | 542 const std::string kPayload = "The payload"; |
543 | 543 |
544 old_handler_->set_defer_on_read_completed(true); | 544 old_handler_->set_defer_on_read_completed(true); |
545 | 545 |
546 // Simulate the MimeSniffingResourceHandler buffering the data. | 546 // Simulate the MimeSniffingResourceHandler buffering the data. |
547 ASSERT_EQ(MockResourceLoader::Status::IDLE, | 547 ASSERT_EQ(MockResourceLoader::Status::IDLE, |
548 mock_loader_->OnWillStart(request_->url())); | 548 mock_loader_->OnWillStart(request_->url())); |
549 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); | 549 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead()); |
550 | 550 |
551 // Simulate the MimeSniffingResourceHandler asking the | 551 // Simulate the MimeSniffingResourceHandler asking the |
552 // InterceptingResourceHandler to switch to a new handler. | 552 // InterceptingResourceHandler to switch to a new handler. |
553 net::URLRequestStatus new_handler_status = {net::URLRequestStatus::IO_PENDING, | 553 net::URLRequestStatus new_handler_status = {net::URLRequestStatus::IO_PENDING, |
554 0}; | 554 0}; |
555 | 555 |
556 std::string new_handler_body; | 556 std::string new_handler_body; |
557 std::unique_ptr<TestResourceHandler> new_handler( | 557 std::unique_ptr<TestResourceHandler> new_handler( |
558 new TestResourceHandler(&new_handler_status, &new_handler_body)); | 558 new TestResourceHandler(&new_handler_status, &new_handler_body)); |
559 new_handler->SetBufferSize(1); | 559 new_handler->SetBufferSize(1); |
(...skipping 13 matching lines...) Expand all Loading... |
573 {net::URLRequestStatus::CANCELED, net::ERR_FAILED})); | 573 {net::URLRequestStatus::CANCELED, net::ERR_FAILED})); |
574 EXPECT_EQ(net::URLRequestStatus::CANCELED, old_handler_status_.status()); | 574 EXPECT_EQ(net::URLRequestStatus::CANCELED, old_handler_status_.status()); |
575 EXPECT_EQ(net::ERR_FAILED, old_handler_status_.error()); | 575 EXPECT_EQ(net::ERR_FAILED, old_handler_status_.error()); |
576 EXPECT_EQ(net::URLRequestStatus::CANCELED, new_handler_status.status()); | 576 EXPECT_EQ(net::URLRequestStatus::CANCELED, new_handler_status.status()); |
577 EXPECT_EQ(net::ERR_FAILED, new_handler_status.error()); | 577 EXPECT_EQ(net::ERR_FAILED, new_handler_status.error()); |
578 } | 578 } |
579 | 579 |
580 } // namespace | 580 } // namespace |
581 | 581 |
582 } // namespace content | 582 } // namespace content |
OLD | NEW |