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

Side by Side Diff: remoting/host/chromoting_host.cc

Issue 14520018: Create the desktop environment before any of the channel were connected. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 7 years, 7 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
« no previous file with comments | « remoting/host/chromoting_host.h ('k') | remoting/host/client_session.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/chromoting_host.h" 5 #include "remoting/host/chromoting_host.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 session_manager_->set_authenticator_factory(authenticator_factory.Pass()); 141 session_manager_->set_authenticator_factory(authenticator_factory.Pass());
142 } 142 }
143 143
144 void ChromotingHost::SetMaximumSessionDuration( 144 void ChromotingHost::SetMaximumSessionDuration(
145 const base::TimeDelta& max_session_duration) { 145 const base::TimeDelta& max_session_duration) {
146 max_session_duration_ = max_session_duration; 146 max_session_duration_ = max_session_duration;
147 } 147 }
148 148
149 //////////////////////////////////////////////////////////////////////////// 149 ////////////////////////////////////////////////////////////////////////////
150 // protocol::ClientSession::EventHandler implementation. 150 // protocol::ClientSession::EventHandler implementation.
151 void ChromotingHost::OnSessionAuthenticated(ClientSession* client) { 151 bool ChromotingHost::OnSessionAuthenticated(ClientSession* client) {
152 DCHECK(CalledOnValidThread()); 152 DCHECK(CalledOnValidThread());
153 153
154 login_backoff_.Reset(); 154 login_backoff_.Reset();
155 155
156 // Disconnect all other clients. |it| should be advanced before Disconnect() 156 // Disconnect all other clients. |it| should be advanced before Disconnect()
157 // is called to avoid it becoming invalid when the client is removed from 157 // is called to avoid it becoming invalid when the client is removed from
158 // the list. 158 // the list.
159 ClientList::iterator it = clients_.begin(); 159 ClientList::iterator it = clients_.begin();
160 while (it != clients_.end()) { 160 while (it != clients_.end()) {
161 ClientSession* other_client = *it++; 161 ClientSession* other_client = *it++;
162 if (other_client != client) 162 if (other_client != client)
163 other_client->DisconnectSession(); 163 other_client->DisconnectSession();
164 } 164 }
165 165
166 // Disconnects above must have destroyed all other clients. 166 // Disconnects above must have destroyed all other clients.
167 DCHECK_EQ(clients_.size(), 1U); 167 DCHECK_EQ(clients_.size(), 1U);
168 168
169 // Notify observers that there is at least one authenticated client. 169 // Notify observers that there is at least one authenticated client.
170 const std::string& jid = client->client_jid(); 170 const std::string& jid = client->client_jid();
171 171
172 reject_authenticating_client_ = false; 172 reject_authenticating_client_ = false;
173 173
174 authenticating_client_ = true; 174 authenticating_client_ = true;
175 FOR_EACH_OBSERVER(HostStatusObserver, status_observers_, 175 FOR_EACH_OBSERVER(HostStatusObserver, status_observers_,
176 OnClientAuthenticated(jid)); 176 OnClientAuthenticated(jid));
177 authenticating_client_ = false; 177 authenticating_client_ = false;
178 178
179 if (reject_authenticating_client_) { 179 return !reject_authenticating_client_;
180 client->DisconnectSession();
181 }
182 } 180 }
183 181
184 void ChromotingHost::OnSessionChannelsConnected(ClientSession* client) { 182 void ChromotingHost::OnSessionChannelsConnected(ClientSession* client) {
185 DCHECK(CalledOnValidThread()); 183 DCHECK(CalledOnValidThread());
186 184
187 // Notify observers. 185 // Notify observers.
188 FOR_EACH_OBSERVER(HostStatusObserver, status_observers_, 186 FOR_EACH_OBSERVER(HostStatusObserver, status_observers_,
189 OnClientConnected(client->client_jid())); 187 OnClientConnected(client->client_jid()));
190 } 188 }
191 189
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 DCHECK(CalledOnValidThread()); 295 DCHECK(CalledOnValidThread());
298 296
299 while (!clients_.empty()) { 297 while (!clients_.empty()) {
300 size_t size = clients_.size(); 298 size_t size = clients_.size();
301 clients_.front()->DisconnectSession(); 299 clients_.front()->DisconnectSession();
302 CHECK_EQ(clients_.size(), size - 1); 300 CHECK_EQ(clients_.size(), size - 1);
303 } 301 }
304 } 302 }
305 303
306 } // namespace remoting 304 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/chromoting_host.h ('k') | remoting/host/client_session.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698