| 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 int32_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( |
| 91 response_head, base::Optional<net::SSLInfo>(), nullptr); |
| 90 | 92 |
| 91 EXPECT_FALSE(request_peer_context_.received_response); | 93 EXPECT_FALSE(request_peer_context_.received_response); |
| 92 base::RunLoop().RunUntilIdle(); | 94 base::RunLoop().RunUntilIdle(); |
| 93 EXPECT_TRUE(request_peer_context_.received_response); | 95 EXPECT_TRUE(request_peer_context_.received_response); |
| 94 } | 96 } |
| 95 | 97 |
| 96 TEST_F(URLLoaderClientImplTest, ResponseBody) { | 98 TEST_F(URLLoaderClientImplTest, ResponseBody) { |
| 97 ResourceResponseHead response_head; | 99 ResourceResponseHead response_head; |
| 98 | 100 |
| 99 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 101 url_loader_client_->OnReceiveResponse( |
| 102 response_head, base::Optional<net::SSLInfo>(), nullptr); |
| 100 | 103 |
| 101 EXPECT_FALSE(request_peer_context_.received_response); | 104 EXPECT_FALSE(request_peer_context_.received_response); |
| 102 base::RunLoop().RunUntilIdle(); | 105 base::RunLoop().RunUntilIdle(); |
| 103 EXPECT_TRUE(request_peer_context_.received_response); | 106 EXPECT_TRUE(request_peer_context_.received_response); |
| 104 | 107 |
| 105 mojo::DataPipe data_pipe(DataPipeOptions()); | 108 mojo::DataPipe data_pipe(DataPipeOptions()); |
| 106 url_loader_client_->OnStartLoadingResponseBody( | 109 url_loader_client_->OnStartLoadingResponseBody( |
| 107 std::move(data_pipe.consumer_handle)); | 110 std::move(data_pipe.consumer_handle)); |
| 108 uint32_t size = 5; | 111 uint32_t size = 5; |
| 109 MojoResult result = | 112 MojoResult result = |
| (...skipping 13 matching lines...) Expand all Loading... |
| 123 url_loader_client_->OnReceiveRedirect(redirect_info, response_head); | 126 url_loader_client_->OnReceiveRedirect(redirect_info, response_head); |
| 124 | 127 |
| 125 EXPECT_EQ(0, request_peer_context_.seen_redirects); | 128 EXPECT_EQ(0, request_peer_context_.seen_redirects); |
| 126 base::RunLoop().RunUntilIdle(); | 129 base::RunLoop().RunUntilIdle(); |
| 127 EXPECT_EQ(1, request_peer_context_.seen_redirects); | 130 EXPECT_EQ(1, request_peer_context_.seen_redirects); |
| 128 } | 131 } |
| 129 | 132 |
| 130 TEST_F(URLLoaderClientImplTest, OnDataDownloaded) { | 133 TEST_F(URLLoaderClientImplTest, OnDataDownloaded) { |
| 131 ResourceResponseHead response_head; | 134 ResourceResponseHead response_head; |
| 132 | 135 |
| 133 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 136 url_loader_client_->OnReceiveResponse( |
| 137 response_head, base::Optional<net::SSLInfo>(), nullptr); |
| 134 url_loader_client_->OnDataDownloaded(8, 13); | 138 url_loader_client_->OnDataDownloaded(8, 13); |
| 135 url_loader_client_->OnDataDownloaded(2, 1); | 139 url_loader_client_->OnDataDownloaded(2, 1); |
| 136 | 140 |
| 137 EXPECT_FALSE(request_peer_context_.received_response); | 141 EXPECT_FALSE(request_peer_context_.received_response); |
| 138 EXPECT_EQ(0, request_peer_context_.total_downloaded_data_length); | 142 EXPECT_EQ(0, request_peer_context_.total_downloaded_data_length); |
| 139 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length); | 143 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length); |
| 140 base::RunLoop().RunUntilIdle(); | 144 base::RunLoop().RunUntilIdle(); |
| 141 EXPECT_TRUE(request_peer_context_.received_response); | 145 EXPECT_TRUE(request_peer_context_.received_response); |
| 142 EXPECT_EQ(10, request_peer_context_.total_downloaded_data_length); | 146 EXPECT_EQ(10, request_peer_context_.total_downloaded_data_length); |
| 143 EXPECT_EQ(14, request_peer_context_.total_encoded_data_length); | 147 EXPECT_EQ(14, request_peer_context_.total_encoded_data_length); |
| 144 } | 148 } |
| 145 | 149 |
| 146 TEST_F(URLLoaderClientImplTest, OnReceiveCachedMetadata) { | 150 TEST_F(URLLoaderClientImplTest, OnReceiveCachedMetadata) { |
| 147 ResourceResponseHead response_head; | 151 ResourceResponseHead response_head; |
| 148 std::vector<uint8_t> metadata; | 152 std::vector<uint8_t> metadata; |
| 149 metadata.push_back('a'); | 153 metadata.push_back('a'); |
| 150 | 154 |
| 151 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 155 url_loader_client_->OnReceiveResponse( |
| 156 response_head, base::Optional<net::SSLInfo>(), nullptr); |
| 152 url_loader_client_->OnReceiveCachedMetadata(metadata); | 157 url_loader_client_->OnReceiveCachedMetadata(metadata); |
| 153 | 158 |
| 154 EXPECT_FALSE(request_peer_context_.received_response); | 159 EXPECT_FALSE(request_peer_context_.received_response); |
| 155 EXPECT_TRUE(request_peer_context_.cached_metadata.empty()); | 160 EXPECT_TRUE(request_peer_context_.cached_metadata.empty()); |
| 156 base::RunLoop().RunUntilIdle(); | 161 base::RunLoop().RunUntilIdle(); |
| 157 EXPECT_TRUE(request_peer_context_.received_response); | 162 EXPECT_TRUE(request_peer_context_.received_response); |
| 158 ASSERT_EQ(1u, request_peer_context_.cached_metadata.size()); | 163 ASSERT_EQ(1u, request_peer_context_.cached_metadata.size()); |
| 159 EXPECT_EQ('a', request_peer_context_.cached_metadata[0]); | 164 EXPECT_EQ('a', request_peer_context_.cached_metadata[0]); |
| 160 } | 165 } |
| 161 | 166 |
| 162 TEST_F(URLLoaderClientImplTest, OnTransferSizeUpdated) { | 167 TEST_F(URLLoaderClientImplTest, OnTransferSizeUpdated) { |
| 163 ResourceResponseHead response_head; | 168 ResourceResponseHead response_head; |
| 164 | 169 |
| 165 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 170 url_loader_client_->OnReceiveResponse( |
| 171 response_head, base::Optional<net::SSLInfo>(), nullptr); |
| 166 url_loader_client_->OnTransferSizeUpdated(4); | 172 url_loader_client_->OnTransferSizeUpdated(4); |
| 167 url_loader_client_->OnTransferSizeUpdated(4); | 173 url_loader_client_->OnTransferSizeUpdated(4); |
| 168 | 174 |
| 169 EXPECT_FALSE(request_peer_context_.received_response); | 175 EXPECT_FALSE(request_peer_context_.received_response); |
| 170 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length); | 176 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length); |
| 171 base::RunLoop().RunUntilIdle(); | 177 base::RunLoop().RunUntilIdle(); |
| 172 EXPECT_TRUE(request_peer_context_.received_response); | 178 EXPECT_TRUE(request_peer_context_.received_response); |
| 173 EXPECT_EQ(8, request_peer_context_.total_encoded_data_length); | 179 EXPECT_EQ(8, request_peer_context_.total_encoded_data_length); |
| 174 } | 180 } |
| 175 | 181 |
| 176 TEST_F(URLLoaderClientImplTest, OnCompleteWithoutResponseBody) { | 182 TEST_F(URLLoaderClientImplTest, OnCompleteWithoutResponseBody) { |
| 177 ResourceResponseHead response_head; | 183 ResourceResponseHead response_head; |
| 178 ResourceRequestCompletionStatus completion_status; | 184 ResourceRequestCompletionStatus completion_status; |
| 179 | 185 |
| 180 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 186 url_loader_client_->OnReceiveResponse( |
| 187 response_head, base::Optional<net::SSLInfo>(), nullptr); |
| 181 url_loader_client_->OnComplete(completion_status); | 188 url_loader_client_->OnComplete(completion_status); |
| 182 | 189 |
| 183 EXPECT_FALSE(request_peer_context_.received_response); | 190 EXPECT_FALSE(request_peer_context_.received_response); |
| 184 EXPECT_FALSE(request_peer_context_.complete); | 191 EXPECT_FALSE(request_peer_context_.complete); |
| 185 base::RunLoop().RunUntilIdle(); | 192 base::RunLoop().RunUntilIdle(); |
| 186 EXPECT_TRUE(request_peer_context_.received_response); | 193 EXPECT_TRUE(request_peer_context_.received_response); |
| 187 EXPECT_TRUE(request_peer_context_.complete); | 194 EXPECT_TRUE(request_peer_context_.complete); |
| 188 } | 195 } |
| 189 | 196 |
| 190 TEST_F(URLLoaderClientImplTest, OnCompleteWithResponseBody) { | 197 TEST_F(URLLoaderClientImplTest, OnCompleteWithResponseBody) { |
| 191 ResourceResponseHead response_head; | 198 ResourceResponseHead response_head; |
| 192 ResourceRequestCompletionStatus completion_status; | 199 ResourceRequestCompletionStatus completion_status; |
| 193 | 200 |
| 194 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 201 url_loader_client_->OnReceiveResponse( |
| 202 response_head, base::Optional<net::SSLInfo>(), nullptr); |
| 195 mojo::DataPipe data_pipe(DataPipeOptions()); | 203 mojo::DataPipe data_pipe(DataPipeOptions()); |
| 196 url_loader_client_->OnStartLoadingResponseBody( | 204 url_loader_client_->OnStartLoadingResponseBody( |
| 197 std::move(data_pipe.consumer_handle)); | 205 std::move(data_pipe.consumer_handle)); |
| 198 uint32_t size = 5; | 206 uint32_t size = 5; |
| 199 MojoResult result = | 207 MojoResult result = |
| 200 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, | 208 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, |
| 201 MOJO_WRITE_DATA_FLAG_NONE); | 209 MOJO_WRITE_DATA_FLAG_NONE); |
| 202 ASSERT_EQ(MOJO_RESULT_OK, result); | 210 ASSERT_EQ(MOJO_RESULT_OK, result); |
| 203 EXPECT_EQ(5u, size); | 211 EXPECT_EQ(5u, size); |
| 204 data_pipe.producer_handle.reset(); | 212 data_pipe.producer_handle.reset(); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 219 EXPECT_TRUE(request_peer_context_.complete); | 227 EXPECT_TRUE(request_peer_context_.complete); |
| 220 } | 228 } |
| 221 | 229 |
| 222 // Due to the lack of ordering guarantee, it is possible that the response body | 230 // Due to the lack of ordering guarantee, it is possible that the response body |
| 223 // bytes arrives after the completion message. URLLoaderClientImpl should | 231 // bytes arrives after the completion message. URLLoaderClientImpl should |
| 224 // restore the order. | 232 // restore the order. |
| 225 TEST_F(URLLoaderClientImplTest, OnCompleteShouldBeTheLastMessage) { | 233 TEST_F(URLLoaderClientImplTest, OnCompleteShouldBeTheLastMessage) { |
| 226 ResourceResponseHead response_head; | 234 ResourceResponseHead response_head; |
| 227 ResourceRequestCompletionStatus completion_status; | 235 ResourceRequestCompletionStatus completion_status; |
| 228 | 236 |
| 229 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 237 url_loader_client_->OnReceiveResponse( |
| 238 response_head, base::Optional<net::SSLInfo>(), nullptr); |
| 230 mojo::DataPipe data_pipe(DataPipeOptions()); | 239 mojo::DataPipe data_pipe(DataPipeOptions()); |
| 231 url_loader_client_->OnStartLoadingResponseBody( | 240 url_loader_client_->OnStartLoadingResponseBody( |
| 232 std::move(data_pipe.consumer_handle)); | 241 std::move(data_pipe.consumer_handle)); |
| 233 url_loader_client_->OnComplete(completion_status); | 242 url_loader_client_->OnComplete(completion_status); |
| 234 | 243 |
| 235 base::RunLoop().RunUntilIdle(); | 244 base::RunLoop().RunUntilIdle(); |
| 236 EXPECT_TRUE(request_peer_context_.received_response); | 245 EXPECT_TRUE(request_peer_context_.received_response); |
| 237 EXPECT_FALSE(request_peer_context_.complete); | 246 EXPECT_FALSE(request_peer_context_.complete); |
| 238 | 247 |
| 239 uint32_t size = 5; | 248 uint32_t size = 5; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 252 EXPECT_EQ("hello", request_peer_context_.data); | 261 EXPECT_EQ("hello", request_peer_context_.data); |
| 253 EXPECT_TRUE(request_peer_context_.complete); | 262 EXPECT_TRUE(request_peer_context_.complete); |
| 254 } | 263 } |
| 255 | 264 |
| 256 TEST_F(URLLoaderClientImplTest, CancelOnReceiveResponse) { | 265 TEST_F(URLLoaderClientImplTest, CancelOnReceiveResponse) { |
| 257 request_peer_context_.cancel_on_receive_response = true; | 266 request_peer_context_.cancel_on_receive_response = true; |
| 258 | 267 |
| 259 ResourceResponseHead response_head; | 268 ResourceResponseHead response_head; |
| 260 ResourceRequestCompletionStatus completion_status; | 269 ResourceRequestCompletionStatus completion_status; |
| 261 | 270 |
| 262 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 271 url_loader_client_->OnReceiveResponse( |
| 272 response_head, base::Optional<net::SSLInfo>(), nullptr); |
| 263 mojo::DataPipe data_pipe(DataPipeOptions()); | 273 mojo::DataPipe data_pipe(DataPipeOptions()); |
| 264 url_loader_client_->OnStartLoadingResponseBody( | 274 url_loader_client_->OnStartLoadingResponseBody( |
| 265 std::move(data_pipe.consumer_handle)); | 275 std::move(data_pipe.consumer_handle)); |
| 266 url_loader_client_->OnComplete(completion_status); | 276 url_loader_client_->OnComplete(completion_status); |
| 267 | 277 |
| 268 EXPECT_FALSE(request_peer_context_.received_response); | 278 EXPECT_FALSE(request_peer_context_.received_response); |
| 269 EXPECT_FALSE(request_peer_context_.complete); | 279 EXPECT_FALSE(request_peer_context_.complete); |
| 270 EXPECT_FALSE(request_peer_context_.cancelled); | 280 EXPECT_FALSE(request_peer_context_.cancelled); |
| 271 | 281 |
| 272 base::RunLoop().RunUntilIdle(); | 282 base::RunLoop().RunUntilIdle(); |
| 273 EXPECT_TRUE(request_peer_context_.received_response); | 283 EXPECT_TRUE(request_peer_context_.received_response); |
| 274 EXPECT_FALSE(request_peer_context_.complete); | 284 EXPECT_FALSE(request_peer_context_.complete); |
| 275 EXPECT_TRUE(request_peer_context_.cancelled); | 285 EXPECT_TRUE(request_peer_context_.cancelled); |
| 276 } | 286 } |
| 277 | 287 |
| 278 TEST_F(URLLoaderClientImplTest, CancelOnReceiveData) { | 288 TEST_F(URLLoaderClientImplTest, CancelOnReceiveData) { |
| 279 request_peer_context_.cancel_on_receive_data = true; | 289 request_peer_context_.cancel_on_receive_data = true; |
| 280 | 290 |
| 281 ResourceResponseHead response_head; | 291 ResourceResponseHead response_head; |
| 282 ResourceRequestCompletionStatus completion_status; | 292 ResourceRequestCompletionStatus completion_status; |
| 283 | 293 |
| 284 mojo::DataPipe data_pipe(DataPipeOptions()); | 294 mojo::DataPipe data_pipe(DataPipeOptions()); |
| 285 uint32_t size = 5; | 295 uint32_t size = 5; |
| 286 MojoResult result = | 296 MojoResult result = |
| 287 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, | 297 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, |
| 288 MOJO_WRITE_DATA_FLAG_NONE); | 298 MOJO_WRITE_DATA_FLAG_NONE); |
| 289 ASSERT_EQ(MOJO_RESULT_OK, result); | 299 ASSERT_EQ(MOJO_RESULT_OK, result); |
| 290 EXPECT_EQ(5u, size); | 300 EXPECT_EQ(5u, size); |
| 291 | 301 |
| 292 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 302 url_loader_client_->OnReceiveResponse( |
| 303 response_head, base::Optional<net::SSLInfo>(), nullptr); |
| 293 url_loader_client_->OnStartLoadingResponseBody( | 304 url_loader_client_->OnStartLoadingResponseBody( |
| 294 std::move(data_pipe.consumer_handle)); | 305 std::move(data_pipe.consumer_handle)); |
| 295 url_loader_client_->OnComplete(completion_status); | 306 url_loader_client_->OnComplete(completion_status); |
| 296 | 307 |
| 297 EXPECT_FALSE(request_peer_context_.received_response); | 308 EXPECT_FALSE(request_peer_context_.received_response); |
| 298 EXPECT_EQ("", request_peer_context_.data); | 309 EXPECT_EQ("", request_peer_context_.data); |
| 299 EXPECT_FALSE(request_peer_context_.complete); | 310 EXPECT_FALSE(request_peer_context_.complete); |
| 300 EXPECT_FALSE(request_peer_context_.cancelled); | 311 EXPECT_FALSE(request_peer_context_.cancelled); |
| 301 | 312 |
| 302 base::RunLoop().RunUntilIdle(); | 313 base::RunLoop().RunUntilIdle(); |
| 303 EXPECT_TRUE(request_peer_context_.received_response); | 314 EXPECT_TRUE(request_peer_context_.received_response); |
| 304 EXPECT_EQ("hello", request_peer_context_.data); | 315 EXPECT_EQ("hello", request_peer_context_.data); |
| 305 EXPECT_FALSE(request_peer_context_.complete); | 316 EXPECT_FALSE(request_peer_context_.complete); |
| 306 EXPECT_TRUE(request_peer_context_.cancelled); | 317 EXPECT_TRUE(request_peer_context_.cancelled); |
| 307 } | 318 } |
| 308 | 319 |
| 309 TEST_F(URLLoaderClientImplTest, Defer) { | 320 TEST_F(URLLoaderClientImplTest, Defer) { |
| 310 ResourceResponseHead response_head; | 321 ResourceResponseHead response_head; |
| 311 ResourceRequestCompletionStatus completion_status; | 322 ResourceRequestCompletionStatus completion_status; |
| 312 | 323 |
| 313 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 324 url_loader_client_->OnReceiveResponse( |
| 325 response_head, base::Optional<net::SSLInfo>(), nullptr); |
| 314 url_loader_client_->OnComplete(completion_status); | 326 url_loader_client_->OnComplete(completion_status); |
| 315 | 327 |
| 316 EXPECT_FALSE(request_peer_context_.received_response); | 328 EXPECT_FALSE(request_peer_context_.received_response); |
| 317 EXPECT_FALSE(request_peer_context_.complete); | 329 EXPECT_FALSE(request_peer_context_.complete); |
| 318 | 330 |
| 319 dispatcher_->SetDefersLoading(request_id_, true); | 331 dispatcher_->SetDefersLoading(request_id_, true); |
| 320 | 332 |
| 321 base::RunLoop().RunUntilIdle(); | 333 base::RunLoop().RunUntilIdle(); |
| 322 EXPECT_FALSE(request_peer_context_.received_response); | 334 EXPECT_FALSE(request_peer_context_.received_response); |
| 323 EXPECT_FALSE(request_peer_context_.complete); | 335 EXPECT_FALSE(request_peer_context_.complete); |
| 324 | 336 |
| 325 dispatcher_->SetDefersLoading(request_id_, false); | 337 dispatcher_->SetDefersLoading(request_id_, false); |
| 326 EXPECT_FALSE(request_peer_context_.received_response); | 338 EXPECT_FALSE(request_peer_context_.received_response); |
| 327 EXPECT_FALSE(request_peer_context_.complete); | 339 EXPECT_FALSE(request_peer_context_.complete); |
| 328 | 340 |
| 329 base::RunLoop().RunUntilIdle(); | 341 base::RunLoop().RunUntilIdle(); |
| 330 EXPECT_TRUE(request_peer_context_.received_response); | 342 EXPECT_TRUE(request_peer_context_.received_response); |
| 331 EXPECT_TRUE(request_peer_context_.complete); | 343 EXPECT_TRUE(request_peer_context_.complete); |
| 332 } | 344 } |
| 333 | 345 |
| 334 TEST_F(URLLoaderClientImplTest, DeferWithResponseBody) { | 346 TEST_F(URLLoaderClientImplTest, DeferWithResponseBody) { |
| 335 ResourceResponseHead response_head; | 347 ResourceResponseHead response_head; |
| 336 ResourceRequestCompletionStatus completion_status; | 348 ResourceRequestCompletionStatus completion_status; |
| 337 | 349 |
| 338 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 350 url_loader_client_->OnReceiveResponse( |
| 351 response_head, base::Optional<net::SSLInfo>(), nullptr); |
| 339 mojo::DataPipe data_pipe(DataPipeOptions()); | 352 mojo::DataPipe data_pipe(DataPipeOptions()); |
| 340 uint32_t size = 5; | 353 uint32_t size = 5; |
| 341 MojoResult result = | 354 MojoResult result = |
| 342 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, | 355 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, |
| 343 MOJO_WRITE_DATA_FLAG_NONE); | 356 MOJO_WRITE_DATA_FLAG_NONE); |
| 344 ASSERT_EQ(MOJO_RESULT_OK, result); | 357 ASSERT_EQ(MOJO_RESULT_OK, result); |
| 345 EXPECT_EQ(5u, size); | 358 EXPECT_EQ(5u, size); |
| 346 data_pipe.producer_handle.reset(); | 359 data_pipe.producer_handle.reset(); |
| 347 | 360 |
| 348 url_loader_client_->OnStartLoadingResponseBody( | 361 url_loader_client_->OnStartLoadingResponseBody( |
| (...skipping 21 matching lines...) Expand all Loading... |
| 370 EXPECT_TRUE(request_peer_context_.complete); | 383 EXPECT_TRUE(request_peer_context_.complete); |
| 371 EXPECT_EQ("hello", request_peer_context_.data); | 384 EXPECT_EQ("hello", request_peer_context_.data); |
| 372 } | 385 } |
| 373 | 386 |
| 374 // As "transfer size update" message is handled specially in the implementation, | 387 // As "transfer size update" message is handled specially in the implementation, |
| 375 // we have a separate test. | 388 // we have a separate test. |
| 376 TEST_F(URLLoaderClientImplTest, DeferWithTransferSizeUpdated) { | 389 TEST_F(URLLoaderClientImplTest, DeferWithTransferSizeUpdated) { |
| 377 ResourceResponseHead response_head; | 390 ResourceResponseHead response_head; |
| 378 ResourceRequestCompletionStatus completion_status; | 391 ResourceRequestCompletionStatus completion_status; |
| 379 | 392 |
| 380 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 393 url_loader_client_->OnReceiveResponse( |
| 394 response_head, base::Optional<net::SSLInfo>(), nullptr); |
| 381 mojo::DataPipe data_pipe(DataPipeOptions()); | 395 mojo::DataPipe data_pipe(DataPipeOptions()); |
| 382 uint32_t size = 5; | 396 uint32_t size = 5; |
| 383 MojoResult result = | 397 MojoResult result = |
| 384 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, | 398 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, |
| 385 MOJO_WRITE_DATA_FLAG_NONE); | 399 MOJO_WRITE_DATA_FLAG_NONE); |
| 386 ASSERT_EQ(MOJO_RESULT_OK, result); | 400 ASSERT_EQ(MOJO_RESULT_OK, result); |
| 387 EXPECT_EQ(5u, size); | 401 EXPECT_EQ(5u, size); |
| 388 data_pipe.producer_handle.reset(); | 402 data_pipe.producer_handle.reset(); |
| 389 | 403 |
| 390 url_loader_client_->OnStartLoadingResponseBody( | 404 url_loader_client_->OnStartLoadingResponseBody( |
| (...skipping 28 matching lines...) Expand all Loading... |
| 419 } | 433 } |
| 420 | 434 |
| 421 TEST_F(URLLoaderClientImplTest, SetDeferredDuringFlushingDeferredMessage) { | 435 TEST_F(URLLoaderClientImplTest, SetDeferredDuringFlushingDeferredMessage) { |
| 422 request_peer_context_.defer_on_redirect = true; | 436 request_peer_context_.defer_on_redirect = true; |
| 423 | 437 |
| 424 net::RedirectInfo redirect_info; | 438 net::RedirectInfo redirect_info; |
| 425 ResourceResponseHead response_head; | 439 ResourceResponseHead response_head; |
| 426 ResourceRequestCompletionStatus completion_status; | 440 ResourceRequestCompletionStatus completion_status; |
| 427 | 441 |
| 428 url_loader_client_->OnReceiveRedirect(redirect_info, response_head); | 442 url_loader_client_->OnReceiveRedirect(redirect_info, response_head); |
| 429 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 443 url_loader_client_->OnReceiveResponse( |
| 444 response_head, base::Optional<net::SSLInfo>(), nullptr); |
| 430 mojo::DataPipe data_pipe(DataPipeOptions()); | 445 mojo::DataPipe data_pipe(DataPipeOptions()); |
| 431 uint32_t size = 5; | 446 uint32_t size = 5; |
| 432 MojoResult result = | 447 MojoResult result = |
| 433 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, | 448 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, |
| 434 MOJO_WRITE_DATA_FLAG_NONE); | 449 MOJO_WRITE_DATA_FLAG_NONE); |
| 435 ASSERT_EQ(MOJO_RESULT_OK, result); | 450 ASSERT_EQ(MOJO_RESULT_OK, result); |
| 436 EXPECT_EQ(5u, size); | 451 EXPECT_EQ(5u, size); |
| 437 data_pipe.producer_handle.reset(); | 452 data_pipe.producer_handle.reset(); |
| 438 | 453 |
| 439 url_loader_client_->OnStartLoadingResponseBody( | 454 url_loader_client_->OnStartLoadingResponseBody( |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 481 EXPECT_FALSE(request_peer_context_.cancelled); | 496 EXPECT_FALSE(request_peer_context_.cancelled); |
| 482 } | 497 } |
| 483 | 498 |
| 484 TEST_F(URLLoaderClientImplTest, | 499 TEST_F(URLLoaderClientImplTest, |
| 485 SetDeferredDuringFlushingDeferredMessageOnTransferSizeUpdated) { | 500 SetDeferredDuringFlushingDeferredMessageOnTransferSizeUpdated) { |
| 486 request_peer_context_.defer_on_transfer_size_updated = true; | 501 request_peer_context_.defer_on_transfer_size_updated = true; |
| 487 | 502 |
| 488 ResourceResponseHead response_head; | 503 ResourceResponseHead response_head; |
| 489 ResourceRequestCompletionStatus completion_status; | 504 ResourceRequestCompletionStatus completion_status; |
| 490 | 505 |
| 491 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 506 url_loader_client_->OnReceiveResponse( |
| 507 response_head, base::Optional<net::SSLInfo>(), nullptr); |
| 492 | 508 |
| 493 url_loader_client_->OnTransferSizeUpdated(4); | 509 url_loader_client_->OnTransferSizeUpdated(4); |
| 494 url_loader_client_->OnComplete(completion_status); | 510 url_loader_client_->OnComplete(completion_status); |
| 495 | 511 |
| 496 EXPECT_FALSE(request_peer_context_.received_response); | 512 EXPECT_FALSE(request_peer_context_.received_response); |
| 497 EXPECT_FALSE(request_peer_context_.complete); | 513 EXPECT_FALSE(request_peer_context_.complete); |
| 498 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length); | 514 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length); |
| 499 | 515 |
| 500 dispatcher_->SetDefersLoading(request_id_, true); | 516 dispatcher_->SetDefersLoading(request_id_, true); |
| 501 | 517 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 517 | 533 |
| 518 dispatcher_->SetDefersLoading(request_id_, false); | 534 dispatcher_->SetDefersLoading(request_id_, false); |
| 519 base::RunLoop().RunUntilIdle(); | 535 base::RunLoop().RunUntilIdle(); |
| 520 EXPECT_TRUE(request_peer_context_.received_response); | 536 EXPECT_TRUE(request_peer_context_.received_response); |
| 521 EXPECT_TRUE(request_peer_context_.complete); | 537 EXPECT_TRUE(request_peer_context_.complete); |
| 522 EXPECT_EQ(4, request_peer_context_.total_encoded_data_length); | 538 EXPECT_EQ(4, request_peer_context_.total_encoded_data_length); |
| 523 EXPECT_FALSE(request_peer_context_.cancelled); | 539 EXPECT_FALSE(request_peer_context_.cancelled); |
| 524 } | 540 } |
| 525 | 541 |
| 526 } // namespace content | 542 } // namespace content |
| OLD | NEW |