| 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/child/url_loader_client_impl.h" | 5 #include "content/child/url_loader_client_impl.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
| 9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
| 10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 } | 46 } |
| 47 | 47 |
| 48 bool Send(IPC::Message* message) override { | 48 bool Send(IPC::Message* message) override { |
| 49 ADD_FAILURE() << "IPC::Sender::Send should not be called."; | 49 ADD_FAILURE() << "IPC::Sender::Send should not be called."; |
| 50 return false; | 50 return false; |
| 51 } | 51 } |
| 52 | 52 |
| 53 void CreateLoaderAndStart(mojom::URLLoaderAssociatedRequest request, | 53 void CreateLoaderAndStart(mojom::URLLoaderAssociatedRequest request, |
| 54 int32_t routing_id, | 54 int32_t routing_id, |
| 55 int32_t request_id, | 55 int32_t request_id, |
| 56 uint32_t options, |
| 56 const ResourceRequest& url_request, | 57 const ResourceRequest& url_request, |
| 57 mojom::URLLoaderClientPtr client) override { | 58 mojom::URLLoaderClientPtr client) override { |
| 58 url_loader_client_ = std::move(client); | 59 url_loader_client_ = std::move(client); |
| 59 } | 60 } |
| 60 | 61 |
| 61 void SyncLoad(int32_t routing_id, | 62 void SyncLoad(int32_t routing_id, |
| 62 int32_t request_id, | 63 int32_t request_id, |
| 63 const ResourceRequest& request, | 64 const ResourceRequest& request, |
| 64 const SyncLoadCallback& callback) override { | 65 const SyncLoadCallback& callback) override { |
| 65 NOTREACHED(); | 66 NOTREACHED(); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 79 TestRequestPeer::Context request_peer_context_; | 80 TestRequestPeer::Context request_peer_context_; |
| 80 int request_id_ = 0; | 81 int request_id_ = 0; |
| 81 mojom::URLLoaderClientPtr url_loader_client_; | 82 mojom::URLLoaderClientPtr url_loader_client_; |
| 82 mojom::URLLoaderFactoryPtr url_loader_factory_proxy_; | 83 mojom::URLLoaderFactoryPtr url_loader_factory_proxy_; |
| 83 mojo::Binding<mojom::URLLoaderFactory> mojo_binding_; | 84 mojo::Binding<mojom::URLLoaderFactory> mojo_binding_; |
| 84 }; | 85 }; |
| 85 | 86 |
| 86 TEST_F(URLLoaderClientImplTest, OnReceiveResponse) { | 87 TEST_F(URLLoaderClientImplTest, OnReceiveResponse) { |
| 87 ResourceResponseHead response_head; | 88 ResourceResponseHead response_head; |
| 88 | 89 |
| 89 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 90 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
| 90 | 91 |
| 91 EXPECT_FALSE(request_peer_context_.received_response); | 92 EXPECT_FALSE(request_peer_context_.received_response); |
| 92 base::RunLoop().RunUntilIdle(); | 93 base::RunLoop().RunUntilIdle(); |
| 93 EXPECT_TRUE(request_peer_context_.received_response); | 94 EXPECT_TRUE(request_peer_context_.received_response); |
| 94 } | 95 } |
| 95 | 96 |
| 96 TEST_F(URLLoaderClientImplTest, ResponseBody) { | 97 TEST_F(URLLoaderClientImplTest, ResponseBody) { |
| 97 ResourceResponseHead response_head; | 98 ResourceResponseHead response_head; |
| 98 | 99 |
| 99 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 100 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
| 100 | 101 |
| 101 EXPECT_FALSE(request_peer_context_.received_response); | 102 EXPECT_FALSE(request_peer_context_.received_response); |
| 102 base::RunLoop().RunUntilIdle(); | 103 base::RunLoop().RunUntilIdle(); |
| 103 EXPECT_TRUE(request_peer_context_.received_response); | 104 EXPECT_TRUE(request_peer_context_.received_response); |
| 104 | 105 |
| 105 mojo::DataPipe data_pipe(DataPipeOptions()); | 106 mojo::DataPipe data_pipe(DataPipeOptions()); |
| 106 url_loader_client_->OnStartLoadingResponseBody( | 107 url_loader_client_->OnStartLoadingResponseBody( |
| 107 std::move(data_pipe.consumer_handle)); | 108 std::move(data_pipe.consumer_handle)); |
| 108 uint32_t size = 5; | 109 uint32_t size = 5; |
| 109 MojoResult result = | 110 MojoResult result = |
| (...skipping 13 matching lines...) Expand all Loading... |
| 123 url_loader_client_->OnReceiveRedirect(redirect_info, response_head); | 124 url_loader_client_->OnReceiveRedirect(redirect_info, response_head); |
| 124 | 125 |
| 125 EXPECT_EQ(0, request_peer_context_.seen_redirects); | 126 EXPECT_EQ(0, request_peer_context_.seen_redirects); |
| 126 base::RunLoop().RunUntilIdle(); | 127 base::RunLoop().RunUntilIdle(); |
| 127 EXPECT_EQ(1, request_peer_context_.seen_redirects); | 128 EXPECT_EQ(1, request_peer_context_.seen_redirects); |
| 128 } | 129 } |
| 129 | 130 |
| 130 TEST_F(URLLoaderClientImplTest, OnDataDownloaded) { | 131 TEST_F(URLLoaderClientImplTest, OnDataDownloaded) { |
| 131 ResourceResponseHead response_head; | 132 ResourceResponseHead response_head; |
| 132 | 133 |
| 133 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 134 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
| 134 url_loader_client_->OnDataDownloaded(8, 13); | 135 url_loader_client_->OnDataDownloaded(8, 13); |
| 135 url_loader_client_->OnDataDownloaded(2, 1); | 136 url_loader_client_->OnDataDownloaded(2, 1); |
| 136 | 137 |
| 137 EXPECT_FALSE(request_peer_context_.received_response); | 138 EXPECT_FALSE(request_peer_context_.received_response); |
| 138 EXPECT_EQ(0, request_peer_context_.total_downloaded_data_length); | 139 EXPECT_EQ(0, request_peer_context_.total_downloaded_data_length); |
| 139 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length); | 140 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length); |
| 140 base::RunLoop().RunUntilIdle(); | 141 base::RunLoop().RunUntilIdle(); |
| 141 EXPECT_TRUE(request_peer_context_.received_response); | 142 EXPECT_TRUE(request_peer_context_.received_response); |
| 142 EXPECT_EQ(10, request_peer_context_.total_downloaded_data_length); | 143 EXPECT_EQ(10, request_peer_context_.total_downloaded_data_length); |
| 143 EXPECT_EQ(14, request_peer_context_.total_encoded_data_length); | 144 EXPECT_EQ(14, request_peer_context_.total_encoded_data_length); |
| 144 } | 145 } |
| 145 | 146 |
| 146 TEST_F(URLLoaderClientImplTest, OnReceiveCachedMetadata) { | 147 TEST_F(URLLoaderClientImplTest, OnReceiveCachedMetadata) { |
| 147 ResourceResponseHead response_head; | 148 ResourceResponseHead response_head; |
| 148 std::vector<uint8_t> metadata; | 149 std::vector<uint8_t> metadata; |
| 149 metadata.push_back('a'); | 150 metadata.push_back('a'); |
| 150 | 151 |
| 151 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 152 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
| 152 url_loader_client_->OnReceiveCachedMetadata(metadata); | 153 url_loader_client_->OnReceiveCachedMetadata(metadata); |
| 153 | 154 |
| 154 EXPECT_FALSE(request_peer_context_.received_response); | 155 EXPECT_FALSE(request_peer_context_.received_response); |
| 155 EXPECT_TRUE(request_peer_context_.cached_metadata.empty()); | 156 EXPECT_TRUE(request_peer_context_.cached_metadata.empty()); |
| 156 base::RunLoop().RunUntilIdle(); | 157 base::RunLoop().RunUntilIdle(); |
| 157 EXPECT_TRUE(request_peer_context_.received_response); | 158 EXPECT_TRUE(request_peer_context_.received_response); |
| 158 ASSERT_EQ(1u, request_peer_context_.cached_metadata.size()); | 159 ASSERT_EQ(1u, request_peer_context_.cached_metadata.size()); |
| 159 EXPECT_EQ('a', request_peer_context_.cached_metadata[0]); | 160 EXPECT_EQ('a', request_peer_context_.cached_metadata[0]); |
| 160 } | 161 } |
| 161 | 162 |
| 162 TEST_F(URLLoaderClientImplTest, OnTransferSizeUpdated) { | 163 TEST_F(URLLoaderClientImplTest, OnTransferSizeUpdated) { |
| 163 ResourceResponseHead response_head; | 164 ResourceResponseHead response_head; |
| 164 | 165 |
| 165 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 166 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
| 166 url_loader_client_->OnTransferSizeUpdated(4); | 167 url_loader_client_->OnTransferSizeUpdated(4); |
| 167 url_loader_client_->OnTransferSizeUpdated(4); | 168 url_loader_client_->OnTransferSizeUpdated(4); |
| 168 | 169 |
| 169 EXPECT_FALSE(request_peer_context_.received_response); | 170 EXPECT_FALSE(request_peer_context_.received_response); |
| 170 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length); | 171 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length); |
| 171 base::RunLoop().RunUntilIdle(); | 172 base::RunLoop().RunUntilIdle(); |
| 172 EXPECT_TRUE(request_peer_context_.received_response); | 173 EXPECT_TRUE(request_peer_context_.received_response); |
| 173 EXPECT_EQ(8, request_peer_context_.total_encoded_data_length); | 174 EXPECT_EQ(8, request_peer_context_.total_encoded_data_length); |
| 174 } | 175 } |
| 175 | 176 |
| 176 TEST_F(URLLoaderClientImplTest, OnCompleteWithoutResponseBody) { | 177 TEST_F(URLLoaderClientImplTest, OnCompleteWithoutResponseBody) { |
| 177 ResourceResponseHead response_head; | 178 ResourceResponseHead response_head; |
| 178 ResourceRequestCompletionStatus completion_status; | 179 ResourceRequestCompletionStatus completion_status; |
| 179 | 180 |
| 180 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 181 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
| 181 url_loader_client_->OnComplete(completion_status); | 182 url_loader_client_->OnComplete(completion_status); |
| 182 | 183 |
| 183 EXPECT_FALSE(request_peer_context_.received_response); | 184 EXPECT_FALSE(request_peer_context_.received_response); |
| 184 EXPECT_FALSE(request_peer_context_.complete); | 185 EXPECT_FALSE(request_peer_context_.complete); |
| 185 base::RunLoop().RunUntilIdle(); | 186 base::RunLoop().RunUntilIdle(); |
| 186 EXPECT_TRUE(request_peer_context_.received_response); | 187 EXPECT_TRUE(request_peer_context_.received_response); |
| 187 EXPECT_TRUE(request_peer_context_.complete); | 188 EXPECT_TRUE(request_peer_context_.complete); |
| 188 } | 189 } |
| 189 | 190 |
| 190 TEST_F(URLLoaderClientImplTest, OnCompleteWithResponseBody) { | 191 TEST_F(URLLoaderClientImplTest, OnCompleteWithResponseBody) { |
| 191 ResourceResponseHead response_head; | 192 ResourceResponseHead response_head; |
| 192 ResourceRequestCompletionStatus completion_status; | 193 ResourceRequestCompletionStatus completion_status; |
| 193 | 194 |
| 194 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 195 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
| 195 mojo::DataPipe data_pipe(DataPipeOptions()); | 196 mojo::DataPipe data_pipe(DataPipeOptions()); |
| 196 url_loader_client_->OnStartLoadingResponseBody( | 197 url_loader_client_->OnStartLoadingResponseBody( |
| 197 std::move(data_pipe.consumer_handle)); | 198 std::move(data_pipe.consumer_handle)); |
| 198 uint32_t size = 5; | 199 uint32_t size = 5; |
| 199 MojoResult result = | 200 MojoResult result = |
| 200 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, | 201 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, |
| 201 MOJO_WRITE_DATA_FLAG_NONE); | 202 MOJO_WRITE_DATA_FLAG_NONE); |
| 202 ASSERT_EQ(MOJO_RESULT_OK, result); | 203 ASSERT_EQ(MOJO_RESULT_OK, result); |
| 203 EXPECT_EQ(5u, size); | 204 EXPECT_EQ(5u, size); |
| 204 data_pipe.producer_handle.reset(); | 205 data_pipe.producer_handle.reset(); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 219 EXPECT_TRUE(request_peer_context_.complete); | 220 EXPECT_TRUE(request_peer_context_.complete); |
| 220 } | 221 } |
| 221 | 222 |
| 222 // Due to the lack of ordering guarantee, it is possible that the response body | 223 // Due to the lack of ordering guarantee, it is possible that the response body |
| 223 // bytes arrives after the completion message. URLLoaderClientImpl should | 224 // bytes arrives after the completion message. URLLoaderClientImpl should |
| 224 // restore the order. | 225 // restore the order. |
| 225 TEST_F(URLLoaderClientImplTest, OnCompleteShouldBeTheLastMessage) { | 226 TEST_F(URLLoaderClientImplTest, OnCompleteShouldBeTheLastMessage) { |
| 226 ResourceResponseHead response_head; | 227 ResourceResponseHead response_head; |
| 227 ResourceRequestCompletionStatus completion_status; | 228 ResourceRequestCompletionStatus completion_status; |
| 228 | 229 |
| 229 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 230 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
| 230 mojo::DataPipe data_pipe(DataPipeOptions()); | 231 mojo::DataPipe data_pipe(DataPipeOptions()); |
| 231 url_loader_client_->OnStartLoadingResponseBody( | 232 url_loader_client_->OnStartLoadingResponseBody( |
| 232 std::move(data_pipe.consumer_handle)); | 233 std::move(data_pipe.consumer_handle)); |
| 233 url_loader_client_->OnComplete(completion_status); | 234 url_loader_client_->OnComplete(completion_status); |
| 234 | 235 |
| 235 base::RunLoop().RunUntilIdle(); | 236 base::RunLoop().RunUntilIdle(); |
| 236 EXPECT_TRUE(request_peer_context_.received_response); | 237 EXPECT_TRUE(request_peer_context_.received_response); |
| 237 EXPECT_FALSE(request_peer_context_.complete); | 238 EXPECT_FALSE(request_peer_context_.complete); |
| 238 | 239 |
| 239 uint32_t size = 5; | 240 uint32_t size = 5; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 252 EXPECT_EQ("hello", request_peer_context_.data); | 253 EXPECT_EQ("hello", request_peer_context_.data); |
| 253 EXPECT_TRUE(request_peer_context_.complete); | 254 EXPECT_TRUE(request_peer_context_.complete); |
| 254 } | 255 } |
| 255 | 256 |
| 256 TEST_F(URLLoaderClientImplTest, CancelOnReceiveResponse) { | 257 TEST_F(URLLoaderClientImplTest, CancelOnReceiveResponse) { |
| 257 request_peer_context_.cancel_on_receive_response = true; | 258 request_peer_context_.cancel_on_receive_response = true; |
| 258 | 259 |
| 259 ResourceResponseHead response_head; | 260 ResourceResponseHead response_head; |
| 260 ResourceRequestCompletionStatus completion_status; | 261 ResourceRequestCompletionStatus completion_status; |
| 261 | 262 |
| 262 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 263 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
| 263 mojo::DataPipe data_pipe(DataPipeOptions()); | 264 mojo::DataPipe data_pipe(DataPipeOptions()); |
| 264 url_loader_client_->OnStartLoadingResponseBody( | 265 url_loader_client_->OnStartLoadingResponseBody( |
| 265 std::move(data_pipe.consumer_handle)); | 266 std::move(data_pipe.consumer_handle)); |
| 266 url_loader_client_->OnComplete(completion_status); | 267 url_loader_client_->OnComplete(completion_status); |
| 267 | 268 |
| 268 EXPECT_FALSE(request_peer_context_.received_response); | 269 EXPECT_FALSE(request_peer_context_.received_response); |
| 269 EXPECT_FALSE(request_peer_context_.complete); | 270 EXPECT_FALSE(request_peer_context_.complete); |
| 270 EXPECT_FALSE(request_peer_context_.cancelled); | 271 EXPECT_FALSE(request_peer_context_.cancelled); |
| 271 | 272 |
| 272 base::RunLoop().RunUntilIdle(); | 273 base::RunLoop().RunUntilIdle(); |
| 273 EXPECT_TRUE(request_peer_context_.received_response); | 274 EXPECT_TRUE(request_peer_context_.received_response); |
| 274 EXPECT_FALSE(request_peer_context_.complete); | 275 EXPECT_FALSE(request_peer_context_.complete); |
| 275 EXPECT_TRUE(request_peer_context_.cancelled); | 276 EXPECT_TRUE(request_peer_context_.cancelled); |
| 276 } | 277 } |
| 277 | 278 |
| 278 TEST_F(URLLoaderClientImplTest, CancelOnReceiveData) { | 279 TEST_F(URLLoaderClientImplTest, CancelOnReceiveData) { |
| 279 request_peer_context_.cancel_on_receive_data = true; | 280 request_peer_context_.cancel_on_receive_data = true; |
| 280 | 281 |
| 281 ResourceResponseHead response_head; | 282 ResourceResponseHead response_head; |
| 282 ResourceRequestCompletionStatus completion_status; | 283 ResourceRequestCompletionStatus completion_status; |
| 283 | 284 |
| 284 mojo::DataPipe data_pipe(DataPipeOptions()); | 285 mojo::DataPipe data_pipe(DataPipeOptions()); |
| 285 uint32_t size = 5; | 286 uint32_t size = 5; |
| 286 MojoResult result = | 287 MojoResult result = |
| 287 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, | 288 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, |
| 288 MOJO_WRITE_DATA_FLAG_NONE); | 289 MOJO_WRITE_DATA_FLAG_NONE); |
| 289 ASSERT_EQ(MOJO_RESULT_OK, result); | 290 ASSERT_EQ(MOJO_RESULT_OK, result); |
| 290 EXPECT_EQ(5u, size); | 291 EXPECT_EQ(5u, size); |
| 291 | 292 |
| 292 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 293 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
| 293 url_loader_client_->OnStartLoadingResponseBody( | 294 url_loader_client_->OnStartLoadingResponseBody( |
| 294 std::move(data_pipe.consumer_handle)); | 295 std::move(data_pipe.consumer_handle)); |
| 295 url_loader_client_->OnComplete(completion_status); | 296 url_loader_client_->OnComplete(completion_status); |
| 296 | 297 |
| 297 EXPECT_FALSE(request_peer_context_.received_response); | 298 EXPECT_FALSE(request_peer_context_.received_response); |
| 298 EXPECT_EQ("", request_peer_context_.data); | 299 EXPECT_EQ("", request_peer_context_.data); |
| 299 EXPECT_FALSE(request_peer_context_.complete); | 300 EXPECT_FALSE(request_peer_context_.complete); |
| 300 EXPECT_FALSE(request_peer_context_.cancelled); | 301 EXPECT_FALSE(request_peer_context_.cancelled); |
| 301 | 302 |
| 302 base::RunLoop().RunUntilIdle(); | 303 base::RunLoop().RunUntilIdle(); |
| 303 EXPECT_TRUE(request_peer_context_.received_response); | 304 EXPECT_TRUE(request_peer_context_.received_response); |
| 304 EXPECT_EQ("hello", request_peer_context_.data); | 305 EXPECT_EQ("hello", request_peer_context_.data); |
| 305 EXPECT_FALSE(request_peer_context_.complete); | 306 EXPECT_FALSE(request_peer_context_.complete); |
| 306 EXPECT_TRUE(request_peer_context_.cancelled); | 307 EXPECT_TRUE(request_peer_context_.cancelled); |
| 307 } | 308 } |
| 308 | 309 |
| 309 TEST_F(URLLoaderClientImplTest, Defer) { | 310 TEST_F(URLLoaderClientImplTest, Defer) { |
| 310 ResourceResponseHead response_head; | 311 ResourceResponseHead response_head; |
| 311 ResourceRequestCompletionStatus completion_status; | 312 ResourceRequestCompletionStatus completion_status; |
| 312 | 313 |
| 313 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 314 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
| 314 url_loader_client_->OnComplete(completion_status); | 315 url_loader_client_->OnComplete(completion_status); |
| 315 | 316 |
| 316 EXPECT_FALSE(request_peer_context_.received_response); | 317 EXPECT_FALSE(request_peer_context_.received_response); |
| 317 EXPECT_FALSE(request_peer_context_.complete); | 318 EXPECT_FALSE(request_peer_context_.complete); |
| 318 | 319 |
| 319 dispatcher_->SetDefersLoading(request_id_, true); | 320 dispatcher_->SetDefersLoading(request_id_, true); |
| 320 | 321 |
| 321 base::RunLoop().RunUntilIdle(); | 322 base::RunLoop().RunUntilIdle(); |
| 322 EXPECT_FALSE(request_peer_context_.received_response); | 323 EXPECT_FALSE(request_peer_context_.received_response); |
| 323 EXPECT_FALSE(request_peer_context_.complete); | 324 EXPECT_FALSE(request_peer_context_.complete); |
| 324 | 325 |
| 325 dispatcher_->SetDefersLoading(request_id_, false); | 326 dispatcher_->SetDefersLoading(request_id_, false); |
| 326 EXPECT_FALSE(request_peer_context_.received_response); | 327 EXPECT_FALSE(request_peer_context_.received_response); |
| 327 EXPECT_FALSE(request_peer_context_.complete); | 328 EXPECT_FALSE(request_peer_context_.complete); |
| 328 | 329 |
| 329 base::RunLoop().RunUntilIdle(); | 330 base::RunLoop().RunUntilIdle(); |
| 330 EXPECT_TRUE(request_peer_context_.received_response); | 331 EXPECT_TRUE(request_peer_context_.received_response); |
| 331 EXPECT_TRUE(request_peer_context_.complete); | 332 EXPECT_TRUE(request_peer_context_.complete); |
| 332 } | 333 } |
| 333 | 334 |
| 334 TEST_F(URLLoaderClientImplTest, DeferWithResponseBody) { | 335 TEST_F(URLLoaderClientImplTest, DeferWithResponseBody) { |
| 335 ResourceResponseHead response_head; | 336 ResourceResponseHead response_head; |
| 336 ResourceRequestCompletionStatus completion_status; | 337 ResourceRequestCompletionStatus completion_status; |
| 337 | 338 |
| 338 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 339 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
| 339 mojo::DataPipe data_pipe(DataPipeOptions()); | 340 mojo::DataPipe data_pipe(DataPipeOptions()); |
| 340 uint32_t size = 5; | 341 uint32_t size = 5; |
| 341 MojoResult result = | 342 MojoResult result = |
| 342 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, | 343 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, |
| 343 MOJO_WRITE_DATA_FLAG_NONE); | 344 MOJO_WRITE_DATA_FLAG_NONE); |
| 344 ASSERT_EQ(MOJO_RESULT_OK, result); | 345 ASSERT_EQ(MOJO_RESULT_OK, result); |
| 345 EXPECT_EQ(5u, size); | 346 EXPECT_EQ(5u, size); |
| 346 data_pipe.producer_handle.reset(); | 347 data_pipe.producer_handle.reset(); |
| 347 | 348 |
| 348 url_loader_client_->OnStartLoadingResponseBody( | 349 url_loader_client_->OnStartLoadingResponseBody( |
| (...skipping 21 matching lines...) Expand all Loading... |
| 370 EXPECT_TRUE(request_peer_context_.complete); | 371 EXPECT_TRUE(request_peer_context_.complete); |
| 371 EXPECT_EQ("hello", request_peer_context_.data); | 372 EXPECT_EQ("hello", request_peer_context_.data); |
| 372 } | 373 } |
| 373 | 374 |
| 374 // As "transfer size update" message is handled specially in the implementation, | 375 // As "transfer size update" message is handled specially in the implementation, |
| 375 // we have a separate test. | 376 // we have a separate test. |
| 376 TEST_F(URLLoaderClientImplTest, DeferWithTransferSizeUpdated) { | 377 TEST_F(URLLoaderClientImplTest, DeferWithTransferSizeUpdated) { |
| 377 ResourceResponseHead response_head; | 378 ResourceResponseHead response_head; |
| 378 ResourceRequestCompletionStatus completion_status; | 379 ResourceRequestCompletionStatus completion_status; |
| 379 | 380 |
| 380 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 381 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
| 381 mojo::DataPipe data_pipe(DataPipeOptions()); | 382 mojo::DataPipe data_pipe(DataPipeOptions()); |
| 382 uint32_t size = 5; | 383 uint32_t size = 5; |
| 383 MojoResult result = | 384 MojoResult result = |
| 384 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, | 385 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, |
| 385 MOJO_WRITE_DATA_FLAG_NONE); | 386 MOJO_WRITE_DATA_FLAG_NONE); |
| 386 ASSERT_EQ(MOJO_RESULT_OK, result); | 387 ASSERT_EQ(MOJO_RESULT_OK, result); |
| 387 EXPECT_EQ(5u, size); | 388 EXPECT_EQ(5u, size); |
| 388 data_pipe.producer_handle.reset(); | 389 data_pipe.producer_handle.reset(); |
| 389 | 390 |
| 390 url_loader_client_->OnStartLoadingResponseBody( | 391 url_loader_client_->OnStartLoadingResponseBody( |
| (...skipping 28 matching lines...) Expand all Loading... |
| 419 } | 420 } |
| 420 | 421 |
| 421 TEST_F(URLLoaderClientImplTest, SetDeferredDuringFlushingDeferredMessage) { | 422 TEST_F(URLLoaderClientImplTest, SetDeferredDuringFlushingDeferredMessage) { |
| 422 request_peer_context_.defer_on_redirect = true; | 423 request_peer_context_.defer_on_redirect = true; |
| 423 | 424 |
| 424 net::RedirectInfo redirect_info; | 425 net::RedirectInfo redirect_info; |
| 425 ResourceResponseHead response_head; | 426 ResourceResponseHead response_head; |
| 426 ResourceRequestCompletionStatus completion_status; | 427 ResourceRequestCompletionStatus completion_status; |
| 427 | 428 |
| 428 url_loader_client_->OnReceiveRedirect(redirect_info, response_head); | 429 url_loader_client_->OnReceiveRedirect(redirect_info, response_head); |
| 429 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 430 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
| 430 mojo::DataPipe data_pipe(DataPipeOptions()); | 431 mojo::DataPipe data_pipe(DataPipeOptions()); |
| 431 uint32_t size = 5; | 432 uint32_t size = 5; |
| 432 MojoResult result = | 433 MojoResult result = |
| 433 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, | 434 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, |
| 434 MOJO_WRITE_DATA_FLAG_NONE); | 435 MOJO_WRITE_DATA_FLAG_NONE); |
| 435 ASSERT_EQ(MOJO_RESULT_OK, result); | 436 ASSERT_EQ(MOJO_RESULT_OK, result); |
| 436 EXPECT_EQ(5u, size); | 437 EXPECT_EQ(5u, size); |
| 437 data_pipe.producer_handle.reset(); | 438 data_pipe.producer_handle.reset(); |
| 438 | 439 |
| 439 url_loader_client_->OnStartLoadingResponseBody( | 440 url_loader_client_->OnStartLoadingResponseBody( |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 481 EXPECT_FALSE(request_peer_context_.cancelled); | 482 EXPECT_FALSE(request_peer_context_.cancelled); |
| 482 } | 483 } |
| 483 | 484 |
| 484 TEST_F(URLLoaderClientImplTest, | 485 TEST_F(URLLoaderClientImplTest, |
| 485 SetDeferredDuringFlushingDeferredMessageOnTransferSizeUpdated) { | 486 SetDeferredDuringFlushingDeferredMessageOnTransferSizeUpdated) { |
| 486 request_peer_context_.defer_on_transfer_size_updated = true; | 487 request_peer_context_.defer_on_transfer_size_updated = true; |
| 487 | 488 |
| 488 ResourceResponseHead response_head; | 489 ResourceResponseHead response_head; |
| 489 ResourceRequestCompletionStatus completion_status; | 490 ResourceRequestCompletionStatus completion_status; |
| 490 | 491 |
| 491 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 492 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
| 492 | 493 |
| 493 url_loader_client_->OnTransferSizeUpdated(4); | 494 url_loader_client_->OnTransferSizeUpdated(4); |
| 494 url_loader_client_->OnComplete(completion_status); | 495 url_loader_client_->OnComplete(completion_status); |
| 495 | 496 |
| 496 EXPECT_FALSE(request_peer_context_.received_response); | 497 EXPECT_FALSE(request_peer_context_.received_response); |
| 497 EXPECT_FALSE(request_peer_context_.complete); | 498 EXPECT_FALSE(request_peer_context_.complete); |
| 498 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length); | 499 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length); |
| 499 | 500 |
| 500 dispatcher_->SetDefersLoading(request_id_, true); | 501 dispatcher_->SetDefersLoading(request_id_, true); |
| 501 | 502 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 517 | 518 |
| 518 dispatcher_->SetDefersLoading(request_id_, false); | 519 dispatcher_->SetDefersLoading(request_id_, false); |
| 519 base::RunLoop().RunUntilIdle(); | 520 base::RunLoop().RunUntilIdle(); |
| 520 EXPECT_TRUE(request_peer_context_.received_response); | 521 EXPECT_TRUE(request_peer_context_.received_response); |
| 521 EXPECT_TRUE(request_peer_context_.complete); | 522 EXPECT_TRUE(request_peer_context_.complete); |
| 522 EXPECT_EQ(4, request_peer_context_.total_encoded_data_length); | 523 EXPECT_EQ(4, request_peer_context_.total_encoded_data_length); |
| 523 EXPECT_FALSE(request_peer_context_.cancelled); | 524 EXPECT_FALSE(request_peer_context_.cancelled); |
| 524 } | 525 } |
| 525 | 526 |
| 526 } // namespace content | 527 } // namespace content |
| OLD | NEW |