Disable view source for Developer Tools.
[chromium-blink-merge.git] / chrome / browser / ui / website_settings / website_settings_ui.cc
bloba1e5fef5bccbbab8756c4de6de7b87e42e2e4dfa
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) {
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() {
106 // static
107 base::string16 WebsiteSettingsUI::PermissionTypeToUIString(
108 ContentSettingsType type) {
109 switch (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);
133 default:
134 NOTREACHED();
135 return base::string16();
139 // static
140 base::string16 WebsiteSettingsUI::PermissionValueToUIString(
141 ContentSetting value) {
142 switch (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);
149 default:
150 NOTREACHED();
151 return base::string16();
155 // static
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;
165 switch (source) {
166 case content_settings::SETTING_SOURCE_USER:
167 if (setting == CONTENT_SETTING_DEFAULT)
168 button_text_ids = kPermissionButtonTextIDDefaultSetting;
169 else
170 button_text_ids = kPermissionButtonTextIDUserManaged;
171 break;
172 case content_settings::SETTING_SOURCE_POLICY:
173 button_text_ids = kPermissionButtonTextIDPolicyManaged;
174 break;
175 case content_settings::SETTING_SOURCE_EXTENSION:
176 button_text_ids = kPermissionButtonTextIDExtensionManaged;
177 break;
178 case content_settings::SETTING_SOURCE_WHITELIST:
179 case content_settings::SETTING_SOURCE_NONE:
180 default:
181 NOTREACHED();
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);
189 // static
190 int WebsiteSettingsUI::GetPermissionIconID(ContentSettingsType type,
191 ContentSetting setting) {
192 bool use_blocked = (setting == CONTENT_SETTING_BLOCK);
193 int resource_id = IDR_INFO;
194 switch (type) {
195 case CONTENT_SETTINGS_TYPE_IMAGES:
196 resource_id = use_blocked ? IDR_BLOCKED_IMAGES : IDR_ALLOWED_IMAGES;
197 break;
198 case CONTENT_SETTINGS_TYPE_JAVASCRIPT:
199 resource_id =
200 use_blocked ? IDR_BLOCKED_JAVASCRIPT : IDR_ALLOWED_JAVASCRIPT;
201 break;
202 case CONTENT_SETTINGS_TYPE_COOKIES:
203 resource_id = use_blocked ? IDR_BLOCKED_COOKIES : IDR_ACCESSED_COOKIES;
204 break;
205 case CONTENT_SETTINGS_TYPE_POPUPS:
206 resource_id = use_blocked ? IDR_BLOCKED_POPUPS : IDR_ALLOWED_POPUPS;
207 break;
208 case CONTENT_SETTINGS_TYPE_PLUGINS:
209 resource_id = use_blocked ? IDR_BLOCKED_PLUGINS : IDR_ALLOWED_PLUGINS;
210 break;
211 case CONTENT_SETTINGS_TYPE_GEOLOCATION:
212 resource_id = use_blocked ? IDR_BLOCKED_LOCATION : IDR_ALLOWED_LOCATION;
213 break;
214 case CONTENT_SETTINGS_TYPE_NOTIFICATIONS:
215 resource_id =
216 use_blocked ? IDR_BLOCKED_NOTIFICATION : IDR_ALLOWED_NOTIFICATION;
217 break;
218 case CONTENT_SETTINGS_TYPE_FULLSCREEN:
219 resource_id = IDR_ALLOWED_FULLSCREEN;
220 break;
221 case CONTENT_SETTINGS_TYPE_MOUSELOCK:
222 resource_id =
223 use_blocked ? IDR_BLOCKED_MOUSE_CURSOR : IDR_ALLOWED_MOUSE_CURSOR;
224 break;
225 case CONTENT_SETTINGS_TYPE_MEDIASTREAM:
226 resource_id = use_blocked ? IDR_BLOCKED_MEDIA : IDR_ASK_MEDIA;
227 break;
228 case CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS:
229 resource_id = use_blocked ? IDR_BLOCKED_DOWNLOADS
230 : IDR_ALLOWED_DOWNLOADS;
231 break;
232 case CONTENT_SETTINGS_TYPE_MIDI_SYSEX:
233 resource_id = use_blocked ? IDR_BLOCKED_MIDI_SYSEX
234 : IDR_ALLOWED_MIDI_SYSEX;
235 break;
236 default:
237 NOTREACHED();
238 break;
240 return resource_id;
243 // static
244 const gfx::Image& WebsiteSettingsUI::GetPermissionIcon(
245 ContentSettingsType type,
246 ContentSetting setting) {
247 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
248 return rb.GetNativeImageNamed(GetPermissionIconID(type, setting));
251 // static
252 int WebsiteSettingsUI::GetIdentityIconID(
253 WebsiteSettings::SiteIdentityStatus status) {
254 int resource_id = IDR_PAGEINFO_INFO;
255 switch (status) {
256 case WebsiteSettings::SITE_IDENTITY_STATUS_UNKNOWN:
257 break;
258 case WebsiteSettings::SITE_IDENTITY_STATUS_CERT:
259 case WebsiteSettings::SITE_IDENTITY_STATUS_EV_CERT:
260 resource_id = IDR_PAGEINFO_GOOD;
261 break;
262 case WebsiteSettings::SITE_IDENTITY_STATUS_CERT_REVOCATION_UNKNOWN:
263 resource_id = IDR_PAGEINFO_WARNING_MINOR;
264 break;
265 case WebsiteSettings::SITE_IDENTITY_STATUS_NO_CERT:
266 resource_id = IDR_PAGEINFO_WARNING_MAJOR;
267 break;
268 case WebsiteSettings::SITE_IDENTITY_STATUS_ERROR:
269 resource_id = IDR_PAGEINFO_BAD;
270 break;
271 case WebsiteSettings::SITE_IDENTITY_STATUS_ADMIN_PROVIDED_CERT:
272 resource_id = IDR_PAGEINFO_ENTERPRISE_MANAGED;
273 break;
274 default:
275 NOTREACHED();
276 break;
278 return resource_id;
281 // static
282 const gfx::Image& WebsiteSettingsUI::GetIdentityIcon(
283 WebsiteSettings::SiteIdentityStatus status) {
284 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
285 return rb.GetNativeImageNamed(GetIdentityIconID(status));
288 // static
289 int WebsiteSettingsUI::GetConnectionIconID(
290 WebsiteSettings::SiteConnectionStatus status) {
291 int resource_id = IDR_PAGEINFO_INFO;
292 switch (status) {
293 case WebsiteSettings::SITE_CONNECTION_STATUS_UNKNOWN:
294 break;
295 case WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED:
296 resource_id = IDR_PAGEINFO_GOOD;
297 break;
298 case WebsiteSettings::SITE_CONNECTION_STATUS_MIXED_CONTENT:
299 resource_id = IDR_PAGEINFO_WARNING_MINOR;
300 break;
301 case WebsiteSettings::SITE_CONNECTION_STATUS_UNENCRYPTED:
302 resource_id = IDR_PAGEINFO_WARNING_MAJOR;
303 break;
304 case WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED_ERROR:
305 resource_id = IDR_PAGEINFO_BAD;
306 break;
307 default:
308 NOTREACHED();
309 break;
311 return resource_id;
314 // static
315 const gfx::Image& WebsiteSettingsUI::GetConnectionIcon(
316 WebsiteSettings::SiteConnectionStatus status) {
317 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
318 return rb.GetNativeImageNamed(GetConnectionIconID(status));
321 // static
322 int WebsiteSettingsUI::GetFirstVisitIconID(const base::string16& first_visit) {
323 // FIXME(markusheintz): Display a minor warning icon if the page is visited
324 // the first time.
325 return IDR_PAGEINFO_INFO;
328 // static
329 const gfx::Image& WebsiteSettingsUI::GetFirstVisitIcon(
330 const base::string16& first_visit) {
331 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
332 return rb.GetNativeImageNamed(GetFirstVisitIconID(first_visit));