// 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