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

Side by Side Diff: content/browser/appcache/appcache_storage_impl_unittest.cc

Issue 1159623009: content: Remove use of MessageLoopProxy and deprecated MessageLoop APIs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Test build fix. Created 5 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <stack> 5 #include <stack>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
11 #include "base/files/scoped_temp_dir.h" 11 #include "base/files/scoped_temp_dir.h"
12 #include "base/location.h"
12 #include "base/memory/scoped_ptr.h" 13 #include "base/memory/scoped_ptr.h"
13 #include "base/message_loop/message_loop.h" 14 #include "base/single_thread_task_runner.h"
14 #include "base/synchronization/waitable_event.h" 15 #include "base/synchronization/waitable_event.h"
16 #include "base/thread_task_runner_handle.h"
15 #include "base/threading/thread.h" 17 #include "base/threading/thread.h"
16 #include "content/browser/appcache/appcache.h" 18 #include "content/browser/appcache/appcache.h"
17 #include "content/browser/appcache/appcache_backend_impl.h" 19 #include "content/browser/appcache/appcache_backend_impl.h"
18 #include "content/browser/appcache/appcache_database.h" 20 #include "content/browser/appcache/appcache_database.h"
19 #include "content/browser/appcache/appcache_entry.h" 21 #include "content/browser/appcache/appcache_entry.h"
20 #include "content/browser/appcache/appcache_group.h" 22 #include "content/browser/appcache/appcache_group.h"
21 #include "content/browser/appcache/appcache_host.h" 23 #include "content/browser/appcache/appcache_host.h"
22 #include "content/browser/appcache/appcache_interceptor.h" 24 #include "content/browser/appcache/appcache_interceptor.h"
23 #include "content/browser/appcache/appcache_request_handler.h" 25 #include "content/browser/appcache/appcache_request_handler.h"
24 #include "content/browser/appcache/appcache_service_impl.h" 26 #include "content/browser/appcache/appcache_service_impl.h"
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 int64 found_group_id_; 264 int64 found_group_id_;
263 GURL found_manifest_url_; 265 GURL found_manifest_url_;
264 AppCacheStorageImplTest* test_; 266 AppCacheStorageImplTest* test_;
265 }; 267 };
266 268
267 class MockQuotaManager : public storage::QuotaManager { 269 class MockQuotaManager : public storage::QuotaManager {
268 public: 270 public:
269 MockQuotaManager() 271 MockQuotaManager()
270 : QuotaManager(true /* is_incognito */, 272 : QuotaManager(true /* is_incognito */,
271 base::FilePath(), 273 base::FilePath(),
272 io_thread->message_loop_proxy().get(), 274 io_thread->task_runner().get(),
273 db_thread->message_loop_proxy().get(), 275 db_thread->task_runner().get(),
274 NULL), 276 NULL),
275 async_(false) {} 277 async_(false) {}
276 278
277 void GetUsageAndQuota(const GURL& origin, 279 void GetUsageAndQuota(const GURL& origin,
278 storage::StorageType type, 280 storage::StorageType type,
279 const GetUsageAndQuotaCallback& callback) override { 281 const GetUsageAndQuotaCallback& callback) override {
280 EXPECT_EQ(storage::kStorageTypeTemporary, type); 282 EXPECT_EQ(storage::kStorageTypeTemporary, type);
281 if (async_) { 283 if (async_) {
282 base::MessageLoop::current()->PostTask( 284 base::ThreadTaskRunnerHandle::Get()->PostTask(
283 FROM_HERE, 285 FROM_HERE, base::Bind(&MockQuotaManager::CallCallback,
284 base::Bind(&MockQuotaManager::CallCallback, 286 base::Unretained(this), callback));
285 base::Unretained(this),
286 callback));
287 return; 287 return;
288 } 288 }
289 CallCallback(callback); 289 CallCallback(callback);
290 } 290 }
291 291
292 void CallCallback(const GetUsageAndQuotaCallback& callback) { 292 void CallCallback(const GetUsageAndQuotaCallback& callback) {
293 callback.Run(storage::kQuotaStatusOk, 0, kMockQuota); 293 callback.Run(storage::kQuotaStatusOk, 0, kMockQuota);
294 } 294 }
295 295
296 bool async_; 296 bool async_;
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 template <class Method> 363 template <class Method>
364 void MethodWrapper(Method method) { 364 void MethodWrapper(Method method) {
365 SetUpTest(); 365 SetUpTest();
366 366
367 // Ensure InitTask execution prior to conducting a test. 367 // Ensure InitTask execution prior to conducting a test.
368 FlushDbThreadTasks(); 368 FlushDbThreadTasks();
369 369
370 // We also have to wait for InitTask completion call to be performed 370 // We also have to wait for InitTask completion call to be performed
371 // on the IO thread prior to running the test. Its guaranteed to be 371 // on the IO thread prior to running the test. Its guaranteed to be
372 // queued by this time. 372 // queued by this time.
373 base::MessageLoop::current()->PostTask( 373 base::ThreadTaskRunnerHandle::Get()->PostTask(
374 FROM_HERE, 374 FROM_HERE, base::Bind(&AppCacheStorageImplTest::RunMethod<Method>,
375 base::Bind(&AppCacheStorageImplTest::RunMethod<Method>, 375 base::Unretained(this), method));
376 base::Unretained(this),
377 method));
378 } 376 }
379 377
380 static void SetUpTestCase() { 378 static void SetUpTestCase() {
381 // We start both threads as TYPE_IO because we also use the db_thead 379 // We start both threads as TYPE_IO because we also use the db_thead
382 // for the disk_cache which needs to be of TYPE_IO. 380 // for the disk_cache which needs to be of TYPE_IO.
383 base::Thread::Options options(base::MessageLoop::TYPE_IO, 0); 381 base::Thread::Options options(base::MessageLoop::TYPE_IO, 0);
384 io_thread.reset(new IOThread("AppCacheTest.IOThread")); 382 io_thread.reset(new IOThread("AppCacheTest.IOThread"));
385 ASSERT_TRUE(io_thread->StartWithOptions(options)); 383 ASSERT_TRUE(io_thread->StartWithOptions(options));
386 db_thread.reset(new base::Thread("AppCacheTest::DBThread")); 384 db_thread.reset(new base::Thread("AppCacheTest::DBThread"));
387 ASSERT_TRUE(db_thread->StartWithOptions(options)); 385 ASSERT_TRUE(db_thread->StartWithOptions(options));
388 } 386 }
389 387
390 static void TearDownTestCase() { 388 static void TearDownTestCase() {
391 io_thread.reset(NULL); 389 io_thread.reset(NULL);
392 db_thread.reset(NULL); 390 db_thread.reset(NULL);
393 } 391 }
394 392
395 // Test harness -------------------------------------------------- 393 // Test harness --------------------------------------------------
396 394
397 AppCacheStorageImplTest() { 395 AppCacheStorageImplTest() {
398 } 396 }
399 397
400 template <class Method> 398 template <class Method>
401 void RunTestOnIOThread(Method method) { 399 void RunTestOnIOThread(Method method) {
402 test_finished_event_ .reset(new base::WaitableEvent(false, false)); 400 test_finished_event_ .reset(new base::WaitableEvent(false, false));
403 io_thread->message_loop()->PostTask( 401 io_thread->task_runner()->PostTask(
404 FROM_HERE, base::Bind(&AppCacheStorageImplTest::MethodWrapper<Method>, 402 FROM_HERE, base::Bind(&AppCacheStorageImplTest::MethodWrapper<Method>,
405 base::Unretained(this), method)); 403 base::Unretained(this), method));
406 test_finished_event_->Wait(); 404 test_finished_event_->Wait();
407 } 405 }
408 406
409 void SetUpTest() { 407 void SetUpTest() {
410 DCHECK(base::MessageLoop::current() == io_thread->message_loop()); 408 DCHECK(base::MessageLoop::current() == io_thread->message_loop());
411 service_.reset(new AppCacheServiceImpl(NULL)); 409 service_.reset(new AppCacheServiceImpl(NULL));
412 service_->Initialize(base::FilePath(), db_thread->task_runner(), NULL); 410 service_->Initialize(base::FilePath(), db_thread->task_runner(), NULL);
413 mock_quota_manager_proxy_ = new MockQuotaManagerProxy(); 411 mock_quota_manager_proxy_ = new MockQuotaManagerProxy();
(...skipping 10 matching lines...) Expand all
424 mock_quota_manager_proxy_ = NULL; 422 mock_quota_manager_proxy_ = NULL;
425 delegate_.reset(); 423 delegate_.reset();
426 service_.reset(); 424 service_.reset();
427 FlushDbThreadTasks(); 425 FlushDbThreadTasks();
428 } 426 }
429 427
430 void TestFinished() { 428 void TestFinished() {
431 // We unwind the stack prior to finishing up to let stack 429 // We unwind the stack prior to finishing up to let stack
432 // based objects get deleted. 430 // based objects get deleted.
433 DCHECK(base::MessageLoop::current() == io_thread->message_loop()); 431 DCHECK(base::MessageLoop::current() == io_thread->message_loop());
434 base::MessageLoop::current()->PostTask( 432 base::ThreadTaskRunnerHandle::Get()->PostTask(
435 FROM_HERE, 433 FROM_HERE, base::Bind(&AppCacheStorageImplTest::TestFinishedUnwound,
436 base::Bind(&AppCacheStorageImplTest::TestFinishedUnwound, 434 base::Unretained(this)));
437 base::Unretained(this)));
438 } 435 }
439 436
440 void TestFinishedUnwound() { 437 void TestFinishedUnwound() {
441 TearDownTest(); 438 TearDownTest();
442 test_finished_event_->Signal(); 439 test_finished_event_->Signal();
443 } 440 }
444 441
445 void PushNextTask(const base::Closure& task) { 442 void PushNextTask(const base::Closure& task) {
446 task_stack_.push(task); 443 task_stack_.push(task);
447 } 444 }
448 445
449 void ScheduleNextTask() { 446 void ScheduleNextTask() {
450 DCHECK(base::MessageLoop::current() == io_thread->message_loop()); 447 DCHECK(base::MessageLoop::current() == io_thread->message_loop());
451 if (task_stack_.empty()) { 448 if (task_stack_.empty()) {
452 return; 449 return;
453 } 450 }
454 base::MessageLoop::current()->PostTask(FROM_HERE, task_stack_.top()); 451 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, task_stack_.top());
455 task_stack_.pop(); 452 task_stack_.pop();
456 } 453 }
457 454
458 static void SignalEvent(base::WaitableEvent* event) { 455 static void SignalEvent(base::WaitableEvent* event) {
459 event->Signal(); 456 event->Signal();
460 } 457 }
461 458
462 void FlushDbThreadTasks() { 459 void FlushDbThreadTasks() {
463 // We pump a task thru the db thread to ensure any tasks previously 460 // We pump a task thru the db thread to ensure any tasks previously
464 // scheduled on that thread have been performed prior to return. 461 // scheduled on that thread have been performed prior to return.
465 base::WaitableEvent event(false, false); 462 base::WaitableEvent event(false, false);
466 db_thread->message_loop()->PostTask( 463 db_thread->task_runner()->PostTask(
467 FROM_HERE, base::Bind(&AppCacheStorageImplTest::SignalEvent, &event)); 464 FROM_HERE, base::Bind(&AppCacheStorageImplTest::SignalEvent, &event));
468 event.Wait(); 465 event.Wait();
469 } 466 }
470 467
471 // LoadCache_Miss ---------------------------------------------------- 468 // LoadCache_Miss ----------------------------------------------------
472 469
473 void LoadCache_Miss() { 470 void LoadCache_Miss() {
474 // Attempt to load a cache that doesn't exist. Should 471 // Attempt to load a cache that doesn't exist. Should
475 // complete asynchronously. 472 // complete asynchronously.
476 PushNextTask(base::Bind(&AppCacheStorageImplTest::Verify_LoadCache_Miss, 473 PushNextTask(base::Bind(&AppCacheStorageImplTest::Verify_LoadCache_Miss,
(...skipping 1248 matching lines...) Expand 10 before | Expand all | Expand 10 after
1725 service_->quota_manager_proxy_ = mock_quota_manager_proxy_; 1722 service_->quota_manager_proxy_ = mock_quota_manager_proxy_;
1726 delegate_.reset(new MockStorageDelegate(this)); 1723 delegate_.reset(new MockStorageDelegate(this));
1727 1724
1728 // Additional setup to observe reinitailize happens. 1725 // Additional setup to observe reinitailize happens.
1729 observer_.reset(new MockServiceObserver(this)); 1726 observer_.reset(new MockServiceObserver(this));
1730 service_->AddObserver(observer_.get()); 1727 service_->AddObserver(observer_.get());
1731 1728
1732 // We continue after the init task is complete including the callback 1729 // We continue after the init task is complete including the callback
1733 // on the current thread. 1730 // on the current thread.
1734 FlushDbThreadTasks(); 1731 FlushDbThreadTasks();
1735 base::MessageLoop::current()->PostTask( 1732 base::ThreadTaskRunnerHandle::Get()->PostTask(
1736 FROM_HERE, 1733 FROM_HERE, base::Bind(&AppCacheStorageImplTest::Continue_Reinitialize,
1737 base::Bind(&AppCacheStorageImplTest::Continue_Reinitialize, 1734 base::Unretained(this), test_case));
1738 base::Unretained(this),
1739 test_case));
1740 } 1735 }
1741 1736
1742 void Continue_Reinitialize(ReinitTestCase test_case) { 1737 void Continue_Reinitialize(ReinitTestCase test_case) {
1743 const int kMockProcessId = 1; 1738 const int kMockProcessId = 1;
1744 backend_.reset(new AppCacheBackendImpl); 1739 backend_.reset(new AppCacheBackendImpl);
1745 backend_->Initialize(service_.get(), &frontend_, kMockProcessId); 1740 backend_->Initialize(service_.get(), &frontend_, kMockProcessId);
1746 1741
1747 if (test_case == CORRUPT_SQL_ON_INSTALL) { 1742 if (test_case == CORRUPT_SQL_ON_INSTALL) {
1748 // Break the db file 1743 // Break the db file
1749 EXPECT_FALSE(database()->was_corruption_detected()); 1744 EXPECT_FALSE(database()->was_corruption_detected());
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
2026 RunTestOnIOThread(&AppCacheStorageImplTest::Reinitialize2); 2021 RunTestOnIOThread(&AppCacheStorageImplTest::Reinitialize2);
2027 } 2022 }
2028 2023
2029 TEST_F(AppCacheStorageImplTest, Reinitialize3) { 2024 TEST_F(AppCacheStorageImplTest, Reinitialize3) {
2030 RunTestOnIOThread(&AppCacheStorageImplTest::Reinitialize3); 2025 RunTestOnIOThread(&AppCacheStorageImplTest::Reinitialize3);
2031 } 2026 }
2032 2027
2033 // That's all folks! 2028 // That's all folks!
2034 2029
2035 } // namespace content 2030 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/appcache/appcache_storage_impl.cc ('k') | content/browser/appcache/appcache_update_job_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698