- add sources.
[platform/framework/web/crosswalk.git] / src / jingle / notifier / base / notifier_options_util.cc
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 "jingle/notifier/base/notifier_options_util.h"
6
7 #include "base/logging.h"
8 #include "jingle/notifier/base/const_communicator.h"
9 #include "jingle/notifier/base/notifier_options.h"
10 #include "talk/xmpp/constants.h"
11 #include "talk/xmpp/jid.h"
12
13 namespace notifier {
14
15 buzz::XmppClientSettings MakeXmppClientSettings(
16     const NotifierOptions& notifier_options,
17     const std::string& email, const std::string& token) {
18   buzz::Jid jid = buzz::Jid(email);
19   DCHECK(!jid.node().empty());
20   DCHECK(jid.IsValid());
21
22   buzz::XmppClientSettings xmpp_client_settings;
23   xmpp_client_settings.set_user(jid.node());
24   xmpp_client_settings.set_resource("chrome-sync");
25   xmpp_client_settings.set_host(jid.domain());
26   xmpp_client_settings.set_use_tls(buzz::TLS_ENABLED);
27   xmpp_client_settings.set_auth_token(notifier_options.auth_mechanism,
28       notifier_options.invalidate_xmpp_login ?
29       token + "bogus" : token);
30   if (notifier_options.auth_mechanism == buzz::AUTH_MECHANISM_OAUTH2)
31     xmpp_client_settings.set_token_service("oauth2");
32   else
33     xmpp_client_settings.set_token_service("chromiumsync");
34   if (notifier_options.allow_insecure_connection) {
35     xmpp_client_settings.set_allow_plain(true);
36     xmpp_client_settings.set_use_tls(buzz::TLS_DISABLED);
37   }
38   return xmpp_client_settings;
39 }
40
41 ServerList GetServerList(
42     const NotifierOptions& notifier_options) {
43   ServerList servers;
44   // Override the default servers with a test notification server if one was
45   // provided.
46   if (!notifier_options.xmpp_host_port.host().empty()) {
47     servers.push_back(
48         ServerInformation(notifier_options.xmpp_host_port,
49                           DOES_NOT_SUPPORT_SSLTCP));
50   } else {
51     // The default servers support SSLTCP.
52     servers.push_back(
53         ServerInformation(
54             net::HostPortPair("talk.google.com",
55                               notifier::kDefaultXmppPort),
56             SUPPORTS_SSLTCP));
57     servers.push_back(
58         ServerInformation(
59             net::HostPortPair("talkx.l.google.com",
60                               notifier::kDefaultXmppPort),
61             SUPPORTS_SSLTCP));
62   }
63   return servers;
64 }
65
66 }  // namespace notifier