Index: components/copresence/copresence_client.cc |
diff --git a/components/copresence/copresence_client.cc b/components/copresence/copresence_client.cc |
index 60e45e15d2156368eddf0e575f1812e6339e9dc6..cc027b67f1f1a0ba274385e1e562e9db8c87c71a 100644 |
--- a/components/copresence/copresence_client.cc |
+++ b/components/copresence/copresence_client.cc |
@@ -26,27 +26,22 @@ CopresenceClient::CopresenceClient(CopresenceClientDelegate* delegate) |
: delegate_(delegate), init_failed_(false), pending_init_operations_(0) { |
DVLOG(3) << "Initializing client."; |
pending_init_operations_++; |
- rpc_handler_.reset( |
- new RpcHandler(delegate, |
- base::Bind(&CopresenceClient::InitStepComplete, |
- AsWeakPtr(), |
- "Copresence device registration"))); |
+ rpc_handler_.reset(new RpcHandler(delegate)); |
+ // We own the RpcHandler, so it won't outlive us. |
+ rpc_handler_->Initialize(base::Bind(&CopresenceClient::InitStepComplete, |
+ base::Unretained(this), |
+ "Copresence device registration")); |
pending_init_operations_++; |
delegate_->GetWhispernetClient()->Initialize( |
base::Bind(&CopresenceClient::InitStepComplete, |
+ // We cannot cancel WhispernetClient initialization. |
+ // TODO(ckehoe): Get rid of this. |
AsWeakPtr(), |
"Whispernet proxy initialization")); |
} |
-CopresenceClient::~CopresenceClient() { |
-} |
- |
-void CopresenceClient::Shutdown() { |
- DVLOG(3) << "Shutting down client."; |
- delegate_->GetWhispernetClient()->Shutdown(); |
- rpc_handler_->DisconnectFromWhispernet(); |
-} |
+CopresenceClient::~CopresenceClient() {} |
// Returns false if any operations were malformed. |
void CopresenceClient::ExecuteReportRequest(copresence::ReportRequest request, |
@@ -76,7 +71,7 @@ void CopresenceClient::CompleteInitialization() { |
return; |
if (!init_failed_) |
- rpc_handler_->ConnectToWhispernet(delegate_->GetWhispernetClient()); |
+ rpc_handler_->ConnectToWhispernet(); |
for (std::vector<PendingRequest>::iterator request = |
pending_requests_queue_.begin(); |