Home | History | Annotate | Download | only in common
      1 // Copyright (c) 2011 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 COMPONENTS_CONTENT_SETTINGS_CORE_COMMON_CONTENT_SETTINGS_H_
      6 #define COMPONENTS_CONTENT_SETTINGS_CORE_COMMON_CONTENT_SETTINGS_H_
      7 
      8 #include <string>
      9 #include <vector>
     10 
     11 #include "components/content_settings/core/common/content_settings_pattern.h"
     12 
     13 // Different settings that can be assigned for a particular content type.  We
     14 // give the user the ability to set these on a global and per-origin basis.
     15 enum ContentSetting {
     16   CONTENT_SETTING_DEFAULT = 0,
     17   CONTENT_SETTING_ALLOW,
     18   CONTENT_SETTING_BLOCK,
     19   CONTENT_SETTING_ASK,
     20   CONTENT_SETTING_SESSION_ONLY,
     21   CONTENT_SETTING_NUM_SETTINGS
     22 };
     23 
     24 // Range-checked conversion of an int to a ContentSetting, for use when reading
     25 // prefs off disk.
     26 ContentSetting IntToContentSetting(int content_setting);
     27 
     28 struct ContentSettingPatternSource {
     29   ContentSettingPatternSource(const ContentSettingsPattern& primary_pattern,
     30                               const ContentSettingsPattern& secondary_patttern,
     31                               ContentSetting setting,
     32                               const std::string& source,
     33                               bool incognito);
     34   ContentSettingPatternSource();
     35   ContentSettingsPattern primary_pattern;
     36   ContentSettingsPattern secondary_pattern;
     37   ContentSetting setting;
     38   std::string source;
     39   bool incognito;
     40 };
     41 
     42 typedef std::vector<ContentSettingPatternSource> ContentSettingsForOneType;
     43 
     44 struct RendererContentSettingRules {
     45   RendererContentSettingRules();
     46   ~RendererContentSettingRules();
     47   ContentSettingsForOneType image_rules;
     48   ContentSettingsForOneType script_rules;
     49 };
     50 
     51 namespace content_settings {
     52 
     53 // Enum containing the various source for content settings. Settings can be
     54 // set by policy, extension or the user. Certain (internal) schemes are
     55 // whilelisted. For whilelisted schemes the source is
     56 // |SETTING_SOURCE_WHITELIST|.
     57 enum SettingSource {
     58   SETTING_SOURCE_NONE,
     59   SETTING_SOURCE_POLICY,
     60   SETTING_SOURCE_EXTENSION,
     61   SETTING_SOURCE_USER,
     62   SETTING_SOURCE_WHITELIST,
     63 };
     64 
     65 // |SettingInfo| provides meta data for content setting values. |source|
     66 // contains the source of a value. |primary_pattern| and |secondary_pattern|
     67 // contains the patterns of the appling rule.
     68 struct SettingInfo {
     69   SettingSource source;
     70   ContentSettingsPattern primary_pattern;
     71   ContentSettingsPattern secondary_pattern;
     72 };
     73 
     74 }  // namespace content_settings
     75 
     76 #endif  // COMPONENTS_CONTENT_SETTINGS_CORE_COMMON_CONTENT_SETTINGS_H_
     77