Pin Chrome's shortcut to the Win10 Start menu on install and OS upgrade.
[chromium-blink-merge.git] / chrome / browser / extensions / api / content_settings / content_settings_custom_extension_provider.h
blobe74343a7f03c1bfac58aab9c2db593af6bcf9fd0
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_
8 #include <string>
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 {
19 public:
20 CustomExtensionProvider(const scoped_refptr<extensions::ContentSettingsStore>&
21 extensions_settings,
22 bool incognito);
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;
46 private:
47 // Specifies whether this provider manages settings for incognito or regular
48 // sessions.
49 bool incognito_;
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_