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.
5 #ifndef CHROME_BROWSER_EXTENSIONS_API_CONTENT_SETTINGS_CONTENT_SETTINGS_CUSTOM_EXTENSION_PROVIDER_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_CONTENT_SETTINGS_CONTENT_SETTINGS_CUSTOM_EXTENSION_PROVIDER_H_
10 #include "base/memory/ref_counted.h"
11 #include "chrome/browser/extensions/api/content_settings/content_settings_store.h"
12 #include "components/content_settings/core/browser/content_settings_observable_provider.h"
14 namespace content_settings
{
16 // A content settings provider which manages settings defined by extensions.
17 class CustomExtensionProvider
: public ObservableProvider
,
18 public extensions::ContentSettingsStore::Observer
{
20 CustomExtensionProvider(const scoped_refptr
<extensions::ContentSettingsStore
>&
24 ~CustomExtensionProvider() override
;
26 // ProviderInterface methods:
27 RuleIterator
* GetRuleIterator(ContentSettingsType content_type
,
28 const ResourceIdentifier
& resource_identifier
,
29 bool incognito
) const override
;
31 bool SetWebsiteSetting(const ContentSettingsPattern
& primary_pattern
,
32 const ContentSettingsPattern
& secondary_pattern
,
33 ContentSettingsType content_type
,
34 const ResourceIdentifier
& resource_identifier
,
35 base::Value
* value
) override
;
37 void ClearAllContentSettingsRules(ContentSettingsType content_type
) override
{
40 void ShutdownOnUIThread() override
;
42 // extensions::ContentSettingsStore::Observer methods:
43 void OnContentSettingChanged(const std::string
& extension_id
,
44 bool incognito
) override
;
47 // Specifies whether this provider manages settings for incognito or regular
51 // The backend storing content setting rules defined by extensions.
52 scoped_refptr
<extensions::ContentSettingsStore
> extensions_settings_
;
54 DISALLOW_COPY_AND_ASSIGN(CustomExtensionProvider
);
57 } // namespace content_settings
59 #endif // CHROME_BROWSER_EXTENSIONS_API_CONTENT_SETTINGS_CONTENT_SETTINGS_CUSTOM_EXTENSION_PROVIDER_H_