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/listener/push_client.h"
6
7#include <cstddef>
8
9#include "base/bind.h"
10#include "base/single_thread_task_runner.h"
11#include "jingle/notifier/listener/non_blocking_push_client.h"
12#include "jingle/notifier/listener/xmpp_push_client.h"
13
14namespace notifier {
15
16PushClient::~PushClient() {}
17
18namespace {
19
20scoped_ptr<PushClient> CreateXmppPushClient(
21    const NotifierOptions& notifier_options) {
22  return scoped_ptr<PushClient>(new XmppPushClient(notifier_options));
23}
24
25}  // namespace
26
27scoped_ptr<PushClient> PushClient::CreateDefault(
28    const NotifierOptions& notifier_options) {
29  return scoped_ptr<PushClient>(new NonBlockingPushClient(
30      notifier_options.request_context_getter->GetNetworkTaskRunner(),
31      base::Bind(&CreateXmppPushClient, notifier_options)));
32}
33
34scoped_ptr<PushClient> PushClient::CreateDefaultOnIOThread(
35    const NotifierOptions& notifier_options) {
36  CHECK(notifier_options.request_context_getter->GetNetworkTaskRunner()->
37        BelongsToCurrentThread());
38  return CreateXmppPushClient(notifier_options);
39}
40
41}  // namespace notifier
42