blob: ae81e7f5b311d965a5f2fa4ebd01f7df4d45c50b [file] [log] [blame]
// 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.
#ifndef JINGLE_NOTIFIER_COMMUNICATOR_LOGIN_SETTINGS_H_
#define JINGLE_NOTIFIER_COMMUNICATOR_LOGIN_SETTINGS_H_
#include <string>
#include "base/memory/ref_counted.h"
#include "base/time/time.h"
#include "jingle/notifier/base/server_information.h"
#include "net/url_request/url_request_context_getter.h"
#include "third_party/libjingle_xmpp/xmpp/xmppclientsettings.h"
namespace notifier {
class LoginSettings {
public:
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);
LoginSettings(const LoginSettings& other);
~LoginSettings();
// Copy constructor and assignment operator welcome.
const buzz::XmppClientSettings& user_settings() const {
return user_settings_;
}
void set_user_settings(const buzz::XmppClientSettings& user_settings);
scoped_refptr<net::URLRequestContextGetter> request_context_getter() const {
return request_context_getter_;
}
bool try_ssltcp_first() const {
return try_ssltcp_first_;
}
const std::string& auth_mechanism() const {
return auth_mechanism_;
}
ServerList GetServers() const;
// The redirect server will eventually expire.
void SetRedirectServer(const ServerInformation& redirect_server);
ServerList GetServersForTimeForTest(base::Time now) const;
base::Time GetRedirectExpirationForTest() const;
private:
ServerList GetServersForTime(base::Time now) const;
buzz::XmppClientSettings user_settings_;
scoped_refptr<net::URLRequestContextGetter> request_context_getter_;
ServerList default_servers_;
bool try_ssltcp_first_;
std::string auth_mechanism_;
// Used to handle redirects
ServerInformation redirect_server_;
base::Time redirect_expiration_;
};
} // namespace notifier
#endif // JINGLE_NOTIFIER_COMMUNICATOR_LOGIN_SETTINGS_H_