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. 15enum 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. 26ContentSetting IntToContentSetting(int content_setting); 27 28struct 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 42typedef std::vector<ContentSettingPatternSource> ContentSettingsForOneType; 43 44struct RendererContentSettingRules { 45 RendererContentSettingRules(); 46 ~RendererContentSettingRules(); 47 ContentSettingsForOneType image_rules; 48 ContentSettingsForOneType script_rules; 49}; 50 51namespace 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|. 57enum 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. 68struct 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