Add button to page info to revoke user certificate decisions.
[chromium-blink-merge.git] / chrome / browser / ui / website_settings / website_settings_ui.cc
blobb9ca5eb8b04deb724eeaf0662c3258fa1847cf66
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"
14 namespace {
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[] = {
21 kInvalidResourceID,
22 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_ALLOWED_BY_POLICY,
23 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_BLOCKED_BY_POLICY,
24 kInvalidResourceID,
25 kInvalidResourceID
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[] = {
34 kInvalidResourceID,
35 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_ALLOWED_BY_EXTENSION,
36 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_BLOCKED_BY_EXTENSION,
37 kInvalidResourceID,
38 kInvalidResourceID
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[] = {
47 kInvalidResourceID,
48 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_ALLOWED_BY_USER,
49 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_BLOCKED_BY_USER,
50 kInvalidResourceID,
51 kInvalidResourceID
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[] = {
60 kInvalidResourceID,
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,
64 kInvalidResourceID
66 COMPILE_ASSERT(arraysize(kPermissionButtonTextIDDefaultSetting) ==
67 CONTENT_SETTING_NUM_SETTINGS,
68 button_text_id_array_size_incorrect);
70 } // namespace
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),
85 cert_id(0),
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() {
107 // static
108 base::string16 WebsiteSettingsUI::PermissionTypeToUIString(
109 ContentSettingsType type) {
110 switch (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 return l10n_util::GetStringUTF16(
123 IDS_WEBSITE_SETTINGS_TYPE_NOTIFICATIONS);
124 case CONTENT_SETTINGS_TYPE_FULLSCREEN:
125 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_FULLSCREEN);
126 case CONTENT_SETTINGS_TYPE_MOUSELOCK:
127 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_MOUSELOCK);
128 case CONTENT_SETTINGS_TYPE_MEDIASTREAM:
129 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_MEDIASTREAM);
130 case CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS:
131 return l10n_util::GetStringUTF16(IDS_AUTOMATIC_DOWNLOADS_TAB_LABEL);
132 case CONTENT_SETTINGS_TYPE_MIDI_SYSEX:
133 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_MIDI_SYSEX);
134 default:
135 NOTREACHED();
136 return base::string16();
140 // static
141 base::string16 WebsiteSettingsUI::PermissionValueToUIString(
142 ContentSetting value) {
143 switch (value) {
144 case CONTENT_SETTING_ALLOW:
145 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_PERMISSION_ALLOW);
146 case CONTENT_SETTING_BLOCK:
147 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_PERMISSION_BLOCK);
148 case CONTENT_SETTING_ASK:
149 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_PERMISSION_ASK);
150 default:
151 NOTREACHED();
152 return base::string16();
156 // static
157 base::string16 WebsiteSettingsUI::PermissionActionToUIString(
158 ContentSetting setting,
159 ContentSetting default_setting,
160 content_settings::SettingSource source) {
161 ContentSetting effective_setting = setting;
162 if (effective_setting == CONTENT_SETTING_DEFAULT)
163 effective_setting = default_setting;
165 const int* button_text_ids = NULL;
166 switch (source) {
167 case content_settings::SETTING_SOURCE_USER:
168 if (setting == CONTENT_SETTING_DEFAULT)
169 button_text_ids = kPermissionButtonTextIDDefaultSetting;
170 else
171 button_text_ids = kPermissionButtonTextIDUserManaged;
172 break;
173 case content_settings::SETTING_SOURCE_POLICY:
174 button_text_ids = kPermissionButtonTextIDPolicyManaged;
175 break;
176 case content_settings::SETTING_SOURCE_EXTENSION:
177 button_text_ids = kPermissionButtonTextIDExtensionManaged;
178 break;
179 case content_settings::SETTING_SOURCE_WHITELIST:
180 case content_settings::SETTING_SOURCE_NONE:
181 default:
182 NOTREACHED();
183 return base::string16();
185 int button_text_id = button_text_ids[effective_setting];
186 DCHECK_NE(button_text_id, kInvalidResourceID);
187 return l10n_util::GetStringUTF16(button_text_id);
190 // static
191 int WebsiteSettingsUI::GetPermissionIconID(ContentSettingsType type,
192 ContentSetting setting) {
193 bool use_blocked = (setting == CONTENT_SETTING_BLOCK);
194 int resource_id = IDR_INFO;
195 switch (type) {
196 case CONTENT_SETTINGS_TYPE_IMAGES:
197 resource_id = use_blocked ? IDR_BLOCKED_IMAGES : IDR_ALLOWED_IMAGES;
198 break;
199 case CONTENT_SETTINGS_TYPE_JAVASCRIPT:
200 resource_id =
201 use_blocked ? IDR_BLOCKED_JAVASCRIPT : IDR_ALLOWED_JAVASCRIPT;
202 break;
203 case CONTENT_SETTINGS_TYPE_COOKIES:
204 resource_id = use_blocked ? IDR_BLOCKED_COOKIES : IDR_ACCESSED_COOKIES;
205 break;
206 case CONTENT_SETTINGS_TYPE_POPUPS:
207 resource_id = use_blocked ? IDR_BLOCKED_POPUPS : IDR_ALLOWED_POPUPS;
208 break;
209 case CONTENT_SETTINGS_TYPE_PLUGINS:
210 resource_id = use_blocked ? IDR_BLOCKED_PLUGINS : IDR_ALLOWED_PLUGINS;
211 break;
212 case CONTENT_SETTINGS_TYPE_GEOLOCATION:
213 resource_id = use_blocked ? IDR_BLOCKED_LOCATION : IDR_ALLOWED_LOCATION;
214 break;
215 case CONTENT_SETTINGS_TYPE_NOTIFICATIONS:
216 resource_id =
217 use_blocked ? IDR_BLOCKED_NOTIFICATION : IDR_ALLOWED_NOTIFICATION;
218 break;
219 case CONTENT_SETTINGS_TYPE_FULLSCREEN:
220 resource_id = IDR_ALLOWED_FULLSCREEN;
221 break;
222 case CONTENT_SETTINGS_TYPE_MOUSELOCK:
223 resource_id =
224 use_blocked ? IDR_BLOCKED_MOUSE_CURSOR : IDR_ALLOWED_MOUSE_CURSOR;
225 break;
226 case CONTENT_SETTINGS_TYPE_MEDIASTREAM:
227 resource_id = use_blocked ? IDR_BLOCKED_MEDIA : IDR_ASK_MEDIA;
228 break;
229 case CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS:
230 resource_id = use_blocked ? IDR_BLOCKED_DOWNLOADS
231 : IDR_ALLOWED_DOWNLOADS;
232 break;
233 case CONTENT_SETTINGS_TYPE_MIDI_SYSEX:
234 resource_id = use_blocked ? IDR_BLOCKED_MIDI_SYSEX
235 : IDR_ALLOWED_MIDI_SYSEX;
236 break;
237 default:
238 NOTREACHED();
239 break;
241 return resource_id;
244 // static
245 const gfx::Image& WebsiteSettingsUI::GetPermissionIcon(
246 const PermissionInfo& info) {
247 ContentSetting setting = info.setting;
248 if (setting == CONTENT_SETTING_DEFAULT)
249 setting = info.default_setting;
250 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
251 return rb.GetNativeImageNamed(GetPermissionIconID(info.type, setting));
254 // static
255 int WebsiteSettingsUI::GetIdentityIconID(
256 WebsiteSettings::SiteIdentityStatus status) {
257 int resource_id = IDR_PAGEINFO_INFO;
258 switch (status) {
259 case WebsiteSettings::SITE_IDENTITY_STATUS_UNKNOWN:
260 break;
261 case WebsiteSettings::SITE_IDENTITY_STATUS_CERT:
262 case WebsiteSettings::SITE_IDENTITY_STATUS_EV_CERT:
263 resource_id = IDR_PAGEINFO_GOOD;
264 break;
265 case WebsiteSettings::SITE_IDENTITY_STATUS_CERT_REVOCATION_UNKNOWN:
266 resource_id = IDR_PAGEINFO_WARNING_MINOR;
267 break;
268 case WebsiteSettings::SITE_IDENTITY_STATUS_NO_CERT:
269 resource_id = IDR_PAGEINFO_WARNING_MAJOR;
270 break;
271 case WebsiteSettings::SITE_IDENTITY_STATUS_ERROR:
272 resource_id = IDR_PAGEINFO_BAD;
273 break;
274 case WebsiteSettings::SITE_IDENTITY_STATUS_ADMIN_PROVIDED_CERT:
275 resource_id = IDR_PAGEINFO_ENTERPRISE_MANAGED;
276 break;
277 default:
278 NOTREACHED();
279 break;
281 return resource_id;
284 // static
285 const gfx::Image& WebsiteSettingsUI::GetIdentityIcon(
286 WebsiteSettings::SiteIdentityStatus status) {
287 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
288 return rb.GetNativeImageNamed(GetIdentityIconID(status));
291 // static
292 int WebsiteSettingsUI::GetConnectionIconID(
293 WebsiteSettings::SiteConnectionStatus status) {
294 int resource_id = IDR_PAGEINFO_INFO;
295 switch (status) {
296 case WebsiteSettings::SITE_CONNECTION_STATUS_UNKNOWN:
297 break;
298 case WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED:
299 resource_id = IDR_PAGEINFO_GOOD;
300 break;
301 case WebsiteSettings::SITE_CONNECTION_STATUS_MIXED_CONTENT:
302 resource_id = IDR_PAGEINFO_WARNING_MINOR;
303 break;
304 case WebsiteSettings::SITE_CONNECTION_STATUS_UNENCRYPTED:
305 resource_id = IDR_PAGEINFO_WARNING_MAJOR;
306 break;
307 case WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED_ERROR:
308 resource_id = IDR_PAGEINFO_BAD;
309 break;
310 default:
311 NOTREACHED();
312 break;
314 return resource_id;
317 // static
318 const gfx::Image& WebsiteSettingsUI::GetConnectionIcon(
319 WebsiteSettings::SiteConnectionStatus status) {
320 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
321 return rb.GetNativeImageNamed(GetConnectionIconID(status));
324 // static
325 int WebsiteSettingsUI::GetFirstVisitIconID(const base::string16& first_visit) {
326 // FIXME(markusheintz): Display a minor warning icon if the page is visited
327 // the first time.
328 return IDR_PAGEINFO_INFO;
331 // static
332 const gfx::Image& WebsiteSettingsUI::GetFirstVisitIcon(
333 const base::string16& first_visit) {
334 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
335 return rb.GetNativeImageNamed(GetFirstVisitIconID(first_visit));