summaryrefslogtreecommitdiffstats
path: root/chrome/browser/pref_value_store.h
diff options
context:
space:
mode:
authordanno@chromium.org <danno@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-06 11:26:33 +0000
committerdanno@chromium.org <danno@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-06 11:26:33 +0000
commita2f3b6f16f1bdea5e95be1d6e1d0e1b3b94a5df3 (patch)
tree56a16f907963c1d63476b04261a5611a6b3f80ec /chrome/browser/pref_value_store.h
parentca352454df9a2c6dac0dd5927c92d73d4eee069d (diff)
downloadchromium_src-a2f3b6f16f1bdea5e95be1d6e1d0e1b3b94a5df3.zip
chromium_src-a2f3b6f16f1bdea5e95be1d6e1d0e1b3b94a5df3.tar.gz
chromium_src-a2f3b6f16f1bdea5e95be1d6e1d0e1b3b94a5df3.tar.bz2
Fix memory leak in policy refresh implementation
TEST=PrefValueStoreTest.* BUG=51176 Review URL: http://codereview.chromium.org/3031047 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@55214 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/pref_value_store.h')
-rw-r--r--chrome/browser/pref_value_store.h17
1 files changed, 10 insertions, 7 deletions
diff --git a/chrome/browser/pref_value_store.h b/chrome/browser/pref_value_store.h
index ff277a0..adb51a9 100644
--- a/chrome/browser/pref_value_store.h
+++ b/chrome/browser/pref_value_store.h
@@ -113,7 +113,7 @@ class PrefValueStore : public base::RefCountedThreadSafe<PrefValueStore> {
// Signature of callback triggered after policy refresh. Parameter is not
// passed as reference to prevent passing along a pointer to a set whose
// lifecycle is managed in another thread.
- typedef Callback1<std::vector<std::string> >::Type* AfterRefreshCallback;
+ typedef Callback1<std::vector<std::string> >::Type AfterRefreshCallback;
// Called as a result of a notification of policy change. Triggers a
// reload of managed preferences from policy. Caller must pass in
@@ -121,11 +121,12 @@ class PrefValueStore : public base::RefCountedThreadSafe<PrefValueStore> {
// |managed_pref_store| and |recommended_pref_store| respectively, since
// PrefValueStore doesn't know about policy-specific PrefStores.
// |callback| is called with the set of preferences changed by the policy
- // refresh. |callback| is called the caller's thread as a Task
- // after RefreshPolicyPrefs has returned.
+ // refresh. |callback| is called on the caller's thread as a Task
+ // after RefreshPolicyPrefs has returned. RefreshPolicyPrefs takes ownership
+ // of the |callback| object.
void RefreshPolicyPrefs(PrefStore* managed_pref_store,
PrefStore* recommended_pref_store,
- AfterRefreshCallback callback);
+ AfterRefreshCallback* callback);
protected:
// In decreasing order of precedence:
@@ -173,18 +174,20 @@ class PrefValueStore : public base::RefCountedThreadSafe<PrefValueStore> {
PrefStoreType ControllingPrefStoreForPref(const wchar_t* name);
// Called during policy refresh after ReadPrefs completes on the thread
- // that initiated the policy refresh.
+ // that initiated the policy refresh. RefreshPolicyPrefsCompletion takes
+ // ownership of the |callback| object.
void RefreshPolicyPrefsCompletion(
PrefStore* new_managed_pref_store,
PrefStore* new_recommended_pref_store,
- AfterRefreshCallback callback);
+ AfterRefreshCallback* callback);
// Called during policy refresh to do the ReadPrefs on the FILE thread.
+ // RefreshPolicyPrefsOnFileThread takes ownership of the |callback| object.
void RefreshPolicyPrefsOnFileThread(
ChromeThread::ID calling_thread_id,
PrefStore* new_managed_pref_store,
PrefStore* new_recommended_pref_store,
- AfterRefreshCallback callback);
+ AfterRefreshCallback* callback);
DISALLOW_COPY_AND_ASSIGN(PrefValueStore);
};