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 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
171 | 171 |
172 #if !defined(OS_ANDROID) | 172 #if !defined(OS_ANDROID) |
173 PermissionRequestManager* permission_request_manager = | 173 PermissionRequestManager* permission_request_manager = |
174 PermissionRequestManager::FromWebContents(web_contents); | 174 PermissionRequestManager::FromWebContents(web_contents); |
175 // TODO(felt): sometimes |permission_request_manager| is null. This check is | 175 // TODO(felt): sometimes |permission_request_manager| is null. This check is |
176 // meant to prevent crashes. See crbug.com/457091. | 176 // meant to prevent crashes. See crbug.com/457091. |
177 if (!permission_request_manager) | 177 if (!permission_request_manager) |
178 return; | 178 return; |
179 std::unique_ptr<PermissionBubbleRequest> request_ptr( | 179 std::unique_ptr<PermissionBubbleRequest> request_ptr( |
180 new PermissionBubbleRequestImpl( | 180 new PermissionBubbleRequestImpl( |
181 requesting_origin, permission_type_, profile_, | 181 requesting_origin, permission_type_, user_gesture, profile_, |
182 base::Bind(&PermissionContextBase::PermissionDecided, | 182 base::Bind(&PermissionContextBase::PermissionDecided, |
183 weak_factory_.GetWeakPtr(), id, requesting_origin, | 183 weak_factory_.GetWeakPtr(), id, requesting_origin, |
184 embedding_origin, callback), | 184 embedding_origin, user_gesture, callback), |
185 base::Bind(&PermissionContextBase::CleanUpBubble, | 185 base::Bind(&PermissionContextBase::CleanUpBubble, |
186 weak_factory_.GetWeakPtr(), id))); | 186 weak_factory_.GetWeakPtr(), id))); |
187 PermissionBubbleRequest* request = request_ptr.get(); | 187 PermissionBubbleRequest* request = request_ptr.get(); |
188 | 188 |
189 bool inserted = | 189 bool inserted = |
190 pending_bubbles_.add(id.ToString(), std::move(request_ptr)).second; | 190 pending_bubbles_.add(id.ToString(), std::move(request_ptr)).second; |
191 DCHECK(inserted) << "Duplicate id " << id.ToString(); | 191 DCHECK(inserted) << "Duplicate id " << id.ToString(); |
192 permission_request_manager->AddRequest(request); | 192 permission_request_manager->AddRequest(request); |
193 #else | 193 #else |
194 // TODO(stefanocs): Get user gesture from infobar. | |
raymes
2016/07/18 00:58:43
Hmm, what does this mean?
stefanocs
2016/07/18 04:28:44
I edited the comment, does it make sense for you o
raymes
2016/07/18 07:31:58
Looks good, thanks!
| |
194 GetQueueController()->CreateInfoBarRequest( | 195 GetQueueController()->CreateInfoBarRequest( |
195 id, requesting_origin, embedding_origin, | 196 id, requesting_origin, embedding_origin, |
196 base::Bind(&PermissionContextBase::PermissionDecided, | 197 base::Bind(&PermissionContextBase::PermissionDecided, |
197 weak_factory_.GetWeakPtr(), id, requesting_origin, | 198 weak_factory_.GetWeakPtr(), id, requesting_origin, |
198 embedding_origin, callback, | 199 embedding_origin, user_gesture, callback, |
199 // the queue controller takes care of persisting the | 200 // the queue controller takes care of persisting the |
200 // permission | 201 // permission |
201 false)); | 202 false)); |
202 #endif | 203 #endif |
203 } | 204 } |
204 | 205 |
205 void PermissionContextBase::PermissionDecided( | 206 void PermissionContextBase::PermissionDecided( |
206 const PermissionRequestID& id, | 207 const PermissionRequestID& id, |
207 const GURL& requesting_origin, | 208 const GURL& requesting_origin, |
208 const GURL& embedding_origin, | 209 const GURL& embedding_origin, |
210 bool user_gesture, | |
209 const BrowserPermissionCallback& callback, | 211 const BrowserPermissionCallback& callback, |
210 bool persist, | 212 bool persist, |
211 ContentSetting content_setting) { | 213 ContentSetting content_setting) { |
212 #if !defined(OS_ANDROID) | 214 #if !defined(OS_ANDROID) |
213 // Infobar persistence and its related UMA is tracked on the infobar | 215 // Infobar persistence and its related UMA is tracked on the infobar |
214 // controller directly. | 216 // controller directly. |
215 if (persist) { | 217 if (persist) { |
216 DCHECK(content_setting == CONTENT_SETTING_ALLOW || | 218 DCHECK(content_setting == CONTENT_SETTING_ALLOW || |
217 content_setting == CONTENT_SETTING_BLOCK); | 219 content_setting == CONTENT_SETTING_BLOCK); |
218 if (content_setting == CONTENT_SETTING_ALLOW) | 220 if (content_setting == CONTENT_SETTING_ALLOW) |
raymes
2016/07/18 00:58:43
nit: add {}
stefanocs
2016/07/18 04:28:45
Done.
| |
219 PermissionUmaUtil::PermissionGranted(permission_type_, requesting_origin, | 221 PermissionUmaUtil::PermissionGranted(permission_type_, user_gesture, |
220 profile_); | 222 requesting_origin, profile_); |
221 else | 223 else |
raymes
2016/07/18 00:58:43
nit: add {}
stefanocs
2016/07/18 04:28:44
Done.
| |
222 PermissionUmaUtil::PermissionDenied(permission_type_, requesting_origin, | 224 PermissionUmaUtil::PermissionDenied(permission_type_, user_gesture, |
223 profile_); | 225 requesting_origin, profile_); |
224 } else { | 226 } else { |
225 DCHECK_EQ(content_setting, CONTENT_SETTING_DEFAULT); | 227 DCHECK_EQ(content_setting, CONTENT_SETTING_DEFAULT); |
226 PermissionUmaUtil::PermissionDismissed(permission_type_, requesting_origin, | 228 PermissionUmaUtil::PermissionDismissed(permission_type_, user_gesture, |
227 profile_); | 229 requesting_origin, profile_); |
228 } | 230 } |
229 #endif | 231 #endif |
230 | 232 |
231 NotifyPermissionSet(id, requesting_origin, embedding_origin, callback, | 233 NotifyPermissionSet(id, requesting_origin, embedding_origin, callback, |
232 persist, content_setting); | 234 persist, content_setting); |
233 } | 235 } |
234 | 236 |
235 #if defined(OS_ANDROID) | 237 #if defined(OS_ANDROID) |
236 PermissionQueueController* PermissionContextBase::GetQueueController() { | 238 PermissionQueueController* PermissionContextBase::GetQueueController() { |
237 return permission_queue_controller_.get(); | 239 return permission_queue_controller_.get(); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
287 content_setting); | 289 content_setting); |
288 } | 290 } |
289 | 291 |
290 bool PermissionContextBase::IsPermissionKillSwitchOn() const { | 292 bool PermissionContextBase::IsPermissionKillSwitchOn() const { |
291 const std::string param = variations::GetVariationParamValue( | 293 const std::string param = variations::GetVariationParamValue( |
292 kPermissionsKillSwitchFieldStudy, | 294 kPermissionsKillSwitchFieldStudy, |
293 PermissionUtil::GetPermissionString(permission_type_)); | 295 PermissionUtil::GetPermissionString(permission_type_)); |
294 | 296 |
295 return param == kPermissionsKillSwitchBlockedValue; | 297 return param == kPermissionsKillSwitchBlockedValue; |
296 } | 298 } |
OLD | NEW |