Chromium Code Reviews| Index: remoting/host/plugin/host_script_object.cc |
| diff --git a/remoting/host/plugin/host_script_object.cc b/remoting/host/plugin/host_script_object.cc |
| index 5eb82de8c794d79c452123edadc08e0607ec1823..035641fe8d7885ec0e8dd9ff25a32e6b4daa261e 100644 |
| --- a/remoting/host/plugin/host_script_object.cc |
| +++ b/remoting/host/plugin/host_script_object.cc |
| @@ -23,6 +23,7 @@ namespace remoting { |
| // Supported Javascript interface: |
| // readonly attribute string accessCode; |
| // readonly attribute int accessCodeLifetime; |
| +// readonly attribute string client; |
| // readonly attribute int state; |
| // |
| // state: { |
| @@ -46,6 +47,7 @@ namespace { |
| const char* kAttrNameAccessCode = "accessCode"; |
| const char* kAttrNameAccessCodeLifetime = "accessCodeLifetime"; |
| +const char* kAttrNameClient = "client"; |
| const char* kAttrNameState = "state"; |
| const char* kAttrNameLogDebugInfo = "logDebugInfo"; |
| const char* kAttrNameOnStateChanged = "onStateChanged"; |
| @@ -150,6 +152,7 @@ bool HostNPScriptObject::HasProperty(const std::string& property_name) { |
| CHECK_EQ(base::PlatformThread::CurrentId(), np_thread_id_); |
| return (property_name == kAttrNameAccessCode || |
| property_name == kAttrNameAccessCodeLifetime || |
| + property_name == kAttrNameClient || |
| property_name == kAttrNameState || |
| property_name == kAttrNameLogDebugInfo || |
| property_name == kAttrNameOnStateChanged || |
| @@ -185,6 +188,9 @@ bool HostNPScriptObject::GetProperty(const std::string& property_name, |
| } else if (property_name == kAttrNameAccessCodeLifetime) { |
| INT32_TO_NPVARIANT(access_code_lifetime_.InSeconds(), *result); |
| return true; |
| + } else if (property_name == kAttrNameClient) { |
| + *result = NPVariantFromString(client_username_); |
| + return true; |
| } else if (property_name == kAttrNameDisconnected) { |
| INT32_TO_NPVARIANT(kDisconnected, *result); |
| return true; |
| @@ -295,9 +301,21 @@ void HostNPScriptObject::OnAccessDenied() { |
| DisconnectInternal(); |
| } |
| -void HostNPScriptObject::OnAuthenticatedClientsChanged(int clients_connected) { |
| +void HostNPScriptObject::OnClientAuthenticated( |
| + remoting::protocol::ConnectionToClient* client) { |
| DCHECK_NE(base::PlatformThread::CurrentId(), np_thread_id_); |
| - OnStateChanged(clients_connected ? kConnected : kDisconnected); |
| + client_username_ = client->session()->jid(); |
| + size_t pos = client_username_.find('/'); |
| + if (pos != std::string::npos) |
| + client_username_.replace(pos, std::string::npos, ""); |
| + LOG(INFO) << "Client " << client_username_ << " connected."; |
|
Wez
2011/08/02 21:38:01
nit: The client has authenticated; they were alrea
|
| + OnStateChanged(kConnected); |
| +} |
| + |
| +void HostNPScriptObject::OnClientDisconnected( |
| + remoting::protocol::ConnectionToClient* client) { |
| + client_username_.clear(); |
| + OnStateChanged(kDisconnected); |
| } |
| void HostNPScriptObject::OnShutdown() { |