| // Copyright (c) 2012 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. |
| |
| #include <string> |
| |
| #include "jingle/notifier/communicator/login_settings.h" |
| |
| #include "base/logging.h" |
| #include "jingle/notifier/base/server_information.h" |
| #include "net/cert/cert_verifier.h" |
| #include "talk/base/common.h" |
| #include "talk/base/socketaddress.h" |
| |
| namespace notifier { |
| |
| LoginSettings::LoginSettings(const buzz::XmppClientSettings& user_settings, |
| const scoped_refptr<net::URLRequestContextGetter>& |
| request_context_getter, |
| const ServerList& default_servers, |
| bool try_ssltcp_first, |
| const std::string& auth_mechanism) |
| : user_settings_(user_settings), |
| request_context_getter_(request_context_getter), |
| default_servers_(default_servers), |
| try_ssltcp_first_(try_ssltcp_first), |
| auth_mechanism_(auth_mechanism) { |
| DCHECK_GT(default_servers_.size(), 0u); |
| } |
| |
| LoginSettings::~LoginSettings() {} |
| |
| void LoginSettings::set_user_settings( |
| const buzz::XmppClientSettings& user_settings) { |
| user_settings_ = user_settings; |
| } |
| |
| ServerList LoginSettings::GetServers() const { |
| return GetServersForTime(base::Time::Now()); |
| } |
| |
| namespace { |
| |
| // How long a redirect is valid for. |
| const int kRedirectExpirationTimeMinutes = 5; |
| |
| } // namespace |
| |
| void LoginSettings::SetRedirectServer( |
| const ServerInformation& redirect_server) { |
| redirect_server_ = redirect_server; |
| redirect_expiration_ = |
| base::Time::Now() + |
| base::TimeDelta::FromMinutes(kRedirectExpirationTimeMinutes); |
| } |
| |
| ServerList LoginSettings::GetServersForTimeForTest(base::Time now) const { |
| return GetServersForTime(now); |
| } |
| |
| base::Time LoginSettings::GetRedirectExpirationForTest() const { |
| return redirect_expiration_; |
| } |
| |
| ServerList LoginSettings::GetServersForTime(base::Time now) const { |
| return |
| (now < redirect_expiration_) ? |
| ServerList(1, redirect_server_) : |
| default_servers_; |
| } |
| |
| } // namespace notifier |