12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 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)
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_MANAGER_EVENT_ROUTER_FACTORY_H_
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_MANAGER_EVENT_ROUTER_FACTORY_H_
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/singleton.h"
9a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Profile;
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
13558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochnamespace file_manager {
14558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass EventRouter;
16558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass EventRouterFactory : public BrowserContextKeyedServiceFactory {
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public:
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Returns the EventRouter for |profile|, creating it if
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // it is not yet created.
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static EventRouter* GetForProfile(Profile* profile);
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Returns the EventRouterFactory instance.
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static EventRouterFactory* GetInstance();
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected:
2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // BrowserContextKeyedBaseFactory overrides:
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual content::BrowserContext* GetBrowserContextToUse(
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      content::BrowserContext* context) const OVERRIDE;
3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual bool ServiceIsCreatedWithBrowserContext() const OVERRIDE;
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool ServiceIsNULLWhileTesting() const OVERRIDE;
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private:
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  friend struct DefaultSingletonTraits<EventRouterFactory>;
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EventRouterFactory();
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual ~EventRouterFactory();
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // BrowserContextKeyedServiceFactory:
40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual KeyedService* BuildServiceInstanceFor(
415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      content::BrowserContext* context) const OVERRIDE;
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
44558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch}  // namespace file_manager
45558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif  // CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_MANAGER_EVENT_ROUTER_FACTORY_H_
47