Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(30)

Side by Side Diff: android_webview/browser/net/android_stream_reader_url_request_job_unittest.cc

Issue 1552723002: Convert Pass()→std::move() in //android_webview (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "android_webview/browser/net/android_stream_reader_url_request_job.h"
6
7 #include <utility>
8
5 #include "android_webview/browser/input_stream.h" 9 #include "android_webview/browser/input_stream.h"
6 #include "android_webview/browser/net/android_stream_reader_url_request_job.h"
7 #include "android_webview/browser/net/aw_url_request_job_factory.h" 10 #include "android_webview/browser/net/aw_url_request_job_factory.h"
8 #include "android_webview/browser/net/input_stream_reader.h" 11 #include "android_webview/browser/net/input_stream_reader.h"
9 #include "base/format_macros.h" 12 #include "base/format_macros.h"
10 #include "base/memory/scoped_ptr.h" 13 #include "base/memory/scoped_ptr.h"
11 #include "base/run_loop.h" 14 #include "base/run_loop.h"
12 #include "base/single_thread_task_runner.h" 15 #include "base/single_thread_task_runner.h"
13 #include "base/strings/stringprintf.h" 16 #include "base/strings/stringprintf.h"
14 #include "base/thread_task_runner_handle.h" 17 #include "base/thread_task_runner_handle.h"
15 #include "net/base/request_priority.h" 18 #include "net/base/request_priority.h"
16 #include "net/http/http_byte_range.h" 19 #include "net/http/http_byte_range.h"
17 #include "net/http/http_response_headers.h" 20 #include "net/http/http_response_headers.h"
18 #include "net/url_request/url_request.h" 21 #include "net/url_request/url_request.h"
19 #include "net/url_request/url_request_job_factory_impl.h" 22 #include "net/url_request/url_request_job_factory_impl.h"
20 #include "net/url_request/url_request_test_util.h" 23 #include "net/url_request/url_request_test_util.h"
21
22 #include "testing/gmock/include/gmock/gmock.h" 24 #include "testing/gmock/include/gmock/gmock.h"
23 #include "testing/gtest/include/gtest/gtest.h" 25 #include "testing/gtest/include/gtest/gtest.h"
24 26
25 using net::TestDelegate; 27 using net::TestDelegate;
26 using net::TestJobInterceptor; 28 using net::TestJobInterceptor;
27 using net::TestNetworkDelegate; 29 using net::TestNetworkDelegate;
28 using net::TestURLRequestContext; 30 using net::TestURLRequestContext;
29 using net::URLRequest; 31 using net::URLRequest;
30 using testing::DoAll; 32 using testing::DoAll;
31 using testing::Ge; 33 using testing::Ge;
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 MockInputStreamReader() : InputStreamReader(new NotImplInputStream()) {} 149 MockInputStreamReader() : InputStreamReader(new NotImplInputStream()) {}
148 ~MockInputStreamReader() {} 150 ~MockInputStreamReader() {}
149 151
150 MOCK_METHOD1(Seek, int(const net::HttpByteRange& byte_range)); 152 MOCK_METHOD1(Seek, int(const net::HttpByteRange& byte_range));
151 MOCK_METHOD2(ReadRawData, int(net::IOBuffer* buffer, int buffer_size)); 153 MOCK_METHOD2(ReadRawData, int(net::IOBuffer* buffer, int buffer_size));
152 }; 154 };
153 155
154 156
155 class TestStreamReaderJob : public AndroidStreamReaderURLRequestJob { 157 class TestStreamReaderJob : public AndroidStreamReaderURLRequestJob {
156 public: 158 public:
157 TestStreamReaderJob( 159 TestStreamReaderJob(net::URLRequest* request,
158 net::URLRequest* request, 160 net::NetworkDelegate* network_delegate,
159 net::NetworkDelegate* network_delegate, 161 scoped_ptr<Delegate> delegate,
160 scoped_ptr<Delegate> delegate, 162 scoped_ptr<InputStreamReader> stream_reader)
161 scoped_ptr<InputStreamReader> stream_reader)
162 : AndroidStreamReaderURLRequestJob(request, 163 : AndroidStreamReaderURLRequestJob(request,
163 network_delegate, 164 network_delegate,
164 delegate.Pass()), 165 std::move(delegate)),
165 stream_reader_(stream_reader.Pass()) { 166 stream_reader_(std::move(stream_reader)) {
166 task_runner_ = base::ThreadTaskRunnerHandle::Get(); 167 task_runner_ = base::ThreadTaskRunnerHandle::Get();
167 } 168 }
168 169
169 ~TestStreamReaderJob() override {} 170 ~TestStreamReaderJob() override {}
170 171
171 scoped_ptr<InputStreamReader> CreateStreamReader( 172 scoped_ptr<InputStreamReader> CreateStreamReader(
172 InputStream* stream) override { 173 InputStream* stream) override {
173 return stream_reader_.Pass(); 174 return std::move(stream_reader_);
174 } 175 }
175 176
176 protected: 177 protected:
177 base::TaskRunner* GetWorkerThreadRunner() override { 178 base::TaskRunner* GetWorkerThreadRunner() override {
178 return task_runner_.get(); 179 return task_runner_.get();
179 } 180 }
180 181
181 scoped_ptr<InputStreamReader> stream_reader_; 182 scoped_ptr<InputStreamReader> stream_reader_;
182 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; 183 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
183 }; 184 };
(...skipping 17 matching lines...) Expand all
201 202
202 void SetRange(net::URLRequest* req, int first_byte, int last_byte) { 203 void SetRange(net::URLRequest* req, int first_byte, int last_byte) {
203 net::HttpRequestHeaders headers; 204 net::HttpRequestHeaders headers;
204 headers.SetHeader(net::HttpRequestHeaders::kRange, 205 headers.SetHeader(net::HttpRequestHeaders::kRange,
205 net::HttpByteRange::Bounded( 206 net::HttpByteRange::Bounded(
206 first_byte, last_byte).GetHeaderValue()); 207 first_byte, last_byte).GetHeaderValue());
207 req->SetExtraRequestHeaders(headers); 208 req->SetExtraRequestHeaders(headers);
208 } 209 }
209 210
210 void SetUpTestJob(scoped_ptr<InputStreamReader> stream_reader) { 211 void SetUpTestJob(scoped_ptr<InputStreamReader> stream_reader) {
211 SetUpTestJob(stream_reader.Pass(), 212 SetUpTestJob(std::move(stream_reader),
212 make_scoped_ptr(new StreamReaderDelegate())); 213 make_scoped_ptr(new StreamReaderDelegate()));
213 } 214 }
214 215
215 void SetUpTestJob(scoped_ptr<InputStreamReader> stream_reader, 216 void SetUpTestJob(scoped_ptr<InputStreamReader> stream_reader,
216 scoped_ptr<AndroidStreamReaderURLRequestJob::Delegate> 217 scoped_ptr<AndroidStreamReaderURLRequestJob::Delegate>
217 stream_reader_delegate) { 218 stream_reader_delegate) {
218 scoped_ptr<TestStreamReaderJob> test_stream_reader_job( 219 scoped_ptr<TestStreamReaderJob> test_stream_reader_job(
219 new TestStreamReaderJob(req_.get(), &network_delegate_, 220 new TestStreamReaderJob(req_.get(), &network_delegate_,
220 stream_reader_delegate.Pass(), 221 std::move(stream_reader_delegate),
221 stream_reader.Pass())); 222 std::move(stream_reader)));
222 // The Interceptor is owned by the |factory_|. 223 // The Interceptor is owned by the |factory_|.
223 scoped_ptr<TestJobInterceptor> protocol_handler(new TestJobInterceptor); 224 scoped_ptr<TestJobInterceptor> protocol_handler(new TestJobInterceptor);
224 protocol_handler->set_main_intercept_job(std::move(test_stream_reader_job)); 225 protocol_handler->set_main_intercept_job(std::move(test_stream_reader_job));
225 bool set_protocol = 226 bool set_protocol =
226 factory_.SetProtocolHandler("content", std::move(protocol_handler)); 227 factory_.SetProtocolHandler("content", std::move(protocol_handler));
227 DCHECK(set_protocol); 228 DCHECK(set_protocol);
228 } 229 }
229 230
230 base::MessageLoopForIO loop_; 231 base::MessageLoopForIO loop_;
231 TestURLRequestContext context_; 232 TestURLRequestContext context_;
232 android_webview::AwURLRequestJobFactory factory_; 233 android_webview::AwURLRequestJobFactory factory_;
233 TestDelegate url_request_delegate_; 234 TestDelegate url_request_delegate_;
234 TestNetworkDelegate network_delegate_; 235 TestNetworkDelegate network_delegate_;
235 scoped_ptr<URLRequest> req_; 236 scoped_ptr<URLRequest> req_;
236 }; 237 };
237 238
238 TEST_F(AndroidStreamReaderURLRequestJobTest, ReadEmptyStream) { 239 TEST_F(AndroidStreamReaderURLRequestJobTest, ReadEmptyStream) {
239 scoped_ptr<StrictMock<MockInputStreamReader> > stream_reader( 240 scoped_ptr<StrictMock<MockInputStreamReader> > stream_reader(
240 new StrictMock<MockInputStreamReader>()); 241 new StrictMock<MockInputStreamReader>());
241 { 242 {
242 InSequence s; 243 InSequence s;
243 EXPECT_CALL(*stream_reader, Seek(_)) 244 EXPECT_CALL(*stream_reader, Seek(_))
244 .WillOnce(Return(0)); 245 .WillOnce(Return(0));
245 EXPECT_CALL(*stream_reader, ReadRawData(NotNull(), Gt(0))) 246 EXPECT_CALL(*stream_reader, ReadRawData(NotNull(), Gt(0)))
246 .WillOnce(Return(0)); 247 .WillOnce(Return(0));
247 } 248 }
248 249
249 SetUpTestJob(stream_reader.Pass()); 250 SetUpTestJob(std::move(stream_reader));
250 251
251 req_->Start(); 252 req_->Start();
252 253
253 // The TestDelegate will quit the message loop on request completion. 254 // The TestDelegate will quit the message loop on request completion.
254 base::MessageLoop::current()->Run(); 255 base::MessageLoop::current()->Run();
255 256
256 EXPECT_FALSE(url_request_delegate_.request_failed()); 257 EXPECT_FALSE(url_request_delegate_.request_failed());
257 EXPECT_EQ(1, network_delegate_.completed_requests()); 258 EXPECT_EQ(1, network_delegate_.completed_requests());
258 EXPECT_EQ(0, network_delegate_.error_count()); 259 EXPECT_EQ(0, network_delegate_.error_count());
259 EXPECT_EQ(200, req_->GetResponseCode()); 260 EXPECT_EQ(200, req_->GetResponseCode());
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 EXPECT_CALL(*stream_reader, Seek(_)) 315 EXPECT_CALL(*stream_reader, Seek(_))
315 .WillOnce(Return(bytes_available)); 316 .WillOnce(Return(bytes_available));
316 EXPECT_CALL(*stream_reader, ReadRawData(NotNull(), Ge(bytes_to_read))) 317 EXPECT_CALL(*stream_reader, ReadRawData(NotNull(), Ge(bytes_to_read)))
317 .WillOnce(Return(bytes_to_read/2)); 318 .WillOnce(Return(bytes_to_read/2));
318 EXPECT_CALL(*stream_reader, ReadRawData(NotNull(), Ge(bytes_to_read))) 319 EXPECT_CALL(*stream_reader, ReadRawData(NotNull(), Ge(bytes_to_read)))
319 .WillOnce(Return(bytes_to_read/2)); 320 .WillOnce(Return(bytes_to_read/2));
320 EXPECT_CALL(*stream_reader, ReadRawData(NotNull(), Ge(bytes_to_read))) 321 EXPECT_CALL(*stream_reader, ReadRawData(NotNull(), Ge(bytes_to_read)))
321 .WillOnce(Return(0)); 322 .WillOnce(Return(0));
322 } 323 }
323 324
324 SetUpTestJob(stream_reader.Pass()); 325 SetUpTestJob(std::move(stream_reader));
325 326
326 SetRange(req_.get(), offset, bytes_available); 327 SetRange(req_.get(), offset, bytes_available);
327 req_->Start(); 328 req_->Start();
328 329
329 base::MessageLoop::current()->Run(); 330 base::MessageLoop::current()->Run();
330 331
331 EXPECT_FALSE(url_request_delegate_.request_failed()); 332 EXPECT_FALSE(url_request_delegate_.request_failed());
332 EXPECT_EQ(bytes_to_read, url_request_delegate_.bytes_received()); 333 EXPECT_EQ(bytes_to_read, url_request_delegate_.bytes_received());
333 EXPECT_EQ(1, network_delegate_.completed_requests()); 334 EXPECT_EQ(1, network_delegate_.completed_requests());
334 EXPECT_EQ(0, network_delegate_.error_count()); 335 EXPECT_EQ(0, network_delegate_.error_count());
(...skipping 10 matching lines...) Expand all
345 { 346 {
346 InSequence s; 347 InSequence s;
347 EXPECT_CALL(*stream_reader, Seek(_)) 348 EXPECT_CALL(*stream_reader, Seek(_))
348 .WillOnce(Return(bytes_available_reported)); 349 .WillOnce(Return(bytes_available_reported));
349 EXPECT_CALL(*stream_reader, ReadRawData(NotNull(), Ge(bytes_to_read))) 350 EXPECT_CALL(*stream_reader, ReadRawData(NotNull(), Ge(bytes_to_read)))
350 .WillOnce(Return(bytes_available)); 351 .WillOnce(Return(bytes_available));
351 EXPECT_CALL(*stream_reader, ReadRawData(NotNull(), Ge(bytes_to_read))) 352 EXPECT_CALL(*stream_reader, ReadRawData(NotNull(), Ge(bytes_to_read)))
352 .WillOnce(Return(0)); 353 .WillOnce(Return(0));
353 } 354 }
354 355
355 SetUpTestJob(stream_reader.Pass()); 356 SetUpTestJob(std::move(stream_reader));
356 357
357 SetRange(req_.get(), offset, bytes_available_reported); 358 SetRange(req_.get(), offset, bytes_available_reported);
358 req_->Start(); 359 req_->Start();
359 360
360 base::MessageLoop::current()->Run(); 361 base::MessageLoop::current()->Run();
361 362
362 EXPECT_FALSE(url_request_delegate_.request_failed()); 363 EXPECT_FALSE(url_request_delegate_.request_failed());
363 EXPECT_EQ(bytes_to_read, url_request_delegate_.bytes_received()); 364 EXPECT_EQ(bytes_to_read, url_request_delegate_.bytes_received());
364 EXPECT_EQ(1, network_delegate_.completed_requests()); 365 EXPECT_EQ(1, network_delegate_.completed_requests());
365 EXPECT_EQ(0, network_delegate_.error_count()); 366 EXPECT_EQ(0, network_delegate_.error_count());
366 } 367 }
367 368
368 TEST_F(AndroidStreamReaderURLRequestJobTest, DeleteJobMidWaySeek) { 369 TEST_F(AndroidStreamReaderURLRequestJobTest, DeleteJobMidWaySeek) {
369 const int offset = 20; 370 const int offset = 20;
370 const int bytes_available = 128; 371 const int bytes_available = 128;
371 base::RunLoop loop; 372 base::RunLoop loop;
372 scoped_ptr<StrictMock<MockInputStreamReader> > stream_reader( 373 scoped_ptr<StrictMock<MockInputStreamReader> > stream_reader(
373 new StrictMock<MockInputStreamReader>()); 374 new StrictMock<MockInputStreamReader>());
374 EXPECT_CALL(*stream_reader, Seek(_)) 375 EXPECT_CALL(*stream_reader, Seek(_))
375 .WillOnce(DoAll(InvokeWithoutArgs(&loop, &base::RunLoop::Quit), 376 .WillOnce(DoAll(InvokeWithoutArgs(&loop, &base::RunLoop::Quit),
376 Return(bytes_available))); 377 Return(bytes_available)));
377 ON_CALL(*stream_reader, ReadRawData(_, _)) 378 ON_CALL(*stream_reader, ReadRawData(_, _))
378 .WillByDefault(Return(0)); 379 .WillByDefault(Return(0));
379 380
380 SetUpTestJob(stream_reader.Pass()); 381 SetUpTestJob(std::move(stream_reader));
381 382
382 SetRange(req_.get(), offset, bytes_available); 383 SetRange(req_.get(), offset, bytes_available);
383 req_->Start(); 384 req_->Start();
384 385
385 loop.Run(); 386 loop.Run();
386 387
387 EXPECT_EQ(0, network_delegate_.completed_requests()); 388 EXPECT_EQ(0, network_delegate_.completed_requests());
388 req_->Cancel(); 389 req_->Cancel();
389 EXPECT_EQ(1, network_delegate_.completed_requests()); 390 EXPECT_EQ(1, network_delegate_.completed_requests());
390 } 391 }
391 392
392 TEST_F(AndroidStreamReaderURLRequestJobTest, DeleteJobMidWayRead) { 393 TEST_F(AndroidStreamReaderURLRequestJobTest, DeleteJobMidWayRead) {
393 const int offset = 20; 394 const int offset = 20;
394 const int bytes_available = 128; 395 const int bytes_available = 128;
395 base::RunLoop loop; 396 base::RunLoop loop;
396 scoped_ptr<StrictMock<MockInputStreamReader> > stream_reader( 397 scoped_ptr<StrictMock<MockInputStreamReader> > stream_reader(
397 new StrictMock<MockInputStreamReader>()); 398 new StrictMock<MockInputStreamReader>());
398 net::CompletionCallback read_completion_callback; 399 net::CompletionCallback read_completion_callback;
399 EXPECT_CALL(*stream_reader, Seek(_)) 400 EXPECT_CALL(*stream_reader, Seek(_))
400 .WillOnce(Return(bytes_available)); 401 .WillOnce(Return(bytes_available));
401 EXPECT_CALL(*stream_reader, ReadRawData(_, _)) 402 EXPECT_CALL(*stream_reader, ReadRawData(_, _))
402 .WillOnce(DoAll(InvokeWithoutArgs(&loop, &base::RunLoop::Quit), 403 .WillOnce(DoAll(InvokeWithoutArgs(&loop, &base::RunLoop::Quit),
403 Return(bytes_available))); 404 Return(bytes_available)));
404 405
405 SetUpTestJob(stream_reader.Pass()); 406 SetUpTestJob(std::move(stream_reader));
406 407
407 SetRange(req_.get(), offset, bytes_available); 408 SetRange(req_.get(), offset, bytes_available);
408 req_->Start(); 409 req_->Start();
409 410
410 loop.Run(); 411 loop.Run();
411 412
412 EXPECT_EQ(0, network_delegate_.completed_requests()); 413 EXPECT_EQ(0, network_delegate_.completed_requests());
413 req_->Cancel(); 414 req_->Cancel();
414 EXPECT_EQ(1, network_delegate_.completed_requests()); 415 EXPECT_EQ(1, network_delegate_.completed_requests());
415 } 416 }
416 417
417 } // namespace android_webview 418 } // namespace android_webview
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698