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

Side by Side Diff: chrome/browser/permissions/permission_context_base.cc

Issue 2153133002: Add gesture type value from desktop prompt to permission report (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@add-user-gesture-to-reporting-part
Patch Set: nit Created 4 years, 4 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 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"
11 #include "base/strings/stringprintf.h" 11 #include "base/strings/stringprintf.h"
12 #include "build/build_config.h" 12 #include "build/build_config.h"
13 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" 13 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
14 #include "chrome/browser/permissions/permission_request.h"
14 #include "chrome/browser/permissions/permission_request_id.h" 15 #include "chrome/browser/permissions/permission_request_id.h"
15 #include "chrome/browser/permissions/permission_uma_util.h" 16 #include "chrome/browser/permissions/permission_uma_util.h"
16 #include "chrome/browser/permissions/permission_util.h" 17 #include "chrome/browser/permissions/permission_util.h"
17 #include "chrome/browser/profiles/profile.h" 18 #include "chrome/browser/profiles/profile.h"
18 #include "chrome/common/pref_names.h" 19 #include "chrome/common/pref_names.h"
19 #include "components/content_settings/core/browser/host_content_settings_map.h" 20 #include "components/content_settings/core/browser/host_content_settings_map.h"
20 #include "components/content_settings/core/browser/website_settings_registry.h" 21 #include "components/content_settings/core/browser/website_settings_registry.h"
21 #include "components/prefs/pref_service.h" 22 #include "components/prefs/pref_service.h"
22 #include "components/variations/variations_associated_data.h" 23 #include "components/variations/variations_associated_data.h"
23 #include "content/public/browser/browser_thread.h" 24 #include "content/public/browser/browser_thread.h"
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 171 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
171 172
172 #if !defined(OS_ANDROID) 173 #if !defined(OS_ANDROID)
173 PermissionRequestManager* permission_request_manager = 174 PermissionRequestManager* permission_request_manager =
174 PermissionRequestManager::FromWebContents(web_contents); 175 PermissionRequestManager::FromWebContents(web_contents);
175 // TODO(felt): sometimes |permission_request_manager| is null. This check is 176 // TODO(felt): sometimes |permission_request_manager| is null. This check is
176 // meant to prevent crashes. See crbug.com/457091. 177 // meant to prevent crashes. See crbug.com/457091.
177 if (!permission_request_manager) 178 if (!permission_request_manager)
178 return; 179 return;
179 std::unique_ptr<PermissionRequest> request_ptr(new PermissionRequestImpl( 180 std::unique_ptr<PermissionRequest> request_ptr(new PermissionRequestImpl(
180 requesting_origin, permission_type_, profile_, user_gesture, 181 requesting_origin, permission_type_, profile_, user_gesture,
181 base::Bind(&PermissionContextBase::PermissionDecided, 182 base::Bind(&PermissionContextBase::PermissionDecided,
182 weak_factory_.GetWeakPtr(), id, requesting_origin, 183 weak_factory_.GetWeakPtr(), id, requesting_origin,
183 embedding_origin, callback), 184 embedding_origin, user_gesture, callback),
184 base::Bind(&PermissionContextBase::CleanUpRequest, 185 base::Bind(&PermissionContextBase::CleanUpRequest,
185 weak_factory_.GetWeakPtr(), id))); 186 weak_factory_.GetWeakPtr(), id)));
186 PermissionRequest* request = request_ptr.get(); 187 PermissionRequest* request = request_ptr.get();
187 188
188 bool inserted = 189 bool inserted =
189 pending_requests_.add(id.ToString(), std::move(request_ptr)).second; 190 pending_requests_.add(id.ToString(), std::move(request_ptr)).second;
190 DCHECK(inserted) << "Duplicate id " << id.ToString(); 191 DCHECK(inserted) << "Duplicate id " << id.ToString();
191 permission_request_manager->AddRequest(request); 192 permission_request_manager->AddRequest(request);
192 #else 193 #else
194 // TODO(stefanocs): Pass |user_gesture| to CreateInfoBarRequest to record
195 // permission actions in infobar.
193 GetQueueController()->CreateInfoBarRequest( 196 GetQueueController()->CreateInfoBarRequest(
194 id, requesting_origin, embedding_origin, 197 id, requesting_origin, embedding_origin,
195 base::Bind(&PermissionContextBase::PermissionDecided, 198 base::Bind(&PermissionContextBase::PermissionDecided,
196 weak_factory_.GetWeakPtr(), id, requesting_origin, 199 weak_factory_.GetWeakPtr(), id, requesting_origin,
197 embedding_origin, callback, 200 embedding_origin, user_gesture, callback,
198 // the queue controller takes care of persisting the 201 // the queue controller takes care of persisting the
199 // permission 202 // permission
200 false)); 203 false));
201 #endif 204 #endif
202 } 205 }
203 206
204 void PermissionContextBase::PermissionDecided( 207 void PermissionContextBase::PermissionDecided(
205 const PermissionRequestID& id, 208 const PermissionRequestID& id,
206 const GURL& requesting_origin, 209 const GURL& requesting_origin,
207 const GURL& embedding_origin, 210 const GURL& embedding_origin,
211 bool user_gesture,
208 const BrowserPermissionCallback& callback, 212 const BrowserPermissionCallback& callback,
209 bool persist, 213 bool persist,
210 ContentSetting content_setting) { 214 ContentSetting content_setting) {
211 #if !defined(OS_ANDROID) 215 #if !defined(OS_ANDROID)
212 // Infobar persistence and its related UMA is tracked on the infobar 216 // Infobar persistence and its related UMA is tracked on the infobar
213 // controller directly. 217 // controller directly.
218 PermissionRequestGestureType gesture_type =
219 user_gesture ? PermissionRequestGestureType::GESTURE
220 : PermissionRequestGestureType::NO_GESTURE;
214 if (persist) { 221 if (persist) {
215 DCHECK(content_setting == CONTENT_SETTING_ALLOW || 222 DCHECK(content_setting == CONTENT_SETTING_ALLOW ||
216 content_setting == CONTENT_SETTING_BLOCK); 223 content_setting == CONTENT_SETTING_BLOCK);
217 if (content_setting == CONTENT_SETTING_ALLOW) 224 if (content_setting == CONTENT_SETTING_ALLOW) {
218 PermissionUmaUtil::PermissionGranted(permission_type_, requesting_origin, 225 PermissionUmaUtil::PermissionGranted(permission_type_, gesture_type,
219 profile_); 226 requesting_origin, profile_);
220 else 227 } else {
221 PermissionUmaUtil::PermissionDenied(permission_type_, requesting_origin, 228 PermissionUmaUtil::PermissionDenied(permission_type_, gesture_type,
222 profile_); 229 requesting_origin, profile_);
230 }
223 } else { 231 } else {
224 DCHECK_EQ(content_setting, CONTENT_SETTING_DEFAULT); 232 DCHECK_EQ(content_setting, CONTENT_SETTING_DEFAULT);
225 PermissionUmaUtil::PermissionDismissed(permission_type_, requesting_origin, 233 PermissionUmaUtil::PermissionDismissed(permission_type_, gesture_type,
226 profile_); 234 requesting_origin, profile_);
227 } 235 }
228 #endif 236 #endif
229 237
230 NotifyPermissionSet(id, requesting_origin, embedding_origin, callback, 238 NotifyPermissionSet(id, requesting_origin, embedding_origin, callback,
231 persist, content_setting); 239 persist, content_setting);
232 } 240 }
233 241
234 #if defined(OS_ANDROID) 242 #if defined(OS_ANDROID)
235 PermissionQueueController* PermissionContextBase::GetQueueController() { 243 PermissionQueueController* PermissionContextBase::GetQueueController() {
236 return permission_queue_controller_.get(); 244 return permission_queue_controller_.get();
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 content_setting); 294 content_setting);
287 } 295 }
288 296
289 bool PermissionContextBase::IsPermissionKillSwitchOn() const { 297 bool PermissionContextBase::IsPermissionKillSwitchOn() const {
290 const std::string param = variations::GetVariationParamValue( 298 const std::string param = variations::GetVariationParamValue(
291 kPermissionsKillSwitchFieldStudy, 299 kPermissionsKillSwitchFieldStudy,
292 PermissionUtil::GetPermissionString(permission_type_)); 300 PermissionUtil::GetPermissionString(permission_type_));
293 301
294 return param == kPermissionsKillSwitchBlockedValue; 302 return param == kPermissionsKillSwitchBlockedValue;
295 } 303 }
OLDNEW
« no previous file with comments | « chrome/browser/permissions/permission_context_base.h ('k') | chrome/browser/permissions/permission_infobar_delegate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698