1// Copyright (c) 2013 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#ifndef CHROME_BROWSER_NOTIFICATIONS_SYNC_NOTIFIER_CHROME_NOTIFIER_SERVICE_FACTORY_H_
6#define CHROME_BROWSER_NOTIFICATIONS_SYNC_NOTIFIER_CHROME_NOTIFIER_SERVICE_FACTORY_H_
7
8#include "base/memory/singleton.h"
9#include "chrome/browser/profiles/profile.h"
10#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
11
12namespace base {
13class CommandLine;
14}
15
16namespace notifier {
17
18class ChromeNotifierService;
19
20class ChromeNotifierServiceFactory : public BrowserContextKeyedServiceFactory {
21 public:
22  static ChromeNotifierService* GetForProfile(
23      Profile* profile, Profile::ServiceAccessType service_access_type);
24
25  static ChromeNotifierServiceFactory* GetInstance();
26
27  // Based on command line switches, make the call to use SyncedNotifications or
28  // not.
29  // TODO(petewil): Remove this when the SyncedNotifications feature is ready
30  // to be turned on by default, and just use a disable switch instead then.
31  static bool UseSyncedNotifications(base::CommandLine* command_line);
32
33 private:
34  friend struct DefaultSingletonTraits<ChromeNotifierServiceFactory>;
35
36  ChromeNotifierServiceFactory();
37  virtual ~ChromeNotifierServiceFactory();
38
39  // BrowserContextKeyedServiceFactory:
40  virtual KeyedService* BuildServiceInstanceFor(
41      content::BrowserContext* profile) const OVERRIDE;
42};
43
44}  // namespace notifier
45
46#endif  // CHROME_BROWSER_NOTIFICATIONS_SYNC_NOTIFIER_CHROME_NOTIFIER_SERVICE_FACTORY_H_
47