1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/sync/profile_sync_test_util.h"
6
7 #include "base/bind.h"
8 #include "base/threading/thread.h"
9
10 using content::BrowserThread;
11
ProfileSyncServiceObserverMock()12 ProfileSyncServiceObserverMock::ProfileSyncServiceObserverMock() {}
13
~ProfileSyncServiceObserverMock()14 ProfileSyncServiceObserverMock::~ProfileSyncServiceObserverMock() {}
15
ThreadNotifier(base::Thread * notify_thread)16 ThreadNotifier::ThreadNotifier(base::Thread* notify_thread)
17 : done_event_(false, false),
18 notify_thread_(notify_thread) {}
19
Notify(int type,const content::NotificationDetails & details)20 void ThreadNotifier::Notify(int type,
21 const content::NotificationDetails& details) {
22 Notify(type, content::NotificationService::AllSources(), details);
23 }
24
Notify(int type,const content::NotificationSource & source,const content::NotificationDetails & details)25 void ThreadNotifier::Notify(int type,
26 const content::NotificationSource& source,
27 const content::NotificationDetails& details) {
28 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
29 notify_thread_->message_loop()->PostTask(
30 FROM_HERE,
31 base::Bind(&ThreadNotifier::NotifyTask, this, type, source, details));
32 done_event_.Wait();
33 }
34
~ThreadNotifier()35 ThreadNotifier::~ThreadNotifier() {}
36
NotifyTask(int type,const content::NotificationSource & source,const content::NotificationDetails & details)37 void ThreadNotifier::NotifyTask(int type,
38 const content::NotificationSource& source,
39 const content::NotificationDetails& details) {
40 content::NotificationService::current()->Notify(type, source, details);
41 done_event_.Signal();
42 }
43