// Copyright (c) 2011 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 CHROME_BROWSER_SYNC_NOTIFIER_SYNC_NOTIFIER_FACTORY_H_
#define CHROME_BROWSER_SYNC_NOTIFIER_SYNC_NOTIFIER_FACTORY_H_

#include <string>

#include "base/memory/ref_counted.h"

class CommandLine;

namespace net {
class URLRequestContextGetter;
}

namespace sync_notifier {

class SyncNotifier;

// Class to instantiate various implementations of the SyncNotifier interface.
class SyncNotifierFactory {
 public:
  // |client_info| is a string identifying the client, e.g. a user
  // agent string.
  explicit SyncNotifierFactory(const std::string& client_info);
  ~SyncNotifierFactory();

  // Creates the appropriate sync notifier. The caller should take ownership
  // of the object returned and delete it when no longer used.
  SyncNotifier* CreateSyncNotifier(
      const CommandLine& command_line,
      const scoped_refptr<net::URLRequestContextGetter>&
          request_context_getter);

 private:
  const std::string client_info_;
};

}  // namespace sync_notifier

#endif  // CHROME_BROWSER_SYNC_NOTIFIER_SYNC_NOTIFIER_FACTORY_H_