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. 4 5 #ifndef CHROME_BROWSER_EXTENSIONS_API_TABS_TABS_WINDOWS_API_H_ 6 #define CHROME_BROWSER_EXTENSIONS_API_TABS_TABS_WINDOWS_API_H_ 7 8 #include "base/memory/scoped_ptr.h" 9 #include "chrome/browser/extensions/api/profile_keyed_api_factory.h" 10 #include "components/browser_context_keyed_service/browser_context_keyed_service.h" 11 #include "extensions/browser/event_router.h" 12 13 namespace extensions { 14 class TabsEventRouter; 15 class WindowsEventRouter; 16 17 class TabsWindowsAPI : public ProfileKeyedAPI, public EventRouter::Observer { 18 public: 19 explicit TabsWindowsAPI(Profile* profile); 20 virtual ~TabsWindowsAPI(); 21 22 // Convenience method to get the TabsWindowsAPI for a profile. 23 static TabsWindowsAPI* Get(Profile* profile); 24 25 TabsEventRouter* tabs_event_router(); 26 WindowsEventRouter* windows_event_router(); 27 28 // BrowserContextKeyedService implementation. 29 virtual void Shutdown() OVERRIDE; 30 31 // ProfileKeyedAPI implementation. 32 static ProfileKeyedAPIFactory<TabsWindowsAPI>* GetFactoryInstance(); 33 34 // EventRouter::Observer implementation. 35 virtual void OnListenerAdded(const extensions::EventListenerInfo& details) 36 OVERRIDE; 37 38 private: 39 friend class ProfileKeyedAPIFactory<TabsWindowsAPI>; 40 41 Profile* profile_; 42 43 // ProfileKeyedAPI implementation. service_name()44 static const char* service_name() { 45 return "TabsWindowsAPI"; 46 } 47 static const bool kServiceIsNULLWhileTesting = true; 48 49 scoped_ptr<TabsEventRouter> tabs_event_router_; 50 scoped_ptr<WindowsEventRouter> windows_event_router_; 51 }; 52 53 } // namespace extensions 54 55 #endif // CHROME_BROWSER_EXTENSIONS_API_TABS_TABS_WINDOWS_API_H_ 56