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 14namespace base { 15class DictionaryValue; 16} 17 18namespace extensions { 19 20// A specialization of the ExternalProvider that uses extension management 21// policies to look up which external extensions are registered. 22class 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