profile_sync_test_util.h revision 72a454cd3513ac24fbdd0e0cb9ad70b86a99b801
1// Copyright (c) 2010 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#ifndef CHROME_BROWSER_SYNC_PROFILE_SYNC_TEST_UTIL_H_ 6#define CHROME_BROWSER_SYNC_PROFILE_SYNC_TEST_UTIL_H_ 7#pragma once 8 9#include <string> 10 11#include "base/message_loop.h" 12#include "base/ref_counted.h" 13#include "base/scoped_ptr.h" 14#include "base/synchronization/waitable_event.h" 15#include "chrome/browser/browser_thread.h" 16#include "chrome/browser/sync/profile_sync_service_observer.h" 17#include "chrome/common/notification_service.h" 18#include "chrome/common/notification_source.h" 19#include "chrome/common/notification_type.h" 20#include "testing/gmock/include/gmock/gmock.h" 21 22namespace base { 23class Thread; 24} 25 26ACTION_P(Notify, type) { 27 NotificationService::current()->Notify(type, 28 NotificationService::AllSources(), 29 NotificationService::NoDetails()); 30} 31 32ACTION(QuitUIMessageLoop) { 33 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 34 MessageLoop::current()->Quit(); 35} 36 37class ProfileSyncServiceObserverMock : public ProfileSyncServiceObserver { 38 public: 39 ProfileSyncServiceObserverMock(); 40 virtual ~ProfileSyncServiceObserverMock(); 41 42 MOCK_METHOD0(OnStateChanged, void()); 43}; 44 45class ThreadNotificationService 46 : public base::RefCountedThreadSafe<ThreadNotificationService> { 47 public: 48 explicit ThreadNotificationService(base::Thread* notification_thread); 49 50 void Init(); 51 void TearDown(); 52 53 private: 54 friend class base::RefCountedThreadSafe<ThreadNotificationService>; 55 virtual ~ThreadNotificationService(); 56 57 void InitTask(); 58 void TearDownTask(); 59 60 base::WaitableEvent done_event_; 61 base::Thread* notification_thread_; 62 scoped_ptr<NotificationService> service_; 63}; 64 65class ThreadNotifier : // NOLINT 66 public base::RefCountedThreadSafe<ThreadNotifier> { 67 public: 68 explicit ThreadNotifier(base::Thread* notify_thread); 69 70 void Notify(NotificationType type, const NotificationDetails& details); 71 72 void Notify(NotificationType type, 73 const NotificationSource& source, 74 const NotificationDetails& details); 75 76 private: 77 friend class base::RefCountedThreadSafe<ThreadNotifier>; 78 virtual ~ThreadNotifier(); 79 80 void NotifyTask(NotificationType type, 81 const NotificationSource& source, 82 const NotificationDetails& details); 83 84 base::WaitableEvent done_event_; 85 base::Thread* notify_thread_; 86}; 87 88#endif // CHROME_BROWSER_SYNC_PROFILE_SYNC_TEST_UTIL_H_ 89