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

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

Issue 14314022: android_webview: Use base::MessageLoop. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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 | Annotate | Revision Log
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/input_stream.h" 5 #include "android_webview/browser/input_stream.h"
6 #include "android_webview/browser/net/android_stream_reader_url_request_job.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" 7 #include "android_webview/browser/net/aw_url_request_job_factory.h"
8 #include "android_webview/browser/net/input_stream_reader.h" 8 #include "android_webview/browser/net/input_stream_reader.h"
9 #include "base/format_macros.h" 9 #include "base/format_macros.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 virtual base::TaskRunner* GetWorkerThreadRunner() { 140 virtual base::TaskRunner* GetWorkerThreadRunner() {
141 return message_loop_proxy_.get(); 141 return message_loop_proxy_.get();
142 } 142 }
143 143
144 scoped_ptr<InputStreamReader> stream_reader_; 144 scoped_ptr<InputStreamReader> stream_reader_;
145 scoped_refptr<base::MessageLoopProxy> message_loop_proxy_; 145 scoped_refptr<base::MessageLoopProxy> message_loop_proxy_;
146 }; 146 };
147 147
148 class AndroidStreamReaderURLRequestJobTest : public Test { 148 class AndroidStreamReaderURLRequestJobTest : public Test {
149 public: 149 public:
150 AndroidStreamReaderURLRequestJobTest() 150 AndroidStreamReaderURLRequestJobTest() : loop_(base::MessageLoop::TYPE_IO) {}
151 : loop_(MessageLoop::TYPE_IO) { 151
152 }
153 protected: 152 protected:
154 virtual void SetUp() { 153 virtual void SetUp() {
155 context_.set_job_factory(&factory_); 154 context_.set_job_factory(&factory_);
156 context_.set_network_delegate(&network_delegate_); 155 context_.set_network_delegate(&network_delegate_);
157 req_.reset( 156 req_.reset(
158 new TestURLRequest(GURL("content://foo"), 157 new TestURLRequest(GURL("content://foo"),
159 &url_request_delegate_, 158 &url_request_delegate_,
160 &context_, 159 &context_,
161 &network_delegate_)); 160 &network_delegate_));
162 req_->set_method("GET"); 161 req_->set_method("GET");
(...skipping 28 matching lines...) Expand all
191 protocol_handler->set_main_intercept_job(test_stream_reader_job); 190 protocol_handler->set_main_intercept_job(test_stream_reader_job);
192 bool set_protocol = factory_.SetProtocolHandler("http", protocol_handler); 191 bool set_protocol = factory_.SetProtocolHandler("http", protocol_handler);
193 DCHECK(set_protocol); 192 DCHECK(set_protocol);
194 193
195 protocol_handler = new TestJobInterceptor; 194 protocol_handler = new TestJobInterceptor;
196 protocol_handler->set_main_intercept_job(test_stream_reader_job); 195 protocol_handler->set_main_intercept_job(test_stream_reader_job);
197 set_protocol = factory_.SetProtocolHandler("content", protocol_handler); 196 set_protocol = factory_.SetProtocolHandler("content", protocol_handler);
198 DCHECK(set_protocol); 197 DCHECK(set_protocol);
199 } 198 }
200 199
201 MessageLoop loop_; 200 base::MessageLoop loop_;
202 TestURLRequestContext context_; 201 TestURLRequestContext context_;
203 android_webview::AwURLRequestJobFactory factory_; 202 android_webview::AwURLRequestJobFactory factory_;
204 TestDelegate url_request_delegate_; 203 TestDelegate url_request_delegate_;
205 TestNetworkDelegate network_delegate_; 204 TestNetworkDelegate network_delegate_;
206 scoped_ptr<TestURLRequest> req_; 205 scoped_ptr<TestURLRequest> req_;
207 }; 206 };
208 207
209 TEST_F(AndroidStreamReaderURLRequestJobTest, ReadEmptyStream) { 208 TEST_F(AndroidStreamReaderURLRequestJobTest, ReadEmptyStream) {
210 scoped_ptr<StrictMock<MockInputStreamReader> > stream_reader( 209 scoped_ptr<StrictMock<MockInputStreamReader> > stream_reader(
211 new StrictMock<MockInputStreamReader>()); 210 new StrictMock<MockInputStreamReader>());
212 { 211 {
213 InSequence s; 212 InSequence s;
214 EXPECT_CALL(*stream_reader, Seek(_)) 213 EXPECT_CALL(*stream_reader, Seek(_))
215 .WillOnce(Return(0)); 214 .WillOnce(Return(0));
216 EXPECT_CALL(*stream_reader, ReadRawData(NotNull(), Gt(0))) 215 EXPECT_CALL(*stream_reader, ReadRawData(NotNull(), Gt(0)))
217 .WillOnce(Return(0)); 216 .WillOnce(Return(0));
218 } 217 }
219 218
220 SetUpTestJob(stream_reader.PassAs<InputStreamReader>()); 219 SetUpTestJob(stream_reader.PassAs<InputStreamReader>());
221 220
222 req_->Start(); 221 req_->Start();
223 222
224 // The TestDelegate will quit the message loop on request completion. 223 // The TestDelegate will quit the message loop on request completion.
225 MessageLoop::current()->Run(); 224 base::MessageLoop::current()->Run();
226 225
227 EXPECT_FALSE(url_request_delegate_.request_failed()); 226 EXPECT_FALSE(url_request_delegate_.request_failed());
228 EXPECT_EQ(1, network_delegate_.completed_requests()); 227 EXPECT_EQ(1, network_delegate_.completed_requests());
229 EXPECT_EQ(0, network_delegate_.error_count()); 228 EXPECT_EQ(0, network_delegate_.error_count());
230 EXPECT_EQ(200, req_->GetResponseCode()); 229 EXPECT_EQ(200, req_->GetResponseCode());
231 } 230 }
232 231
233 TEST_F(AndroidStreamReaderURLRequestJobTest, ReadWithNullStream) { 232 TEST_F(AndroidStreamReaderURLRequestJobTest, ReadWithNullStream) {
234 SetUpTestJob(scoped_ptr<InputStreamReader>(), 233 SetUpTestJob(scoped_ptr<InputStreamReader>(),
235 make_scoped_ptr(new NullStreamReaderDelegate()) 234 make_scoped_ptr(new NullStreamReaderDelegate())
236 .PassAs<AndroidStreamReaderURLRequestJob::Delegate>()); 235 .PassAs<AndroidStreamReaderURLRequestJob::Delegate>());
237 req_->Start(); 236 req_->Start();
238 237
239 // The TestDelegate will quit the message loop on request completion. 238 // The TestDelegate will quit the message loop on request completion.
240 MessageLoop::current()->Run(); 239 base::MessageLoop::current()->Run();
241 240
242 // The request_failed() method is named confusingly but all it checks is 241 // The request_failed() method is named confusingly but all it checks is
243 // whether the request got as far as calling NotifyHeadersComplete. 242 // whether the request got as far as calling NotifyHeadersComplete.
244 EXPECT_FALSE(url_request_delegate_.request_failed()); 243 EXPECT_FALSE(url_request_delegate_.request_failed());
245 EXPECT_EQ(1, network_delegate_.completed_requests()); 244 EXPECT_EQ(1, network_delegate_.completed_requests());
246 // A null input stream shouldn't result in an error. See crbug.com/180950. 245 // A null input stream shouldn't result in an error. See crbug.com/180950.
247 EXPECT_EQ(0, network_delegate_.error_count()); 246 EXPECT_EQ(0, network_delegate_.error_count());
248 EXPECT_EQ(404, req_->GetResponseCode()); 247 EXPECT_EQ(404, req_->GetResponseCode());
249 } 248 }
250 249
(...skipping 13 matching lines...) Expand all
264 .WillOnce(Return(bytes_to_read/2)); 263 .WillOnce(Return(bytes_to_read/2));
265 EXPECT_CALL(*stream_reader, ReadRawData(NotNull(), Ge(bytes_to_read))) 264 EXPECT_CALL(*stream_reader, ReadRawData(NotNull(), Ge(bytes_to_read)))
266 .WillOnce(Return(0)); 265 .WillOnce(Return(0));
267 } 266 }
268 267
269 SetUpTestJob(stream_reader.PassAs<InputStreamReader>()); 268 SetUpTestJob(stream_reader.PassAs<InputStreamReader>());
270 269
271 SetRange(req_.get(), offset, bytes_available); 270 SetRange(req_.get(), offset, bytes_available);
272 req_->Start(); 271 req_->Start();
273 272
274 MessageLoop::current()->Run(); 273 base::MessageLoop::current()->Run();
275 274
276 EXPECT_FALSE(url_request_delegate_.request_failed()); 275 EXPECT_FALSE(url_request_delegate_.request_failed());
277 EXPECT_EQ(bytes_to_read, url_request_delegate_.bytes_received()); 276 EXPECT_EQ(bytes_to_read, url_request_delegate_.bytes_received());
278 EXPECT_EQ(1, network_delegate_.completed_requests()); 277 EXPECT_EQ(1, network_delegate_.completed_requests());
279 EXPECT_EQ(0, network_delegate_.error_count()); 278 EXPECT_EQ(0, network_delegate_.error_count());
280 } 279 }
281 280
282 TEST_F(AndroidStreamReaderURLRequestJobTest, 281 TEST_F(AndroidStreamReaderURLRequestJobTest,
283 ReadStreamWithMoreAvailableThanActual) { 282 ReadStreamWithMoreAvailableThanActual) {
284 const int bytes_available_reported = 190; 283 const int bytes_available_reported = 190;
(...skipping 10 matching lines...) Expand all
295 .WillOnce(Return(bytes_available)); 294 .WillOnce(Return(bytes_available));
296 EXPECT_CALL(*stream_reader, ReadRawData(NotNull(), Ge(bytes_to_read))) 295 EXPECT_CALL(*stream_reader, ReadRawData(NotNull(), Ge(bytes_to_read)))
297 .WillOnce(Return(0)); 296 .WillOnce(Return(0));
298 } 297 }
299 298
300 SetUpTestJob(stream_reader.PassAs<InputStreamReader>()); 299 SetUpTestJob(stream_reader.PassAs<InputStreamReader>());
301 300
302 SetRange(req_.get(), offset, bytes_available_reported); 301 SetRange(req_.get(), offset, bytes_available_reported);
303 req_->Start(); 302 req_->Start();
304 303
305 MessageLoop::current()->Run(); 304 base::MessageLoop::current()->Run();
306 305
307 EXPECT_FALSE(url_request_delegate_.request_failed()); 306 EXPECT_FALSE(url_request_delegate_.request_failed());
308 EXPECT_EQ(bytes_to_read, url_request_delegate_.bytes_received()); 307 EXPECT_EQ(bytes_to_read, url_request_delegate_.bytes_received());
309 EXPECT_EQ(1, network_delegate_.completed_requests()); 308 EXPECT_EQ(1, network_delegate_.completed_requests());
310 EXPECT_EQ(0, network_delegate_.error_count()); 309 EXPECT_EQ(0, network_delegate_.error_count());
311 } 310 }
312 311
313 TEST_F(AndroidStreamReaderURLRequestJobTest, DeleteJobMidWaySeek) { 312 TEST_F(AndroidStreamReaderURLRequestJobTest, DeleteJobMidWaySeek) {
314 const int offset = 20; 313 const int offset = 20;
315 const int bytes_available = 128; 314 const int bytes_available = 128;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 350
352 SetRange(req_.get(), offset, bytes_available); 351 SetRange(req_.get(), offset, bytes_available);
353 req_->Start(); 352 req_->Start();
354 353
355 loop.Run(); 354 loop.Run();
356 355
357 EXPECT_EQ(0, network_delegate_.completed_requests()); 356 EXPECT_EQ(0, network_delegate_.completed_requests());
358 req_->Cancel(); 357 req_->Cancel();
359 EXPECT_EQ(1, network_delegate_.completed_requests()); 358 EXPECT_EQ(1, network_delegate_.completed_requests());
360 } 359 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698