Home | History | Annotate | Download | only in communicator
      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