OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/permissions/permission_context_base.h" | 5 #include "chrome/browser/permissions/permission_context_base.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 #include <utility> | 10 #include <utility> |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 << embedding_origin << " (" << type_name | 111 << embedding_origin << " (" << type_name |
112 << " is not supported in popups)"; | 112 << " is not supported in popups)"; |
113 NotifyPermissionSet(id, requesting_origin, embedding_origin, callback, | 113 NotifyPermissionSet(id, requesting_origin, embedding_origin, callback, |
114 false /* persist */, CONTENT_SETTING_BLOCK); | 114 false /* persist */, CONTENT_SETTING_BLOCK); |
115 return; | 115 return; |
116 } | 116 } |
117 | 117 |
118 // Synchronously check the content setting to see if the user has already made | 118 // Synchronously check the content setting to see if the user has already made |
119 // a decision, or if the origin is under embargo. If so, respect that | 119 // a decision, or if the origin is under embargo. If so, respect that |
120 // decision. | 120 // decision. |
121 PermissionResult result = | 121 // TODO(raymes): Pass in the RenderFrameHost of the request here. |
122 GetPermissionStatus(requesting_origin, embedding_origin); | 122 PermissionResult result = GetPermissionStatus( |
| 123 nullptr /* render_frame_host */, requesting_origin, embedding_origin); |
123 | 124 |
124 if (result.content_setting == CONTENT_SETTING_ALLOW || | 125 if (result.content_setting == CONTENT_SETTING_ALLOW || |
125 result.content_setting == CONTENT_SETTING_BLOCK) { | 126 result.content_setting == CONTENT_SETTING_BLOCK) { |
126 if (result.source == PermissionStatusSource::KILL_SWITCH) { | 127 if (result.source == PermissionStatusSource::KILL_SWITCH) { |
127 // Block the request and log to the developer console. | 128 // Block the request and log to the developer console. |
128 LogPermissionBlockedMessage(web_contents, | 129 LogPermissionBlockedMessage(web_contents, |
129 kPermissionBlockedKillSwitchMessage, | 130 kPermissionBlockedKillSwitchMessage, |
130 content_settings_type_); | 131 content_settings_type_); |
131 callback.Run(CONTENT_SETTING_BLOCK); | 132 callback.Run(CONTENT_SETTING_BLOCK); |
132 return; | 133 return; |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
182 PermissionUmaUtil::PermissionRequested( | 183 PermissionUmaUtil::PermissionRequested( |
183 content_settings_type_, requesting_origin, embedding_origin, profile_); | 184 content_settings_type_, requesting_origin, embedding_origin, profile_); |
184 PermissionUmaUtil::RecordEmbargoPromptSuppression( | 185 PermissionUmaUtil::RecordEmbargoPromptSuppression( |
185 PermissionEmbargoStatus::NOT_EMBARGOED); | 186 PermissionEmbargoStatus::NOT_EMBARGOED); |
186 | 187 |
187 DecidePermission(web_contents, id, requesting_origin, embedding_origin, | 188 DecidePermission(web_contents, id, requesting_origin, embedding_origin, |
188 user_gesture, callback); | 189 user_gesture, callback); |
189 } | 190 } |
190 | 191 |
191 PermissionResult PermissionContextBase::GetPermissionStatus( | 192 PermissionResult PermissionContextBase::GetPermissionStatus( |
| 193 content::RenderFrameHost* render_frame_host, |
192 const GURL& requesting_origin, | 194 const GURL& requesting_origin, |
193 const GURL& embedding_origin) const { | 195 const GURL& embedding_origin) const { |
194 // If the permission has been disabled through Finch, block all requests. | 196 // If the permission has been disabled through Finch, block all requests. |
195 if (IsPermissionKillSwitchOn()) { | 197 if (IsPermissionKillSwitchOn()) { |
196 return PermissionResult(CONTENT_SETTING_BLOCK, | 198 return PermissionResult(CONTENT_SETTING_BLOCK, |
197 PermissionStatusSource::KILL_SWITCH); | 199 PermissionStatusSource::KILL_SWITCH); |
198 } | 200 } |
199 | 201 |
200 if (IsRestrictedToSecureOrigins() && | 202 if (IsRestrictedToSecureOrigins() && |
201 !content::IsOriginSecure(requesting_origin)) { | 203 !content::IsOriginSecure(requesting_origin)) { |
202 return PermissionResult(CONTENT_SETTING_BLOCK, | 204 return PermissionResult(CONTENT_SETTING_BLOCK, |
203 PermissionStatusSource::UNSPECIFIED); | 205 PermissionStatusSource::UNSPECIFIED); |
204 } | 206 } |
205 | 207 |
206 ContentSetting content_setting = | 208 ContentSetting content_setting = GetPermissionStatusInternal( |
207 GetPermissionStatusInternal(requesting_origin, embedding_origin); | 209 render_frame_host, requesting_origin, embedding_origin); |
208 if (content_setting == CONTENT_SETTING_ASK) { | 210 if (content_setting == CONTENT_SETTING_ASK) { |
209 PermissionResult result = | 211 PermissionResult result = |
210 PermissionDecisionAutoBlocker::GetForProfile(profile_) | 212 PermissionDecisionAutoBlocker::GetForProfile(profile_) |
211 ->GetEmbargoResult(requesting_origin, content_settings_type_); | 213 ->GetEmbargoResult(requesting_origin, content_settings_type_); |
212 DCHECK(result.content_setting == CONTENT_SETTING_ASK || | 214 DCHECK(result.content_setting == CONTENT_SETTING_ASK || |
213 result.content_setting == CONTENT_SETTING_BLOCK); | 215 result.content_setting == CONTENT_SETTING_BLOCK); |
214 return result; | 216 return result; |
215 } | 217 } |
216 | 218 |
217 return PermissionResult(content_setting, PermissionStatusSource::UNSPECIFIED); | 219 return PermissionResult(content_setting, PermissionStatusSource::UNSPECIFIED); |
(...skipping 30 matching lines...) Expand all Loading... |
248 | 250 |
249 bool PermissionContextBase::IsPermissionKillSwitchOn() const { | 251 bool PermissionContextBase::IsPermissionKillSwitchOn() const { |
250 const std::string param = variations::GetVariationParamValue( | 252 const std::string param = variations::GetVariationParamValue( |
251 kPermissionsKillSwitchFieldStudy, | 253 kPermissionsKillSwitchFieldStudy, |
252 PermissionUtil::GetPermissionString(content_settings_type_)); | 254 PermissionUtil::GetPermissionString(content_settings_type_)); |
253 | 255 |
254 return param == kPermissionsKillSwitchBlockedValue; | 256 return param == kPermissionsKillSwitchBlockedValue; |
255 } | 257 } |
256 | 258 |
257 ContentSetting PermissionContextBase::GetPermissionStatusInternal( | 259 ContentSetting PermissionContextBase::GetPermissionStatusInternal( |
| 260 content::RenderFrameHost* render_frame_host, |
258 const GURL& requesting_origin, | 261 const GURL& requesting_origin, |
259 const GURL& embedding_origin) const { | 262 const GURL& embedding_origin) const { |
260 return HostContentSettingsMapFactory::GetForProfile(profile_) | 263 return HostContentSettingsMapFactory::GetForProfile(profile_) |
261 ->GetContentSetting(requesting_origin, embedding_origin, | 264 ->GetContentSetting(requesting_origin, embedding_origin, |
262 content_settings_storage_type(), std::string()); | 265 content_settings_storage_type(), std::string()); |
263 } | 266 } |
264 | 267 |
265 void PermissionContextBase::DecidePermission( | 268 void PermissionContextBase::DecidePermission( |
266 content::WebContents* web_contents, | 269 content::WebContents* web_contents, |
267 const PermissionRequestID& id, | 270 const PermissionRequestID& id, |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
405 content_settings_storage_type(), | 408 content_settings_storage_type(), |
406 std::string(), content_setting); | 409 std::string(), content_setting); |
407 } | 410 } |
408 | 411 |
409 ContentSettingsType PermissionContextBase::content_settings_storage_type() | 412 ContentSettingsType PermissionContextBase::content_settings_storage_type() |
410 const { | 413 const { |
411 if (content_settings_type_ == CONTENT_SETTINGS_TYPE_PUSH_MESSAGING) | 414 if (content_settings_type_ == CONTENT_SETTINGS_TYPE_PUSH_MESSAGING) |
412 return CONTENT_SETTINGS_TYPE_NOTIFICATIONS; | 415 return CONTENT_SETTINGS_TYPE_NOTIFICATIONS; |
413 return content_settings_type_; | 416 return content_settings_type_; |
414 } | 417 } |
OLD | NEW |