diff options
Diffstat (limited to 'chrome/browser/sync/profile_sync_test_util.cc')
-rw-r--r-- | chrome/browser/sync/profile_sync_test_util.cc | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/chrome/browser/sync/profile_sync_test_util.cc b/chrome/browser/sync/profile_sync_test_util.cc new file mode 100644 index 0000000..a533fd4 --- /dev/null +++ b/chrome/browser/sync/profile_sync_test_util.cc @@ -0,0 +1,78 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/sync/profile_sync_test_util.h" + +#include "base/task.h" +#include "base/threading/thread.h" + +ProfileSyncServiceObserverMock::ProfileSyncServiceObserverMock() {} + +ProfileSyncServiceObserverMock::~ProfileSyncServiceObserverMock() {} + +ThreadNotificationService::ThreadNotificationService( + base::Thread* notification_thread) + : done_event_(false, false), + notification_thread_(notification_thread) {} + +void ThreadNotificationService::Init() { + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + notification_thread_->message_loop()->PostTask( + FROM_HERE, + NewRunnableMethod(this, &ThreadNotificationService::InitTask)); + done_event_.Wait(); +} + +void ThreadNotificationService::TearDown() { + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + notification_thread_->message_loop()->PostTask( + FROM_HERE, + NewRunnableMethod(this, + &ThreadNotificationService::TearDownTask)); + done_event_.Wait(); +} + +ThreadNotificationService::~ThreadNotificationService() {} + +void ThreadNotificationService::InitTask() { + service_.reset(new NotificationService()); + done_event_.Signal(); +} + +void ThreadNotificationService::TearDownTask() { + service_.reset(NULL); + done_event_.Signal(); +} + +ThreadNotifier::ThreadNotifier(base::Thread* notify_thread) + : done_event_(false, false), + notify_thread_(notify_thread) {} + +void ThreadNotifier::Notify(NotificationType type, + const NotificationDetails& details) { + Notify(type, NotificationService::AllSources(), details); +} + +void ThreadNotifier::Notify(NotificationType type, + const NotificationSource& source, + const NotificationDetails& details) { + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + notify_thread_->message_loop()->PostTask( + FROM_HERE, + NewRunnableMethod(this, + &ThreadNotifier::NotifyTask, + type, + source, + details)); + done_event_.Wait(); +} + +ThreadNotifier::~ThreadNotifier() {} + +void ThreadNotifier::NotifyTask(NotificationType type, + const NotificationSource& source, + const NotificationDetails& details) { + NotificationService::current()->Notify(type, source, details); + done_event_.Signal(); +} |