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

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

Issue 2714603002: Make PermissionManager use ContentSettingsType internally more (Closed)
Patch Set: address comments 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 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 break; 87 break;
88 } 88 }
89 89
90 std::string permission_str = PermissionUtil::GetPermissionString(permission); 90 std::string permission_str = PermissionUtil::GetPermissionString(permission);
91 if (permission_str.empty()) 91 if (permission_str.empty())
92 return ""; 92 return "";
93 return base::StringPrintf("ContentSettings.PermissionActions_%s.%s.Url", 93 return base::StringPrintf("ContentSettings.PermissionActions_%s.%s.Url",
94 permission_str.c_str(), action_str.c_str()); 94 permission_str.c_str(), action_str.c_str());
95 } 95 }
96 96
97 void RecordPermissionRequest(PermissionType permission, 97 void RecordPermissionRequest(ContentSettingsType content_type,
98 const GURL& requesting_origin, 98 const GURL& requesting_origin,
99 const GURL& embedding_origin, 99 const GURL& embedding_origin,
100 Profile* profile) { 100 Profile* profile) {
101 rappor::RapporServiceImpl* rappor_service = 101 rappor::RapporServiceImpl* rappor_service =
102 g_browser_process->rappor_service(); 102 g_browser_process->rappor_service();
103 if (rappor_service) { 103 if (rappor_service) {
104 if (permission == PermissionType::GEOLOCATION) { 104 if (content_type == CONTENT_SETTINGS_TYPE_GEOLOCATION) {
105 // TODO(dominickn): remove this deprecated metric - crbug.com/605836. 105 // TODO(dominickn): remove this deprecated metric - crbug.com/605836.
106 rappor::SampleDomainAndRegistryFromGURL( 106 rappor::SampleDomainAndRegistryFromGURL(
107 rappor_service, "ContentSettings.PermissionRequested.Geolocation.Url", 107 rappor_service, "ContentSettings.PermissionRequested.Geolocation.Url",
108 requesting_origin); 108 requesting_origin);
109 rappor_service->RecordSampleString( 109 rappor_service->RecordSampleString(
110 "ContentSettings.PermissionRequested.Geolocation.Url2", 110 "ContentSettings.PermissionRequested.Geolocation.Url2",
111 rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE, 111 rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE,
112 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin)); 112 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin));
113 } else if (permission == PermissionType::NOTIFICATIONS) { 113 } else if (content_type == CONTENT_SETTINGS_TYPE_NOTIFICATIONS) {
114 // TODO(dominickn): remove this deprecated metric - crbug.com/605836. 114 // TODO(dominickn): remove this deprecated metric - crbug.com/605836.
115 rappor::SampleDomainAndRegistryFromGURL( 115 rappor::SampleDomainAndRegistryFromGURL(
116 rappor_service, 116 rappor_service,
117 "ContentSettings.PermissionRequested.Notifications.Url", 117 "ContentSettings.PermissionRequested.Notifications.Url",
118 requesting_origin); 118 requesting_origin);
119 rappor_service->RecordSampleString( 119 rappor_service->RecordSampleString(
120 "ContentSettings.PermissionRequested.Notifications.Url2", 120 "ContentSettings.PermissionRequested.Notifications.Url2",
121 rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE, 121 rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE,
122 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin)); 122 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin));
123 } else if (permission == PermissionType::MIDI || 123 } else if (content_type == CONTENT_SETTINGS_TYPE_MIDI ||
124 permission == PermissionType::MIDI_SYSEX) { 124 content_type == CONTENT_SETTINGS_TYPE_MIDI_SYSEX) {
125 // TODO(dominickn): remove this deprecated metric - crbug.com/605836. 125 // TODO(dominickn): remove this deprecated metric - crbug.com/605836.
126 rappor::SampleDomainAndRegistryFromGURL( 126 rappor::SampleDomainAndRegistryFromGURL(
127 rappor_service, "ContentSettings.PermissionRequested.Midi.Url", 127 rappor_service, "ContentSettings.PermissionRequested.Midi.Url",
128 requesting_origin); 128 requesting_origin);
129 rappor_service->RecordSampleString( 129 rappor_service->RecordSampleString(
130 "ContentSettings.PermissionRequested.Midi.Url2", 130 "ContentSettings.PermissionRequested.Midi.Url2",
131 rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE, 131 rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE,
132 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin)); 132 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin));
133 } else if (permission == PermissionType::PROTECTED_MEDIA_IDENTIFIER) { 133 } else if (content_type ==
134 CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER) {
134 rappor_service->RecordSampleString( 135 rappor_service->RecordSampleString(
135 "ContentSettings.PermissionRequested.ProtectedMedia.Url2", 136 "ContentSettings.PermissionRequested.ProtectedMedia.Url2",
136 rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE, 137 rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE,
137 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin)); 138 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin));
138 } 139 }
139 } 140 }
140 141
142 PermissionType permission;
143 bool success = PermissionUtil::GetPermissionType(content_type, &permission);
144 DCHECK(success);
145
141 bool secure_origin = content::IsOriginSecure(requesting_origin); 146 bool secure_origin = content::IsOriginSecure(requesting_origin);
142 UMA_HISTOGRAM_ENUMERATION( 147 UMA_HISTOGRAM_ENUMERATION(
143 "ContentSettings.PermissionRequested", 148 "ContentSettings.PermissionRequested",
144 static_cast<base::HistogramBase::Sample>(permission), 149 static_cast<base::HistogramBase::Sample>(permission),
145 static_cast<base::HistogramBase::Sample>(PermissionType::NUM)); 150 static_cast<base::HistogramBase::Sample>(PermissionType::NUM));
146 if (secure_origin) { 151 if (secure_origin) {
147 UMA_HISTOGRAM_ENUMERATION( 152 UMA_HISTOGRAM_ENUMERATION(
148 "ContentSettings.PermissionRequested_SecureOrigin", 153 "ContentSettings.PermissionRequested_SecureOrigin",
149 static_cast<base::HistogramBase::Sample>(permission), 154 static_cast<base::HistogramBase::Sample>(permission),
150 static_cast<base::HistogramBase::Sample>(PermissionType::NUM)); 155 static_cast<base::HistogramBase::Sample>(PermissionType::NUM));
151 } else { 156 } else {
152 UMA_HISTOGRAM_ENUMERATION( 157 UMA_HISTOGRAM_ENUMERATION(
153 "ContentSettings.PermissionRequested_InsecureOrigin", 158 "ContentSettings.PermissionRequested_InsecureOrigin",
154 static_cast<base::HistogramBase::Sample>(permission), 159 static_cast<base::HistogramBase::Sample>(permission),
155 static_cast<base::HistogramBase::Sample>(PermissionType::NUM)); 160 static_cast<base::HistogramBase::Sample>(PermissionType::NUM));
156 } 161 }
157 162
158 // In order to gauge the compatibility risk of implementing an improved 163 // In order to gauge the compatibility risk of implementing an improved
159 // iframe permissions security model, we would like to know the ratio of 164 // iframe permissions security model, we would like to know the ratio of
160 // same-origin to cross-origin permission requests. Our estimate of this 165 // same-origin to cross-origin permission requests. Our estimate of this
161 // ratio could be somewhat biased by repeated requests coming from a 166 // ratio could be somewhat biased by repeated requests coming from a
162 // single frame, but we expect this to be insignificant. 167 // single frame, but we expect this to be insignificant.
163 if (requesting_origin.GetOrigin() != embedding_origin.GetOrigin()) { 168 if (requesting_origin.GetOrigin() != embedding_origin.GetOrigin()) {
164 content::PermissionManager* manager = profile->GetPermissionManager(); 169 PermissionManager* manager = PermissionManager::Get(profile);
165 if (!manager) 170 if (!manager)
166 return; 171 return;
167 blink::mojom::PermissionStatus embedding_permission_status = 172 blink::mojom::PermissionStatus embedding_permission_status =
168 manager->GetPermissionStatus(permission, embedding_origin, 173 manager->GetPermissionStatus(content_type, embedding_origin,
169 embedding_origin); 174 embedding_origin);
170 175
171 base::HistogramBase* histogram = base::LinearHistogram::FactoryGet( 176 base::HistogramBase* histogram = base::LinearHistogram::FactoryGet(
172 "Permissions.Requested.CrossOrigin_" + 177 "Permissions.Requested.CrossOrigin_" +
173 PermissionUtil::GetPermissionString(permission), 178 PermissionUtil::GetPermissionString(content_type),
174 1, static_cast<int>(blink::mojom::PermissionStatus::LAST), 179 1, static_cast<int>(blink::mojom::PermissionStatus::LAST),
175 static_cast<int>(blink::mojom::PermissionStatus::LAST) + 1, 180 static_cast<int>(blink::mojom::PermissionStatus::LAST) + 1,
176 base::HistogramBase::kUmaTargetedHistogramFlag); 181 base::HistogramBase::kUmaTargetedHistogramFlag);
177 histogram->Add(static_cast<int>(embedding_permission_status)); 182 histogram->Add(static_cast<int>(embedding_permission_status));
178 } else { 183 } else {
179 UMA_HISTOGRAM_ENUMERATION( 184 UMA_HISTOGRAM_ENUMERATION(
180 "Permissions.Requested.SameOrigin", 185 "Permissions.Requested.SameOrigin",
181 static_cast<base::HistogramBase::Sample>(permission), 186 static_cast<base::HistogramBase::Sample>(permission),
182 static_cast<base::HistogramBase::Sample>(PermissionType::NUM)); 187 static_cast<base::HistogramBase::Sample>(PermissionType::NUM));
183 } 188 }
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 "Permissions.Prompt.Dismissed.PriorIgnoreCount."; 257 "Permissions.Prompt.Dismissed.PriorIgnoreCount.";
253 const char 258 const char
254 PermissionUmaUtil::kPermissionsPromptIgnoredPriorDismissCountPrefix[] = 259 PermissionUmaUtil::kPermissionsPromptIgnoredPriorDismissCountPrefix[] =
255 "Permissions.Prompt.Ignored.PriorDismissCount."; 260 "Permissions.Prompt.Ignored.PriorDismissCount.";
256 const char 261 const char
257 PermissionUmaUtil::kPermissionsPromptIgnoredPriorIgnoreCountPrefix[] = 262 PermissionUmaUtil::kPermissionsPromptIgnoredPriorIgnoreCountPrefix[] =
258 "Permissions.Prompt.Ignored.PriorIgnoreCount."; 263 "Permissions.Prompt.Ignored.PriorIgnoreCount.";
259 264
260 // Make sure you update histograms.xml permission histogram_suffix if you 265 // Make sure you update histograms.xml permission histogram_suffix if you
261 // add new permission 266 // add new permission
262 void PermissionUmaUtil::PermissionRequested(PermissionType permission,
263 const GURL& requesting_origin,
264 const GURL& embedding_origin,
265 Profile* profile) {
266 RecordPermissionRequest(permission, requesting_origin, embedding_origin,
267 profile);
268 }
269
270 void PermissionUmaUtil::PermissionRequested(ContentSettingsType content_type, 267 void PermissionUmaUtil::PermissionRequested(ContentSettingsType content_type,
271 const GURL& requesting_origin, 268 const GURL& requesting_origin,
272 const GURL& embedding_origin, 269 const GURL& embedding_origin,
273 Profile* profile) { 270 Profile* profile) {
274 PermissionType permission; 271 RecordPermissionRequest(content_type, requesting_origin, embedding_origin,
275 bool success = PermissionUtil::GetPermissionType(content_type, &permission);
276 DCHECK(success);
277 RecordPermissionRequest(permission, requesting_origin, embedding_origin,
278 profile); 272 profile);
279 } 273 }
280 274
281 void PermissionUmaUtil::PermissionGranted( 275 void PermissionUmaUtil::PermissionGranted(
282 ContentSettingsType permission, 276 ContentSettingsType permission,
283 PermissionRequestGestureType gesture_type, 277 PermissionRequestGestureType gesture_type,
284 const GURL& requesting_origin, 278 const GURL& requesting_origin,
285 Profile* profile) { 279 Profile* profile) {
286 PermissionDecisionAutoBlocker* autoblocker = 280 PermissionDecisionAutoBlocker* autoblocker =
287 PermissionDecisionAutoBlocker::GetForProfile(profile); 281 PermissionDecisionAutoBlocker::GetForProfile(profile);
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after
736 if (!deprecated_metric.empty() && rappor_service) { 730 if (!deprecated_metric.empty() && rappor_service) {
737 rappor::SampleDomainAndRegistryFromGURL(rappor_service, deprecated_metric, 731 rappor::SampleDomainAndRegistryFromGURL(rappor_service, deprecated_metric,
738 requesting_origin); 732 requesting_origin);
739 733
740 std::string rappor_metric = deprecated_metric + "2"; 734 std::string rappor_metric = deprecated_metric + "2";
741 rappor_service->RecordSampleString( 735 rappor_service->RecordSampleString(
742 rappor_metric, rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE, 736 rappor_metric, rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE,
743 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin)); 737 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin));
744 } 738 }
745 } 739 }
OLDNEW
« no previous file with comments | « chrome/browser/permissions/permission_uma_util.h ('k') | chrome/browser/permissions/permission_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698