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

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

Issue 2743423004: Permissions: Show the reason for permission decisions made on the user's behalf. (Closed)
Patch Set: Rebase againnn Created 3 years, 9 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/website_settings_ui.h" 5 #include "chrome/browser/ui/page_info/website_settings_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"
dominickn 2017/03/26 23:46:24 #include "url/gurl.h"
Patti Lor 2017/03/27 05:52:40 Done.
20 23
21 namespace { 24 namespace {
22 25
23 const int kInvalidResourceID = -1; 26 const int kInvalidResourceID = -1;
24 27
25 // The resource IDs for the strings that are displayed on the permissions 28 // 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_WEBSITE_SETTINGS_BUTTON_TEXT_ALLOWED_BY_POLICY,
30 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_BLOCKED_BY_POLICY,
31 IDS_WEBSITE_SETTINGS_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_WEBSITE_SETTINGS_BUTTON_TEXT_ALLOWED_BY_EXTENSION,
43 IDS_WEBSITE_SETTINGS_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. 29 // button if the permission setting is managed by the user.
54 const int kPermissionButtonTextIDUserManaged[] = { 30 const int kPermissionButtonTextIDUserManaged[] = {
55 kInvalidResourceID, 31 kInvalidResourceID,
56 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_ALLOWED_BY_USER, 32 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_ALLOWED_BY_USER,
57 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_BLOCKED_BY_USER, 33 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_BLOCKED_BY_USER,
58 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_ASK_BY_USER, 34 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_ASK_BY_USER,
59 kInvalidResourceID, 35 kInvalidResourceID,
60 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_DETECT_IMPORTANT_CONTENT_BY_USER}; 36 IDS_WEBSITE_SETTINGS_BUTTON_TEXT_DETECT_IMPORTANT_CONTENT_BY_USER};
61 static_assert(arraysize(kPermissionButtonTextIDUserManaged) == 37 static_assert(arraysize(kPermissionButtonTextIDUserManaged) ==
62 CONTENT_SETTING_NUM_SETTINGS, 38 CONTENT_SETTING_NUM_SETTINGS,
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 // is removed, just migrate the actual content setting to ASK. 230 // is removed, just migrate the actual content setting to ASK.
255 if (PluginUtils::ShouldPreferHtmlOverPlugins(host_content_settings_map) && 231 if (PluginUtils::ShouldPreferHtmlOverPlugins(host_content_settings_map) &&
256 effective_setting == CONTENT_SETTING_DETECT_IMPORTANT_CONTENT) { 232 effective_setting == CONTENT_SETTING_DETECT_IMPORTANT_CONTENT) {
257 effective_setting = CONTENT_SETTING_ASK; 233 effective_setting = CONTENT_SETTING_ASK;
258 } 234 }
259 #endif 235 #endif
260 236
261 const int* button_text_ids = NULL; 237 const int* button_text_ids = NULL;
262 switch (source) { 238 switch (source) {
263 case content_settings::SETTING_SOURCE_USER: 239 case content_settings::SETTING_SOURCE_USER:
264 if (setting == CONTENT_SETTING_DEFAULT) 240 if (setting == CONTENT_SETTING_DEFAULT) {
265 button_text_ids = kPermissionButtonTextIDDefaultSetting; 241 button_text_ids = kPermissionButtonTextIDDefaultSetting;
266 else 242 break;
267 button_text_ids = kPermissionButtonTextIDUserManaged; 243 }
268 break; 244 // Fallthrough.
269 case content_settings::SETTING_SOURCE_POLICY: 245 case content_settings::SETTING_SOURCE_POLICY:
270 button_text_ids = kPermissionButtonTextIDPolicyManaged;
271 break;
272 case content_settings::SETTING_SOURCE_EXTENSION: 246 case content_settings::SETTING_SOURCE_EXTENSION:
273 button_text_ids = kPermissionButtonTextIDExtensionManaged; 247 button_text_ids = kPermissionButtonTextIDUserManaged;
274 break; 248 break;
275 case content_settings::SETTING_SOURCE_WHITELIST: 249 case content_settings::SETTING_SOURCE_WHITELIST:
276 case content_settings::SETTING_SOURCE_NONE: 250 case content_settings::SETTING_SOURCE_NONE:
277 default: 251 default:
278 NOTREACHED(); 252 NOTREACHED();
279 return base::string16(); 253 return base::string16();
280 } 254 }
281 int button_text_id = button_text_ids[effective_setting]; 255 int button_text_id = button_text_ids[effective_setting];
282 DCHECK_NE(button_text_id, kInvalidResourceID); 256 DCHECK_NE(button_text_id, kInvalidResourceID);
283 return l10n_util::GetStringUTF16(button_text_id); 257 return l10n_util::GetStringUTF16(button_text_id);
284 } 258 }
285 259
286 // static 260 // static
261 base::string16 WebsiteSettingsUI::PermissionDecisionReasonToString(
262 Profile* profile,
263 const WebsiteSettingsUI::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_WEBSITE_SETTINGS_PERMISSION_SET_BY_POLICY;
269 break;
270 case content_settings::SettingSource::SETTING_SOURCE_EXTENSION:
271 message_id = IDS_WEBSITE_SETTINGS_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_WEBSITE_SETTINGS_PERMISSION_AUTOMATICALLY_BLOCKED;
286 break;
287 default:
288 break;
289 }
290 }
291
292 if (message_id != kInvalidResourceID)
dominickn 2017/03/26 23:46:24 Minor nit: I would flip the conditional to make it
Patti Lor 2017/03/27 05:52:40 Done.
293 return l10n_util::GetStringUTF16(message_id);
294 return base::string16();
295 }
296
297 // static
287 int WebsiteSettingsUI::GetPermissionIconID(ContentSettingsType type, 298 int WebsiteSettingsUI::GetPermissionIconID(ContentSettingsType type,
288 ContentSetting setting) { 299 ContentSetting setting) {
289 bool use_blocked = (setting == CONTENT_SETTING_BLOCK); 300 bool use_blocked = (setting == CONTENT_SETTING_BLOCK);
290 for (const PermissionsUIInfo& info : kPermissionsUIInfo) { 301 for (const PermissionsUIInfo& info : kPermissionsUIInfo) {
291 if (info.type == type) 302 if (info.type == type)
292 return use_blocked ? info.blocked_icon_id : info.allowed_icon_id; 303 return use_blocked ? info.blocked_icon_id : info.allowed_icon_id;
293 } 304 }
294 NOTREACHED(); 305 NOTREACHED();
295 return IDR_INFO; 306 return IDR_INFO;
296 } 307 }
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 } 398 }
388 return resource_id; 399 return resource_id;
389 } 400 }
390 401
391 // static 402 // static
392 const gfx::Image& WebsiteSettingsUI::GetConnectionIcon( 403 const gfx::Image& WebsiteSettingsUI::GetConnectionIcon(
393 WebsiteSettings::SiteConnectionStatus status) { 404 WebsiteSettings::SiteConnectionStatus status) {
394 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); 405 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
395 return rb.GetNativeImageNamed(GetConnectionIconID(status)); 406 return rb.GetNativeImageNamed(GetConnectionIconID(status));
396 } 407 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698