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