Index: chrome/browser/sync/profile_sync_test_util.cc |
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 0000000000000000000000000000000000000000..a533fd45fd9f057d79e1135c0ca0bd919bfee291 |
--- /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(); |
+} |