Home | History | Annotate | Download | only in system_info
      1 // Copyright 2013 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 EXTENSIONS_BROWSER_API_SYSTEM_INFO_SYSTEM_INFO_API_H_
      6 #define EXTENSIONS_BROWSER_API_SYSTEM_INFO_SYSTEM_INFO_API_H_
      7 
      8 #include "extensions/browser/browser_context_keyed_api_factory.h"
      9 #include "extensions/browser/event_router.h"
     10 
     11 namespace extensions {
     12 
     13 // A Profile-scoped object which is registered as an observer of EventRouter
     14 // to observe the systemInfo event listener arrival/removal.
     15 class SystemInfoAPI : public BrowserContextKeyedAPI,
     16                       public EventRouter::Observer {
     17  public:
     18   // BrowserContextKeyedAPI implementation.
     19   static BrowserContextKeyedAPIFactory<SystemInfoAPI>* GetFactoryInstance();
     20 
     21   explicit SystemInfoAPI(content::BrowserContext* context);
     22   virtual ~SystemInfoAPI();
     23 
     24   // KeyedService implementation.
     25   virtual void Shutdown() OVERRIDE;
     26 
     27   // EventRouter::Observer implementation.
     28   virtual void OnListenerAdded(const EventListenerInfo& details) OVERRIDE;
     29   virtual void OnListenerRemoved(const EventListenerInfo& details) OVERRIDE;
     30 
     31  private:
     32   friend class BrowserContextKeyedAPIFactory<SystemInfoAPI>;
     33 
     34   // BrowserContextKeyedAPI implementation.
     35   static const char* service_name() { return "SystemInfoAPI"; }
     36   static const bool kServiceIsNULLWhileTesting = true;
     37 
     38   content::BrowserContext* browser_context_;
     39 
     40   DISALLOW_COPY_AND_ASSIGN(SystemInfoAPI);
     41 };
     42 
     43 }  // namespace extensions
     44 
     45 #endif  // EXTENSIONS_BROWSER_API_SYSTEM_INFO_SYSTEM_INFO_API_H_
     46