summaryrefslogtreecommitdiffstats
path: root/chrome/browser/prefs/mock_pref_change_callback.h
diff options
context:
space:
mode:
authorjoi@chromium.org <joi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-04 18:14:02 +0000
committerjoi@chromium.org <joi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-04 18:14:02 +0000
commit96a5c34a1f1b97f6130d98ea950a48102c3ddcbe (patch)
tree0cc7170429583dbb319e31945d5753d95a28214f /chrome/browser/prefs/mock_pref_change_callback.h
parent1799b5600ec29a3a099f3c217cb8063799169aba (diff)
downloadchromium_src-96a5c34a1f1b97f6130d98ea950a48102c3ddcbe.zip
chromium_src-96a5c34a1f1b97f6130d98ea950a48102c3ddcbe.tar.gz
chromium_src-96a5c34a1f1b97f6130d98ea950a48102c3ddcbe.tar.bz2
Remove the last usages of PrefObserver outside of Prefs.
This involved: a) Removing methods that used PrefObserver from PrefChangeRegistrar and PrefMember. b) Removing implementation of PrefObserver from a few remaining classes. c) Removing NULL PrefObserver parameter for classes using PrefMember but not wishing for a callback. d) Updating unit tests and test utility classes. Also fixed what was most likely a bug (or at least an unintentional change in behavior) that I had introduced in CoreChromeOSOptionsHandler in a previous change. Before my series of PrefObserver-related changes, there was polymorphism involved and the subclass was only handling pref changes for a couple of preferences (kProxy and kUseSharedProxy, only one of which it registers for itself) if the PrefService was the standard one, not the incognito one, otherwise delegating to the parent class. TBR=ben@chromium.org BUG=155525 Review URL: https://chromiumcodereview.appspot.com/11316163 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@171002 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/prefs/mock_pref_change_callback.h')
-rw-r--r--chrome/browser/prefs/mock_pref_change_callback.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/chrome/browser/prefs/mock_pref_change_callback.h b/chrome/browser/prefs/mock_pref_change_callback.h
new file mode 100644
index 0000000..34d9beb
--- /dev/null
+++ b/chrome/browser/prefs/mock_pref_change_callback.h
@@ -0,0 +1,52 @@
+// Copyright (c) 2011 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_MOCK_PREF_CHANGE_CALLBACK_H_
+#define CHROME_BROWSER_PREFS_MOCK_PREF_CHANGE_CALLBACK_H_
+
+#include <string>
+
+#include "base/prefs/public/pref_change_registrar.h"
+#include "chrome/browser/prefs/pref_service.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 PrefServiceBase::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 MockPrefChangeCallback {
+ public:
+ explicit MockPrefChangeCallback(PrefServiceBase* prefs);
+ virtual ~MockPrefChangeCallback();
+
+ PrefChangeRegistrar::NamedChangeCallback GetCallback();
+
+ MOCK_METHOD1(OnPreferenceChanged, void(const std::string&));
+
+ void Expect(const std::string& pref_name,
+ const Value* value);
+
+ private:
+ PrefServiceBase* prefs_;
+};
+
+#endif // CHROME_BROWSER_PREFS_MOCK_PREF_CHANGE_CALLBACK_H_