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 #include "chrome/browser/ui/website_settings/website_settings_ui.h"
7 #include "grit/generated_resources.h"
8 #include "grit/theme_resources.h"
9 #include "grit/ui_resources.h"
10 #include "ui/base/l10n/l10n_util.h"
11 #include "ui/base/resource/resource_bundle.h"
12 #include "ui/gfx/image/image.h"
16 const int kInvalidResourceID = -1;
18 // The resource id's for the strings that are displayed on the permissions
19 // button if the permission setting is managed by policy.
20 const int kPermissionButtonTextIDPolicyManaged[] = {
22 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_ALLOWED_BY_POLICY,
23 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_BLOCKED_BY_POLICY,
27 COMPILE_ASSERT(arraysize(kPermissionButtonTextIDPolicyManaged) ==
28 CONTENT_SETTING_NUM_SETTINGS,
29 button_text_id_array_size_incorrect);
31 // The resource id's for the strings that are displayed on the permissions
32 // button if the permission setting is managed by an extension.
33 const int kPermissionButtonTextIDExtensionManaged[] = {
35 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_ALLOWED_BY_EXTENSION,
36 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_BLOCKED_BY_EXTENSION,
40 COMPILE_ASSERT(arraysize(kPermissionButtonTextIDExtensionManaged) ==
41 CONTENT_SETTING_NUM_SETTINGS,
42 button_text_id_array_size_incorrect);
44 // The resource id's for the strings that are displayed on the permissions
45 // button if the permission setting is managed by the user.
46 const int kPermissionButtonTextIDUserManaged[] = {
48 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_ALLOWED_BY_USER,
49 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_BLOCKED_BY_USER,
53 COMPILE_ASSERT(arraysize(kPermissionButtonTextIDUserManaged) ==
54 CONTENT_SETTING_NUM_SETTINGS,
55 button_text_id_array_size_incorrect);
57 // The resource id's for the strings that are displayed on the permissions
58 // button if the permission setting is the global default setting.
59 const int kPermissionButtonTextIDDefaultSetting[] = {
61 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_ALLOWED_BY_DEFAULT,
62 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_BLOCKED_BY_DEFAULT,
63 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_ASK_BY_DEFAULT,
66 COMPILE_ASSERT(arraysize(kPermissionButtonTextIDDefaultSetting) ==
67 CONTENT_SETTING_NUM_SETTINGS,
68 button_text_id_array_size_incorrect);
72 WebsiteSettingsUI::CookieInfo::CookieInfo()
73 : allowed(-1), blocked(-1) {
76 WebsiteSettingsUI::PermissionInfo::PermissionInfo()
77 : type(CONTENT_SETTINGS_TYPE_DEFAULT),
78 setting(CONTENT_SETTING_DEFAULT),
79 default_setting(CONTENT_SETTING_DEFAULT),
80 source(content_settings::SETTING_SOURCE_NONE) {
83 WebsiteSettingsUI::IdentityInfo::IdentityInfo()
84 : identity_status(WebsiteSettings::SITE_IDENTITY_STATUS_UNKNOWN),
86 connection_status(WebsiteSettings::SITE_CONNECTION_STATUS_UNKNOWN) {
89 string16 WebsiteSettingsUI::IdentityInfo::GetIdentityStatusText() const {
90 if (identity_status == WebsiteSettings::SITE_IDENTITY_STATUS_CERT ||
91 identity_status == WebsiteSettings::SITE_IDENTITY_STATUS_EV_CERT) {
92 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_IDENTITY_VERIFIED);
94 if (identity_status ==
95 WebsiteSettings::SITE_IDENTITY_STATUS_ADMIN_PROVIDED_CERT) {
96 return l10n_util::GetStringUTF16(IDS_CERT_POLICY_PROVIDED_CERT_HEADER);
98 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_IDENTITY_NOT_VERIFIED);
101 WebsiteSettingsUI::~WebsiteSettingsUI() {
105 string16 WebsiteSettingsUI::PermissionTypeToUIString(
106 ContentSettingsType type) {
108 case CONTENT_SETTINGS_TYPE_IMAGES:
109 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_IMAGES);
110 case CONTENT_SETTINGS_TYPE_JAVASCRIPT:
111 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_JAVASCRIPT);
112 case CONTENT_SETTINGS_TYPE_POPUPS:
113 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_POPUPS);
114 case CONTENT_SETTINGS_TYPE_PLUGINS:
115 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_PLUGINS);
116 case CONTENT_SETTINGS_TYPE_GEOLOCATION:
117 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_LOCATION);
118 case CONTENT_SETTINGS_TYPE_NOTIFICATIONS:
119 return l10n_util::GetStringUTF16(
120 IDS_WEBSITE_SETTINGS_TYPE_NOTIFICATIONS);
121 case CONTENT_SETTINGS_TYPE_FULLSCREEN:
122 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_FULLSCREEN);
123 case CONTENT_SETTINGS_TYPE_MOUSELOCK:
124 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_MOUSELOCK);
125 case CONTENT_SETTINGS_TYPE_MEDIASTREAM:
126 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_MEDIASTREAM);
127 case CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS:
128 return l10n_util::GetStringUTF16(IDS_AUTOMATIC_DOWNLOADS_TAB_LABEL);
129 case CONTENT_SETTINGS_TYPE_MIDI_SYSEX:
130 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_MIDI_SYSEX);
138 string16 WebsiteSettingsUI::PermissionValueToUIString(ContentSetting value) {
140 case CONTENT_SETTING_ALLOW:
141 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_PERMISSION_ALLOW);
142 case CONTENT_SETTING_BLOCK:
143 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_PERMISSION_BLOCK);
144 case CONTENT_SETTING_ASK:
145 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_PERMISSION_ASK);
153 string16 WebsiteSettingsUI::PermissionActionToUIString(
154 ContentSetting setting,
155 ContentSetting default_setting,
156 content_settings::SettingSource source) {
157 ContentSetting effective_setting = setting;
158 if (effective_setting == CONTENT_SETTING_DEFAULT)
159 effective_setting = default_setting;
161 const int* button_text_ids = NULL;
163 case content_settings::SETTING_SOURCE_USER:
164 if (setting == CONTENT_SETTING_DEFAULT)
165 button_text_ids = kPermissionButtonTextIDDefaultSetting;
167 button_text_ids = kPermissionButtonTextIDUserManaged;
169 case content_settings::SETTING_SOURCE_POLICY:
170 button_text_ids = kPermissionButtonTextIDPolicyManaged;
172 case content_settings::SETTING_SOURCE_EXTENSION:
173 button_text_ids = kPermissionButtonTextIDExtensionManaged;
175 case content_settings::SETTING_SOURCE_WHITELIST:
176 case content_settings::SETTING_SOURCE_NONE:
181 int button_text_id = button_text_ids[effective_setting];
182 DCHECK_NE(button_text_id, kInvalidResourceID);
183 return l10n_util::GetStringUTF16(button_text_id);
187 int WebsiteSettingsUI::GetPermissionIconID(ContentSettingsType type,
188 ContentSetting setting) {
189 bool use_blocked = (setting == CONTENT_SETTING_BLOCK);
190 int resource_id = IDR_INFO;
192 case CONTENT_SETTINGS_TYPE_IMAGES:
193 resource_id = use_blocked ? IDR_BLOCKED_IMAGES : IDR_ALLOWED_IMAGES;
195 case CONTENT_SETTINGS_TYPE_JAVASCRIPT:
197 use_blocked ? IDR_BLOCKED_JAVASCRIPT : IDR_ALLOWED_JAVASCRIPT;
199 case CONTENT_SETTINGS_TYPE_COOKIES:
200 resource_id = use_blocked ? IDR_BLOCKED_COOKIES : IDR_ACCESSED_COOKIES;
202 case CONTENT_SETTINGS_TYPE_POPUPS:
203 resource_id = use_blocked ? IDR_BLOCKED_POPUPS : IDR_ALLOWED_POPUPS;
205 case CONTENT_SETTINGS_TYPE_PLUGINS:
206 resource_id = use_blocked ? IDR_BLOCKED_PLUGINS : IDR_ALLOWED_PLUGINS;
208 case CONTENT_SETTINGS_TYPE_GEOLOCATION:
209 resource_id = use_blocked ? IDR_BLOCKED_LOCATION : IDR_ALLOWED_LOCATION;
211 case CONTENT_SETTINGS_TYPE_NOTIFICATIONS:
213 use_blocked ? IDR_BLOCKED_NOTIFICATION : IDR_ALLOWED_NOTIFICATION;
215 case CONTENT_SETTINGS_TYPE_FULLSCREEN:
216 resource_id = IDR_ALLOWED_FULLSCREEN;
218 case CONTENT_SETTINGS_TYPE_MOUSELOCK:
220 use_blocked ? IDR_BLOCKED_MOUSE_CURSOR : IDR_ALLOWED_MOUSE_CURSOR;
222 case CONTENT_SETTINGS_TYPE_MEDIASTREAM:
223 resource_id = use_blocked ? IDR_BLOCKED_MEDIA : IDR_ASK_MEDIA;
225 case CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS:
226 resource_id = use_blocked ? IDR_BLOCKED_DOWNLOADS
227 : IDR_ALLOWED_DOWNLOADS;
229 case CONTENT_SETTINGS_TYPE_MIDI_SYSEX:
230 resource_id = use_blocked ? IDR_BLOCKED_MIDI_SYSEX
231 : IDR_ALLOWED_MIDI_SYSEX;
233 case CONTENT_SETTINGS_TYPE_SAVE_PASSWORD:
234 resource_id = IDR_SAVE_PASSWORD;
243 const gfx::Image& WebsiteSettingsUI::GetPermissionIcon(
244 ContentSettingsType type,
245 ContentSetting setting) {
246 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
247 return rb.GetNativeImageNamed(GetPermissionIconID(type, setting));
251 int WebsiteSettingsUI::GetIdentityIconID(
252 WebsiteSettings::SiteIdentityStatus status) {
253 int resource_id = IDR_PAGEINFO_INFO;
255 case WebsiteSettings::SITE_IDENTITY_STATUS_UNKNOWN:
257 case WebsiteSettings::SITE_IDENTITY_STATUS_CERT:
258 case WebsiteSettings::SITE_IDENTITY_STATUS_EV_CERT:
259 resource_id = IDR_PAGEINFO_GOOD;
261 case WebsiteSettings::SITE_IDENTITY_STATUS_CERT_REVOCATION_UNKNOWN:
262 resource_id = IDR_PAGEINFO_WARNING_MINOR;
264 case WebsiteSettings::SITE_IDENTITY_STATUS_NO_CERT:
265 resource_id = IDR_PAGEINFO_WARNING_MAJOR;
267 case WebsiteSettings::SITE_IDENTITY_STATUS_ERROR:
268 resource_id = IDR_PAGEINFO_BAD;
270 case WebsiteSettings::SITE_IDENTITY_STATUS_ADMIN_PROVIDED_CERT:
271 resource_id = IDR_CONTROLLED_SETTING_MANDATORY_LARGE;
281 const gfx::Image& WebsiteSettingsUI::GetIdentityIcon(
282 WebsiteSettings::SiteIdentityStatus status) {
283 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
284 return rb.GetNativeImageNamed(GetIdentityIconID(status));
288 int WebsiteSettingsUI::GetConnectionIconID(
289 WebsiteSettings::SiteConnectionStatus status) {
290 int resource_id = IDR_PAGEINFO_INFO;
292 case WebsiteSettings::SITE_CONNECTION_STATUS_UNKNOWN:
294 case WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED:
295 resource_id = IDR_PAGEINFO_GOOD;
297 case WebsiteSettings::SITE_CONNECTION_STATUS_MIXED_CONTENT:
298 resource_id = IDR_PAGEINFO_WARNING_MINOR;
300 case WebsiteSettings::SITE_CONNECTION_STATUS_UNENCRYPTED:
301 resource_id = IDR_PAGEINFO_WARNING_MAJOR;
303 case WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED_ERROR:
304 resource_id = IDR_PAGEINFO_BAD;
314 const gfx::Image& WebsiteSettingsUI::GetConnectionIcon(
315 WebsiteSettings::SiteConnectionStatus status) {
316 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
317 return rb.GetNativeImageNamed(GetConnectionIconID(status));
321 int WebsiteSettingsUI::GetFirstVisitIconID(const string16& first_visit) {
322 // FIXME(markusheintz): Display a minor warning icon if the page is visited
324 return IDR_PAGEINFO_INFO;
328 const gfx::Image& WebsiteSettingsUI::GetFirstVisitIcon(
329 const string16& first_visit) {
330 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
331 return rb.GetNativeImageNamed(GetFirstVisitIconID(first_visit));