Index: chrome/browser/policy/asynchronous_policy_loader.cc |
diff --git a/chrome/browser/policy/asynchronous_policy_loader.cc b/chrome/browser/policy/asynchronous_policy_loader.cc |
index 1a55b66e512b7a65582599a61daca57a3e199450..26ae765ba14a82e3344c0aec214a02c308d414e9 100644 |
--- a/chrome/browser/policy/asynchronous_policy_loader.cc |
+++ b/chrome/browser/policy/asynchronous_policy_loader.cc |
@@ -94,14 +94,16 @@ void AsynchronousPolicyLoader::StopOnFileThread() { |
void AsynchronousPolicyLoader::PostUpdatePolicyTask( |
DictionaryValue* new_policy) { |
- // TODO(joaodasilva): make the callback own |new_policy|. |
+ scoped_ptr<DictionaryValue> scoped_policy(new_policy); |
origin_loop_->PostTask( |
FROM_HERE, |
- base::Bind(&AsynchronousPolicyLoader::UpdatePolicy, this, new_policy)); |
+ base::Bind(&AsynchronousPolicyLoader::UpdatePolicy, |
+ this, |
+ base::Passed(&scoped_policy))); |
} |
-void AsynchronousPolicyLoader::UpdatePolicy(DictionaryValue* new_policy_raw) { |
- scoped_ptr<DictionaryValue> new_policy(new_policy_raw); |
+void AsynchronousPolicyLoader::UpdatePolicy( |
+ scoped_ptr<DictionaryValue> new_policy) { |
DCHECK(policy_.get()); |
policy_.swap(new_policy); |
if (!stopped_) |