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