| 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 |