Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(440)

Unified Diff: chrome/browser/prefs/pref_observer_mock.h

Issue 5441002: Clean up pref change notification handling. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix extension prefs breakage Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/prefs/pref_notifier_unittest.cc ('k') | chrome/browser/prefs/pref_service.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/prefs/pref_observer_mock.h
diff --git a/chrome/browser/prefs/pref_observer_mock.h b/chrome/browser/prefs/pref_observer_mock.h
new file mode 100644
index 0000000000000000000000000000000000000000..f339841d3edfaaad777d470ebb33969d177a5e03
--- /dev/null
+++ b/chrome/browser/prefs/pref_observer_mock.h
@@ -0,0 +1,60 @@
+// Copyright (c) 2010 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_PREFS_PREF_OBSERVER_MOCK_H_
+#define CHROME_BROWSER_PREFS_PREF_OBSERVER_MOCK_H_
+#pragma once
+
+#include <string>
+
+#include "chrome/browser/prefs/pref_service.h"
+#include "chrome/common/notification_details.h"
+#include "chrome/common/notification_observer.h"
+#include "chrome/common/notification_source.h"
+#include "chrome/common/notification_type.h"
+#include "testing/gmock/include/gmock/gmock.h"
+
+using testing::Pointee;
+using testing::Property;
+using testing::Truly;
+
+// Matcher that checks whether the current value of the preference named
+// |pref_name| in |prefs| matches |value|. If |value| is NULL, the matcher
+// checks that the value is not set.
+MATCHER_P3(PrefValueMatches, prefs, pref_name, value, "") {
+ const PrefService::Preference* pref =
+ prefs->FindPreference(pref_name.c_str());
+ if (!pref)
+ return false;
+
+ const Value* actual_value = pref->GetValue();
+ if (!actual_value)
+ return value == NULL;
+ if (!value)
+ return actual_value == NULL;
+ return value->Equals(actual_value);
+}
+
+// A mock for testing preference notifications and easy setup of expectations.
+class PrefObserverMock : public NotificationObserver {
+ public:
+ PrefObserverMock() {}
+ virtual ~PrefObserverMock() {}
+
+ MOCK_METHOD3(Observe, void(NotificationType type,
+ const NotificationSource& source,
+ const NotificationDetails& details));
+
+ void Expect(const PrefService* prefs,
+ const std::string& pref_name,
+ const Value* value) {
+ EXPECT_CALL(*this, Observe(NotificationType(NotificationType::PREF_CHANGED),
+ Source<PrefService>(prefs),
+ Property(&Details<std::string>::ptr,
+ Pointee(pref_name))))
+ .With(PrefValueMatches(prefs, pref_name, value));
+ }
+};
+
+#endif // CHROME_BROWSER_PREFS_PREF_OBSERVER_MOCK_H_
« no previous file with comments | « chrome/browser/prefs/pref_notifier_unittest.cc ('k') | chrome/browser/prefs/pref_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698