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

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

Issue 2715643002: Replace all enums with enum classes in permissions code. (Closed)
Patch Set: Rebase 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 13 matching lines...) Expand all
24 #include "components/browser_sync/profile_sync_service.h" 24 #include "components/browser_sync/profile_sync_service.h"
25 #include "components/prefs/pref_service.h" 25 #include "components/prefs/pref_service.h"
26 #include "components/rappor/public/rappor_utils.h" 26 #include "components/rappor/public/rappor_utils.h"
27 #include "components/rappor/rappor_service_impl.h" 27 #include "components/rappor/rappor_service_impl.h"
28 #include "content/public/browser/permission_type.h" 28 #include "content/public/browser/permission_type.h"
29 #include "content/public/common/origin_util.h" 29 #include "content/public/common/origin_util.h"
30 #include "url/gurl.h" 30 #include "url/gurl.h"
31 31
32 // UMA keys need to be statically initialized so plain function would not 32 // UMA keys need to be statically initialized so plain function would not
33 // work. Use macros instead. 33 // work. Use macros instead.
34 #define PERMISSION_ACTION_UMA(secure_origin, permission, permission_secure, \ 34 #define PERMISSION_ACTION_UMA(secure_origin, permission, permission_secure, \
35 permission_insecure, action) \ 35 permission_insecure, action) \
36 UMA_HISTOGRAM_ENUMERATION(permission, action, PERMISSION_ACTION_NUM); \ 36 UMA_HISTOGRAM_ENUMERATION(permission, static_cast<int>(action), \
37 if (secure_origin) { \ 37 static_cast<int>(PermissionAction::NUM)); \
38 UMA_HISTOGRAM_ENUMERATION(permission_secure, action, \ 38 if (secure_origin) { \
39 PERMISSION_ACTION_NUM); \ 39 UMA_HISTOGRAM_ENUMERATION(permission_secure, static_cast<int>(action), \
40 } else { \ 40 static_cast<int>(PermissionAction::NUM)); \
41 UMA_HISTOGRAM_ENUMERATION(permission_insecure, action, \ 41 } else { \
42 PERMISSION_ACTION_NUM); \ 42 UMA_HISTOGRAM_ENUMERATION(permission_insecure, static_cast<int>(action), \
43 static_cast<int>(PermissionAction::NUM)); \
43 } 44 }
44 45
45 #define PERMISSION_BUBBLE_TYPE_UMA(metric_name, permission_bubble_type) \ 46 #define PERMISSION_BUBBLE_TYPE_UMA(metric_name, permission_bubble_type) \
46 UMA_HISTOGRAM_ENUMERATION( \ 47 UMA_HISTOGRAM_ENUMERATION( \
47 metric_name, \ 48 metric_name, \
48 static_cast<base::HistogramBase::Sample>(permission_bubble_type), \ 49 static_cast<base::HistogramBase::Sample>(permission_bubble_type), \
49 static_cast<base::HistogramBase::Sample>(PermissionRequestType::NUM)) 50 static_cast<base::HistogramBase::Sample>(PermissionRequestType::NUM))
50 51
51 #define PERMISSION_BUBBLE_GESTURE_TYPE_UMA(gesture_metric_name, \ 52 #define PERMISSION_BUBBLE_GESTURE_TYPE_UMA(gesture_metric_name, \
52 no_gesture_metric_name, \ 53 no_gesture_metric_name, \
53 gesture_type, \ 54 gesture_type, \
54 permission_bubble_type) \ 55 permission_bubble_type) \
55 if (gesture_type == PermissionRequestGestureType::GESTURE) { \ 56 if (gesture_type == PermissionRequestGestureType::GESTURE) { \
56 PERMISSION_BUBBLE_TYPE_UMA(gesture_metric_name, permission_bubble_type); \ 57 PERMISSION_BUBBLE_TYPE_UMA(gesture_metric_name, permission_bubble_type); \
57 } else if (gesture_type == PermissionRequestGestureType::NO_GESTURE) { \ 58 } else if (gesture_type == PermissionRequestGestureType::NO_GESTURE) { \
58 PERMISSION_BUBBLE_TYPE_UMA(no_gesture_metric_name, \ 59 PERMISSION_BUBBLE_TYPE_UMA(no_gesture_metric_name, \
59 permission_bubble_type); \ 60 permission_bubble_type); \
60 } 61 }
61 62
62 using content::PermissionType; 63 using content::PermissionType;
63 64
64 namespace { 65 namespace {
65 66
66 const std::string GetRapporMetric(ContentSettingsType permission, 67 const std::string GetRapporMetric(ContentSettingsType permission,
67 PermissionAction action) { 68 PermissionAction action) {
68 std::string action_str; 69 std::string action_str;
69 switch (action) { 70 switch (action) {
70 case GRANTED: 71 case PermissionAction::GRANTED:
71 action_str = "Granted"; 72 action_str = "Granted";
72 break; 73 break;
73 case DENIED: 74 case PermissionAction::DENIED:
74 action_str = "Denied"; 75 action_str = "Denied";
75 break; 76 break;
76 case DISMISSED: 77 case PermissionAction::DISMISSED:
77 action_str = "Dismissed"; 78 action_str = "Dismissed";
78 break; 79 break;
79 case IGNORED: 80 case PermissionAction::IGNORED:
80 action_str = "Ignored"; 81 action_str = "Ignored";
81 break; 82 break;
82 case REVOKED: 83 case PermissionAction::REVOKED:
83 action_str = "Revoked"; 84 action_str = "Revoked";
84 break; 85 break;
85 default: 86 default:
86 NOTREACHED(); 87 NOTREACHED();
87 break; 88 break;
88 } 89 }
89 90
90 std::string permission_str = PermissionUtil::GetPermissionString(permission); 91 std::string permission_str = PermissionUtil::GetPermissionString(permission);
91 if (permission_str.empty()) 92 if (permission_str.empty())
92 return ""; 93 return "";
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 profile); 273 profile);
273 } 274 }
274 275
275 void PermissionUmaUtil::PermissionGranted( 276 void PermissionUmaUtil::PermissionGranted(
276 ContentSettingsType permission, 277 ContentSettingsType permission,
277 PermissionRequestGestureType gesture_type, 278 PermissionRequestGestureType gesture_type,
278 const GURL& requesting_origin, 279 const GURL& requesting_origin,
279 Profile* profile) { 280 Profile* profile) {
280 PermissionDecisionAutoBlocker* autoblocker = 281 PermissionDecisionAutoBlocker* autoblocker =
281 PermissionDecisionAutoBlocker::GetForProfile(profile); 282 PermissionDecisionAutoBlocker::GetForProfile(profile);
282 RecordPermissionAction(permission, GRANTED, PermissionSourceUI::PROMPT, 283 RecordPermissionAction(permission, PermissionAction::GRANTED,
283 gesture_type, requesting_origin, profile); 284 PermissionSourceUI::PROMPT, gesture_type,
285 requesting_origin, profile);
284 RecordPermissionPromptPriorCount( 286 RecordPermissionPromptPriorCount(
285 permission, kPermissionsPromptAcceptedPriorDismissCountPrefix, 287 permission, kPermissionsPromptAcceptedPriorDismissCountPrefix,
286 autoblocker->GetDismissCount(requesting_origin, permission)); 288 autoblocker->GetDismissCount(requesting_origin, permission));
287 RecordPermissionPromptPriorCount( 289 RecordPermissionPromptPriorCount(
288 permission, kPermissionsPromptAcceptedPriorIgnoreCountPrefix, 290 permission, kPermissionsPromptAcceptedPriorIgnoreCountPrefix,
289 autoblocker->GetIgnoreCount(requesting_origin, permission)); 291 autoblocker->GetIgnoreCount(requesting_origin, permission));
290 } 292 }
291 293
292 void PermissionUmaUtil::PermissionDenied( 294 void PermissionUmaUtil::PermissionDenied(
293 ContentSettingsType permission, 295 ContentSettingsType permission,
294 PermissionRequestGestureType gesture_type, 296 PermissionRequestGestureType gesture_type,
295 const GURL& requesting_origin, 297 const GURL& requesting_origin,
296 Profile* profile) { 298 Profile* profile) {
297 PermissionDecisionAutoBlocker* autoblocker = 299 PermissionDecisionAutoBlocker* autoblocker =
298 PermissionDecisionAutoBlocker::GetForProfile(profile); 300 PermissionDecisionAutoBlocker::GetForProfile(profile);
299 RecordPermissionAction(permission, DENIED, PermissionSourceUI::PROMPT, 301 RecordPermissionAction(permission, PermissionAction::DENIED,
300 gesture_type, requesting_origin, profile); 302 PermissionSourceUI::PROMPT, gesture_type,
303 requesting_origin, profile);
301 RecordPermissionPromptPriorCount( 304 RecordPermissionPromptPriorCount(
302 permission, kPermissionsPromptDeniedPriorDismissCountPrefix, 305 permission, kPermissionsPromptDeniedPriorDismissCountPrefix,
303 autoblocker->GetDismissCount(requesting_origin, permission)); 306 autoblocker->GetDismissCount(requesting_origin, permission));
304 RecordPermissionPromptPriorCount( 307 RecordPermissionPromptPriorCount(
305 permission, kPermissionsPromptDeniedPriorIgnoreCountPrefix, 308 permission, kPermissionsPromptDeniedPriorIgnoreCountPrefix,
306 autoblocker->GetIgnoreCount(requesting_origin, permission)); 309 autoblocker->GetIgnoreCount(requesting_origin, permission));
307 } 310 }
308 311
309 void PermissionUmaUtil::PermissionDismissed( 312 void PermissionUmaUtil::PermissionDismissed(
310 ContentSettingsType permission, 313 ContentSettingsType permission,
311 PermissionRequestGestureType gesture_type, 314 PermissionRequestGestureType gesture_type,
312 const GURL& requesting_origin, 315 const GURL& requesting_origin,
313 Profile* profile) { 316 Profile* profile) {
314 PermissionDecisionAutoBlocker* autoblocker = 317 PermissionDecisionAutoBlocker* autoblocker =
315 PermissionDecisionAutoBlocker::GetForProfile(profile); 318 PermissionDecisionAutoBlocker::GetForProfile(profile);
316 RecordPermissionAction(permission, DISMISSED, PermissionSourceUI::PROMPT, 319 RecordPermissionAction(permission, PermissionAction::DISMISSED,
317 gesture_type, requesting_origin, profile); 320 PermissionSourceUI::PROMPT, gesture_type,
321 requesting_origin, profile);
318 RecordPermissionPromptPriorCount( 322 RecordPermissionPromptPriorCount(
319 permission, kPermissionsPromptDismissedPriorDismissCountPrefix, 323 permission, kPermissionsPromptDismissedPriorDismissCountPrefix,
320 autoblocker->GetDismissCount(requesting_origin, permission)); 324 autoblocker->GetDismissCount(requesting_origin, permission));
321 RecordPermissionPromptPriorCount( 325 RecordPermissionPromptPriorCount(
322 permission, kPermissionsPromptDismissedPriorIgnoreCountPrefix, 326 permission, kPermissionsPromptDismissedPriorIgnoreCountPrefix,
323 autoblocker->GetIgnoreCount(requesting_origin, permission)); 327 autoblocker->GetIgnoreCount(requesting_origin, permission));
324 } 328 }
325 329
326 void PermissionUmaUtil::PermissionIgnored( 330 void PermissionUmaUtil::PermissionIgnored(
327 ContentSettingsType permission, 331 ContentSettingsType permission,
328 PermissionRequestGestureType gesture_type, 332 PermissionRequestGestureType gesture_type,
329 const GURL& requesting_origin, 333 const GURL& requesting_origin,
330 Profile* profile) { 334 Profile* profile) {
331 PermissionDecisionAutoBlocker* autoblocker = 335 PermissionDecisionAutoBlocker* autoblocker =
332 PermissionDecisionAutoBlocker::GetForProfile(profile); 336 PermissionDecisionAutoBlocker::GetForProfile(profile);
333 RecordPermissionAction(permission, IGNORED, PermissionSourceUI::PROMPT, 337 RecordPermissionAction(permission, PermissionAction::IGNORED,
334 gesture_type, requesting_origin, profile); 338 PermissionSourceUI::PROMPT, gesture_type,
339 requesting_origin, profile);
335 RecordPermissionPromptPriorCount( 340 RecordPermissionPromptPriorCount(
336 permission, kPermissionsPromptIgnoredPriorDismissCountPrefix, 341 permission, kPermissionsPromptIgnoredPriorDismissCountPrefix,
337 autoblocker->GetDismissCount(requesting_origin, permission)); 342 autoblocker->GetDismissCount(requesting_origin, permission));
338 RecordPermissionPromptPriorCount( 343 RecordPermissionPromptPriorCount(
339 permission, kPermissionsPromptIgnoredPriorIgnoreCountPrefix, 344 permission, kPermissionsPromptIgnoredPriorIgnoreCountPrefix,
340 autoblocker->GetIgnoreCount(requesting_origin, permission)); 345 autoblocker->GetIgnoreCount(requesting_origin, permission));
341 346
342 // RecordPermission* methods need to be called before RecordIgnore in the 347 // RecordPermission* methods need to be called before RecordIgnore in the
343 // blocker because they record the number of prior ignore and dismiss values, 348 // blocker because they record the number of prior ignore and dismiss values,
344 // and we don't want to include the current ignore. 349 // and we don't want to include the current ignore.
345 autoblocker->RecordIgnore(requesting_origin, permission); 350 autoblocker->RecordIgnore(requesting_origin, permission);
346 } 351 }
347 352
348 void PermissionUmaUtil::PermissionRevoked(ContentSettingsType permission, 353 void PermissionUmaUtil::PermissionRevoked(ContentSettingsType permission,
349 PermissionSourceUI source_ui, 354 PermissionSourceUI source_ui,
350 const GURL& revoked_origin, 355 const GURL& revoked_origin,
351 Profile* profile) { 356 Profile* profile) {
352 // TODO(tsergeant): Expand metrics definitions for revocation to include all 357 // TODO(tsergeant): Expand metrics definitions for revocation to include all
353 // permissions. 358 // permissions.
354 if (permission == CONTENT_SETTINGS_TYPE_NOTIFICATIONS || 359 if (permission == CONTENT_SETTINGS_TYPE_NOTIFICATIONS ||
355 permission == CONTENT_SETTINGS_TYPE_GEOLOCATION || 360 permission == CONTENT_SETTINGS_TYPE_GEOLOCATION ||
356 permission == CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC || 361 permission == CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC ||
357 permission == CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA) { 362 permission == CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA) {
358 // An unknown gesture type is passed in since gesture type is only 363 // An unknown gesture type is passed in since gesture type is only
359 // applicable in prompt UIs where revocations are not possible. 364 // applicable in prompt UIs where revocations are not possible.
360 RecordPermissionAction(permission, REVOKED, source_ui, 365 RecordPermissionAction(permission, PermissionAction::REVOKED, source_ui,
361 PermissionRequestGestureType::UNKNOWN, 366 PermissionRequestGestureType::UNKNOWN,
362 revoked_origin, profile); 367 revoked_origin, profile);
363 } 368 }
364 } 369 }
365 370
366 void PermissionUmaUtil::RecordEmbargoPromptSuppression( 371 void PermissionUmaUtil::RecordEmbargoPromptSuppression(
367 PermissionEmbargoStatus embargo_status) { 372 PermissionEmbargoStatus embargo_status) {
368 UMA_HISTOGRAM_ENUMERATION("Permissions.AutoBlocker.EmbargoPromptSuppression", 373 UMA_HISTOGRAM_ENUMERATION("Permissions.AutoBlocker.EmbargoPromptSuppression",
369 embargo_status, 374 static_cast<int>(embargo_status),
370 PermissionEmbargoStatus::STATUS_NUM); 375 static_cast<int>(PermissionEmbargoStatus::NUM));
371 } 376 }
372 377
373 void PermissionUmaUtil::RecordEmbargoPromptSuppressionFromSource( 378 void PermissionUmaUtil::RecordEmbargoPromptSuppressionFromSource(
374 PermissionStatusSource source) { 379 PermissionStatusSource source) {
375 // Explicitly switch to ensure that any new PermissionStatusSource values are 380 // Explicitly switch to ensure that any new PermissionStatusSource values are
376 // dealt with appropriately. 381 // dealt with appropriately.
377 switch (source) { 382 switch (source) {
378 case PermissionStatusSource::MULTIPLE_DISMISSALS: 383 case PermissionStatusSource::MULTIPLE_DISMISSALS:
379 PermissionUmaUtil::RecordEmbargoPromptSuppression( 384 PermissionUmaUtil::RecordEmbargoPromptSuppression(
380 PermissionEmbargoStatus::REPEATED_DISMISSALS); 385 PermissionEmbargoStatus::REPEATED_DISMISSALS);
381 break; 386 break;
382 case PermissionStatusSource::SAFE_BROWSING_BLACKLIST: 387 case PermissionStatusSource::SAFE_BROWSING_BLACKLIST:
383 PermissionUmaUtil::RecordEmbargoPromptSuppression( 388 PermissionUmaUtil::RecordEmbargoPromptSuppression(
384 PermissionEmbargoStatus::PERMISSIONS_BLACKLISTING); 389 PermissionEmbargoStatus::PERMISSIONS_BLACKLISTING);
385 break; 390 break;
386 case PermissionStatusSource::UNSPECIFIED: 391 case PermissionStatusSource::UNSPECIFIED:
387 case PermissionStatusSource::KILL_SWITCH: 392 case PermissionStatusSource::KILL_SWITCH:
388 // The permission wasn't under embargo, so don't record anything. We may 393 // The permission wasn't under embargo, so don't record anything. We may
389 // embargo it later. 394 // embargo it later.
390 break; 395 break;
391 } 396 }
392 } 397 }
393 398
394 void PermissionUmaUtil::RecordEmbargoStatus( 399 void PermissionUmaUtil::RecordEmbargoStatus(
395 PermissionEmbargoStatus embargo_status) { 400 PermissionEmbargoStatus embargo_status) {
396 UMA_HISTOGRAM_ENUMERATION("Permissions.AutoBlocker.EmbargoStatus", 401 UMA_HISTOGRAM_ENUMERATION("Permissions.AutoBlocker.EmbargoStatus",
397 embargo_status, 402 static_cast<int>(embargo_status),
398 PermissionEmbargoStatus::STATUS_NUM); 403 static_cast<int>(PermissionEmbargoStatus::NUM));
399 } 404 }
400 405
401 void PermissionUmaUtil::RecordSafeBrowsingResponse( 406 void PermissionUmaUtil::RecordSafeBrowsingResponse(
402 base::TimeDelta response_time, 407 base::TimeDelta response_time,
403 SafeBrowsingResponse response) { 408 SafeBrowsingResponse response) {
404 UMA_HISTOGRAM_TIMES("Permissions.AutoBlocker.SafeBrowsingResponseTime", 409 UMA_HISTOGRAM_TIMES("Permissions.AutoBlocker.SafeBrowsingResponseTime",
405 response_time); 410 response_time);
406 UMA_HISTOGRAM_ENUMERATION("Permissions.AutoBlocker.SafeBrowsingResponse", 411 UMA_HISTOGRAM_ENUMERATION("Permissions.AutoBlocker.SafeBrowsingResponse",
407 response, SafeBrowsingResponse::RESPONSE_NUM); 412 static_cast<int>(response),
413 static_cast<int>(SafeBrowsingResponse::NUM));
408 } 414 }
409 415
410 void PermissionUmaUtil::PermissionPromptShown( 416 void PermissionUmaUtil::PermissionPromptShown(
411 const std::vector<PermissionRequest*>& requests) { 417 const std::vector<PermissionRequest*>& requests) {
412 DCHECK(!requests.empty()); 418 DCHECK(!requests.empty());
413 419
414 PermissionRequestType permission_prompt_type = 420 PermissionRequestType permission_prompt_type =
415 PermissionRequestType::MULTIPLE; 421 PermissionRequestType::MULTIPLE;
416 PermissionRequestGestureType permission_gesture_type = 422 PermissionRequestGestureType permission_gesture_type =
417 PermissionRequestGestureType::UNKNOWN; 423 PermissionRequestGestureType::UNKNOWN;
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 break; 725 break;
720 case CONTENT_SETTINGS_TYPE_DURABLE_STORAGE: 726 case CONTENT_SETTINGS_TYPE_DURABLE_STORAGE:
721 PERMISSION_ACTION_UMA(secure_origin, "Permissions.Action.DurableStorage", 727 PERMISSION_ACTION_UMA(secure_origin, "Permissions.Action.DurableStorage",
722 "Permissions.Action.SecureOrigin.DurableStorage", 728 "Permissions.Action.SecureOrigin.DurableStorage",
723 "Permissions.Action.InsecureOrigin.DurableStorage", 729 "Permissions.Action.InsecureOrigin.DurableStorage",
724 action); 730 action);
725 break; 731 break;
726 case CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC: 732 case CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC:
727 // Media permissions are disabled on insecure origins, so there's no 733 // Media permissions are disabled on insecure origins, so there's no
728 // need to record metrics for secure/insecue. 734 // need to record metrics for secure/insecue.
729 UMA_HISTOGRAM_ENUMERATION("Permissions.Action.AudioCapture", action, 735 UMA_HISTOGRAM_ENUMERATION("Permissions.Action.AudioCapture",
730 PERMISSION_ACTION_NUM); 736 static_cast<int>(action),
737 static_cast<int>(PermissionAction::NUM));
731 break; 738 break;
732 case CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA: 739 case CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA:
733 UMA_HISTOGRAM_ENUMERATION("Permissions.Action.VideoCapture", action, 740 UMA_HISTOGRAM_ENUMERATION("Permissions.Action.VideoCapture",
734 PERMISSION_ACTION_NUM); 741 static_cast<int>(action),
742 static_cast<int>(PermissionAction::NUM));
735 break; 743 break;
736 case CONTENT_SETTINGS_TYPE_PLUGINS: 744 case CONTENT_SETTINGS_TYPE_PLUGINS:
737 PERMISSION_ACTION_UMA(secure_origin, "Permissions.Action.Flash", 745 PERMISSION_ACTION_UMA(secure_origin, "Permissions.Action.Flash",
738 "Permissions.Action.SecureOrigin.Flash", 746 "Permissions.Action.SecureOrigin.Flash",
739 "Permissions.Action.InsecureOrigin.Flash", action); 747 "Permissions.Action.InsecureOrigin.Flash", action);
740 break; 748 break;
741 // The user is not prompted for these permissions, thus there is no 749 // The user is not prompted for these permissions, thus there is no
742 // permission action recorded for them. 750 // permission action recorded for them.
743 default: 751 default:
744 NOTREACHED() << "PERMISSION " 752 NOTREACHED() << "PERMISSION "
(...skipping 13 matching lines...) Expand all
758 if (!deprecated_metric.empty() && rappor_service) { 766 if (!deprecated_metric.empty() && rappor_service) {
759 rappor::SampleDomainAndRegistryFromGURL(rappor_service, deprecated_metric, 767 rappor::SampleDomainAndRegistryFromGURL(rappor_service, deprecated_metric,
760 requesting_origin); 768 requesting_origin);
761 769
762 std::string rappor_metric = deprecated_metric + "2"; 770 std::string rappor_metric = deprecated_metric + "2";
763 rappor_service->RecordSampleString( 771 rappor_service->RecordSampleString(
764 rappor_metric, rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE, 772 rappor_metric, rappor::LOW_FREQUENCY_ETLD_PLUS_ONE_RAPPOR_TYPE,
765 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin)); 773 rappor::GetDomainAndRegistrySampleFromGURL(requesting_origin));
766 } 774 }
767 } 775 }
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