| 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): Pass |user_gesture| to CreateInfoBarRequest to record |
| 195 // permission actions in infobar. |
| 194 GetQueueController()->CreateInfoBarRequest( | 196 GetQueueController()->CreateInfoBarRequest( |
| 195 id, requesting_origin, embedding_origin, | 197 id, requesting_origin, embedding_origin, |
| 196 base::Bind(&PermissionContextBase::PermissionDecided, | 198 base::Bind(&PermissionContextBase::PermissionDecided, |
| 197 weak_factory_.GetWeakPtr(), id, requesting_origin, | 199 weak_factory_.GetWeakPtr(), id, requesting_origin, |
| 198 embedding_origin, callback, | 200 embedding_origin, user_gesture, callback, |
| 199 // the queue controller takes care of persisting the | 201 // the queue controller takes care of persisting the |
| 200 // permission | 202 // permission |
| 201 false)); | 203 false)); |
| 202 #endif | 204 #endif |
| 203 } | 205 } |
| 204 | 206 |
| 205 void PermissionContextBase::PermissionDecided( | 207 void PermissionContextBase::PermissionDecided( |
| 206 const PermissionRequestID& id, | 208 const PermissionRequestID& id, |
| 207 const GURL& requesting_origin, | 209 const GURL& requesting_origin, |
| 208 const GURL& embedding_origin, | 210 const GURL& embedding_origin, |
| 211 bool user_gesture, |
| 209 const BrowserPermissionCallback& callback, | 212 const BrowserPermissionCallback& callback, |
| 210 bool persist, | 213 bool persist, |
| 211 ContentSetting content_setting) { | 214 ContentSetting content_setting) { |
| 212 #if !defined(OS_ANDROID) | 215 #if !defined(OS_ANDROID) |
| 213 // Infobar persistence and its related UMA is tracked on the infobar | 216 // Infobar persistence and its related UMA is tracked on the infobar |
| 214 // controller directly. | 217 // controller directly. |
| 215 if (persist) { | 218 if (persist) { |
| 216 DCHECK(content_setting == CONTENT_SETTING_ALLOW || | 219 DCHECK(content_setting == CONTENT_SETTING_ALLOW || |
| 217 content_setting == CONTENT_SETTING_BLOCK); | 220 content_setting == CONTENT_SETTING_BLOCK); |
| 218 if (content_setting == CONTENT_SETTING_ALLOW) | 221 if (content_setting == CONTENT_SETTING_ALLOW) { |
| 219 PermissionUmaUtil::PermissionGranted(permission_type_, requesting_origin, | 222 PermissionUmaUtil::PermissionGranted(permission_type_, user_gesture, |
| 220 profile_); | 223 requesting_origin, profile_); |
| 221 else | 224 } else { |
| 222 PermissionUmaUtil::PermissionDenied(permission_type_, requesting_origin, | 225 PermissionUmaUtil::PermissionDenied(permission_type_, user_gesture, |
| 223 profile_); | 226 requesting_origin, profile_); |
| 227 } |
| 224 } else { | 228 } else { |
| 225 DCHECK_EQ(content_setting, CONTENT_SETTING_DEFAULT); | 229 DCHECK_EQ(content_setting, CONTENT_SETTING_DEFAULT); |
| 226 PermissionUmaUtil::PermissionDismissed(permission_type_, requesting_origin, | 230 PermissionUmaUtil::PermissionDismissed(permission_type_, user_gesture, |
| 227 profile_); | 231 requesting_origin, profile_); |
| 228 } | 232 } |
| 229 #endif | 233 #endif |
| 230 | 234 |
| 231 NotifyPermissionSet(id, requesting_origin, embedding_origin, callback, | 235 NotifyPermissionSet(id, requesting_origin, embedding_origin, callback, |
| 232 persist, content_setting); | 236 persist, content_setting); |
| 233 } | 237 } |
| 234 | 238 |
| 235 #if defined(OS_ANDROID) | 239 #if defined(OS_ANDROID) |
| 236 PermissionQueueController* PermissionContextBase::GetQueueController() { | 240 PermissionQueueController* PermissionContextBase::GetQueueController() { |
| 237 return permission_queue_controller_.get(); | 241 return permission_queue_controller_.get(); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 287 content_setting); | 291 content_setting); |
| 288 } | 292 } |
| 289 | 293 |
| 290 bool PermissionContextBase::IsPermissionKillSwitchOn() const { | 294 bool PermissionContextBase::IsPermissionKillSwitchOn() const { |
| 291 const std::string param = variations::GetVariationParamValue( | 295 const std::string param = variations::GetVariationParamValue( |
| 292 kPermissionsKillSwitchFieldStudy, | 296 kPermissionsKillSwitchFieldStudy, |
| 293 PermissionUtil::GetPermissionString(permission_type_)); | 297 PermissionUtil::GetPermissionString(permission_type_)); |
| 294 | 298 |
| 295 return param == kPermissionsKillSwitchBlockedValue; | 299 return param == kPermissionsKillSwitchBlockedValue; |
| 296 } | 300 } |
| OLD | NEW |