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 3 // found in the LICENSE file. 4 5 #ifndef JINGLE_NOTIFIER_COMMUNICATOR_LOGIN_SETTINGS_H_ 6 #define JINGLE_NOTIFIER_COMMUNICATOR_LOGIN_SETTINGS_H_ 7 #include <string> 8 9 #include "base/memory/ref_counted.h" 10 #include "base/time/time.h" 11 #include "jingle/notifier/base/server_information.h" 12 #include "net/url_request/url_request_context_getter.h" 13 #include "talk/xmpp/xmppclientsettings.h" 14 15 namespace notifier { 16 17 class LoginSettings { 18 public: 19 LoginSettings(const buzz::XmppClientSettings& user_settings, 20 const scoped_refptr<net::URLRequestContextGetter>& 21 request_context_getter, 22 const ServerList& default_servers, 23 bool try_ssltcp_first, 24 const std::string& auth_mechanism); 25 26 ~LoginSettings(); 27 28 // Copy constructor and assignment operator welcome. 29 30 const buzz::XmppClientSettings& user_settings() const { 31 return user_settings_; 32 } 33 34 void set_user_settings(const buzz::XmppClientSettings& user_settings); 35 36 scoped_refptr<net::URLRequestContextGetter> request_context_getter() const { 37 return request_context_getter_; 38 } 39 40 bool try_ssltcp_first() const { 41 return try_ssltcp_first_; 42 } 43 44 const std::string& auth_mechanism() const { 45 return auth_mechanism_; 46 } 47 48 ServerList GetServers() const; 49 50 // The redirect server will eventually expire. 51 void SetRedirectServer(const ServerInformation& redirect_server); 52 53 ServerList GetServersForTimeForTest(base::Time now) const; 54 55 base::Time GetRedirectExpirationForTest() const; 56 57 private: 58 ServerList GetServersForTime(base::Time now) const; 59 60 buzz::XmppClientSettings user_settings_; 61 scoped_refptr<net::URLRequestContextGetter> request_context_getter_; 62 ServerList default_servers_; 63 bool try_ssltcp_first_; 64 std::string auth_mechanism_; 65 66 // Used to handle redirects 67 ServerInformation redirect_server_; 68 base::Time redirect_expiration_; 69 70 }; 71 72 } // namespace notifier 73 74 #endif // JINGLE_NOTIFIER_COMMUNICATOR_LOGIN_SETTINGS_H_ 75