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

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

Issue 2226633002: Add a feature to display a persistence toggle for permission prompts on Android. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix null error 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_uma_util.h" 5 #include "chrome/browser/permissions/permission_uma_util.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/metrics/histogram_macros.h" 10 #include "base/metrics/histogram_macros.h"
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 action_str = "Ignored"; 78 action_str = "Ignored";
79 break; 79 break;
80 case REVOKED: 80 case REVOKED:
81 action_str = "Revoked"; 81 action_str = "Revoked";
82 break; 82 break;
83 default: 83 default:
84 NOTREACHED(); 84 NOTREACHED();
85 break; 85 break;
86 } 86 }
87 87
88 std::string permission_str = 88 std::string permission_str = PermissionUtil::GetPermissionString(permission);
89 PermissionUtil::GetPermissionString(permission);
90 if (permission_str.empty()) 89 if (permission_str.empty())
91 return ""; 90 return "";
92 return base::StringPrintf("ContentSettings.PermissionActions_%s.%s.Url", 91 return base::StringPrintf("ContentSettings.PermissionActions_%s.%s.Url",
93 permission_str.c_str(), action_str.c_str()); 92 permission_str.c_str(), action_str.c_str());
94 } 93 }
95 94
96 void RecordPermissionRequest(PermissionType permission, 95 void RecordPermissionRequest(PermissionType permission,
97 const GURL& requesting_origin, 96 const GURL& requesting_origin,
98 const GURL& embedding_origin, 97 const GURL& embedding_origin,
99 Profile* profile) { 98 Profile* profile) {
100 rappor::RapporService* rappor_service = g_browser_process->rappor_service(); 99 rappor::RapporService* rappor_service = g_browser_process->rappor_service();
101 if (rappor_service) { 100 if (rappor_service) {
102 if (permission == PermissionType::GEOLOCATION) { 101 if (permission == PermissionType::GEOLOCATION) {
103 // TODO(dominickn): remove this deprecated metric - crbug.com/605836. 102 // TODO(dominickn): remove this deprecated metric - crbug.com/605836.
104 rappor::SampleDomainAndRegistryFromGURL( 103 rappor::SampleDomainAndRegistryFromGURL(
105 rappor_service, 104 rappor_service, "ContentSettings.PermissionRequested.Geolocation.Url",
106 "ContentSettings.PermissionRequested.Geolocation.Url",
107 requesting_origin); 105 requesting_origin);
108 rappor_service->RecordSample( 106 rappor_service->RecordSample(
109 "ContentSettings.PermissionRequested.Geolocation.Url2", 107 "ContentSettings.PermissionRequested.Geolocation.Url2",
110 rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE, 108 rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE,
111 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin)); 109 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin));
112 } else if (permission == PermissionType::NOTIFICATIONS) { 110 } else if (permission == PermissionType::NOTIFICATIONS) {
113 // TODO(dominickn): remove this deprecated metric - crbug.com/605836. 111 // TODO(dominickn): remove this deprecated metric - crbug.com/605836.
114 rappor::SampleDomainAndRegistryFromGURL( 112 rappor::SampleDomainAndRegistryFromGURL(
115 rappor_service, 113 rappor_service,
116 "ContentSettings.PermissionRequested.Notifications.Url", 114 "ContentSettings.PermissionRequested.Notifications.Url",
117 requesting_origin); 115 requesting_origin);
118 rappor_service->RecordSample( 116 rappor_service->RecordSample(
119 "ContentSettings.PermissionRequested.Notifications.Url2", 117 "ContentSettings.PermissionRequested.Notifications.Url2",
120 rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE, 118 rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE,
121 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin)); 119 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin));
122 } else if (permission == PermissionType::MIDI || 120 } else if (permission == PermissionType::MIDI ||
123 permission == PermissionType::MIDI_SYSEX) { 121 permission == PermissionType::MIDI_SYSEX) {
124 // TODO(dominickn): remove this deprecated metric - crbug.com/605836. 122 // TODO(dominickn): remove this deprecated metric - crbug.com/605836.
125 rappor::SampleDomainAndRegistryFromGURL( 123 rappor::SampleDomainAndRegistryFromGURL(
126 rappor_service, 124 rappor_service, "ContentSettings.PermissionRequested.Midi.Url",
127 "ContentSettings.PermissionRequested.Midi.Url",
128 requesting_origin); 125 requesting_origin);
129 rappor_service->RecordSample( 126 rappor_service->RecordSample(
130 "ContentSettings.PermissionRequested.Midi.Url2", 127 "ContentSettings.PermissionRequested.Midi.Url2",
131 rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE, 128 rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE,
132 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin)); 129 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin));
133 } 130 }
134 } 131 }
135 132
136 bool secure_origin = content::IsOriginSecure(requesting_origin); 133 bool secure_origin = content::IsOriginSecure(requesting_origin);
137 UMA_HISTOGRAM_ENUMERATION( 134 UMA_HISTOGRAM_ENUMERATION(
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
349 DCHECK(!requests.empty()); 346 DCHECK(!requests.empty());
350 DCHECK(requests.size() == 1); 347 DCHECK(requests.size() == 1);
351 348
352 PERMISSION_BUBBLE_TYPE_UMA(kPermissionsPromptDenied, 349 PERMISSION_BUBBLE_TYPE_UMA(kPermissionsPromptDenied,
353 requests[0]->GetPermissionRequestType()); 350 requests[0]->GetPermissionRequestType());
354 PERMISSION_BUBBLE_GESTURE_TYPE_UMA( 351 PERMISSION_BUBBLE_GESTURE_TYPE_UMA(
355 kPermissionsPromptDeniedGesture, kPermissionsPromptDeniedNoGesture, 352 kPermissionsPromptDeniedGesture, kPermissionsPromptDeniedNoGesture,
356 requests[0]->GetGestureType(), requests[0]->GetPermissionRequestType()); 353 requests[0]->GetGestureType(), requests[0]->GetPermissionRequestType());
357 } 354 }
358 355
356 void PermissionUmaUtil::PermissionPromptGrantedWithPersistenceToggle(
357 content::PermissionType permission,
358 bool toggle_enabled) {
359 switch (permission) {
360 case PermissionType::GEOLOCATION:
361 UMA_HISTOGRAM_BOOLEAN("Permissions.Prompt.Granted.Persisted.Geolocation",
tsergeant 2016/08/11 00:21:50 Maybe change the histogram names to Permissions.P
dominickn 2016/08/11 04:43:49 Done.
362 toggle_enabled);
363 break;
364 case PermissionType::NOTIFICATIONS:
365 UMA_HISTOGRAM_BOOLEAN(
366 "Permissions.Prompt.Granted.Persisted.Notifications", toggle_enabled);
367 break;
368 case PermissionType::MIDI_SYSEX:
369 UMA_HISTOGRAM_BOOLEAN("Permissions.Prompt.Granted.Persisted.MidiSysEx",
370 toggle_enabled);
371 break;
372 case PermissionType::PUSH_MESSAGING:
373 UMA_HISTOGRAM_BOOLEAN(
374 "Permissions.Prompt.Granted.Persisted.PushMessaging", toggle_enabled);
375 break;
376 case PermissionType::PROTECTED_MEDIA_IDENTIFIER:
377 UMA_HISTOGRAM_BOOLEAN(
378 "Permissions.Prompt.Granted.Persisted.ProtectedMedia",
379 toggle_enabled);
380 break;
381 case PermissionType::DURABLE_STORAGE:
382 UMA_HISTOGRAM_BOOLEAN(
383 "Permissions.Prompt.Granted.Persisted.DurableStorage",
384 toggle_enabled);
385 break;
386 case PermissionType::AUDIO_CAPTURE:
387 UMA_HISTOGRAM_BOOLEAN("Permissions.Prompt.Granted.Persisted.AudioCapture",
388 toggle_enabled);
389 break;
390 case PermissionType::VIDEO_CAPTURE:
391 UMA_HISTOGRAM_BOOLEAN("Permissions.Prompt.Granted.Persisted.VideoCapture",
392 toggle_enabled);
393 break;
394 // The user is not prompted for these permissions, thus there is no
395 // grant recorded for them.
396 case PermissionType::MIDI:
397 case PermissionType::BACKGROUND_SYNC:
398 case PermissionType::NUM:
399 NOTREACHED() << "PERMISSION "
400 << PermissionUtil::GetPermissionString(permission)
401 << " not accounted for";
402 }
403 }
404
405 void PermissionUmaUtil::PermissionPromptDeniedWithPersistenceToggle(
406 content::PermissionType permission,
407 bool toggle_enabled) {
408 switch (permission) {
409 case PermissionType::GEOLOCATION:
410 UMA_HISTOGRAM_BOOLEAN("Permissions.Prompt.Denied.Persisted.Geolocation",
411 toggle_enabled);
412 break;
413 case PermissionType::NOTIFICATIONS:
414 UMA_HISTOGRAM_BOOLEAN("Permissions.Prompt.Denied.Persisted.Notifications",
415 toggle_enabled);
416 break;
417 case PermissionType::MIDI_SYSEX:
418 UMA_HISTOGRAM_BOOLEAN("Permissions.Prompt.Denied.Persisted.MidiSysEx",
419 toggle_enabled);
420 break;
421 case PermissionType::PUSH_MESSAGING:
422 UMA_HISTOGRAM_BOOLEAN("Permissions.Prompt.Denied.Persisted.PushMessaging",
423 toggle_enabled);
424 break;
425 case PermissionType::PROTECTED_MEDIA_IDENTIFIER:
426 UMA_HISTOGRAM_BOOLEAN(
427 "Permissions.Prompt.Denied.Persisted.ProtectedMedia", toggle_enabled);
428 break;
429 case PermissionType::DURABLE_STORAGE:
430 UMA_HISTOGRAM_BOOLEAN(
431 "Permissions.Prompt.Denied.Persisted.DurableStorage", toggle_enabled);
432 break;
433 case PermissionType::AUDIO_CAPTURE:
434 UMA_HISTOGRAM_BOOLEAN("Permissions.Prompt.Denied.Persisted.AudioCapture",
435 toggle_enabled);
436 break;
437 case PermissionType::VIDEO_CAPTURE:
438 UMA_HISTOGRAM_BOOLEAN("Permissions.Prompt.Denied.Persisted.VideoCapture",
439 toggle_enabled);
440 break;
441 // The user is not prompted for these permissions, thus there is no
442 // deny recorded for them.
443 case PermissionType::MIDI:
444 case PermissionType::BACKGROUND_SYNC:
445 case PermissionType::NUM:
446 NOTREACHED() << "PERMISSION "
447 << PermissionUtil::GetPermissionString(permission)
448 << " not accounted for";
449 }
450 }
451
359 bool PermissionUmaUtil::IsOptedIntoPermissionActionReporting(Profile* profile) { 452 bool PermissionUmaUtil::IsOptedIntoPermissionActionReporting(Profile* profile) {
360 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( 453 if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
361 switches::kEnablePermissionActionReporting)) 454 switches::kEnablePermissionActionReporting))
362 return false; 455 return false;
363 456
364 DCHECK(profile); 457 DCHECK(profile);
365 if (profile->GetProfileType() == Profile::INCOGNITO_PROFILE) 458 if (profile->GetProfileType() == Profile::INCOGNITO_PROFILE)
366 return false; 459 return false;
367 if (!profile->GetPrefs()->GetBoolean(prefs::kSafeBrowsingEnabled)) 460 if (!profile->GetPrefs()->GetBoolean(prefs::kSafeBrowsingEnabled))
368 return false; 461 return false;
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 if (!deprecated_metric.empty() && rappor_service) { 565 if (!deprecated_metric.empty() && rappor_service) {
473 rappor::SampleDomainAndRegistryFromGURL(rappor_service, deprecated_metric, 566 rappor::SampleDomainAndRegistryFromGURL(rappor_service, deprecated_metric,
474 requesting_origin); 567 requesting_origin);
475 568
476 std::string rappor_metric = deprecated_metric + "2"; 569 std::string rappor_metric = deprecated_metric + "2";
477 rappor_service->RecordSample( 570 rappor_service->RecordSample(
478 rappor_metric, rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE, 571 rappor_metric, rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE,
479 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin)); 572 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin));
480 } 573 }
481 } 574 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698