Home | History | Annotate | Download | only in prefs
      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 
     18 using testing::Pointee;
     19 using testing::Property;
     20 using 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.
     25 MATCHER_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.
     40 class 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