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 CHROME_BROWSER_EXTENSIONS_API_SYSTEM_INFO_SYSTEM_INFO_API_H_ 6 #define CHROME_BROWSER_EXTENSIONS_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. service_name()35 static const char* service_name() { 36 return "SystemInfoAPI"; 37 } 38 static const bool kServiceIsNULLWhileTesting = true; 39 40 content::BrowserContext* browser_context_; 41 42 DISALLOW_COPY_AND_ASSIGN(SystemInfoAPI); 43 }; 44 45 } // namespace extensions 46 47 #endif // CHROME_BROWSER_EXTENSIONS_API_SYSTEM_INFO_SYSTEM_INFO_API_H_ 48