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 WebsiteSettingsUI::IdentityInfo::~IdentityInfo() {}
91 base::string16
WebsiteSettingsUI::IdentityInfo::GetIdentityStatusText() const {
92 if (identity_status
== WebsiteSettings::SITE_IDENTITY_STATUS_CERT
||
93 identity_status
== WebsiteSettings::SITE_IDENTITY_STATUS_EV_CERT
) {
94 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_IDENTITY_VERIFIED
);
96 if (identity_status
==
97 WebsiteSettings::SITE_IDENTITY_STATUS_ADMIN_PROVIDED_CERT
) {
98 return l10n_util::GetStringUTF16(IDS_CERT_POLICY_PROVIDED_CERT_HEADER
);
100 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_IDENTITY_NOT_VERIFIED
);
103 WebsiteSettingsUI::~WebsiteSettingsUI() {
107 base::string16
WebsiteSettingsUI::PermissionTypeToUIString(
108 ContentSettingsType type
) {
110 case CONTENT_SETTINGS_TYPE_IMAGES
:
111 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_IMAGES
);
112 case CONTENT_SETTINGS_TYPE_JAVASCRIPT
:
113 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_JAVASCRIPT
);
114 case CONTENT_SETTINGS_TYPE_POPUPS
:
115 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_POPUPS
);
116 case CONTENT_SETTINGS_TYPE_PLUGINS
:
117 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_PLUGINS
);
118 case CONTENT_SETTINGS_TYPE_GEOLOCATION
:
119 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_LOCATION
);
120 case CONTENT_SETTINGS_TYPE_NOTIFICATIONS
:
121 return l10n_util::GetStringUTF16(
122 IDS_WEBSITE_SETTINGS_TYPE_NOTIFICATIONS
);
123 case CONTENT_SETTINGS_TYPE_FULLSCREEN
:
124 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_FULLSCREEN
);
125 case CONTENT_SETTINGS_TYPE_MOUSELOCK
:
126 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_MOUSELOCK
);
127 case CONTENT_SETTINGS_TYPE_MEDIASTREAM
:
128 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_MEDIASTREAM
);
129 case CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS
:
130 return l10n_util::GetStringUTF16(IDS_AUTOMATIC_DOWNLOADS_TAB_LABEL
);
131 case CONTENT_SETTINGS_TYPE_MIDI_SYSEX
:
132 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_TYPE_MIDI_SYSEX
);
135 return base::string16();
140 base::string16
WebsiteSettingsUI::PermissionValueToUIString(
141 ContentSetting value
) {
143 case CONTENT_SETTING_ALLOW
:
144 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_PERMISSION_ALLOW
);
145 case CONTENT_SETTING_BLOCK
:
146 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_PERMISSION_BLOCK
);
147 case CONTENT_SETTING_ASK
:
148 return l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_PERMISSION_ASK
);
151 return base::string16();
156 base::string16
WebsiteSettingsUI::PermissionActionToUIString(
157 ContentSetting setting
,
158 ContentSetting default_setting
,
159 content_settings::SettingSource source
) {
160 ContentSetting effective_setting
= setting
;
161 if (effective_setting
== CONTENT_SETTING_DEFAULT
)
162 effective_setting
= default_setting
;
164 const int* button_text_ids
= NULL
;
166 case content_settings::SETTING_SOURCE_USER
:
167 if (setting
== CONTENT_SETTING_DEFAULT
)
168 button_text_ids
= kPermissionButtonTextIDDefaultSetting
;
170 button_text_ids
= kPermissionButtonTextIDUserManaged
;
172 case content_settings::SETTING_SOURCE_POLICY
:
173 button_text_ids
= kPermissionButtonTextIDPolicyManaged
;
175 case content_settings::SETTING_SOURCE_EXTENSION
:
176 button_text_ids
= kPermissionButtonTextIDExtensionManaged
;
178 case content_settings::SETTING_SOURCE_WHITELIST
:
179 case content_settings::SETTING_SOURCE_NONE
:
182 return base::string16();
184 int button_text_id
= button_text_ids
[effective_setting
];
185 DCHECK_NE(button_text_id
, kInvalidResourceID
);
186 return l10n_util::GetStringUTF16(button_text_id
);
190 int WebsiteSettingsUI::GetPermissionIconID(ContentSettingsType type
,
191 ContentSetting setting
) {
192 bool use_blocked
= (setting
== CONTENT_SETTING_BLOCK
);
193 int resource_id
= IDR_INFO
;
195 case CONTENT_SETTINGS_TYPE_IMAGES
:
196 resource_id
= use_blocked
? IDR_BLOCKED_IMAGES
: IDR_ALLOWED_IMAGES
;
198 case CONTENT_SETTINGS_TYPE_JAVASCRIPT
:
200 use_blocked
? IDR_BLOCKED_JAVASCRIPT
: IDR_ALLOWED_JAVASCRIPT
;
202 case CONTENT_SETTINGS_TYPE_COOKIES
:
203 resource_id
= use_blocked
? IDR_BLOCKED_COOKIES
: IDR_ACCESSED_COOKIES
;
205 case CONTENT_SETTINGS_TYPE_POPUPS
:
206 resource_id
= use_blocked
? IDR_BLOCKED_POPUPS
: IDR_ALLOWED_POPUPS
;
208 case CONTENT_SETTINGS_TYPE_PLUGINS
:
209 resource_id
= use_blocked
? IDR_BLOCKED_PLUGINS
: IDR_ALLOWED_PLUGINS
;
211 case CONTENT_SETTINGS_TYPE_GEOLOCATION
:
212 resource_id
= use_blocked
? IDR_BLOCKED_LOCATION
: IDR_ALLOWED_LOCATION
;
214 case CONTENT_SETTINGS_TYPE_NOTIFICATIONS
:
216 use_blocked
? IDR_BLOCKED_NOTIFICATION
: IDR_ALLOWED_NOTIFICATION
;
218 case CONTENT_SETTINGS_TYPE_FULLSCREEN
:
219 resource_id
= IDR_ALLOWED_FULLSCREEN
;
221 case CONTENT_SETTINGS_TYPE_MOUSELOCK
:
223 use_blocked
? IDR_BLOCKED_MOUSE_CURSOR
: IDR_ALLOWED_MOUSE_CURSOR
;
225 case CONTENT_SETTINGS_TYPE_MEDIASTREAM
:
226 resource_id
= use_blocked
? IDR_BLOCKED_MEDIA
: IDR_ASK_MEDIA
;
228 case CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS
:
229 resource_id
= use_blocked
? IDR_BLOCKED_DOWNLOADS
230 : IDR_ALLOWED_DOWNLOADS
;
232 case CONTENT_SETTINGS_TYPE_MIDI_SYSEX
:
233 resource_id
= use_blocked
? IDR_BLOCKED_MIDI_SYSEX
234 : IDR_ALLOWED_MIDI_SYSEX
;
244 const gfx::Image
& WebsiteSettingsUI::GetPermissionIcon(
245 ContentSettingsType type
,
246 ContentSetting setting
) {
247 ResourceBundle
& rb
= ResourceBundle::GetSharedInstance();
248 return rb
.GetNativeImageNamed(GetPermissionIconID(type
, setting
));
252 int WebsiteSettingsUI::GetIdentityIconID(
253 WebsiteSettings::SiteIdentityStatus status
) {
254 int resource_id
= IDR_PAGEINFO_INFO
;
256 case WebsiteSettings::SITE_IDENTITY_STATUS_UNKNOWN
:
258 case WebsiteSettings::SITE_IDENTITY_STATUS_CERT
:
259 case WebsiteSettings::SITE_IDENTITY_STATUS_EV_CERT
:
260 resource_id
= IDR_PAGEINFO_GOOD
;
262 case WebsiteSettings::SITE_IDENTITY_STATUS_CERT_REVOCATION_UNKNOWN
:
263 resource_id
= IDR_PAGEINFO_WARNING_MINOR
;
265 case WebsiteSettings::SITE_IDENTITY_STATUS_NO_CERT
:
266 resource_id
= IDR_PAGEINFO_WARNING_MAJOR
;
268 case WebsiteSettings::SITE_IDENTITY_STATUS_ERROR
:
269 resource_id
= IDR_PAGEINFO_BAD
;
271 case WebsiteSettings::SITE_IDENTITY_STATUS_ADMIN_PROVIDED_CERT
:
272 resource_id
= IDR_PAGEINFO_ENTERPRISE_MANAGED
;
282 const gfx::Image
& WebsiteSettingsUI::GetIdentityIcon(
283 WebsiteSettings::SiteIdentityStatus status
) {
284 ResourceBundle
& rb
= ResourceBundle::GetSharedInstance();
285 return rb
.GetNativeImageNamed(GetIdentityIconID(status
));
289 int WebsiteSettingsUI::GetConnectionIconID(
290 WebsiteSettings::SiteConnectionStatus status
) {
291 int resource_id
= IDR_PAGEINFO_INFO
;
293 case WebsiteSettings::SITE_CONNECTION_STATUS_UNKNOWN
:
295 case WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED
:
296 resource_id
= IDR_PAGEINFO_GOOD
;
298 case WebsiteSettings::SITE_CONNECTION_STATUS_MIXED_CONTENT
:
299 resource_id
= IDR_PAGEINFO_WARNING_MINOR
;
301 case WebsiteSettings::SITE_CONNECTION_STATUS_UNENCRYPTED
:
302 resource_id
= IDR_PAGEINFO_WARNING_MAJOR
;
304 case WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED_ERROR
:
305 resource_id
= IDR_PAGEINFO_BAD
;
315 const gfx::Image
& WebsiteSettingsUI::GetConnectionIcon(
316 WebsiteSettings::SiteConnectionStatus status
) {
317 ResourceBundle
& rb
= ResourceBundle::GetSharedInstance();
318 return rb
.GetNativeImageNamed(GetConnectionIconID(status
));
322 int WebsiteSettingsUI::GetFirstVisitIconID(const base::string16
& first_visit
) {
323 // FIXME(markusheintz): Display a minor warning icon if the page is visited
325 return IDR_PAGEINFO_INFO
;
329 const gfx::Image
& WebsiteSettingsUI::GetFirstVisitIcon(
330 const base::string16
& first_visit
) {
331 ResourceBundle
& rb
= ResourceBundle::GetSharedInstance();
332 return rb
.GetNativeImageNamed(GetFirstVisitIconID(first_visit
));