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