12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CHROME_BROWSER_NOTIFICATIONS_SYNC_NOTIFIER_CHROME_NOTIFIER_SERVICE_FACTORY_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CHROME_BROWSER_NOTIFICATIONS_SYNC_NOTIFIER_CHROME_NOTIFIER_SERVICE_FACTORY_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/singleton.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/profiles/profile.h" 10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/content/browser_context_keyed_service_factory.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace base { 13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass CommandLine; 14a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace notifier { 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ChromeNotifierService; 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class ChromeNotifierServiceFactory : public BrowserContextKeyedServiceFactory { 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static ChromeNotifierService* GetForProfile( 23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) Profile* profile, Profile::ServiceAccessType service_access_type); 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static ChromeNotifierServiceFactory* GetInstance(); 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Based on command line switches, make the call to use SyncedNotifications or 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // not. 29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // TODO(petewil): Remove this when the SyncedNotifications feature is ready 30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // to be turned on by default, and just use a disable switch instead then. 31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static bool UseSyncedNotifications(base::CommandLine* command_line); 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) friend struct DefaultSingletonTraits<ChromeNotifierServiceFactory>; 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ChromeNotifierServiceFactory(); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~ChromeNotifierServiceFactory(); 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // BrowserContextKeyedServiceFactory: 40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual KeyedService* BuildServiceInstanceFor( 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) content::BrowserContext* profile) const OVERRIDE; 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace notifier 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CHROME_BROWSER_NOTIFICATIONS_SYNC_NOTIFIER_CHROME_NOTIFIER_SERVICE_FACTORY_H_ 47