Chromium Code Reviews| Index: remoting/host/security_key/security_key_ipc_client.cc |
| diff --git a/remoting/host/security_key/security_key_ipc_client.cc b/remoting/host/security_key/security_key_ipc_client.cc |
| index 43ad72f17b8e735bbd61efd24a502e1f3e6c7e6d..994f92ef231005319d07bba22c8a3451d94f294a 100644 |
| --- a/remoting/host/security_key/security_key_ipc_client.cc |
| +++ b/remoting/host/security_key/security_key_ipc_client.cc |
| @@ -38,14 +38,14 @@ bool SecurityKeyIpcClient::CheckForSecurityKeyIpcServerChannel() { |
| } |
| void SecurityKeyIpcClient::EstablishIpcConnection( |
| - const base::Closure& connection_ready_callback, |
| + const ConnectedCallback& connected_callback, |
| const base::Closure& connection_error_callback) { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| - DCHECK(!connection_ready_callback.is_null()); |
| + DCHECK(!connected_callback.is_null()); |
| DCHECK(!connection_error_callback.is_null()); |
| DCHECK(!ipc_channel_); |
| - connection_ready_callback_ = connection_ready_callback; |
| + connected_callback_ = connected_callback; |
| connection_error_callback_ = connection_error_callback; |
| ConnectToIpcChannel(); |
| @@ -96,6 +96,10 @@ bool SecurityKeyIpcClient::OnMessageReceived(const IPC::Message& message) { |
| IPC_BEGIN_MESSAGE_MAP(SecurityKeyIpcClient, message) |
| IPC_MESSAGE_HANDLER(ChromotingNetworkToRemoteSecurityKeyMsg_Response, |
| OnSecurityKeyResponse) |
| + IPC_MESSAGE_HANDLER(ChromotingNetworkToRemoteSecurityKeyMsg_ConnectionReady, |
| + OnConnectionReady) |
| + IPC_MESSAGE_HANDLER(ChromotingNetworkToRemoteSecurityKeyMsg_InvalidSession, |
| + OnInvalidSession) |
| IPC_MESSAGE_UNHANDLED(handled = false) |
| IPC_END_MESSAGE_MAP() |
| @@ -122,8 +126,6 @@ void SecurityKeyIpcClient::OnChannelConnected(int32_t peer_pid) { |
| return; |
| } |
| #endif // defined(OS_WIN) |
| - |
| - base::ResetAndReturn(&connection_ready_callback_).Run(); |
| } |
| void SecurityKeyIpcClient::OnChannelError() { |
| @@ -147,6 +149,20 @@ void SecurityKeyIpcClient::OnSecurityKeyResponse( |
| } |
| } |
| +void SecurityKeyIpcClient::OnConnectionReady() { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + DCHECK(!connected_callback_.is_null()); |
|
dcheng
2016/12/16 02:33:07
Just to double-check: is the server end (the one s
joedow
2016/12/16 03:36:22
The server in this context is our network process
dcheng
2016/12/16 09:12:03
It's hard for me to tell if the network service is
joedow
2016/12/16 16:20:18
The network process is a low-integrity process. I
|
| + |
| + base::ResetAndReturn(&connected_callback_).Run(/*connection_usable=*/true); |
| +} |
| + |
| +void SecurityKeyIpcClient::OnInvalidSession() { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + DCHECK(!connected_callback_.is_null()); |
| + |
| + base::ResetAndReturn(&connected_callback_).Run(/*connection_usable=*/false); |
| +} |
| + |
| void SecurityKeyIpcClient::ConnectToIpcChannel() { |
| DCHECK(thread_checker_.CalledOnValidThread()); |