pref_observer_mock.h revision ddb351dbec246cf1fab5ec20d2d5520909041de1
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#ifndef CHROME_BROWSER_PREFS_PREF_OBSERVER_MOCK_H_ 6#define CHROME_BROWSER_PREFS_PREF_OBSERVER_MOCK_H_ 7#pragma once 8 9#include <string> 10 11#include "chrome/browser/prefs/pref_service.h" 12#include "content/common/notification_details.h" 13#include "content/common/notification_observer.h" 14#include "content/common/notification_source.h" 15#include "content/common/notification_type.h" 16#include "testing/gmock/include/gmock/gmock.h" 17 18using testing::Pointee; 19using testing::Property; 20using testing::Truly; 21 22// Matcher that checks whether the current value of the preference named 23// |pref_name| in |prefs| matches |value|. If |value| is NULL, the matcher 24// checks that the value is not set. 25MATCHER_P3(PrefValueMatches, prefs, pref_name, value, "") { 26 const PrefService::Preference* pref = 27 prefs->FindPreference(pref_name.c_str()); 28 if (!pref) 29 return false; 30 31 const Value* actual_value = pref->GetValue(); 32 if (!actual_value) 33 return value == NULL; 34 if (!value) 35 return actual_value == NULL; 36 return value->Equals(actual_value); 37} 38 39// A mock for testing preference notifications and easy setup of expectations. 40class PrefObserverMock : public NotificationObserver { 41 public: 42 PrefObserverMock(); 43 virtual ~PrefObserverMock(); 44 45 MOCK_METHOD3(Observe, void(NotificationType type, 46 const NotificationSource& source, 47 const NotificationDetails& details)); 48 49 void Expect(const PrefService* prefs, 50 const std::string& pref_name, 51 const Value* value); 52}; 53 54#endif // CHROME_BROWSER_PREFS_PREF_OBSERVER_MOCK_H_ 55