Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(280)

Side by Side Diff: remoting/host/plugin/host_script_object.cc

Issue 7547001: Propagate connected user to web app. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "remoting/host/plugin/host_script_object.h" 5 #include "remoting/host/plugin/host_script_object.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/threading/platform_thread.h" 9 #include "base/threading/platform_thread.h"
10 #include "remoting/base/auth_token_util.h" 10 #include "remoting/base/auth_token_util.h"
11 #include "remoting/host/chromoting_host.h" 11 #include "remoting/host/chromoting_host.h"
12 #include "remoting/host/chromoting_host_context.h" 12 #include "remoting/host/chromoting_host_context.h"
13 #include "remoting/host/desktop_environment.h" 13 #include "remoting/host/desktop_environment.h"
14 #include "remoting/host/host_config.h" 14 #include "remoting/host/host_config.h"
15 #include "remoting/host/host_key_pair.h" 15 #include "remoting/host/host_key_pair.h"
16 #include "remoting/host/in_memory_host_config.h" 16 #include "remoting/host/in_memory_host_config.h"
17 #include "remoting/host/plugin/host_plugin_utils.h" 17 #include "remoting/host/plugin/host_plugin_utils.h"
18 #include "remoting/host/register_support_host_request.h" 18 #include "remoting/host/register_support_host_request.h"
19 #include "remoting/host/support_access_verifier.h" 19 #include "remoting/host/support_access_verifier.h"
20 20
21 namespace remoting { 21 namespace remoting {
22 22
23 // Supported Javascript interface: 23 // Supported Javascript interface:
24 // readonly attribute string accessCode; 24 // readonly attribute string accessCode;
25 // readonly attribute int accessCodeLifetime; 25 // readonly attribute int accessCodeLifetime;
26 // readonly attribute string client;
26 // readonly attribute int state; 27 // readonly attribute int state;
27 // 28 //
28 // state: { 29 // state: {
29 // DISCONNECTED, 30 // DISCONNECTED,
30 // REQUESTED_ACCESS_CODE, 31 // REQUESTED_ACCESS_CODE,
31 // RECEIVED_ACCESS_CODE, 32 // RECEIVED_ACCESS_CODE,
32 // CONNECTED, 33 // CONNECTED,
33 // AFFIRMING_CONNECTION, 34 // AFFIRMING_CONNECTION,
34 // ERROR, 35 // ERROR,
35 // } 36 // }
36 // 37 //
37 // attribute Function void logDebugInfo(string); 38 // attribute Function void logDebugInfo(string);
38 // attribute Function void onStateChanged(); 39 // attribute Function void onStateChanged();
39 // 40 //
40 // // The |auth_service_with_token| parameter should be in the format 41 // // The |auth_service_with_token| parameter should be in the format
41 // // "auth_service:auth_token". An example would be "oauth2:1/2a3912vd". 42 // // "auth_service:auth_token". An example would be "oauth2:1/2a3912vd".
42 // void connect(string uid, string auth_service_with_token); 43 // void connect(string uid, string auth_service_with_token);
43 // void disconnect(); 44 // void disconnect();
44 45
45 namespace { 46 namespace {
46 47
47 const char* kAttrNameAccessCode = "accessCode"; 48 const char* kAttrNameAccessCode = "accessCode";
48 const char* kAttrNameAccessCodeLifetime = "accessCodeLifetime"; 49 const char* kAttrNameAccessCodeLifetime = "accessCodeLifetime";
50 const char* kAttrNameClient = "client";
49 const char* kAttrNameState = "state"; 51 const char* kAttrNameState = "state";
50 const char* kAttrNameLogDebugInfo = "logDebugInfo"; 52 const char* kAttrNameLogDebugInfo = "logDebugInfo";
51 const char* kAttrNameOnStateChanged = "onStateChanged"; 53 const char* kAttrNameOnStateChanged = "onStateChanged";
52 const char* kFuncNameConnect = "connect"; 54 const char* kFuncNameConnect = "connect";
53 const char* kFuncNameDisconnect = "disconnect"; 55 const char* kFuncNameDisconnect = "disconnect";
54 56
55 // States. 57 // States.
56 const char* kAttrNameDisconnected = "DISCONNECTED"; 58 const char* kAttrNameDisconnected = "DISCONNECTED";
57 const char* kAttrNameRequestedAccessCode = "REQUESTED_ACCESS_CODE"; 59 const char* kAttrNameRequestedAccessCode = "REQUESTED_ACCESS_CODE";
58 const char* kAttrNameReceivedAccessCode = "RECEIVED_ACCESS_CODE"; 60 const char* kAttrNameReceivedAccessCode = "RECEIVED_ACCESS_CODE";
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 SetException("Invoke: unknown method " + method_name); 145 SetException("Invoke: unknown method " + method_name);
144 return false; 146 return false;
145 } 147 }
146 } 148 }
147 149
148 bool HostNPScriptObject::HasProperty(const std::string& property_name) { 150 bool HostNPScriptObject::HasProperty(const std::string& property_name) {
149 logger_->VLog(2, "HasProperty %s", property_name.c_str()); 151 logger_->VLog(2, "HasProperty %s", property_name.c_str());
150 CHECK_EQ(base::PlatformThread::CurrentId(), np_thread_id_); 152 CHECK_EQ(base::PlatformThread::CurrentId(), np_thread_id_);
151 return (property_name == kAttrNameAccessCode || 153 return (property_name == kAttrNameAccessCode ||
152 property_name == kAttrNameAccessCodeLifetime || 154 property_name == kAttrNameAccessCodeLifetime ||
155 property_name == kAttrNameClient ||
153 property_name == kAttrNameState || 156 property_name == kAttrNameState ||
154 property_name == kAttrNameLogDebugInfo || 157 property_name == kAttrNameLogDebugInfo ||
155 property_name == kAttrNameOnStateChanged || 158 property_name == kAttrNameOnStateChanged ||
156 property_name == kAttrNameDisconnected || 159 property_name == kAttrNameDisconnected ||
157 property_name == kAttrNameRequestedAccessCode || 160 property_name == kAttrNameRequestedAccessCode ||
158 property_name == kAttrNameReceivedAccessCode || 161 property_name == kAttrNameReceivedAccessCode ||
159 property_name == kAttrNameConnected || 162 property_name == kAttrNameConnected ||
160 property_name == kAttrNameAffirmingConnection || 163 property_name == kAttrNameAffirmingConnection ||
161 property_name == kAttrNameError); 164 property_name == kAttrNameError);
162 } 165 }
(...skipping 15 matching lines...) Expand all
178 return true; 181 return true;
179 } else if (property_name == kAttrNameState) { 182 } else if (property_name == kAttrNameState) {
180 INT32_TO_NPVARIANT(state_, *result); 183 INT32_TO_NPVARIANT(state_, *result);
181 return true; 184 return true;
182 } else if (property_name == kAttrNameAccessCode) { 185 } else if (property_name == kAttrNameAccessCode) {
183 *result = NPVariantFromString(access_code_); 186 *result = NPVariantFromString(access_code_);
184 return true; 187 return true;
185 } else if (property_name == kAttrNameAccessCodeLifetime) { 188 } else if (property_name == kAttrNameAccessCodeLifetime) {
186 INT32_TO_NPVARIANT(access_code_lifetime_.InSeconds(), *result); 189 INT32_TO_NPVARIANT(access_code_lifetime_.InSeconds(), *result);
187 return true; 190 return true;
191 } else if (property_name == kAttrNameClient) {
192 *result = NPVariantFromString(client_username_);
193 return true;
188 } else if (property_name == kAttrNameDisconnected) { 194 } else if (property_name == kAttrNameDisconnected) {
189 INT32_TO_NPVARIANT(kDisconnected, *result); 195 INT32_TO_NPVARIANT(kDisconnected, *result);
190 return true; 196 return true;
191 } else if (property_name == kAttrNameRequestedAccessCode) { 197 } else if (property_name == kAttrNameRequestedAccessCode) {
192 INT32_TO_NPVARIANT(kRequestedAccessCode, *result); 198 INT32_TO_NPVARIANT(kRequestedAccessCode, *result);
193 return true; 199 return true;
194 } else if (property_name == kAttrNameReceivedAccessCode) { 200 } else if (property_name == kAttrNameReceivedAccessCode) {
195 INT32_TO_NPVARIANT(kReceivedAccessCode, *result); 201 INT32_TO_NPVARIANT(kReceivedAccessCode, *result);
196 return true; 202 return true;
197 } else if (property_name == kAttrNameConnected) { 203 } else if (property_name == kAttrNameConnected) {
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 } 294 }
289 295
290 void HostNPScriptObject::OnAccessDenied() { 296 void HostNPScriptObject::OnAccessDenied() {
291 DCHECK_EQ(MessageLoop::current(), host_context_.network_message_loop()); 297 DCHECK_EQ(MessageLoop::current(), host_context_.network_message_loop());
292 298
293 ++failed_login_attempts_; 299 ++failed_login_attempts_;
294 if (failed_login_attempts_ == kMaxLoginAttempts) 300 if (failed_login_attempts_ == kMaxLoginAttempts)
295 DisconnectInternal(); 301 DisconnectInternal();
296 } 302 }
297 303
298 void HostNPScriptObject::OnAuthenticatedClientsChanged(int clients_connected) { 304 void HostNPScriptObject::OnClientAuthenticated(
305 remoting::protocol::ConnectionToClient* client) {
299 DCHECK_NE(base::PlatformThread::CurrentId(), np_thread_id_); 306 DCHECK_NE(base::PlatformThread::CurrentId(), np_thread_id_);
300 OnStateChanged(clients_connected ? kConnected : kDisconnected); 307 client_username_ = client->session()->jid();
308 size_t pos = client_username_.find('/');
309 if (pos != std::string::npos)
310 client_username_.replace(pos, std::string::npos, "");
311 LOG(INFO) << "Client " << client_username_ << " connected.";
Wez 2011/08/02 21:38:01 nit: The client has authenticated; they were alrea
312 OnStateChanged(kConnected);
313 }
314
315 void HostNPScriptObject::OnClientDisconnected(
316 remoting::protocol::ConnectionToClient* client) {
317 client_username_.clear();
318 OnStateChanged(kDisconnected);
301 } 319 }
302 320
303 void HostNPScriptObject::OnShutdown() { 321 void HostNPScriptObject::OnShutdown() {
304 DCHECK_EQ(MessageLoop::current(), host_context_.main_message_loop()); 322 DCHECK_EQ(MessageLoop::current(), host_context_.main_message_loop());
305 323
306 OnStateChanged(kDisconnected); 324 OnStateChanged(kDisconnected);
307 } 325 }
308 326
309 // string uid, string auth_token 327 // string uid, string auth_token
310 bool HostNPScriptObject::Connect(const NPVariant* args, 328 bool HostNPScriptObject::Connect(const NPVariant* args,
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
538 } 556 }
539 557
540 // static 558 // static
541 void HostNPScriptObject::NPTaskSpringboard(void* task) { 559 void HostNPScriptObject::NPTaskSpringboard(void* task) {
542 base::Closure* real_task = reinterpret_cast<base::Closure*>(task); 560 base::Closure* real_task = reinterpret_cast<base::Closure*>(task);
543 real_task->Run(); 561 real_task->Run();
544 delete real_task; 562 delete real_task;
545 } 563 }
546 564
547 } // namespace remoting 565 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/plugin/host_script_object.h ('k') | remoting/host/register_support_host_request.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698