15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "jingle/notifier/communicator/login_settings.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "jingle/notifier/base/server_information.h" 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "net/cert/cert_verifier.h" 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "webrtc/base/common.h" 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "webrtc/base/socketaddress.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace notifier { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LoginSettings::LoginSettings(const buzz::XmppClientSettings& user_settings, 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const scoped_refptr<net::URLRequestContextGetter>& 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request_context_getter, 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ServerList& default_servers, 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool try_ssltcp_first, 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& auth_mechanism) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : user_settings_(user_settings), 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request_context_getter_(request_context_getter), 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default_servers_(default_servers), 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) try_ssltcp_first_(try_ssltcp_first), 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) auth_mechanism_(auth_mechanism) { 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK_GT(default_servers_.size(), 0u); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LoginSettings::~LoginSettings() {} 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void LoginSettings::set_user_settings( 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const buzz::XmppClientSettings& user_settings) { 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) user_settings_ = user_settings; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ServerList LoginSettings::GetServers() const { 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return GetServersForTime(base::Time::Now()); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// How long a redirect is valid for. 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int kRedirectExpirationTimeMinutes = 5; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void LoginSettings::SetRedirectServer( 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ServerInformation& redirect_server) { 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) redirect_server_ = redirect_server; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) redirect_expiration_ = 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time::Now() + 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::TimeDelta::FromMinutes(kRedirectExpirationTimeMinutes); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ServerList LoginSettings::GetServersForTimeForTest(base::Time now) const { 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return GetServersForTime(now); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)base::Time LoginSettings::GetRedirectExpirationForTest() const { 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return redirect_expiration_; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ServerList LoginSettings::GetServersForTime(base::Time now) const { 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (now < redirect_expiration_) ? 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ServerList(1, redirect_server_) : 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default_servers_; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace notifier 73