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 "chrome/grit/chromium_strings.h"
8 #include "chrome/grit/generated_resources.h"
9 #include "grit/theme_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),
87 show_ssl_decision_revoke_button(false) {
90 WebsiteSettingsUI::IdentityInfo::~IdentityInfo() {}
92 base::string16 WebsiteSettingsUI::IdentityInfo::GetIdentityStatusText() const {
93 if (identity_status == WebsiteSettings::SITE_IDENTITY_STATUS_CERT ||
94 identity_status == WebsiteSettings::SITE_IDENTITY_STATUS_EV_CERT) {
95 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_IDENTITY_VERIFIED);
97 if (identity_status ==
98 WebsiteSettings::SITE_IDENTITY_STATUS_ADMIN_PROVIDED_CERT) {
99 return l10n_util::GetStringUTF16(IDS_CERT_POLICY_PROVIDED_CERT_HEADER);
101 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_IDENTITY_NOT_VERIFIED);
104 WebsiteSettingsUI::~WebsiteSettingsUI() {
108 base::string16 WebsiteSettingsUI::PermissionTypeToUIString(
109 ContentSettingsType type) {
111 case CONTENT_SETTINGS_TYPE_IMAGES:
112 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_IMAGES);
113 case CONTENT_SETTINGS_TYPE_JAVASCRIPT:
114 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_JAVASCRIPT);
115 case CONTENT_SETTINGS_TYPE_POPUPS:
116 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_POPUPS);
117 case CONTENT_SETTINGS_TYPE_PLUGINS:
118 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_PLUGINS);
119 case CONTENT_SETTINGS_TYPE_GEOLOCATION:
120 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_LOCATION);
121 case CONTENT_SETTINGS_TYPE_NOTIFICATIONS:
122 case CONTENT_SETTINGS_TYPE_PUSH_MESSAGING:
123 return l10n_util::GetStringUTF16(
124 IDS_WEBSITE_SETTINGS_TYPE_NOTIFICATIONS);
125 case CONTENT_SETTINGS_TYPE_FULLSCREEN:
126 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_FULLSCREEN);
127 case CONTENT_SETTINGS_TYPE_MOUSELOCK:
128 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_MOUSELOCK);
129 case CONTENT_SETTINGS_TYPE_MEDIASTREAM:
130 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_MEDIASTREAM);
131 case CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS:
132 return l10n_util::GetStringUTF16(IDS_AUTOMATIC_DOWNLOADS_TAB_LABEL);
133 case CONTENT_SETTINGS_TYPE_MIDI_SYSEX:
134 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_MIDI_SYSEX);
137 return base::string16();
142 base::string16 WebsiteSettingsUI::PermissionValueToUIString(
143 ContentSetting value) {
145 case CONTENT_SETTING_ALLOW:
146 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_PERMISSION_ALLOW);
147 case CONTENT_SETTING_BLOCK:
148 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_PERMISSION_BLOCK);
149 case CONTENT_SETTING_ASK:
150 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_PERMISSION_ASK);
153 return base::string16();
158 base::string16 WebsiteSettingsUI::PermissionActionToUIString(
159 ContentSetting setting,
160 ContentSetting default_setting,
161 content_settings::SettingSource source) {
162 ContentSetting effective_setting = setting;
163 if (effective_setting == CONTENT_SETTING_DEFAULT)
164 effective_setting = default_setting;
166 const int* button_text_ids = NULL;
168 case content_settings::SETTING_SOURCE_USER:
169 if (setting == CONTENT_SETTING_DEFAULT)
170 button_text_ids = kPermissionButtonTextIDDefaultSetting;
172 button_text_ids = kPermissionButtonTextIDUserManaged;
174 case content_settings::SETTING_SOURCE_POLICY:
175 button_text_ids = kPermissionButtonTextIDPolicyManaged;
177 case content_settings::SETTING_SOURCE_EXTENSION:
178 button_text_ids = kPermissionButtonTextIDExtensionManaged;
180 case content_settings::SETTING_SOURCE_WHITELIST:
181 case content_settings::SETTING_SOURCE_NONE:
184 return base::string16();
186 int button_text_id = button_text_ids[effective_setting];
187 DCHECK_NE(button_text_id, kInvalidResourceID);
188 return l10n_util::GetStringUTF16(button_text_id);
192 int WebsiteSettingsUI::GetPermissionIconID(ContentSettingsType type,
193 ContentSetting setting) {
194 bool use_blocked = (setting == CONTENT_SETTING_BLOCK);
195 int resource_id = IDR_INFO;
197 case CONTENT_SETTINGS_TYPE_IMAGES:
198 resource_id = use_blocked ? IDR_BLOCKED_IMAGES : IDR_ALLOWED_IMAGES;
200 case CONTENT_SETTINGS_TYPE_JAVASCRIPT:
202 use_blocked ? IDR_BLOCKED_JAVASCRIPT : IDR_ALLOWED_JAVASCRIPT;
204 case CONTENT_SETTINGS_TYPE_COOKIES:
205 resource_id = use_blocked ? IDR_BLOCKED_COOKIES : IDR_ACCESSED_COOKIES;
207 case CONTENT_SETTINGS_TYPE_POPUPS:
208 resource_id = use_blocked ? IDR_BLOCKED_POPUPS : IDR_ALLOWED_POPUPS;
210 case CONTENT_SETTINGS_TYPE_PLUGINS:
211 resource_id = use_blocked ? IDR_BLOCKED_PLUGINS : IDR_ALLOWED_PLUGINS;
213 case CONTENT_SETTINGS_TYPE_GEOLOCATION:
214 resource_id = use_blocked ? IDR_BLOCKED_LOCATION : IDR_ALLOWED_LOCATION;
216 case CONTENT_SETTINGS_TYPE_NOTIFICATIONS:
218 use_blocked ? IDR_BLOCKED_NOTIFICATION : IDR_ALLOWED_NOTIFICATION;
220 case CONTENT_SETTINGS_TYPE_FULLSCREEN:
221 resource_id = IDR_ALLOWED_FULLSCREEN;
223 case CONTENT_SETTINGS_TYPE_MOUSELOCK:
225 use_blocked ? IDR_BLOCKED_MOUSE_CURSOR : IDR_ALLOWED_MOUSE_CURSOR;
227 case CONTENT_SETTINGS_TYPE_MEDIASTREAM:
228 resource_id = use_blocked ? IDR_BLOCKED_MEDIA : IDR_ASK_MEDIA;
230 case CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS:
231 resource_id = use_blocked ? IDR_BLOCKED_DOWNLOADS
232 : IDR_ALLOWED_DOWNLOADS;
234 case CONTENT_SETTINGS_TYPE_MIDI_SYSEX:
235 resource_id = use_blocked ? IDR_BLOCKED_MIDI_SYSEX
236 : IDR_ALLOWED_MIDI_SYSEX;
246 const gfx::Image& WebsiteSettingsUI::GetPermissionIcon(
247 const PermissionInfo& info) {
248 ContentSetting setting = info.setting;
249 if (setting == CONTENT_SETTING_DEFAULT)
250 setting = info.default_setting;
251 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
252 return rb.GetNativeImageNamed(GetPermissionIconID(info.type, setting));
256 int WebsiteSettingsUI::GetIdentityIconID(
257 WebsiteSettings::SiteIdentityStatus status) {
258 int resource_id = IDR_PAGEINFO_INFO;
260 case WebsiteSettings::SITE_IDENTITY_STATUS_UNKNOWN:
261 case WebsiteSettings::SITE_IDENTITY_STATUS_INTERNAL_PAGE:
263 case WebsiteSettings::SITE_IDENTITY_STATUS_CERT:
264 case WebsiteSettings::SITE_IDENTITY_STATUS_EV_CERT:
265 resource_id = IDR_PAGEINFO_GOOD;
267 case WebsiteSettings::SITE_IDENTITY_STATUS_CERT_REVOCATION_UNKNOWN:
268 resource_id = IDR_PAGEINFO_WARNING_MINOR;
270 case WebsiteSettings::SITE_IDENTITY_STATUS_NO_CERT:
271 resource_id = IDR_PAGEINFO_WARNING_MAJOR;
273 case WebsiteSettings::SITE_IDENTITY_STATUS_ERROR:
274 resource_id = IDR_PAGEINFO_BAD;
276 case WebsiteSettings::SITE_IDENTITY_STATUS_ADMIN_PROVIDED_CERT:
277 resource_id = IDR_PAGEINFO_ENTERPRISE_MANAGED;
279 case WebsiteSettings::SITE_IDENTITY_STATUS_DEPRECATED_SIGNATURE_ALGORITHM:
280 resource_id = IDR_PAGEINFO_WARNING_MINOR;
290 const gfx::Image& WebsiteSettingsUI::GetIdentityIcon(
291 WebsiteSettings::SiteIdentityStatus status) {
292 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
293 return rb.GetNativeImageNamed(GetIdentityIconID(status));
297 int WebsiteSettingsUI::GetConnectionIconID(
298 WebsiteSettings::SiteConnectionStatus status) {
299 int resource_id = IDR_PAGEINFO_INFO;
301 case WebsiteSettings::SITE_CONNECTION_STATUS_UNKNOWN:
302 case WebsiteSettings::SITE_CONNECTION_STATUS_INTERNAL_PAGE:
304 case WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED:
305 resource_id = IDR_PAGEINFO_GOOD;
307 case WebsiteSettings::SITE_CONNECTION_STATUS_MIXED_CONTENT:
308 resource_id = IDR_PAGEINFO_WARNING_MINOR;
310 case WebsiteSettings::SITE_CONNECTION_STATUS_UNENCRYPTED:
311 resource_id = IDR_PAGEINFO_WARNING_MAJOR;
313 case WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED_ERROR:
314 resource_id = IDR_PAGEINFO_BAD;
324 const gfx::Image& WebsiteSettingsUI::GetConnectionIcon(
325 WebsiteSettings::SiteConnectionStatus status) {
326 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
327 return rb.GetNativeImageNamed(GetConnectionIconID(status));
331 int WebsiteSettingsUI::GetFirstVisitIconID(const base::string16& first_visit) {
332 // FIXME(markusheintz): Display a minor warning icon if the page is visited
334 return IDR_PAGEINFO_INFO;
338 const gfx::Image& WebsiteSettingsUI::GetFirstVisitIcon(
339 const base::string16& first_visit) {
340 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
341 return rb.GetNativeImageNamed(GetFirstVisitIconID(first_visit));