Home | History | Annotate | Download | only in extensions
      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