Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(279)

Side by Side Diff: chrome/browser/ui/page_info/page_info_ui.cc

Issue 2743423004: Permissions: Show the reason for permission decisions made on the user's behalf. (Closed)
Patch Set: Review comments. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/page_info/page_info_ui.h" 5 #include "chrome/browser/ui/page_info/page_info_ui.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" 8 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
9 #include "chrome/browser/permissions/permission_manager.h"
10 #include "chrome/browser/permissions/permission_result.h"
11 #include "chrome/browser/permissions/permission_util.h"
9 #include "chrome/browser/plugins/plugin_utils.h" 12 #include "chrome/browser/plugins/plugin_utils.h"
10 #include "chrome/browser/plugins/plugins_field_trial.h" 13 #include "chrome/browser/plugins/plugins_field_trial.h"
11 #include "chrome/common/chrome_features.h" 14 #include "chrome/common/chrome_features.h"
12 #include "chrome/grit/chromium_strings.h" 15 #include "chrome/grit/chromium_strings.h"
13 #include "chrome/grit/generated_resources.h" 16 #include "chrome/grit/generated_resources.h"
14 #include "chrome/grit/theme_resources.h" 17 #include "chrome/grit/theme_resources.h"
15 #include "components/strings/grit/components_strings.h" 18 #include "components/strings/grit/components_strings.h"
16 #include "ppapi/features/features.h" 19 #include "ppapi/features/features.h"
17 #include "ui/base/l10n/l10n_util.h" 20 #include "ui/base/l10n/l10n_util.h"
18 #include "ui/base/resource/resource_bundle.h" 21 #include "ui/base/resource/resource_bundle.h"
19 #include "ui/gfx/image/image.h" 22 #include "ui/gfx/image/image.h"
23 #include "url/gurl.h"
20 24
21 namespace { 25 namespace {
22 26
23 const int kInvalidResourceID = -1; 27 const int kInvalidResourceID = -1;
24 28
25 // The resource IDs for the strings that are displayed on the permissions 29 // The resource IDs for the strings that are displayed on the permissions
26 // button if the permission setting is managed by policy.
27 const int kPermissionButtonTextIDPolicyManaged[] = {
28 kInvalidResourceID,
29 IDS_PAGE_INFO_BUTTON_TEXT_ALLOWED_BY_POLICY,
30 IDS_PAGE_INFO_BUTTON_TEXT_BLOCKED_BY_POLICY,
31 IDS_PAGE_INFO_BUTTON_TEXT_ASK_BY_POLICY,
32 kInvalidResourceID,
33 kInvalidResourceID};
34 static_assert(arraysize(kPermissionButtonTextIDPolicyManaged) ==
35 CONTENT_SETTING_NUM_SETTINGS,
36 "kPermissionButtonTextIDPolicyManaged array size is incorrect");
37
38 // The resource IDs for the strings that are displayed on the permissions
39 // button if the permission setting is managed by an extension.
40 const int kPermissionButtonTextIDExtensionManaged[] = {
41 kInvalidResourceID,
42 IDS_PAGE_INFO_BUTTON_TEXT_ALLOWED_BY_EXTENSION,
43 IDS_PAGE_INFO_BUTTON_TEXT_BLOCKED_BY_EXTENSION,
44 kInvalidResourceID,
45 kInvalidResourceID,
46 kInvalidResourceID};
47 static_assert(arraysize(kPermissionButtonTextIDExtensionManaged) ==
48 CONTENT_SETTING_NUM_SETTINGS,
49 "kPermissionButtonTextIDExtensionManaged array size is "
50 "incorrect");
51
52 // The resource IDs for the strings that are displayed on the permissions
53 // button if the permission setting is managed by the user. 30 // button if the permission setting is managed by the user.
54 const int kPermissionButtonTextIDUserManaged[] = { 31 const int kPermissionButtonTextIDUserManaged[] = {
55 kInvalidResourceID, 32 kInvalidResourceID,
56 IDS_PAGE_INFO_BUTTON_TEXT_ALLOWED_BY_USER, 33 IDS_PAGE_INFO_BUTTON_TEXT_ALLOWED_BY_USER,
57 IDS_PAGE_INFO_BUTTON_TEXT_BLOCKED_BY_USER, 34 IDS_PAGE_INFO_BUTTON_TEXT_BLOCKED_BY_USER,
58 IDS_PAGE_INFO_BUTTON_TEXT_ASK_BY_USER, 35 IDS_PAGE_INFO_BUTTON_TEXT_ASK_BY_USER,
59 kInvalidResourceID, 36 kInvalidResourceID,
60 IDS_PAGE_INFO_BUTTON_TEXT_DETECT_IMPORTANT_CONTENT_BY_USER}; 37 IDS_PAGE_INFO_BUTTON_TEXT_DETECT_IMPORTANT_CONTENT_BY_USER};
61 static_assert(arraysize(kPermissionButtonTextIDUserManaged) == 38 static_assert(arraysize(kPermissionButtonTextIDUserManaged) ==
62 CONTENT_SETTING_NUM_SETTINGS, 39 CONTENT_SETTING_NUM_SETTINGS,
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 // is removed, just migrate the actual content setting to ASK. 218 // is removed, just migrate the actual content setting to ASK.
242 if (PluginUtils::ShouldPreferHtmlOverPlugins(host_content_settings_map) && 219 if (PluginUtils::ShouldPreferHtmlOverPlugins(host_content_settings_map) &&
243 effective_setting == CONTENT_SETTING_DETECT_IMPORTANT_CONTENT) { 220 effective_setting == CONTENT_SETTING_DETECT_IMPORTANT_CONTENT) {
244 effective_setting = CONTENT_SETTING_ASK; 221 effective_setting = CONTENT_SETTING_ASK;
245 } 222 }
246 #endif 223 #endif
247 224
248 const int* button_text_ids = NULL; 225 const int* button_text_ids = NULL;
249 switch (source) { 226 switch (source) {
250 case content_settings::SETTING_SOURCE_USER: 227 case content_settings::SETTING_SOURCE_USER:
251 if (setting == CONTENT_SETTING_DEFAULT) 228 if (setting == CONTENT_SETTING_DEFAULT) {
252 button_text_ids = kPermissionButtonTextIDDefaultSetting; 229 button_text_ids = kPermissionButtonTextIDDefaultSetting;
253 else 230 break;
254 button_text_ids = kPermissionButtonTextIDUserManaged; 231 }
255 break; 232 // Fallthrough.
256 case content_settings::SETTING_SOURCE_POLICY: 233 case content_settings::SETTING_SOURCE_POLICY:
257 button_text_ids = kPermissionButtonTextIDPolicyManaged;
258 break;
259 case content_settings::SETTING_SOURCE_EXTENSION: 234 case content_settings::SETTING_SOURCE_EXTENSION:
260 button_text_ids = kPermissionButtonTextIDExtensionManaged; 235 button_text_ids = kPermissionButtonTextIDUserManaged;
261 break; 236 break;
262 case content_settings::SETTING_SOURCE_WHITELIST: 237 case content_settings::SETTING_SOURCE_WHITELIST:
263 case content_settings::SETTING_SOURCE_NONE: 238 case content_settings::SETTING_SOURCE_NONE:
264 default: 239 default:
265 NOTREACHED(); 240 NOTREACHED();
266 return base::string16(); 241 return base::string16();
267 } 242 }
268 int button_text_id = button_text_ids[effective_setting]; 243 int button_text_id = button_text_ids[effective_setting];
269 DCHECK_NE(button_text_id, kInvalidResourceID); 244 DCHECK_NE(button_text_id, kInvalidResourceID);
270 return l10n_util::GetStringUTF16(button_text_id); 245 return l10n_util::GetStringUTF16(button_text_id);
271 } 246 }
272 247
273 // static 248 // static
274 int PageInfoUI::GetPermissionIconID(ContentSettingsType type, 249 int PageInfoUI::GetPermissionIconID(ContentSettingsType type,
275 ContentSetting setting) { 250 ContentSetting setting) {
276 bool use_blocked = (setting == CONTENT_SETTING_BLOCK); 251 bool use_blocked = (setting == CONTENT_SETTING_BLOCK);
277 for (const PermissionsUIInfo& info : kPermissionsUIInfo) { 252 for (const PermissionsUIInfo& info : kPermissionsUIInfo) {
278 if (info.type == type) 253 if (info.type == type)
279 return use_blocked ? info.blocked_icon_id : info.allowed_icon_id; 254 return use_blocked ? info.blocked_icon_id : info.allowed_icon_id;
280 } 255 }
281 NOTREACHED(); 256 NOTREACHED();
282 return IDR_INFO; 257 return IDR_INFO;
283 } 258 }
284 259
285 // static 260 // static
261 base::string16 PageInfoUI::PermissionDecisionReasonToUIString(
262 Profile* profile,
263 const PageInfoUI::PermissionInfo& permission,
264 const GURL& url) {
265 int message_id = kInvalidResourceID;
266 switch (permission.source) {
267 case content_settings::SettingSource::SETTING_SOURCE_POLICY:
268 message_id = IDS_PAGE_INFO_PERMISSION_SET_BY_POLICY;
269 break;
270 case content_settings::SettingSource::SETTING_SOURCE_EXTENSION:
271 message_id = IDS_PAGE_INFO_PERMISSION_SET_BY_EXTENSION;
272 break;
273 default:
274 break;
275 }
276
277 if (permission.setting == CONTENT_SETTING_BLOCK &&
278 PermissionUtil::IsPermission(permission.type)) {
279 PermissionResult permission_result =
280 PermissionManager::Get(profile)->GetPermissionStatus(permission.type,
281 url, url);
282 switch (permission_result.source) {
283 case PermissionStatusSource::MULTIPLE_DISMISSALS:
284 case PermissionStatusSource::SAFE_BROWSING_BLACKLIST:
285 message_id = IDS_PAGE_INFO_PERMISSION_AUTOMATICALLY_BLOCKED;
286 break;
287 default:
288 break;
289 }
290 }
291
292 if (message_id == kInvalidResourceID)
293 return base::string16();
294 return l10n_util::GetStringUTF16(message_id);
295 }
296
297 // static
298 SkColor PageInfoUI::GetPermissionDecisionTextColor() {
299 return SK_ColorGRAY;
300 }
301
302 // static
286 const gfx::Image& PageInfoUI::GetPermissionIcon(const PermissionInfo& info) { 303 const gfx::Image& PageInfoUI::GetPermissionIcon(const PermissionInfo& info) {
287 ContentSetting setting = info.setting; 304 ContentSetting setting = info.setting;
288 if (setting == CONTENT_SETTING_DEFAULT) 305 if (setting == CONTENT_SETTING_DEFAULT)
289 setting = info.default_setting; 306 setting = info.default_setting;
290 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); 307 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
291 return rb.GetNativeImageNamed(GetPermissionIconID(info.type, setting)); 308 return rb.GetNativeImageNamed(GetPermissionIconID(info.type, setting));
292 } 309 }
293 310
294 // static 311 // static
295 base::string16 PageInfoUI::ChosenObjectToUIString( 312 base::string16 PageInfoUI::ChosenObjectToUIString(
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 } 388 }
372 return resource_id; 389 return resource_id;
373 } 390 }
374 391
375 // static 392 // static
376 const gfx::Image& PageInfoUI::GetConnectionIcon( 393 const gfx::Image& PageInfoUI::GetConnectionIcon(
377 PageInfo::SiteConnectionStatus status) { 394 PageInfo::SiteConnectionStatus status) {
378 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); 395 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
379 return rb.GetNativeImageNamed(GetConnectionIconID(status)); 396 return rb.GetNativeImageNamed(GetConnectionIconID(status));
380 } 397 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/page_info/page_info_ui.h ('k') | chrome/browser/ui/views/page_info/permission_selector_row.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698