OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/signaling/xmpp_signal_strategy.h" | 5 #include "remoting/signaling/xmpp_signal_strategy.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/location.h" | 8 #include "base/location.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/single_thread_task_runner.h" | 10 #include "base/single_thread_task_runner.h" |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
76 DCHECK(CalledOnValidThread()); | 76 DCHECK(CalledOnValidThread()); |
77 | 77 |
78 // Disconnect first if we are currently connected. | 78 // Disconnect first if we are currently connected. |
79 Disconnect(); | 79 Disconnect(); |
80 | 80 |
81 buzz::XmppClientSettings settings; | 81 buzz::XmppClientSettings settings; |
82 buzz::Jid login_jid(xmpp_server_config_.username); | 82 buzz::Jid login_jid(xmpp_server_config_.username); |
83 settings.set_user(login_jid.node()); | 83 settings.set_user(login_jid.node()); |
84 settings.set_host(login_jid.domain()); | 84 settings.set_host(login_jid.domain()); |
85 settings.set_resource(resource_name_); | 85 settings.set_resource(resource_name_); |
86 settings.set_token_service(xmpp_server_config_.auth_service); | 86 settings.set_token_service("oauth2"); |
87 settings.set_auth_token(buzz::AUTH_MECHANISM_GOOGLE_TOKEN, | 87 settings.set_auth_token(buzz::AUTH_MECHANISM_GOOGLE_TOKEN, |
88 xmpp_server_config_.auth_token); | 88 xmpp_server_config_.auth_token); |
89 | 89 |
90 int port = xmpp_server_config_.port; | 90 int port = xmpp_server_config_.port; |
91 | 91 |
92 // Port 5222 may be blocked by firewall. talk.google.com allows connections on | 92 // Port 5222 may be blocked by firewall. talk.google.com allows connections on |
93 // port 443 which can be used instead of 5222. The webapp still requests to | 93 // port 443 which can be used instead of 5222. The webapp still requests to |
94 // use port 5222 for backwards compatibility with older versions of the host | 94 // use port 5222 for backwards compatibility with older versions of the host |
95 // that do not pass correct |use_fake_ssl_client_socket| value to | 95 // that do not pass correct |use_fake_ssl_client_socket| value to |
96 // XmppClientSocketFactory (and so cannot connect to port 443). In case we are | 96 // XmppClientSocketFactory (and so cannot connect to port 443). In case we are |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
196 ObserverListBase<Listener>::Iterator it(listeners_); | 196 ObserverListBase<Listener>::Iterator it(listeners_); |
197 Listener* listener; | 197 Listener* listener; |
198 while ((listener = it.GetNext()) != nullptr) { | 198 while ((listener = it.GetNext()) != nullptr) { |
199 if (listener->OnSignalStrategyIncomingStanza(stanza)) | 199 if (listener->OnSignalStrategyIncomingStanza(stanza)) |
200 return true; | 200 return true; |
201 } | 201 } |
202 return false; | 202 return false; |
203 } | 203 } |
204 | 204 |
205 void XmppSignalStrategy::SetAuthInfo(const std::string& username, | 205 void XmppSignalStrategy::SetAuthInfo(const std::string& username, |
206 const std::string& auth_token, | 206 const std::string& auth_token) { |
207 const std::string& auth_service) { | |
208 DCHECK(CalledOnValidThread()); | 207 DCHECK(CalledOnValidThread()); |
209 xmpp_server_config_.username = username; | 208 xmpp_server_config_.username = username; |
210 xmpp_server_config_.auth_token = auth_token; | 209 xmpp_server_config_.auth_token = auth_token; |
211 xmpp_server_config_.auth_service = auth_service; | |
212 } | 210 } |
213 | 211 |
214 void XmppSignalStrategy::SetResourceName(const std::string &resource_name) { | 212 void XmppSignalStrategy::SetResourceName(const std::string &resource_name) { |
215 DCHECK(CalledOnValidThread()); | 213 DCHECK(CalledOnValidThread()); |
216 resource_name_ = resource_name; | 214 resource_name_ = resource_name; |
217 } | 215 } |
218 | 216 |
219 void XmppSignalStrategy::OnConnectionStateChanged( | 217 void XmppSignalStrategy::OnConnectionStateChanged( |
220 buzz::XmppEngine::State state) { | 218 buzz::XmppEngine::State state) { |
221 DCHECK(CalledOnValidThread()); | 219 DCHECK(CalledOnValidThread()); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
262 } | 260 } |
263 | 261 |
264 void XmppSignalStrategy::SendKeepAlive() { | 262 void XmppSignalStrategy::SendKeepAlive() { |
265 xmpp_client_->SendRaw(" "); | 263 xmpp_client_->SendRaw(" "); |
266 } | 264 } |
267 | 265 |
268 // static | 266 // static |
269 buzz::PreXmppAuth* XmppSignalStrategy::CreatePreXmppAuth( | 267 buzz::PreXmppAuth* XmppSignalStrategy::CreatePreXmppAuth( |
270 const buzz::XmppClientSettings& settings) { | 268 const buzz::XmppClientSettings& settings) { |
271 buzz::Jid jid(settings.user(), settings.host(), buzz::STR_EMPTY); | 269 buzz::Jid jid(settings.user(), settings.host(), buzz::STR_EMPTY); |
272 std::string mechanism = notifier::kDefaultGaiaAuthMechanism; | |
273 if (settings.token_service() == "oauth2") { | |
274 mechanism = "X-OAUTH2"; | |
275 } | |
276 | |
277 return new notifier::GaiaTokenPreXmppAuth( | 270 return new notifier::GaiaTokenPreXmppAuth( |
278 jid.Str(), settings.auth_token(), settings.token_service(), mechanism); | 271 jid.Str(), settings.auth_token(), settings.token_service(), "X-OAUTH2"); |
279 } | 272 } |
280 | 273 |
281 } // namespace remoting | 274 } // namespace remoting |
OLD | NEW |