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