• 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_CONTENT_SETTINGS_CONTENT_SETTINGS_CUSTOM_EXTENSION_PROVIDER_H_
6 #define CHROME_BROWSER_CONTENT_SETTINGS_CONTENT_SETTINGS_CUSTOM_EXTENSION_PROVIDER_H_
7 
8 #include <string>
9 
10 #include "base/memory/ref_counted.h"
11 #include "chrome/browser/content_settings/content_settings_observable_provider.h"
12 #include "chrome/browser/extensions/api/content_settings/content_settings_store.h"
13 
14 namespace content_settings {
15 
16 // A content settings provider which manages settings defined by extensions.
17 class CustomExtensionProvider : public ObservableProvider,
18                           public extensions::ContentSettingsStore::Observer {
19  public:
20   CustomExtensionProvider(
21       extensions::ContentSettingsStore* extensions_settings,
22       bool incognito);
23 
24   virtual ~CustomExtensionProvider();
25 
26   // ProviderInterface methods:
27   virtual RuleIterator* GetRuleIterator(
28       ContentSettingsType content_type,
29       const ResourceIdentifier& resource_identifier,
30       bool incognito) const OVERRIDE;
31 
32   virtual bool SetWebsiteSetting(
33       const ContentSettingsPattern& primary_pattern,
34       const ContentSettingsPattern& secondary_pattern,
35       ContentSettingsType content_type,
36       const ResourceIdentifier& resource_identifier,
37       Value* value) OVERRIDE;
38 
ClearAllContentSettingsRules(ContentSettingsType content_type)39   virtual void ClearAllContentSettingsRules(ContentSettingsType content_type)
40       OVERRIDE {}
41 
42   virtual void ShutdownOnUIThread() OVERRIDE;
43 
44   // extensions::ContentSettingsStore::Observer methods:
45   virtual void OnContentSettingChanged(const std::string& extension_id,
46                                        bool incognito) OVERRIDE;
47 
48  private:
49   // Specifies whether this provider manages settings for incognito or regular
50   // sessions.
51   bool incognito_;
52 
53   // The backend storing content setting rules defined by extensions.
54   scoped_refptr<extensions::ContentSettingsStore> extensions_settings_;
55 
56   DISALLOW_COPY_AND_ASSIGN(CustomExtensionProvider);
57 };
58 
59 }  // namespace content_settings
60 
61 #endif  // CHROME_BROWSER_CONTENT_SETTINGS_CONTENT_SETTINGS_CUSTOM_EXTENSION_PROVIDER_H_
62