diff options
author | danno@chromium.org <danno@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-06 11:26:33 +0000 |
---|---|---|
committer | danno@chromium.org <danno@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-06 11:26:33 +0000 |
commit | a2f3b6f16f1bdea5e95be1d6e1d0e1b3b94a5df3 (patch) | |
tree | 56a16f907963c1d63476b04261a5611a6b3f80ec /chrome/browser/pref_value_store.h | |
parent | ca352454df9a2c6dac0dd5927c92d73d4eee069d (diff) | |
download | chromium_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.h | 17 |
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); }; |