Home | History | Annotate | Download | only in tabs
      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 "components/keyed_service/core/keyed_service.h"
     10 #include "extensions/browser/browser_context_keyed_api_factory.h"
     11 #include "extensions/browser/event_router.h"
     12 
     13 namespace extensions {
     14 class TabsEventRouter;
     15 class WindowsEventRouter;
     16 
     17 class TabsWindowsAPI : public BrowserContextKeyedAPI,
     18                        public EventRouter::Observer {
     19  public:
     20   explicit TabsWindowsAPI(content::BrowserContext* context);
     21   virtual ~TabsWindowsAPI();
     22 
     23   // Convenience method to get the TabsWindowsAPI for a profile.
     24   static TabsWindowsAPI* Get(content::BrowserContext* context);
     25 
     26   TabsEventRouter* tabs_event_router();
     27   WindowsEventRouter* windows_event_router();
     28 
     29   // KeyedService implementation.
     30   virtual void Shutdown() OVERRIDE;
     31 
     32   // BrowserContextKeyedAPI implementation.
     33   static BrowserContextKeyedAPIFactory<TabsWindowsAPI>* GetFactoryInstance();
     34 
     35   // EventRouter::Observer implementation.
     36   virtual void OnListenerAdded(const extensions::EventListenerInfo& details)
     37       OVERRIDE;
     38 
     39  private:
     40   friend class BrowserContextKeyedAPIFactory<TabsWindowsAPI>;
     41 
     42   content::BrowserContext* browser_context_;
     43 
     44   // BrowserContextKeyedAPI implementation.
     45   static const char* service_name() {
     46     return "TabsWindowsAPI";
     47   }
     48   static const bool kServiceIsNULLWhileTesting = true;
     49 
     50   scoped_ptr<TabsEventRouter> tabs_event_router_;
     51   scoped_ptr<WindowsEventRouter> windows_event_router_;
     52 };
     53 
     54 }  // namespace extensions
     55 
     56 #endif  // CHROME_BROWSER_EXTENSIONS_API_TABS_TABS_WINDOWS_API_H_
     57