Reland: Closure-based API to PrefChangeObserver and PrefMember.

The original was in http://codereview.chromium.org/11368098/ (landed
as r166670) but seemed to increase memory usage significantly.

This version does away with storing the pref name in callbacks, which
should reduce memory usage.

[email protected],[email protected]
BUG=155525, 160177

Review URL: https://chromiumcodereview.appspot.com/11369153

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@167179 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/prefs/pref_service_unittest.cc b/chrome/browser/prefs/pref_service_unittest.cc
index 9cacfb7..883f50a 100644
--- a/chrome/browser/prefs/pref_service_unittest.cc
+++ b/chrome/browser/prefs/pref_service_unittest.cc
@@ -108,6 +108,9 @@
   registrar.Init(&prefs);
   registrar.Add(pref_name, &obs);
 
+  PrefChangeRegistrar registrar_two;
+  registrar_two.Init(&prefs);
+
   // This should fire the checks in PrefObserverMock::Observe.
   obs.Expect(&prefs, pref_name, &expected_new_pref_value);
   prefs.SetString(pref_name, new_pref_value);
@@ -119,7 +122,7 @@
   PrefObserverMock obs2;
   obs.Expect(&prefs, pref_name, &expected_new_pref_value2);
   obs2.Expect(&prefs, pref_name, &expected_new_pref_value2);
-  registrar.Add(pref_name, &obs2);
+  registrar_two.Add(pref_name, &obs2);
   // This should fire the checks in obs and obs2.
   prefs.SetString(pref_name, new_pref_value2);
   Mock::VerifyAndClearExpectations(&obs);
@@ -136,7 +139,7 @@
   Mock::VerifyAndClearExpectations(&obs2);
 
   // Make sure obs2 still works after removing obs.
-  registrar.Remove(pref_name, &obs);
+  registrar.Remove(pref_name);
   EXPECT_CALL(obs, OnPreferenceChanged(_, _)).Times(0);
   obs2.Expect(&prefs, pref_name, &expected_new_pref_value);
   // This should only fire the observer in obs2.