| 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_response_body_consumer.h" | 5 #include "content/child/url_response_body_consumer.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/callback_forward.h" | 8 #include "base/callback_forward.h" |
| 9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 143 | 143 |
| 144 TEST_F(URLResponseBodyConsumerTest, ReceiveData) { | 144 TEST_F(URLResponseBodyConsumerTest, ReceiveData) { |
| 145 TestRequestPeer::Context context; | 145 TestRequestPeer::Context context; |
| 146 std::unique_ptr<ResourceRequest> request(CreateResourceRequest()); | 146 std::unique_ptr<ResourceRequest> request(CreateResourceRequest()); |
| 147 int request_id = SetUpRequestPeer(std::move(request), &context); | 147 int request_id = SetUpRequestPeer(std::move(request), &context); |
| 148 mojo::DataPipe data_pipe(CreateDataPipeOptions()); | 148 mojo::DataPipe data_pipe(CreateDataPipeOptions()); |
| 149 | 149 |
| 150 scoped_refptr<URLResponseBodyConsumer> consumer(new URLResponseBodyConsumer( | 150 scoped_refptr<URLResponseBodyConsumer> consumer(new URLResponseBodyConsumer( |
| 151 request_id, dispatcher_.get(), std::move(data_pipe.consumer_handle), | 151 request_id, dispatcher_.get(), std::move(data_pipe.consumer_handle), |
| 152 message_loop_.task_runner())); | 152 message_loop_.task_runner())); |
| 153 consumer->Start(message_loop_.task_runner().get()); | |
| 154 | 153 |
| 155 mojo::ScopedDataPipeProducerHandle writer = | 154 mojo::ScopedDataPipeProducerHandle writer = |
| 156 std::move(data_pipe.producer_handle); | 155 std::move(data_pipe.producer_handle); |
| 157 std::string buffer = "hello"; | 156 std::string buffer = "hello"; |
| 158 uint32_t size = buffer.size(); | 157 uint32_t size = buffer.size(); |
| 159 MojoResult result = | 158 MojoResult result = |
| 160 mojo::WriteDataRaw(writer.get(), buffer.c_str(), &size, kNone); | 159 mojo::WriteDataRaw(writer.get(), buffer.c_str(), &size, kNone); |
| 161 ASSERT_EQ(MOJO_RESULT_OK, result); | 160 ASSERT_EQ(MOJO_RESULT_OK, result); |
| 162 ASSERT_EQ(buffer.size(), size); | 161 ASSERT_EQ(buffer.size(), size); |
| 163 | 162 |
| 164 Run(&context); | 163 Run(&context); |
| 165 | 164 |
| 166 EXPECT_FALSE(context.complete); | 165 EXPECT_FALSE(context.complete); |
| 167 EXPECT_EQ("hello", context.data); | 166 EXPECT_EQ("hello", context.data); |
| 168 } | 167 } |
| 169 | 168 |
| 170 TEST_F(URLResponseBodyConsumerTest, OnCompleteThenClose) { | 169 TEST_F(URLResponseBodyConsumerTest, OnCompleteThenClose) { |
| 171 TestRequestPeer::Context context; | 170 TestRequestPeer::Context context; |
| 172 std::unique_ptr<ResourceRequest> request(CreateResourceRequest()); | 171 std::unique_ptr<ResourceRequest> request(CreateResourceRequest()); |
| 173 int request_id = SetUpRequestPeer(std::move(request), &context); | 172 int request_id = SetUpRequestPeer(std::move(request), &context); |
| 174 mojo::DataPipe data_pipe(CreateDataPipeOptions()); | 173 mojo::DataPipe data_pipe(CreateDataPipeOptions()); |
| 175 | 174 |
| 176 scoped_refptr<URLResponseBodyConsumer> consumer(new URLResponseBodyConsumer( | 175 scoped_refptr<URLResponseBodyConsumer> consumer(new URLResponseBodyConsumer( |
| 177 request_id, dispatcher_.get(), std::move(data_pipe.consumer_handle), | 176 request_id, dispatcher_.get(), std::move(data_pipe.consumer_handle), |
| 178 message_loop_.task_runner())); | 177 message_loop_.task_runner())); |
| 179 consumer->Start(message_loop_.task_runner().get()); | |
| 180 | 178 |
| 181 consumer->OnComplete(ResourceRequestCompletionStatus()); | 179 consumer->OnComplete(ResourceRequestCompletionStatus()); |
| 182 mojo::ScopedDataPipeProducerHandle writer = | 180 mojo::ScopedDataPipeProducerHandle writer = |
| 183 std::move(data_pipe.producer_handle); | 181 std::move(data_pipe.producer_handle); |
| 184 std::string buffer = "hello"; | 182 std::string buffer = "hello"; |
| 185 uint32_t size = buffer.size(); | 183 uint32_t size = buffer.size(); |
| 186 MojoResult result = | 184 MojoResult result = |
| 187 mojo::WriteDataRaw(writer.get(), buffer.c_str(), &size, kNone); | 185 mojo::WriteDataRaw(writer.get(), buffer.c_str(), &size, kNone); |
| 188 ASSERT_EQ(MOJO_RESULT_OK, result); | 186 ASSERT_EQ(MOJO_RESULT_OK, result); |
| 189 ASSERT_EQ(buffer.size(), size); | 187 ASSERT_EQ(buffer.size(), size); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 202 | 200 |
| 203 TEST_F(URLResponseBodyConsumerTest, CloseThenOnComplete) { | 201 TEST_F(URLResponseBodyConsumerTest, CloseThenOnComplete) { |
| 204 TestRequestPeer::Context context; | 202 TestRequestPeer::Context context; |
| 205 std::unique_ptr<ResourceRequest> request(CreateResourceRequest()); | 203 std::unique_ptr<ResourceRequest> request(CreateResourceRequest()); |
| 206 int request_id = SetUpRequestPeer(std::move(request), &context); | 204 int request_id = SetUpRequestPeer(std::move(request), &context); |
| 207 mojo::DataPipe data_pipe(CreateDataPipeOptions()); | 205 mojo::DataPipe data_pipe(CreateDataPipeOptions()); |
| 208 | 206 |
| 209 scoped_refptr<URLResponseBodyConsumer> consumer(new URLResponseBodyConsumer( | 207 scoped_refptr<URLResponseBodyConsumer> consumer(new URLResponseBodyConsumer( |
| 210 request_id, dispatcher_.get(), std::move(data_pipe.consumer_handle), | 208 request_id, dispatcher_.get(), std::move(data_pipe.consumer_handle), |
| 211 message_loop_.task_runner())); | 209 message_loop_.task_runner())); |
| 212 consumer->Start(message_loop_.task_runner().get()); | |
| 213 | 210 |
| 214 ResourceRequestCompletionStatus status; | 211 ResourceRequestCompletionStatus status; |
| 215 status.error_code = net::ERR_FAILED; | 212 status.error_code = net::ERR_FAILED; |
| 216 data_pipe.producer_handle.reset(); | 213 data_pipe.producer_handle.reset(); |
| 217 consumer->OnComplete(status); | 214 consumer->OnComplete(status); |
| 218 | 215 |
| 219 Run(&context); | 216 Run(&context); |
| 220 | 217 |
| 221 EXPECT_TRUE(context.complete); | 218 EXPECT_TRUE(context.complete); |
| 222 EXPECT_EQ(net::ERR_FAILED, context.error_code); | 219 EXPECT_EQ(net::ERR_FAILED, context.error_code); |
| 223 EXPECT_EQ("", context.data); | 220 EXPECT_EQ("", context.data); |
| 224 } | 221 } |
| 225 | 222 |
| 226 } // namespace | 223 } // namespace |
| 227 | 224 |
| 228 } // namespace content | 225 } // namespace content |
| OLD | NEW |