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_PREFERENCE_CHROME_DIRECT_SETTING_API_H__ 6#define CHROME_BROWSER_EXTENSIONS_API_PREFERENCE_CHROME_DIRECT_SETTING_API_H__ 7 8#include "base/prefs/pref_change_registrar.h" 9#include "extensions/browser/browser_context_keyed_api_factory.h" 10#include "extensions/browser/event_router.h" 11 12class Profile; 13 14namespace content { 15class BrowserContext; 16} 17 18namespace extensions { 19namespace chromedirectsetting { 20 21class ChromeDirectSettingAPI : public BrowserContextKeyedAPI, 22 public EventRouter::Observer { 23 public: 24 explicit ChromeDirectSettingAPI(content::BrowserContext* context); 25 26 virtual ~ChromeDirectSettingAPI(); 27 28 // KeyedService implementation. 29 virtual void Shutdown() OVERRIDE; 30 31 // BrowserContextKeyedAPI implementation. 32 static BrowserContextKeyedAPIFactory<ChromeDirectSettingAPI>* 33 GetFactoryInstance(); 34 35 // EventRouter::Observer implementation. 36 virtual void OnListenerAdded(const EventListenerInfo& details) OVERRIDE; 37 38 // Returns true if the preference is on the whitelist. 39 bool IsPreferenceOnWhitelist(const std::string& pref_key); 40 41 // Convenience method to get the ChromeDirectSettingAPI for a profile. 42 static ChromeDirectSettingAPI* Get(content::BrowserContext* context); 43 44 private: 45 friend class BrowserContextKeyedAPIFactory<ChromeDirectSettingAPI>; 46 47 // BrowserContextKeyedAPI implementation. 48 static const char* service_name(); 49 50 void OnPrefChanged(PrefService* pref_service, const std::string& pref_key); 51 52 static const bool kServiceIsNULLWhileTesting = true; 53 static const bool kServiceRedirectedInIncognito = false; 54 55 PrefChangeRegistrar registrar_; 56 Profile* profile_; 57 58 DISALLOW_COPY_AND_ASSIGN(ChromeDirectSettingAPI); 59}; 60 61} // namespace chromedirectsetting 62} // namespace extensions 63 64#endif // CHROME_BROWSER_EXTENSIONS_API_PREFERENCE_CHROME_DIRECT_SETTING_API_H__ 65