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

Side by Side Diff: chrome/browser/plugins/plugin_utils.cc

Issue 2945243002: Permissions: Allow PermissionManager to return more PermissionStatusSources.
Patch Set: Cleanup. Created 3 years, 5 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
« no previous file with comments | « chrome/browser/plugins/plugin_utils.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/plugins/plugin_utils.h" 5 #include "chrome/browser/plugins/plugin_utils.h"
6 6
7 #include "base/values.h" 7 #include "base/values.h"
8 #include "chrome/browser/permissions/permission_result.h"
9 #include "chrome/browser/permissions/permission_util.h"
8 #include "chrome/common/chrome_features.h" 10 #include "chrome/common/chrome_features.h"
9 #include "chrome/common/plugin_utils.h" 11 #include "chrome/common/plugin_utils.h"
10 #include "components/content_settings/core/browser/host_content_settings_map.h" 12 #include "components/content_settings/core/browser/host_content_settings_map.h"
11 #include "components/content_settings/core/common/content_settings_types.h" 13 #include "components/content_settings/core/common/content_settings_types.h"
12 #include "content/public/common/webplugininfo.h" 14 #include "content/public/common/webplugininfo.h"
13 #include "url/gurl.h" 15 #include "url/gurl.h"
14 #include "url/origin.h" 16 #include "url/origin.h"
15 17
16 namespace { 18 namespace {
17 19
18 const char kFlashPluginID[] = "adobe-flash-player"; 20 const char kFlashPluginID[] = "adobe-flash-player";
19 21
20 void GetPluginContentSettingInternal( 22 void GetPluginContentSettingInternal(
21 const HostContentSettingsMap* host_content_settings_map, 23 const HostContentSettingsMap* host_content_settings_map,
22 bool use_javascript_setting, 24 bool use_javascript_setting,
23 const url::Origin& main_frame_origin, 25 const url::Origin& main_frame_origin,
24 const GURL& plugin_url, 26 const GURL& plugin_url,
25 const std::string& resource, 27 const std::string& resource,
26 ContentSetting* setting, 28 PermissionResult* permission_result,
27 bool* uses_default_content_setting, 29 bool* uses_default_content_setting,
28 bool* is_managed) { 30 bool* is_managed) {
29 GURL main_frame_url = main_frame_origin.GetURL(); 31 GURL main_frame_url = main_frame_origin.GetURL();
30 std::unique_ptr<base::Value> value; 32 std::unique_ptr<base::Value> value;
31 content_settings::SettingInfo info; 33 content_settings::SettingInfo info;
32 bool uses_plugin_specific_setting = false; 34 bool uses_plugin_specific_setting = false;
33 if (use_javascript_setting) { 35 if (use_javascript_setting) {
34 value = host_content_settings_map->GetWebsiteSetting( 36 value = host_content_settings_map->GetWebsiteSetting(
35 main_frame_url, main_frame_url, CONTENT_SETTINGS_TYPE_JAVASCRIPT, 37 main_frame_url, main_frame_url, CONTENT_SETTINGS_TYPE_JAVASCRIPT,
36 std::string(), &info); 38 std::string(), &info);
(...skipping 14 matching lines...) Expand all
51 specific_setting && 53 specific_setting &&
52 general_info.source != content_settings::SETTING_SOURCE_POLICY; 54 general_info.source != content_settings::SETTING_SOURCE_POLICY;
53 if (uses_plugin_specific_setting) { 55 if (uses_plugin_specific_setting) {
54 value = std::move(specific_setting); 56 value = std::move(specific_setting);
55 info = specific_info; 57 info = specific_info;
56 } else { 58 } else {
57 value = std::move(general_setting); 59 value = std::move(general_setting);
58 info = general_info; 60 info = general_info;
59 } 61 }
60 } 62 }
61 *setting = content_settings::ValueToContentSetting(value.get()); 63 permission_result->content_setting =
64 content_settings::ValueToContentSetting(value.get());
65 permission_result->source =
66 PermissionUtil::ConvertSettingSourceToPermissionStatusSource(info.source);
62 if (uses_default_content_setting) { 67 if (uses_default_content_setting) {
63 *uses_default_content_setting = 68 *uses_default_content_setting =
64 !uses_plugin_specific_setting && 69 !uses_plugin_specific_setting &&
65 info.primary_pattern == ContentSettingsPattern::Wildcard() && 70 info.primary_pattern == ContentSettingsPattern::Wildcard() &&
66 info.secondary_pattern == ContentSettingsPattern::Wildcard(); 71 info.secondary_pattern == ContentSettingsPattern::Wildcard();
67 } 72 }
68 if (is_managed) 73 if (is_managed)
69 *is_managed = info.source == content_settings::SETTING_SOURCE_POLICY; 74 *is_managed = info.source == content_settings::SETTING_SOURCE_POLICY;
70 75
71 // For non-JavaScript treated plugins (Flash): unless the user has explicitly 76 // For non-JavaScript treated plugins (Flash): unless the user has explicitly
72 // ALLOWed plugins, return BLOCK for any non-HTTP and non-FILE origin. 77 // ALLOWed plugins, return BLOCK for any non-HTTP and non-FILE origin.
73 if (!use_javascript_setting && *setting != CONTENT_SETTING_ALLOW && 78 if (!use_javascript_setting &&
79 permission_result->content_setting != CONTENT_SETTING_ALLOW &&
74 PluginUtils::ShouldPreferHtmlOverPlugins(host_content_settings_map) && 80 PluginUtils::ShouldPreferHtmlOverPlugins(host_content_settings_map) &&
75 !main_frame_url.SchemeIsHTTPOrHTTPS() && !main_frame_url.SchemeIsFile()) { 81 !main_frame_url.SchemeIsHTTPOrHTTPS() && !main_frame_url.SchemeIsFile()) {
76 *setting = CONTENT_SETTING_BLOCK; 82 permission_result->content_setting = CONTENT_SETTING_BLOCK;
77 } 83 }
78 } 84 }
79 85
80 } // namespace 86 } // namespace
81 87
82 // static 88 // static
83 void PluginUtils::GetPluginContentSetting( 89 void PluginUtils::GetPluginContentSetting(
84 const HostContentSettingsMap* host_content_settings_map, 90 const HostContentSettingsMap* host_content_settings_map,
85 const content::WebPluginInfo& plugin, 91 const content::WebPluginInfo& plugin,
86 const url::Origin& main_frame_origin, 92 const url::Origin& main_frame_origin,
87 const GURL& plugin_url, 93 const GURL& plugin_url,
88 const std::string& resource, 94 const std::string& resource,
89 ContentSetting* setting, 95 PermissionResult* permission_result,
90 bool* uses_default_content_setting, 96 bool* uses_default_content_setting,
91 bool* is_managed) { 97 bool* is_managed) {
92 GetPluginContentSettingInternal( 98 GetPluginContentSettingInternal(
93 host_content_settings_map, ShouldUseJavaScriptSettingForPlugin(plugin), 99 host_content_settings_map, ShouldUseJavaScriptSettingForPlugin(plugin),
94 main_frame_origin, plugin_url, resource, setting, 100 main_frame_origin, plugin_url, resource, permission_result,
95 uses_default_content_setting, is_managed); 101 uses_default_content_setting, is_managed);
96 } 102 }
97 103
98 // static 104 // static
99 ContentSetting PluginUtils::GetFlashPluginContentSetting( 105 PermissionResult PluginUtils::GetFlashPluginContentSetting(
100 const HostContentSettingsMap* host_content_settings_map, 106 const HostContentSettingsMap* host_content_settings_map,
101 const url::Origin& main_frame_origin, 107 const url::Origin& main_frame_origin,
102 const GURL& plugin_url, 108 const GURL& plugin_url,
103 bool* is_managed) { 109 bool* is_managed) {
104 ContentSetting plugin_setting = CONTENT_SETTING_DEFAULT; 110 PermissionResult result = PermissionResult(
111 CONTENT_SETTING_DEFAULT, PermissionStatusSource::UNSPECIFIED);
105 GetPluginContentSettingInternal(host_content_settings_map, 112 GetPluginContentSettingInternal(host_content_settings_map,
106 false /* use_javascript_setting */, 113 false /* use_javascript_setting */,
107 main_frame_origin, plugin_url, kFlashPluginID, 114 main_frame_origin, plugin_url, kFlashPluginID,
108 &plugin_setting, nullptr, is_managed); 115 &result, nullptr, is_managed);
109 return plugin_setting; 116 return result;
110 } 117 }
111 118
112 // static 119 // static
113 bool PluginUtils::ShouldPreferHtmlOverPlugins( 120 bool PluginUtils::ShouldPreferHtmlOverPlugins(
114 const HostContentSettingsMap* host_content_settings_map) { 121 const HostContentSettingsMap* host_content_settings_map) {
115 return base::FeatureList::IsEnabled(features::kPreferHtmlOverPlugins); 122 return base::FeatureList::IsEnabled(features::kPreferHtmlOverPlugins);
116 } 123 }
OLDNEW
« no previous file with comments | « chrome/browser/plugins/plugin_utils.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698