OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 <algorithm> | 5 #include <algorithm> |
6 #include <string> | 6 #include <string> |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "chrome/common/net/notifier/communicator/single_login_attempt.h" | 9 #include "chrome/common/net/notifier/communicator/single_login_attempt.h" |
10 | 10 |
11 #include "base/logging.h" | 11 #include "base/logging.h" |
12 #include "chrome/common/net/notifier/communicator/connection_options.h" | 12 #include "chrome/common/net/notifier/communicator/connection_options.h" |
13 #include "chrome/common/net/notifier/communicator/connection_settings.h" | 13 #include "chrome/common/net/notifier/communicator/connection_settings.h" |
14 #include "chrome/common/net/notifier/communicator/const_communicator.h" | 14 #include "chrome/common/net/notifier/communicator/const_communicator.h" |
15 #include "chrome/common/net/notifier/communicator/login_failure.h" | 15 #include "chrome/common/net/notifier/communicator/login_failure.h" |
16 #include "chrome/common/net/notifier/communicator/login_settings.h" | 16 #include "chrome/common/net/notifier/communicator/login_settings.h" |
17 #include "chrome/common/net/notifier/communicator/product_info.h" | 17 #include "chrome/common/net/notifier/communicator/product_info.h" |
18 #include "chrome/common/net/notifier/communicator/xmpp_connection_generator.h" | 18 #include "chrome/common/net/notifier/communicator/xmpp_connection_generator.h" |
19 #include "chrome/common/net/notifier/communicator/xmpp_socket_adapter.h" | 19 #include "chrome/common/net/notifier/communicator/xmpp_socket_adapter.h" |
20 #include "talk/base/asynchttprequest.h" | 20 #include "talk/base/asynchttprequest.h" |
21 #include "talk/base/firewallsocketserver.h" | 21 #include "talk/base/firewallsocketserver.h" |
22 #include "talk/base/signalthread.h" | 22 #include "talk/base/signalthread.h" |
23 #include "talk/base/taskrunner.h" | 23 #include "talk/base/taskrunner.h" |
24 #include "talk/base/winsock_initializer.h" | 24 #include "talk/base/win32socketinit.h" |
25 #include "talk/xmllite/xmlelement.h" | 25 #include "talk/xmllite/xmlelement.h" |
26 #include "talk/xmpp/prexmppauth.h" | 26 #include "talk/xmpp/prexmppauth.h" |
27 #include "talk/xmpp/saslcookiemechanism.h" | 27 #include "talk/xmpp/saslcookiemechanism.h" |
28 #include "talk/xmpp/xmppclient.h" | 28 #include "talk/xmpp/xmppclient.h" |
29 #include "talk/xmpp/xmppclientsettings.h" | 29 #include "talk/xmpp/xmppclientsettings.h" |
30 #include "talk/xmpp/xmppconstants.h" | 30 #include "talk/xmpp/constants.h" |
31 | 31 |
32 namespace notifier { | 32 namespace notifier { |
33 | 33 |
34 static void GetClientErrorInformation( | 34 static void GetClientErrorInformation( |
35 buzz::XmppClient* client, | 35 buzz::XmppClient* client, |
36 buzz::XmppEngine::Error* error, | 36 buzz::XmppEngine::Error* error, |
37 int* subcode, | 37 int* subcode, |
38 buzz::XmlElement** stream_error) { | 38 buzz::XmlElement** stream_error) { |
39 DCHECK(client); | 39 DCHECK(client); |
40 DCHECK(error); | 40 DCHECK(error); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 // this point. | 75 // this point. |
76 | 76 |
77 virtual void StartPreXmppAuth( | 77 virtual void StartPreXmppAuth( |
78 const buzz::Jid& jid, | 78 const buzz::Jid& jid, |
79 const talk_base::SocketAddress& server, | 79 const talk_base::SocketAddress& server, |
80 const talk_base::CryptString& pass, | 80 const talk_base::CryptString& pass, |
81 const std::string& auth_cookie) { | 81 const std::string& auth_cookie) { |
82 SignalAuthDone(); | 82 SignalAuthDone(); |
83 } | 83 } |
84 | 84 |
85 virtual bool IsAuthDone() { return true; } | 85 virtual bool IsAuthDone() const { return true; } |
86 | 86 |
87 virtual bool IsAuthorized() { return true; } | 87 virtual bool IsAuthorized() const { return true; } |
88 | 88 |
89 virtual bool HadError() { return false; } | 89 virtual bool HadError() const { return false; } |
90 | 90 |
91 virtual int GetError() { return 0; } | 91 virtual int GetError() const { return 0; } |
92 | 92 |
93 virtual buzz::CaptchaChallenge GetCaptchaChallenge() { | 93 virtual buzz::CaptchaChallenge GetCaptchaChallenge() const { |
94 return buzz::CaptchaChallenge(); | 94 return buzz::CaptchaChallenge(); |
95 } | 95 } |
96 | 96 |
97 virtual std::string GetAuthCookie() { return std::string(); } | 97 virtual std::string GetAuthCookie() const { return std::string(); } |
98 | 98 |
99 // buzz::SaslHandler implementation. | 99 // buzz::SaslHandler implementation. |
100 | 100 |
101 virtual std::string ChooseBestSaslMechanism( | 101 virtual std::string ChooseBestSaslMechanism( |
102 const std::vector<std::string> & mechanisms, bool encrypted) { | 102 const std::vector<std::string> & mechanisms, bool encrypted) { |
103 return (std::find(mechanisms.begin(), | 103 return (std::find(mechanisms.begin(), |
104 mechanisms.end(), kGaiaAuthMechanism) != | 104 mechanisms.end(), kGaiaAuthMechanism) != |
105 mechanisms.end()) ? kGaiaAuthMechanism : ""; | 105 mechanisms.end()) ? kGaiaAuthMechanism : ""; |
106 } | 106 } |
107 | 107 |
108 virtual buzz::SaslMechanism* CreateSaslMechanism( | 108 virtual buzz::SaslMechanism* CreateSaslMechanism( |
109 const std::string& mechanism) { | 109 const std::string& mechanism) { |
110 return | 110 return |
111 (mechanism == kGaiaAuthMechanism) ? | 111 (mechanism == kGaiaAuthMechanism) ? |
112 new buzz::SaslCookieMechanism( | 112 new buzz::SaslCookieMechanism( |
113 kGaiaAuthMechanism, username_, token_, token_service_) | 113 kGaiaAuthMechanism, username_, token_, token_service_) |
114 : NULL; | 114 : NULL; |
115 } | 115 } |
116 | 116 |
| 117 // TODO(akalin): remove this code. |
117 virtual bool GetTlsServerInfo(const talk_base::SocketAddress& server, | 118 virtual bool GetTlsServerInfo(const talk_base::SocketAddress& server, |
118 std::string* tls_server_hostname, | 119 std::string* tls_server_hostname, |
119 std::string* tls_server_domain) { | 120 std::string* tls_server_domain) const { |
120 std::string server_ip = server.IPAsString(); | 121 std::string server_ip = server.IPAsString(); |
121 if ((server_ip == buzz::STR_TALK_GOOGLE_COM) || | 122 if ((server_ip == buzz::STR_TALK_GOOGLE_COM) || |
122 (server_ip == buzz::STR_TALKX_L_GOOGLE_COM)) { | 123 (server_ip == buzz::STR_TALKX_L_GOOGLE_COM)) { |
123 // For Gaia auth, the talk.google.com server expects you to use | 124 // For Gaia auth, the talk.google.com server expects you to use |
124 // "gmail.com" in the stream, and expects the domain certificate | 125 // "gmail.com" in the stream, and expects the domain certificate |
125 // to be "gmail.com" as well. | 126 // to be "gmail.com" as well. |
126 *tls_server_hostname = buzz::STR_GMAIL_COM; | 127 *tls_server_hostname = buzz::STR_GMAIL_COM; |
127 *tls_server_domain = buzz::STR_GMAIL_COM; | 128 *tls_server_domain = buzz::STR_GMAIL_COM; |
128 return true; | 129 return true; |
129 } | 130 } |
130 return false; | 131 return false; |
131 } | 132 } |
132 | 133 |
133 private: | 134 private: |
134 std::string username_, token_, token_service_; | 135 std::string username_, token_, token_service_; |
135 }; | 136 }; |
136 | 137 |
137 } // namespace | 138 } // namespace |
138 | 139 |
139 SingleLoginAttempt::SingleLoginAttempt(talk_base::Task* parent, | 140 SingleLoginAttempt::SingleLoginAttempt(talk_base::TaskParent* parent, |
140 LoginSettings* login_settings, | 141 LoginSettings* login_settings, |
141 bool successful_connection) | 142 bool successful_connection) |
142 : talk_base::Task(parent), | 143 : talk_base::Task(parent), |
143 state_(buzz::XmppEngine::STATE_NONE), | 144 state_(buzz::XmppEngine::STATE_NONE), |
144 code_(buzz::XmppEngine::ERROR_NONE), | 145 code_(buzz::XmppEngine::ERROR_NONE), |
145 subcode_(0), | 146 subcode_(0), |
146 need_authentication_(false), | 147 need_authentication_(false), |
147 certificate_expired_(false), | 148 certificate_expired_(false), |
148 cookie_refreshed_(false), | 149 cookie_refreshed_(false), |
149 successful_connection_(successful_connection), | 150 successful_connection_(successful_connection), |
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
593 DCHECK(connection_generator_.get()); | 594 DCHECK(connection_generator_.get()); |
594 if (!connection_generator_.get()) { | 595 if (!connection_generator_.get()) { |
595 return; | 596 return; |
596 } | 597 } |
597 | 598 |
598 // Iterate to the next possible connection (still trying to connect). | 599 // Iterate to the next possible connection (still trying to connect). |
599 UseNextConnection(); | 600 UseNextConnection(); |
600 } | 601 } |
601 | 602 |
602 } // namespace notifier | 603 } // namespace notifier |
OLD | NEW |