| Index: chrome/browser/permissions/permission_util.h | 
| diff --git a/chrome/browser/permissions/permission_util.h b/chrome/browser/permissions/permission_util.h | 
| index 097203a73345aad369e072417c4a6caf2b399550..3f7c14c370c006a60c95e46e6098387d655914fa 100644 | 
| --- a/chrome/browser/permissions/permission_util.h | 
| +++ b/chrome/browser/permissions/permission_util.h | 
| @@ -35,6 +35,33 @@ enum PermissionAction { | 
| PERMISSION_ACTION_NUM, | 
| }; | 
|  | 
| +// Identifies the source or reason for a permission status being returned. This | 
| +// enum backs an UMA histogram and must be treated as append-only. | 
| +enum class PermissionStatusSource { | 
| +  // The reason for the status is not specified. | 
| +  UNSPECIFIED, | 
| + | 
| +  // The status is the result of being blocked due to the user dismissing a | 
| +  // permission prompt multiple times. | 
| +  MULTIPLE_DISMISSALS, | 
| + | 
| +  // The status is the result of being blocked because the permission is on the | 
| +  // safe browsing blacklist. | 
| +  SAFE_BROWSING_BLACKLIST, | 
| + | 
| +  // The status is the result of being blocked by the permissions kill switch. | 
| +  KILL_SWITCH, | 
| +}; | 
| + | 
| +struct PermissionResult { | 
| +  PermissionResult(ContentSetting content_setting, | 
| +                   PermissionStatusSource source); | 
| +  ~PermissionResult(); | 
| + | 
| +  ContentSetting content_setting; | 
| +  PermissionStatusSource source; | 
| +}; | 
| + | 
| // A utility class for permissions. | 
| class PermissionUtil { | 
| public: | 
|  |