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.
5 #ifndef CHROME_BROWSER_EXTENSIONS_API_TABS_TABS_WINDOWS_API_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_TABS_TABS_WINDOWS_API_H_
8 #include "base/memory/scoped_ptr.h"
9 #include "components/keyed_service/core/keyed_service.h"
10 #include "extensions/browser/browser_context_keyed_api_factory.h"
11 #include "extensions/browser/event_router.h"
13 namespace extensions
{
14 class TabsEventRouter
;
15 class WindowsEventRouter
;
17 class TabsWindowsAPI
: public BrowserContextKeyedAPI
,
18 public EventRouter::Observer
{
20 explicit TabsWindowsAPI(content::BrowserContext
* context
);
21 ~TabsWindowsAPI() override
;
23 // Convenience method to get the TabsWindowsAPI for a profile.
24 static TabsWindowsAPI
* Get(content::BrowserContext
* context
);
26 TabsEventRouter
* tabs_event_router();
27 WindowsEventRouter
* windows_event_router();
29 // KeyedService implementation.
30 void Shutdown() override
;
32 // BrowserContextKeyedAPI implementation.
33 static BrowserContextKeyedAPIFactory
<TabsWindowsAPI
>* GetFactoryInstance();
35 // EventRouter::Observer implementation.
36 void OnListenerAdded(const extensions::EventListenerInfo
& details
) override
;
39 friend class BrowserContextKeyedAPIFactory
<TabsWindowsAPI
>;
41 content::BrowserContext
* browser_context_
;
43 // BrowserContextKeyedAPI implementation.
44 static const char* service_name() {
45 return "TabsWindowsAPI";
47 static const bool kServiceIsNULLWhileTesting
= true;
49 scoped_ptr
<TabsEventRouter
> tabs_event_router_
;
50 scoped_ptr
<WindowsEventRouter
> windows_event_router_
;
53 } // namespace extensions
55 #endif // CHROME_BROWSER_EXTENSIONS_API_TABS_TABS_WINDOWS_API_H_