Index: chrome/browser/policy/async_policy_provider.cc |
diff --git a/chrome/browser/policy/async_policy_provider.cc b/chrome/browser/policy/async_policy_provider.cc |
index 26b61b3cee3186155c49c0e73046e51db56cbce3..ae93d562a4bf4c47308ec0f86fe272acbbe6560b 100644 |
--- a/chrome/browser/policy/async_policy_provider.cc |
+++ b/chrome/browser/policy/async_policy_provider.cc |
@@ -79,13 +79,24 @@ void AsyncPolicyProvider::RefreshPolicies() { |
// refresh task has been posted, it is invalidated now. |
refresh_callback_.Reset( |
base::Bind(&AsyncPolicyProvider::ReloadAfterRefreshSync, |
- base::Unretained(this))); |
+ weak_factory_.GetWeakPtr())); |
BrowserThread::PostTaskAndReply( |
BrowserThread::FILE, FROM_HERE, |
base::Bind(base::DoNothing), |
refresh_callback_.callback()); |
} |
+void AsyncPolicyProvider::RegisterPolicyDomain( |
+ scoped_refptr<const PolicyDomainDescriptor> descriptor) { |
+ if (loader_) { |
+ BrowserThread::PostTask(BrowserThread::FILE, |
+ FROM_HERE, |
+ base::Bind(&AsyncPolicyLoader::RegisterPolicyDomain, |
+ base::Unretained(loader_), |
+ descriptor)); |
+ } |
+} |
+ |
void AsyncPolicyProvider::ReloadAfterRefreshSync() { |
DCHECK(CalledOnValidThread()); |
// This task can only enter if it was posted from RefreshPolicies(), and it |