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

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

Issue 2711513005: Remove deprecated and out of date permissions metrics. (Closed)
Patch Set: Created 3 years, 10 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 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 action_str = "Revoked"; 84 action_str = "Revoked";
85 break; 85 break;
86 default: 86 default:
87 NOTREACHED(); 87 NOTREACHED();
88 break; 88 break;
89 } 89 }
90 90
91 std::string permission_str = PermissionUtil::GetPermissionString(permission); 91 std::string permission_str = PermissionUtil::GetPermissionString(permission);
92 if (permission_str.empty()) 92 if (permission_str.empty())
93 return ""; 93 return "";
94 return base::StringPrintf("ContentSettings.PermissionActions_%s.%s.Url", 94 return base::StringPrintf("ContentSettings.PermissionActions_%s.%s.Url2",
95 permission_str.c_str(), action_str.c_str()); 95 permission_str.c_str(), action_str.c_str());
96 } 96 }
97 97
98 void RecordPermissionRequest(PermissionType permission, 98 void RecordPermissionRequest(PermissionType permission,
99 const GURL& requesting_origin, 99 const GURL& requesting_origin,
100 const GURL& embedding_origin, 100 const GURL& embedding_origin,
101 Profile* profile) { 101 Profile* profile) {
102 rappor::RapporServiceImpl* rappor_service = 102 rappor::RapporServiceImpl* rappor_service =
103 g_browser_process->rappor_service(); 103 g_browser_process->rappor_service();
104 if (rappor_service) { 104 if (rappor_service) {
105 if (permission == PermissionType::GEOLOCATION) { 105 if (permission == PermissionType::GEOLOCATION) {
106 // TODO(dominickn): remove this deprecated metric - crbug.com/605836.
107 rappor::SampleDomainAndRegistryFromGURL(
108 rappor_service, "ContentSettings.PermissionRequested.Geolocation.Url",
109 requesting_origin);
110 rappor_service->RecordSampleString( 106 rappor_service->RecordSampleString(
111 "ContentSettings.PermissionRequested.Geolocation.Url2", 107 "ContentSettings.PermissionRequested.Geolocation.Url2",
112 rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE, 108 rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE,
113 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin)); 109 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin));
114 } else if (permission == PermissionType::NOTIFICATIONS) { 110 } else if (permission == PermissionType::NOTIFICATIONS) {
115 // TODO(dominickn): remove this deprecated metric - crbug.com/605836.
116 rappor::SampleDomainAndRegistryFromGURL(
117 rappor_service,
118 "ContentSettings.PermissionRequested.Notifications.Url",
119 requesting_origin);
120 rappor_service->RecordSampleString( 111 rappor_service->RecordSampleString(
121 "ContentSettings.PermissionRequested.Notifications.Url2", 112 "ContentSettings.PermissionRequested.Notifications.Url2",
122 rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE, 113 rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE,
123 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin)); 114 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin));
124 } else if (permission == PermissionType::MIDI || 115 } else if (permission == PermissionType::MIDI ||
125 permission == PermissionType::MIDI_SYSEX) { 116 permission == PermissionType::MIDI_SYSEX) {
126 // TODO(dominickn): remove this deprecated metric - crbug.com/605836.
127 rappor::SampleDomainAndRegistryFromGURL(
128 rappor_service, "ContentSettings.PermissionRequested.Midi.Url",
129 requesting_origin);
130 rappor_service->RecordSampleString( 117 rappor_service->RecordSampleString(
131 "ContentSettings.PermissionRequested.Midi.Url2", 118 "ContentSettings.PermissionRequested.Midi.Url2",
132 rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE, 119 rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE,
133 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin)); 120 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin));
134 } else if (permission == PermissionType::PROTECTED_MEDIA_IDENTIFIER) { 121 } else if (permission == PermissionType::PROTECTED_MEDIA_IDENTIFIER) {
135 rappor_service->RecordSampleString( 122 rappor_service->RecordSampleString(
136 "ContentSettings.PermissionRequested.ProtectedMedia.Url2", 123 "ContentSettings.PermissionRequested.ProtectedMedia.Url2",
137 rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE, 124 rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE,
138 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin)); 125 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin));
139 } 126 }
140 } 127 }
141 128
142 bool secure_origin = content::IsOriginSecure(requesting_origin); 129 bool secure_origin = content::IsOriginSecure(requesting_origin);
143 UMA_HISTOGRAM_ENUMERATION( 130 UMA_HISTOGRAM_ENUMERATION(
144 "ContentSettings.PermissionRequested", 131 "ContentSettings.PermissionRequested",
145 static_cast<base::HistogramBase::Sample>(permission), 132 static_cast<base::HistogramBase::Sample>(permission),
146 static_cast<base::HistogramBase::Sample>(PermissionType::NUM)); 133 static_cast<base::HistogramBase::Sample>(PermissionType::NUM));
147 if (secure_origin) { 134 if (secure_origin) {
148 UMA_HISTOGRAM_ENUMERATION( 135 UMA_HISTOGRAM_ENUMERATION(
149 "ContentSettings.PermissionRequested_SecureOrigin", 136 "ContentSettings.PermissionRequested_SecureOrigin",
150 static_cast<base::HistogramBase::Sample>(permission), 137 static_cast<base::HistogramBase::Sample>(permission),
151 static_cast<base::HistogramBase::Sample>(PermissionType::NUM)); 138 static_cast<base::HistogramBase::Sample>(PermissionType::NUM));
152 } else { 139 } else {
153 UMA_HISTOGRAM_ENUMERATION( 140 UMA_HISTOGRAM_ENUMERATION(
154 "ContentSettings.PermissionRequested_InsecureOrigin", 141 "ContentSettings.PermissionRequested_InsecureOrigin",
155 static_cast<base::HistogramBase::Sample>(permission), 142 static_cast<base::HistogramBase::Sample>(permission),
156 static_cast<base::HistogramBase::Sample>(PermissionType::NUM)); 143 static_cast<base::HistogramBase::Sample>(PermissionType::NUM));
157 } 144 }
raymes 2017/02/23 05:54:57 Do you still use this one? The comment in histogra
dominickn 2017/02/23 06:11:43 I don't use it. Happy to remove. But I'm not sure
raymes 2017/02/23 06:30:55 Sending out a PSA sounds good. We don't have to bl
158 145
159 // In order to gauge the compatibility risk of implementing an improved 146 // In order to gauge the compatibility risk of implementing an improved
160 // iframe permissions security model, we would like to know the ratio of 147 // iframe permissions security model, we would like to know the ratio of
161 // same-origin to cross-origin permission requests. Our estimate of this 148 // same-origin to cross-origin permission requests. Our estimate of this
162 // ratio could be somewhat biased by repeated requests coming from a 149 // ratio could be somewhat biased by repeated requests coming from a
163 // single frame, but we expect this to be insignificant. 150 // single frame, but we expect this to be insignificant.
164 if (requesting_origin.GetOrigin() != embedding_origin.GetOrigin()) { 151 if (requesting_origin.GetOrigin() != embedding_origin.GetOrigin()) {
165 content::PermissionManager* manager = profile->GetPermissionManager(); 152 content::PermissionManager* manager = profile->GetPermissionManager();
166 if (!manager) 153 if (!manager)
167 return; 154 return;
168 blink::mojom::PermissionStatus embedding_permission_status = 155 blink::mojom::PermissionStatus embedding_permission_status =
169 manager->GetPermissionStatus(permission, embedding_origin, 156 manager->GetPermissionStatus(permission, embedding_origin,
170 embedding_origin); 157 embedding_origin);
171 158
172 base::HistogramBase* histogram = base::LinearHistogram::FactoryGet( 159 base::HistogramBase* histogram = base::LinearHistogram::FactoryGet(
173 "Permissions.Requested.CrossOrigin_" + 160 "Permissions.Requested.CrossOrigin_" +
174 PermissionUtil::GetPermissionString(permission), 161 PermissionUtil::GetPermissionString(permission),
175 1, static_cast<int>(blink::mojom::PermissionStatus::LAST), 162 1, static_cast<int>(blink::mojom::PermissionStatus::LAST),
176 static_cast<int>(blink::mojom::PermissionStatus::LAST) + 1, 163 static_cast<int>(blink::mojom::PermissionStatus::LAST) + 1,
177 base::HistogramBase::kUmaTargetedHistogramFlag); 164 base::HistogramBase::kUmaTargetedHistogramFlag);
178 histogram->Add(static_cast<int>(embedding_permission_status)); 165 histogram->Add(static_cast<int>(embedding_permission_status));
179 } else { 166 } else {
180 UMA_HISTOGRAM_ENUMERATION( 167 UMA_HISTOGRAM_ENUMERATION(
181 "Permissions.Requested.SameOrigin", 168 "Permissions.Requested.SameOrigin",
182 static_cast<base::HistogramBase::Sample>(permission), 169 static_cast<base::HistogramBase::Sample>(permission),
183 static_cast<base::HistogramBase::Sample>(PermissionType::NUM)); 170 static_cast<base::HistogramBase::Sample>(PermissionType::NUM));
184 } 171 }
raymes 2017/02/23 05:54:57 Lines from here up to 146 can be removed.
dominickn 2017/02/23 06:11:43 Done.
185 } 172 }
186 173
187 } // anonymous namespace 174 } // anonymous namespace
188 175
189 // PermissionReportInfo ------------------------------------------------------- 176 // PermissionReportInfo -------------------------------------------------------
190 PermissionReportInfo::PermissionReportInfo( 177 PermissionReportInfo::PermissionReportInfo(
191 const GURL& origin, 178 const GURL& origin,
192 ContentSettingsType permission, 179 ContentSettingsType permission,
193 PermissionAction action, 180 PermissionAction action,
194 PermissionSourceUI source_ui, 181 PermissionSourceUI source_ui,
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 autoblocker->GetDismissCount(requesting_origin, permission), 680 autoblocker->GetDismissCount(requesting_origin, permission),
694 autoblocker->GetIgnoreCount(requesting_origin, permission)); 681 autoblocker->GetIgnoreCount(requesting_origin, permission));
695 g_browser_process->safe_browsing_service() 682 g_browser_process->safe_browsing_service()
696 ->ui_manager()->ReportPermissionAction(report_info); 683 ->ui_manager()->ReportPermissionAction(report_info);
697 } 684 }
698 685
699 bool secure_origin = content::IsOriginSecure(requesting_origin); 686 bool secure_origin = content::IsOriginSecure(requesting_origin);
700 687
701 switch (permission) { 688 switch (permission) {
702 case CONTENT_SETTINGS_TYPE_GEOLOCATION: 689 case CONTENT_SETTINGS_TYPE_GEOLOCATION:
703 PERMISSION_ACTION_UMA(secure_origin, "Permissions.Action.Geolocation", 690 // Geolocation is disabled on insecure origins, so there's no need to
704 "Permissions.Action.SecureOrigin.Geolocation", 691 // record metrics for secure/insecue.
705 "Permissions.Action.InsecureOrigin.Geolocation", 692 UMA_HISTOGRAM_ENUMERATION("Permissions.Action.Geolocation",
706 action); 693 static_cast<int>(action),
694 static_cast<int>(PermissionAction::NUM));
707 break; 695 break;
708 case CONTENT_SETTINGS_TYPE_NOTIFICATIONS: 696 case CONTENT_SETTINGS_TYPE_NOTIFICATIONS:
709 PERMISSION_ACTION_UMA(secure_origin, "Permissions.Action.Notifications", 697 PERMISSION_ACTION_UMA(secure_origin, "Permissions.Action.Notifications",
710 "Permissions.Action.SecureOrigin.Notifications", 698 "Permissions.Action.SecureOrigin.Notifications",
711 "Permissions.Action.InsecureOrigin.Notifications", 699 "Permissions.Action.InsecureOrigin.Notifications",
712 action); 700 action);
713 break; 701 break;
714 case CONTENT_SETTINGS_TYPE_MIDI_SYSEX: 702 case CONTENT_SETTINGS_TYPE_MIDI_SYSEX:
715 PERMISSION_ACTION_UMA(secure_origin, "Permissions.Action.MidiSysEx", 703 PERMISSION_ACTION_UMA(secure_origin, "Permissions.Action.MidiSysEx",
716 "Permissions.Action.SecureOrigin.MidiSysEx", 704 "Permissions.Action.SecureOrigin.MidiSysEx",
717 "Permissions.Action.InsecureOrigin.MidiSysEx", 705 "Permissions.Action.InsecureOrigin.MidiSysEx",
718 action); 706 action);
719 break; 707 break;
720 case CONTENT_SETTINGS_TYPE_PUSH_MESSAGING: 708 case CONTENT_SETTINGS_TYPE_PUSH_MESSAGING:
721 PERMISSION_ACTION_UMA(secure_origin, "Permissions.Action.PushMessaging", 709 // Push messaging is disabled on insecure origins, so there's no need to
722 "Permissions.Action.SecureOrigin.PushMessaging", 710 // record metrics for secure/insecue.
723 "Permissions.Action.InsecureOrigin.PushMessaging", 711 UMA_HISTOGRAM_ENUMERATION("Permissions.Action.PushMessaging",
724 action); 712 static_cast<int>(action),
713 static_cast<int>(PermissionAction::NUM));
raymes 2017/02/23 05:54:57 Is there actually a benefit to changing these ones
dominickn 2017/02/23 06:11:42 It's mainly following the lead of the mediastream
raymes 2017/02/23 06:30:55 Ok, sounds good to me
725 break; 714 break;
726 case CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER: 715 case CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER:
727 PERMISSION_ACTION_UMA(secure_origin, "Permissions.Action.ProtectedMedia", 716 PERMISSION_ACTION_UMA(secure_origin, "Permissions.Action.ProtectedMedia",
728 "Permissions.Action.SecureOrigin.ProtectedMedia", 717 "Permissions.Action.SecureOrigin.ProtectedMedia",
729 "Permissions.Action.InsecureOrigin.ProtectedMedia", 718 "Permissions.Action.InsecureOrigin.ProtectedMedia",
730 action); 719 action);
731 break; 720 break;
732 case CONTENT_SETTINGS_TYPE_DURABLE_STORAGE: 721 case CONTENT_SETTINGS_TYPE_DURABLE_STORAGE:
733 PERMISSION_ACTION_UMA(secure_origin, "Permissions.Action.DurableStorage", 722 PERMISSION_ACTION_UMA(secure_origin, "Permissions.Action.DurableStorage",
734 "Permissions.Action.SecureOrigin.DurableStorage", 723 "Permissions.Action.SecureOrigin.DurableStorage",
(...skipping 18 matching lines...) Expand all
753 "Permissions.Action.InsecureOrigin.Flash", action); 742 "Permissions.Action.InsecureOrigin.Flash", action);
754 break; 743 break;
755 // The user is not prompted for these permissions, thus there is no 744 // The user is not prompted for these permissions, thus there is no
756 // permission action recorded for them. 745 // permission action recorded for them.
757 default: 746 default:
758 NOTREACHED() << "PERMISSION " 747 NOTREACHED() << "PERMISSION "
759 << PermissionUtil::GetPermissionString(permission) 748 << PermissionUtil::GetPermissionString(permission)
760 << " not accounted for"; 749 << " not accounted for";
761 } 750 }
762 751
763 // Retrieve the name of the RAPPOR metric. Currently, the new metric name is 752 const std::string rappor_metric = GetRapporMetric(permission, action);
764 // the deprecated name with "2" on the end, e.g.
765 // ContentSettings.PermissionActions_Geolocation.Granted.Url2. For simplicity,
766 // we retrieve the deprecated name and append the "2" for the new name.
767 // TODO(dominickn): remove the deprecated metric and replace it solely with
768 // the new one in GetRapporMetric - crbug.com/605836.
769 const std::string deprecated_metric = GetRapporMetric(permission, action);
770 rappor::RapporServiceImpl* rappor_service = 753 rappor::RapporServiceImpl* rappor_service =
771 g_browser_process->rappor_service(); 754 g_browser_process->rappor_service();
772 if (!deprecated_metric.empty() && rappor_service) { 755 if (!rappor_metric.empty() && rappor_service) {
773 rappor::SampleDomainAndRegistryFromGURL(rappor_service, deprecated_metric,
774 requesting_origin);
775
776 std::string rappor_metric = deprecated_metric + "2";
777 rappor_service->RecordSampleString( 756 rappor_service->RecordSampleString(
778 rappor_metric, rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE, 757 rappor_metric, rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE,
779 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin)); 758 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin));
780 } 759 }
781 } 760 }
OLDNEW
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | tools/metrics/histograms/histograms.xml » ('J')

Powered by Google App Engine
This is Rietveld 408576698