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 #include <string>
      6 
      7 #include "jingle/notifier/communicator/login_settings.h"
      8 
      9 #include "base/logging.h"
     10 #include "jingle/notifier/base/server_information.h"
     11 #include "net/cert/cert_verifier.h"
     12 #include "webrtc/base/common.h"
     13 #include "webrtc/base/socketaddress.h"
     14 
     15 namespace notifier {
     16 
     17 LoginSettings::LoginSettings(const buzz::XmppClientSettings& user_settings,
     18                              const scoped_refptr<net::URLRequestContextGetter>&
     19                                  request_context_getter,
     20                              const ServerList& default_servers,
     21                              bool try_ssltcp_first,
     22                              const std::string& auth_mechanism)
     23     : user_settings_(user_settings),
     24       request_context_getter_(request_context_getter),
     25       default_servers_(default_servers),
     26       try_ssltcp_first_(try_ssltcp_first),
     27       auth_mechanism_(auth_mechanism) {
     28   DCHECK_GT(default_servers_.size(), 0u);
     29 }
     30 
     31 LoginSettings::~LoginSettings() {}
     32 
     33 void LoginSettings::set_user_settings(
     34     const buzz::XmppClientSettings& user_settings) {
     35   user_settings_ = user_settings;
     36 }
     37 
     38 ServerList LoginSettings::GetServers() const {
     39   return GetServersForTime(base::Time::Now());
     40 }
     41 
     42 namespace {
     43 
     44 // How long a redirect is valid for.
     45 const int kRedirectExpirationTimeMinutes = 5;
     46 
     47 }  // namespace
     48 
     49 void LoginSettings::SetRedirectServer(
     50     const ServerInformation& redirect_server) {
     51   redirect_server_ = redirect_server;
     52   redirect_expiration_ =
     53       base::Time::Now() +
     54       base::TimeDelta::FromMinutes(kRedirectExpirationTimeMinutes);
     55 }
     56 
     57 ServerList LoginSettings::GetServersForTimeForTest(base::Time now) const {
     58   return GetServersForTime(now);
     59 }
     60 
     61 base::Time LoginSettings::GetRedirectExpirationForTest() const {
     62   return redirect_expiration_;
     63 }
     64 
     65 ServerList LoginSettings::GetServersForTime(base::Time now) const {
     66   return
     67       (now < redirect_expiration_) ?
     68       ServerList(1, redirect_server_) :
     69       default_servers_;
     70 }
     71 
     72 }  // namespace notifier
     73