Home | History | Annotate | Download | only in sync
      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 
     12 ProfileSyncServiceObserverMock::ProfileSyncServiceObserverMock() {}
     13 
     14 ProfileSyncServiceObserverMock::~ProfileSyncServiceObserverMock() {}
     15 
     16 ThreadNotifier::ThreadNotifier(base::Thread* notify_thread)
     17     : done_event_(false, false),
     18       notify_thread_(notify_thread) {}
     19 
     20 void ThreadNotifier::Notify(int type,
     21                             const content::NotificationDetails& details) {
     22   Notify(type, content::NotificationService::AllSources(), details);
     23 }
     24 
     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 
     35 ThreadNotifier::~ThreadNotifier() {}
     36 
     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