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_EXTERNAL_POLICY_LOADER_H_ 6 #define CHROME_BROWSER_EXTENSIONS_EXTERNAL_POLICY_LOADER_H_ 7 8 #include <string> 9 10 #include "base/compiler_specific.h" 11 #include "chrome/browser/extensions/extension_management.h" 12 #include "chrome/browser/extensions/external_loader.h" 13 14 namespace base { 15 class DictionaryValue; 16 } 17 18 namespace extensions { 19 20 // A specialization of the ExternalProvider that uses extension management 21 // policies to look up which external extensions are registered. 22 class ExternalPolicyLoader : public ExternalLoader, 23 public ExtensionManagement::Observer { 24 public: 25 explicit ExternalPolicyLoader(ExtensionManagement* settings); 26 27 // ExtensionManagement::Observer implementation 28 virtual void OnExtensionManagementSettingsChanged() OVERRIDE; 29 30 // Adds an extension to be updated to the pref dictionary. 31 static void AddExtension(base::DictionaryValue* dict, 32 const std::string& extension_id, 33 const std::string& update_url); 34 35 protected: 36 virtual void StartLoading() OVERRIDE; 37 38 private: 39 friend class base::RefCountedThreadSafe<ExternalLoader>; 40 41 virtual ~ExternalPolicyLoader(); 42 43 ExtensionManagement* settings_; 44 45 DISALLOW_COPY_AND_ASSIGN(ExternalPolicyLoader); 46 }; 47 48 } // namespace extensions 49 50 #endif // CHROME_BROWSER_EXTENSIONS_EXTERNAL_POLICY_LOADER_H_ 51