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 15namespace notifier { 16 17LoginSettings::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 31LoginSettings::~LoginSettings() {} 32 33void LoginSettings::set_user_settings( 34 const buzz::XmppClientSettings& user_settings) { 35 user_settings_ = user_settings; 36} 37 38ServerList LoginSettings::GetServers() const { 39 return GetServersForTime(base::Time::Now()); 40} 41 42namespace { 43 44// How long a redirect is valid for. 45const int kRedirectExpirationTimeMinutes = 5; 46 47} // namespace 48 49void 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 57ServerList LoginSettings::GetServersForTimeForTest(base::Time now) const { 58 return GetServersForTime(now); 59} 60 61base::Time LoginSettings::GetRedirectExpirationForTest() const { 62 return redirect_expiration_; 63} 64 65ServerList 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