Index: chrome/browser/sync/notifier/gaia_auth/gaiaauth.h |
=================================================================== |
--- chrome/browser/sync/notifier/gaia_auth/gaiaauth.h (revision 0) |
+++ chrome/browser/sync/notifier/gaia_auth/gaiaauth.h (revision 0) |
@@ -0,0 +1,129 @@ |
+// Copyright (c) 2009 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+// |
+// Gaia auth code for XMPP notifier support. This should be merged with |
+// the other gaia auth file when we have time. |
+ |
+#ifndef CHROME_BROWSER_SYNC_NOTIFIER_GAIA_AUTH_GAIAAUTH_H_ |
+#define CHROME_BROWSER_SYNC_NOTIFIER_GAIA_AUTH_GAIAAUTH_H_ |
+ |
+#include <string> |
+#include <vector> |
+ |
+#include "chrome/browser/sync/notifier/gaia_auth/gaiahelper.h" |
+#include "talk/base/cryptstring.h" |
+#include "talk/base/messagequeue.h" |
+#include "talk/base/proxyinfo.h" |
+#include "talk/xmpp/prexmppauth.h" |
+ |
+namespace talk_base { |
+class FirewallManager; |
+class SignalThread; |
+} |
+ |
+namespace buzz { |
+ |
+/////////////////////////////////////////////////////////////////////////////// |
+// GaiaAuth |
+/////////////////////////////////////////////////////////////////////////////// |
+ |
+class GaiaAuth : public PreXmppAuth, public sigslot::has_slots<> { |
+ public: |
+ GaiaAuth(const std::string& user_agent, const std::string& signature); |
+ virtual ~GaiaAuth(); |
+ |
+ void set_proxy(const talk_base::ProxyInfo& proxy) { |
+ proxy_ = proxy; |
+ } |
+ void set_firewall(talk_base::FirewallManager* firewall) { |
+ firewall_ = firewall; |
+ } |
+ void set_captcha_answer(const CaptchaAnswer& captcha_answer) { |
+ captcha_answer_ = captcha_answer; |
+ } |
+ |
+ // From inside XMPP login, this is called |
+ virtual void StartPreXmppAuth(const buzz::Jid& jid, |
+ const talk_base::SocketAddress& server, |
+ const talk_base::CryptString& pass, |
+ const std::string& auth_cookie); |
+ |
+ void StartTokenAuth(const buzz::Jid& jid, |
+ const talk_base::CryptString& pass, |
+ const std::string& service); |
+ |
+ // This is used when calling GetAuth() |
+ void StartAuth(const buzz::Jid& jid, |
+ const talk_base::CryptString& pass, |
+ const std::string& service); |
+ |
+ // This is used when bootstrapping from a download page |
+ void StartAuthFromSid(const buzz::Jid& jid, |
+ const std::string& sid, |
+ const std::string& service); |
+ |
+ virtual bool IsAuthDone(); |
+ virtual bool IsAuthorized(); |
+ virtual bool HadError(); |
+ virtual int GetError(); |
+ virtual buzz::CaptchaChallenge GetCaptchaChallenge(); |
+ // Returns the auth token that can be sent in an url param to gaia in order |
+ // to generate an auth cookie. |
+ virtual std::string GetAuthCookie(); |
+ |
+ // Returns the auth cookie for gaia. |
+ std::string GetAuth(); |
+ std::string GetSID(); |
+ |
+ // Sets / gets the token service to use. |
+ std::string token_service() const { return token_service_; } |
+ void set_token_service(const std::string& token_service) { |
+ token_service_ = token_service; |
+ } |
+ |
+ virtual std::string ChooseBestSaslMechanism( |
+ const std::vector<std::string>& mechanisms, bool encrypted); |
+ virtual buzz::SaslMechanism* CreateSaslMechanism( |
+ const std::string& mechanism); |
+ |
+ std::string CreateAuthenticatedUrl(const std::string& continue_url, |
+ const std::string& service); |
+ |
+ sigslot::signal0<> SignalAuthenticationError; |
+ sigslot::signal0<> SignalCertificateExpired; |
+ sigslot::signal1<const std::string&> SignalFreshAuthCookie; |
+ |
+ private: |
+ void OnAuthDone(talk_base::SignalThread* worker); |
+ |
+ void InternalStartGaiaAuth(const buzz::Jid& jid, |
+ const talk_base::SocketAddress& server, |
+ const talk_base::CryptString& pass, |
+ const std::string& sid, |
+ const std::string& service, |
+ bool obtain_auth); |
+ |
+ std::string agent_; |
+ std::string signature_; |
+ talk_base::ProxyInfo proxy_; |
+ talk_base::FirewallManager* firewall_; |
+ class WorkerThread; |
+ WorkerThread* worker_; |
+ bool done_; |
+ |
+ CaptchaAnswer captcha_answer_; |
+ std::string token_service_; |
+}; |
+ |
+/////////////////////////////////////////////////////////////////////////////// |
+// Globals |
+/////////////////////////////////////////////////////////////////////////////// |
+ |
+extern GaiaServer g_gaia_server; |
+ |
+/////////////////////////////////////////////////////////////////////////////// |
+ |
+} // namespace buzz |
+ |
+#endif // CHROME_BROWSER_SYNC_NOTIFIER_GAIA_AUTH_GAIAAUTH_H_ |
Property changes on: chrome\browser\sync\notifier\gaia_auth\gaiaauth.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |