Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / chrome / browser / extensions / api / tabs / tabs_windows_api.h
blob4fe76e8ca72e7da6f34efd6bf2c22f1761835781
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 {
19 public:
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;
38 private:
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_