Index: components/copresence/copresence_manager.cc |
diff --git a/components/copresence/copresence_manager.cc b/components/copresence/copresence_manager.cc |
index fa89006376fd2d9f5e56f85bc3a6b6249aaf510f..3a4e73c9c9547f8d6a7dad4ef0b04528b07c09cc 100644 |
--- a/components/copresence/copresence_manager.cc |
+++ b/components/copresence/copresence_manager.cc |
@@ -23,14 +23,17 @@ scoped_ptr<CopresenceManager> CopresenceManager::Create( |
base::Unretained(manager), |
"Copresence device registration")); |
+ // This callback will be canceled on manager's destruction, hence unretained |
+ // is safe to use here. |
+ manager->init_callback_.Reset( |
+ base::Bind(&CopresenceManagerImpl::InitStepComplete, |
+ base::Unretained(manager), |
+ "Whispernet proxy initialization")); |
+ |
manager->pending_init_operations_++; |
DCHECK(delegate->GetWhispernetClient()); |
delegate->GetWhispernetClient()->Initialize( |
- base::Bind(&CopresenceManagerImpl::InitStepComplete, |
- // We cannot cancel WhispernetClient initialization. |
- // TODO(ckehoe): Get rid of this. |
- manager->AsWeakPtr(), |
- "Whispernet proxy initialization")); |
+ manager->init_callback_.callback()); |
return make_scoped_ptr<CopresenceManager>(manager); |
} |