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

Side by Side Diff: chrome/browser/chromeos/drive/drive_url_request_job_unittest.cc

Issue 17315016: Use base::RunLoop instead of directly using MessageLoop in Drive related code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 6 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/browser/chromeos/drive/drive_url_request_job.h" 5 #include "chrome/browser/chromeos/drive/drive_url_request_job.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/run_loop.h"
10 #include "base/sequenced_task_runner.h" 11 #include "base/sequenced_task_runner.h"
11 #include "base/threading/sequenced_worker_pool.h" 12 #include "base/threading/sequenced_worker_pool.h"
12 #include "base/threading/thread.h" 13 #include "base/threading/thread.h"
13 #include "chrome/browser/chromeos/drive/drive_file_stream_reader.h" 14 #include "chrome/browser/chromeos/drive/drive_file_stream_reader.h"
14 #include "chrome/browser/chromeos/drive/fake_file_system.h" 15 #include "chrome/browser/chromeos/drive/fake_file_system.h"
15 #include "chrome/browser/chromeos/drive/file_system_util.h" 16 #include "chrome/browser/chromeos/drive/file_system_util.h"
16 #include "chrome/browser/chromeos/drive/test_util.h" 17 #include "chrome/browser/chromeos/drive/test_util.h"
17 #include "chrome/browser/drive/fake_drive_service.h" 18 #include "chrome/browser/drive/fake_drive_service.h"
18 #include "chrome/browser/google_apis/task_util.h" 19 #include "chrome/browser/google_apis/task_util.h"
19 #include "chrome/browser/google_apis/test_util.h" 20 #include "chrome/browser/google_apis/test_util.h"
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 new base::Thread("ReadDriveFileSync")); 150 new base::Thread("ReadDriveFileSync"));
150 if (!worker_thread->Start()) 151 if (!worker_thread->Start())
151 return false; 152 return false;
152 153
153 scoped_ptr<DriveFileStreamReader> reader(new DriveFileStreamReader( 154 scoped_ptr<DriveFileStreamReader> reader(new DriveFileStreamReader(
154 base::Bind(&DriveURLRequestJobTest::GetFileSystem, 155 base::Bind(&DriveURLRequestJobTest::GetFileSystem,
155 base::Unretained(this)), 156 base::Unretained(this)),
156 worker_thread->message_loop_proxy())); 157 worker_thread->message_loop_proxy()));
157 int error = net::ERR_FAILED; 158 int error = net::ERR_FAILED;
158 scoped_ptr<ResourceEntry> entry; 159 scoped_ptr<ResourceEntry> entry;
159 reader->Initialize( 160 {
160 file_path, 161 base::RunLoop run_loop;
161 net::HttpByteRange(), 162 reader->Initialize(
162 google_apis::CreateComposedCallback( 163 file_path,
163 base::Bind(&google_apis::test_util::RunAndQuit), 164 net::HttpByteRange(),
164 google_apis::test_util::CreateCopyResultCallback( 165 google_apis::test_util::CreateQuitCallback(
165 &error, &entry))); 166 &run_loop,
166 base::MessageLoop::current()->Run(); 167 google_apis::test_util::CreateCopyResultCallback(
168 &error, &entry)));
169 run_loop.Run();
170 }
167 if (error != net::OK || !entry) 171 if (error != net::OK || !entry)
168 return false; 172 return false;
169 173
170 // Read data from the reader. 174 // Read data from the reader.
171 std::string content; 175 std::string content;
172 if (test_util::ReadAllData(reader.get(), &content) != net::OK) 176 if (test_util::ReadAllData(reader.get(), &content) != net::OK)
173 return false; 177 return false;
174 178
175 if (static_cast<size_t>(entry->file_info().size()) != content.size()) 179 if (static_cast<size_t>(entry->file_info().size()) != content.size())
176 return false; 180 return false;
(...skipping 13 matching lines...) Expand all
190 scoped_ptr<TestDelegate> test_delegate_; 194 scoped_ptr<TestDelegate> test_delegate_;
191 }; 195 };
192 196
193 TEST_F(DriveURLRequestJobTest, NonGetMethod) { 197 TEST_F(DriveURLRequestJobTest, NonGetMethod) {
194 net::URLRequest request( 198 net::URLRequest request(
195 GURL("drive:drive/root/File 1.txt"), test_delegate_.get(), 199 GURL("drive:drive/root/File 1.txt"), test_delegate_.get(),
196 url_request_context_.get(), test_network_delegate_.get()); 200 url_request_context_.get(), test_network_delegate_.get());
197 request.set_method("POST"); // Set non "GET" method. 201 request.set_method("POST"); // Set non "GET" method.
198 request.Start(); 202 request.Start();
199 203
200 base::MessageLoop::current()->Run(); 204 base::RunLoop().Run();
201 205
202 EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); 206 EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status());
203 EXPECT_EQ(net::ERR_METHOD_NOT_SUPPORTED, request.status().error()); 207 EXPECT_EQ(net::ERR_METHOD_NOT_SUPPORTED, request.status().error());
204 } 208 }
205 209
206 TEST_F(DriveURLRequestJobTest, RegularFile) { 210 TEST_F(DriveURLRequestJobTest, RegularFile) {
207 const GURL kTestUrl("drive:drive/root/File 1.txt"); 211 const GURL kTestUrl("drive:drive/root/File 1.txt");
208 const base::FilePath kTestFilePath("drive/root/File 1.txt"); 212 const base::FilePath kTestFilePath("drive/root/File 1.txt");
209 213
210 // For the first time, the file should be fetched from the server. 214 // For the first time, the file should be fetched from the server.
211 { 215 {
212 net::URLRequest request( 216 net::URLRequest request(
213 kTestUrl, test_delegate_.get(), 217 kTestUrl, test_delegate_.get(),
214 url_request_context_.get(), test_network_delegate_.get()); 218 url_request_context_.get(), test_network_delegate_.get());
215 request.Start(); 219 request.Start();
216 220
217 base::MessageLoop::current()->Run(); 221 base::RunLoop().Run();
218 222
219 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); 223 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status());
220 // It looks weird, but the mime type for the "File 1.txt" is "audio/mpeg" 224 // It looks weird, but the mime type for the "File 1.txt" is "audio/mpeg"
221 // on the server. 225 // on the server.
222 std::string mime_type; 226 std::string mime_type;
223 request.GetMimeType(&mime_type); 227 request.GetMimeType(&mime_type);
224 EXPECT_EQ("audio/mpeg", mime_type); 228 EXPECT_EQ("audio/mpeg", mime_type);
225 229
226 // Reading file must be done after |request| runs, otherwise 230 // Reading file must be done after |request| runs, otherwise
227 // it'll create a local cache file, and we cannot test correctly. 231 // it'll create a local cache file, and we cannot test correctly.
228 std::string expected_data; 232 std::string expected_data;
229 ASSERT_TRUE(ReadDriveFileSync(kTestFilePath, &expected_data)); 233 ASSERT_TRUE(ReadDriveFileSync(kTestFilePath, &expected_data));
230 EXPECT_EQ(expected_data, test_delegate_->data_received()); 234 EXPECT_EQ(expected_data, test_delegate_->data_received());
231 } 235 }
232 236
233 // For the second time, the locally cached file should be used. 237 // For the second time, the locally cached file should be used.
234 // The caching emulation is done by FakeFileSystem. 238 // The caching emulation is done by FakeFileSystem.
235 { 239 {
236 test_delegate_.reset(new TestDelegate); 240 test_delegate_.reset(new TestDelegate);
237 net::URLRequest request( 241 net::URLRequest request(
238 GURL("drive:drive/root/File 1.txt"), test_delegate_.get(), 242 GURL("drive:drive/root/File 1.txt"), test_delegate_.get(),
239 url_request_context_.get(), test_network_delegate_.get()); 243 url_request_context_.get(), test_network_delegate_.get());
240 request.Start(); 244 request.Start();
241 245
242 base::MessageLoop::current()->Run(); 246 base::RunLoop().Run();
243 247
244 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); 248 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status());
245 std::string mime_type; 249 std::string mime_type;
246 request.GetMimeType(&mime_type); 250 request.GetMimeType(&mime_type);
247 EXPECT_EQ("audio/mpeg", mime_type); 251 EXPECT_EQ("audio/mpeg", mime_type);
248 252
249 std::string expected_data; 253 std::string expected_data;
250 ASSERT_TRUE(ReadDriveFileSync(kTestFilePath, &expected_data)); 254 ASSERT_TRUE(ReadDriveFileSync(kTestFilePath, &expected_data));
251 EXPECT_EQ(expected_data, test_delegate_->data_received()); 255 EXPECT_EQ(expected_data, test_delegate_->data_received());
252 } 256 }
253 } 257 }
254 258
255 TEST_F(DriveURLRequestJobTest, HostedDocument) { 259 TEST_F(DriveURLRequestJobTest, HostedDocument) {
256 // Open a gdoc file. 260 // Open a gdoc file.
257 test_delegate_->set_quit_on_redirect(true); 261 test_delegate_->set_quit_on_redirect(true);
258 net::URLRequest request( 262 net::URLRequest request(
259 GURL("drive:drive/root/Document 1 excludeDir-test.gdoc"), 263 GURL("drive:drive/root/Document 1 excludeDir-test.gdoc"),
260 test_delegate_.get(), 264 test_delegate_.get(),
261 url_request_context_.get(), test_network_delegate_.get()); 265 url_request_context_.get(), test_network_delegate_.get());
262 request.Start(); 266 request.Start();
263 267
264 base::MessageLoop::current()->Run(); 268 base::RunLoop().Run();
265 269
266 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); 270 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status());
267 // Make sure that a hosted document triggers redirection. 271 // Make sure that a hosted document triggers redirection.
268 EXPECT_TRUE(request.is_redirecting()); 272 EXPECT_TRUE(request.is_redirecting());
269 EXPECT_EQ(GURL("https://3_document_alternate_link"), 273 EXPECT_EQ(GURL("https://3_document_alternate_link"),
270 test_delegate_->redirect_url()); 274 test_delegate_->redirect_url());
271 } 275 }
272 276
273 TEST_F(DriveURLRequestJobTest, RootDirectory) { 277 TEST_F(DriveURLRequestJobTest, RootDirectory) {
274 net::URLRequest request( 278 net::URLRequest request(
275 GURL("drive:drive/root"), test_delegate_.get(), 279 GURL("drive:drive/root"), test_delegate_.get(),
276 url_request_context_.get(), test_network_delegate_.get()); 280 url_request_context_.get(), test_network_delegate_.get());
277 request.Start(); 281 request.Start();
278 282
279 base::MessageLoop::current()->Run(); 283 base::RunLoop().Run();
280 284
281 EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); 285 EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status());
282 EXPECT_EQ(net::ERR_FAILED, request.status().error()); 286 EXPECT_EQ(net::ERR_FAILED, request.status().error());
283 } 287 }
284 288
285 TEST_F(DriveURLRequestJobTest, Directory) { 289 TEST_F(DriveURLRequestJobTest, Directory) {
286 net::URLRequest request( 290 net::URLRequest request(
287 GURL("drive:drive/root/Directory 1"), test_delegate_.get(), 291 GURL("drive:drive/root/Directory 1"), test_delegate_.get(),
288 url_request_context_.get(), test_network_delegate_.get()); 292 url_request_context_.get(), test_network_delegate_.get());
289 request.Start(); 293 request.Start();
290 294
291 base::MessageLoop::current()->Run(); 295 base::RunLoop().Run();
292 296
293 EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); 297 EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status());
294 EXPECT_EQ(net::ERR_FAILED, request.status().error()); 298 EXPECT_EQ(net::ERR_FAILED, request.status().error());
295 } 299 }
296 300
297 TEST_F(DriveURLRequestJobTest, NonExistingFile) { 301 TEST_F(DriveURLRequestJobTest, NonExistingFile) {
298 net::URLRequest request( 302 net::URLRequest request(
299 GURL("drive:drive/root/non-existing-file.txt"), test_delegate_.get(), 303 GURL("drive:drive/root/non-existing-file.txt"), test_delegate_.get(),
300 url_request_context_.get(), test_network_delegate_.get()); 304 url_request_context_.get(), test_network_delegate_.get());
301 request.Start(); 305 request.Start();
302 306
303 base::MessageLoop::current()->Run(); 307 base::RunLoop().Run();
304 308
305 EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); 309 EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status());
306 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, request.status().error()); 310 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, request.status().error());
307 } 311 }
308 312
309 TEST_F(DriveURLRequestJobTest, WrongFormat) { 313 TEST_F(DriveURLRequestJobTest, WrongFormat) {
310 net::URLRequest request( 314 net::URLRequest request(
311 GURL("drive:"), test_delegate_.get(), 315 GURL("drive:"), test_delegate_.get(),
312 url_request_context_.get(), test_network_delegate_.get()); 316 url_request_context_.get(), test_network_delegate_.get());
313 request.Start(); 317 request.Start();
314 318
315 base::MessageLoop::current()->Run(); 319 base::RunLoop().Run();
316 320
317 EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); 321 EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status());
318 EXPECT_EQ(net::ERR_INVALID_URL, request.status().error()); 322 EXPECT_EQ(net::ERR_INVALID_URL, request.status().error());
319 } 323 }
320 324
321 TEST_F(DriveURLRequestJobTest, Cancel) { 325 TEST_F(DriveURLRequestJobTest, Cancel) {
322 net::URLRequest request( 326 net::URLRequest request(
323 GURL("drive:drive/root/File 1.txt"), test_delegate_.get(), 327 GURL("drive:drive/root/File 1.txt"), test_delegate_.get(),
324 url_request_context_.get(), test_network_delegate_.get()); 328 url_request_context_.get(), test_network_delegate_.get());
325 329
326 // Start the request, and cancel it immediately after it. 330 // Start the request, and cancel it immediately after it.
327 request.Start(); 331 request.Start();
328 request.Cancel(); 332 request.Cancel();
329 333
330 base::MessageLoop::current()->Run(); 334 base::RunLoop().Run();
331 335
332 EXPECT_EQ(net::URLRequestStatus::CANCELED, request.status().status()); 336 EXPECT_EQ(net::URLRequestStatus::CANCELED, request.status().status());
333 } 337 }
334 338
335 TEST_F(DriveURLRequestJobTest, RangeHeader) { 339 TEST_F(DriveURLRequestJobTest, RangeHeader) {
336 const GURL kTestUrl("drive:drive/root/File 1.txt"); 340 const GURL kTestUrl("drive:drive/root/File 1.txt");
337 const base::FilePath kTestFilePath("drive/root/File 1.txt"); 341 const base::FilePath kTestFilePath("drive/root/File 1.txt");
338 342
339 net::URLRequest request( 343 net::URLRequest request(
340 kTestUrl, test_delegate_.get(), 344 kTestUrl, test_delegate_.get(),
341 url_request_context_.get(), test_network_delegate_.get()); 345 url_request_context_.get(), test_network_delegate_.get());
342 346
343 // Set range header. 347 // Set range header.
344 request.SetExtraRequestHeaderByName( 348 request.SetExtraRequestHeaderByName(
345 "Range", "bytes=3-5", false /* overwrite */); 349 "Range", "bytes=3-5", false /* overwrite */);
346 request.Start(); 350 request.Start();
347 351
348 base::MessageLoop::current()->Run(); 352 base::RunLoop().Run();
349 353
350 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); 354 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status());
351 355
352 // Reading file must be done after |request| runs, otherwise 356 // Reading file must be done after |request| runs, otherwise
353 // it'll create a local cache file, and we cannot test correctly. 357 // it'll create a local cache file, and we cannot test correctly.
354 std::string expected_data; 358 std::string expected_data;
355 ASSERT_TRUE(ReadDriveFileSync(kTestFilePath, &expected_data)); 359 ASSERT_TRUE(ReadDriveFileSync(kTestFilePath, &expected_data));
356 EXPECT_EQ(expected_data.substr(3, 3), test_delegate_->data_received()); 360 EXPECT_EQ(expected_data.substr(3, 3), test_delegate_->data_received());
357 } 361 }
358 362
359 TEST_F(DriveURLRequestJobTest, WrongRangeHeader) { 363 TEST_F(DriveURLRequestJobTest, WrongRangeHeader) {
360 const GURL kTestUrl("drive:drive/root/File 1.txt"); 364 const GURL kTestUrl("drive:drive/root/File 1.txt");
361 365
362 net::URLRequest request( 366 net::URLRequest request(
363 kTestUrl, test_delegate_.get(), 367 kTestUrl, test_delegate_.get(),
364 url_request_context_.get(), test_network_delegate_.get()); 368 url_request_context_.get(), test_network_delegate_.get());
365 369
366 // Set range header. 370 // Set range header.
367 request.SetExtraRequestHeaderByName( 371 request.SetExtraRequestHeaderByName(
368 "Range", "Wrong Range Header Value", false /* overwrite */); 372 "Range", "Wrong Range Header Value", false /* overwrite */);
369 request.Start(); 373 request.Start();
370 374
371 base::MessageLoop::current()->Run(); 375 base::RunLoop().Run();
372 376
373 EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); 377 EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status());
374 EXPECT_EQ(net::ERR_REQUEST_RANGE_NOT_SATISFIABLE, request.status().error()); 378 EXPECT_EQ(net::ERR_REQUEST_RANGE_NOT_SATISFIABLE, request.status().error());
375 } 379 }
376 380
377 } // namespace drive 381 } // namespace drive
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698