| // Copyright (c) 2012 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. |
| |
| #ifndef CHROME_BROWSER_SYNC_PROFILE_SYNC_TEST_UTIL_H_ |
| #define CHROME_BROWSER_SYNC_PROFILE_SYNC_TEST_UTIL_H_ |
| |
| #include <string> |
| |
| #include "base/memory/ref_counted.h" |
| #include "base/message_loop/message_loop.h" |
| #include "base/synchronization/waitable_event.h" |
| #include "chrome/browser/sync/profile_sync_service_observer.h" |
| #include "content/public/browser/browser_thread.h" |
| #include "content/public/browser/notification_service.h" |
| #include "content/public/browser/notification_source.h" |
| #include "content/public/browser/notification_types.h" |
| #include "testing/gmock/include/gmock/gmock.h" |
| |
| namespace base { |
| class Thread; |
| } |
| |
| ACTION_P(Notify, type) { |
| content::NotificationService::current()->Notify( |
| type, |
| content::NotificationService::AllSources(), |
| content::NotificationService::NoDetails()); |
| } |
| |
| ACTION(QuitUIMessageLoop) { |
| DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| base::MessageLoop::current()->Quit(); |
| } |
| |
| class ProfileSyncServiceObserverMock : public ProfileSyncServiceObserver { |
| public: |
| ProfileSyncServiceObserverMock(); |
| virtual ~ProfileSyncServiceObserverMock(); |
| |
| MOCK_METHOD0(OnStateChanged, void()); |
| }; |
| |
| class ThreadNotifier : // NOLINT |
| public base::RefCountedThreadSafe<ThreadNotifier> { |
| public: |
| explicit ThreadNotifier(base::Thread* notify_thread); |
| |
| void Notify(int type, const content::NotificationDetails& details); |
| |
| void Notify(int type, |
| const content::NotificationSource& source, |
| const content::NotificationDetails& details); |
| |
| private: |
| friend class base::RefCountedThreadSafe<ThreadNotifier>; |
| virtual ~ThreadNotifier(); |
| |
| void NotifyTask(int type, |
| const content::NotificationSource& source, |
| const content::NotificationDetails& details); |
| |
| base::WaitableEvent done_event_; |
| base::Thread* notify_thread_; |
| }; |
| |
| #endif // CHROME_BROWSER_SYNC_PROFILE_SYNC_TEST_UTIL_H_ |