• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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