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
),
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 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
);
136 return base::string16();
141 base::string16
WebsiteSettingsUI::PermissionValueToUIString(
142 ContentSetting 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
);
152 return base::string16();
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
;
167 case content_settings::SETTING_SOURCE_USER
:
168 if (setting
== CONTENT_SETTING_DEFAULT
)
169 button_text_ids
= kPermissionButtonTextIDDefaultSetting
;
171 button_text_ids
= kPermissionButtonTextIDUserManaged
;
173 case content_settings::SETTING_SOURCE_POLICY
:
174 button_text_ids
= kPermissionButtonTextIDPolicyManaged
;
176 case content_settings::SETTING_SOURCE_EXTENSION
:
177 button_text_ids
= kPermissionButtonTextIDExtensionManaged
;
179 case content_settings::SETTING_SOURCE_WHITELIST
:
180 case content_settings::SETTING_SOURCE_NONE
:
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
);
191 int WebsiteSettingsUI::GetPermissionIconID(ContentSettingsType type
,
192 ContentSetting setting
) {
193 bool use_blocked
= (setting
== CONTENT_SETTING_BLOCK
);
194 int resource_id
= IDR_INFO
;
196 case CONTENT_SETTINGS_TYPE_IMAGES
:
197 resource_id
= use_blocked
? IDR_BLOCKED_IMAGES
: IDR_ALLOWED_IMAGES
;
199 case CONTENT_SETTINGS_TYPE_JAVASCRIPT
:
201 use_blocked
? IDR_BLOCKED_JAVASCRIPT
: IDR_ALLOWED_JAVASCRIPT
;
203 case CONTENT_SETTINGS_TYPE_COOKIES
:
204 resource_id
= use_blocked
? IDR_BLOCKED_COOKIES
: IDR_ACCESSED_COOKIES
;
206 case CONTENT_SETTINGS_TYPE_POPUPS
:
207 resource_id
= use_blocked
? IDR_BLOCKED_POPUPS
: IDR_ALLOWED_POPUPS
;
209 case CONTENT_SETTINGS_TYPE_PLUGINS
:
210 resource_id
= use_blocked
? IDR_BLOCKED_PLUGINS
: IDR_ALLOWED_PLUGINS
;
212 case CONTENT_SETTINGS_TYPE_GEOLOCATION
:
213 resource_id
= use_blocked
? IDR_BLOCKED_LOCATION
: IDR_ALLOWED_LOCATION
;
215 case CONTENT_SETTINGS_TYPE_NOTIFICATIONS
:
217 use_blocked
? IDR_BLOCKED_NOTIFICATION
: IDR_ALLOWED_NOTIFICATION
;
219 case CONTENT_SETTINGS_TYPE_FULLSCREEN
:
220 resource_id
= IDR_ALLOWED_FULLSCREEN
;
222 case CONTENT_SETTINGS_TYPE_MOUSELOCK
:
224 use_blocked
? IDR_BLOCKED_MOUSE_CURSOR
: IDR_ALLOWED_MOUSE_CURSOR
;
226 case CONTENT_SETTINGS_TYPE_MEDIASTREAM
:
227 resource_id
= use_blocked
? IDR_BLOCKED_MEDIA
: IDR_ASK_MEDIA
;
229 case CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS
:
230 resource_id
= use_blocked
? IDR_BLOCKED_DOWNLOADS
231 : IDR_ALLOWED_DOWNLOADS
;
233 case CONTENT_SETTINGS_TYPE_MIDI_SYSEX
:
234 resource_id
= use_blocked
? IDR_BLOCKED_MIDI_SYSEX
235 : IDR_ALLOWED_MIDI_SYSEX
;
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
));
255 int WebsiteSettingsUI::GetIdentityIconID(
256 WebsiteSettings::SiteIdentityStatus status
) {
257 int resource_id
= IDR_PAGEINFO_INFO
;
259 case WebsiteSettings::SITE_IDENTITY_STATUS_UNKNOWN
:
261 case WebsiteSettings::SITE_IDENTITY_STATUS_CERT
:
262 case WebsiteSettings::SITE_IDENTITY_STATUS_EV_CERT
:
263 resource_id
= IDR_PAGEINFO_GOOD
;
265 case WebsiteSettings::SITE_IDENTITY_STATUS_CERT_REVOCATION_UNKNOWN
:
266 resource_id
= IDR_PAGEINFO_WARNING_MINOR
;
268 case WebsiteSettings::SITE_IDENTITY_STATUS_NO_CERT
:
269 resource_id
= IDR_PAGEINFO_WARNING_MAJOR
;
271 case WebsiteSettings::SITE_IDENTITY_STATUS_ERROR
:
272 resource_id
= IDR_PAGEINFO_BAD
;
274 case WebsiteSettings::SITE_IDENTITY_STATUS_ADMIN_PROVIDED_CERT
:
275 resource_id
= IDR_PAGEINFO_ENTERPRISE_MANAGED
;
285 const gfx::Image
& WebsiteSettingsUI::GetIdentityIcon(
286 WebsiteSettings::SiteIdentityStatus status
) {
287 ResourceBundle
& rb
= ResourceBundle::GetSharedInstance();
288 return rb
.GetNativeImageNamed(GetIdentityIconID(status
));
292 int WebsiteSettingsUI::GetConnectionIconID(
293 WebsiteSettings::SiteConnectionStatus status
) {
294 int resource_id
= IDR_PAGEINFO_INFO
;
296 case WebsiteSettings::SITE_CONNECTION_STATUS_UNKNOWN
:
298 case WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED
:
299 resource_id
= IDR_PAGEINFO_GOOD
;
301 case WebsiteSettings::SITE_CONNECTION_STATUS_MIXED_CONTENT
:
302 resource_id
= IDR_PAGEINFO_WARNING_MINOR
;
304 case WebsiteSettings::SITE_CONNECTION_STATUS_UNENCRYPTED
:
305 resource_id
= IDR_PAGEINFO_WARNING_MAJOR
;
307 case WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED_ERROR
:
308 resource_id
= IDR_PAGEINFO_BAD
;
318 const gfx::Image
& WebsiteSettingsUI::GetConnectionIcon(
319 WebsiteSettings::SiteConnectionStatus status
) {
320 ResourceBundle
& rb
= ResourceBundle::GetSharedInstance();
321 return rb
.GetNativeImageNamed(GetConnectionIconID(status
));
325 int WebsiteSettingsUI::GetFirstVisitIconID(const base::string16
& first_visit
) {
326 // FIXME(markusheintz): Display a minor warning icon if the page is visited
328 return IDR_PAGEINFO_INFO
;
332 const gfx::Image
& WebsiteSettingsUI::GetFirstVisitIcon(
333 const base::string16
& first_visit
) {
334 ResourceBundle
& rb
= ResourceBundle::GetSharedInstance();
335 return rb
.GetNativeImageNamed(GetFirstVisitIconID(first_visit
));