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_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 Loading... | |
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 Loading... | |
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 Loading... | |
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 } |
OLD | NEW |