<!--
Copyright 2023 The Chromium Authors
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->

<!--

This file describes the enumerations referenced by entries in histograms.xml for
this directory. Some enums may instead be listed in the central enums.xml file
at src/tools/metrics/histograms/enums.xml when multiple files use them.

For best practices on writing enumerations descriptions, see
https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md#Enum-Histograms

Please follow the instructions in the OWNERS file in this directory to find a
reviewer. If no OWNERS file exists, please consider signing up at
go/reviewing-metrics (Googlers only), as all subdirectories are expected to
have an OWNERS file. As a last resort you can send the CL to
chromium-metrics-reviews@google.com.
-->

<histogram-configuration>

<!-- Enum types -->

<enums>

<enum name="AppBannersBeforeInstallEvent">
  <int value="1" label="Event created and dispatched"/>
  <int value="2" label="Showing the banner"/>
  <int value="3" label="preventDefault() not called"/>
  <int value="4" label="preventDefault() called"/>
  <int value="5" label="prompt() called after preventDefault() (deprecated)"/>
  <int value="6"
      label="prompt() not called after preventDefault() (deprecated)"/>
  <int value="7" label="prompt() called early"/>
  <int value="8" label="prompt() called after preventDefault()"/>
  <int value="9" label="prompt() called without preventDefault()"/>
  <int value="10" label="prompt() not called after preventDefault()"/>
  <int value="11" label="prompt() not called without preventDefault()"/>
</enum>

<enum name="AppBannersDismissEvent">
  <int value="41" label="Error/unknown reason for dismissal"/>
  <int value="42" label="User opened the application after installing it"/>
  <int value="43" label="User clicked on the banner"/>
  <int value="44" label="(Obsolete) User swiped the banner away"/>
  <int value="45" label="User hit the X button"/>
  <int value="46"
      label="User began app install, but it didn't finish in time
             (deprecated)"/>
  <int value="47" label="Banner was dismissed for any reason"/>
  <int value="48" label="Ambient badge infobar was dismissed (deprecated)"/>
</enum>

<enum name="AppBannersDisplayEvent">
  <int value="1" label="Banner was requested by the site"/>
  <int value="2" label="User previously blocked the same banner"/>
  <int value="3" label="User blocked too many other banners from the site"/>
  <int value="4" label="Banner created"/>
  <int value="5" label="User already installed the app"/>
  <int value="6" label="User ignored the banner last time"/>
  <int value="7" label="Manifest lacks a service worker"/>
  <int value="8" label="Site hasn't been visited frequently enough"/>
  <int value="9" label="Native app banner was requested by the site"/>
  <int value="10" label="Web app banner was requested by the site"/>
  <int value="11" label="Native app banner created"/>
  <int value="12" label="Web app banner created"/>
</enum>

<enum name="AppBannersInstallEvent">
  <int value="21" label="(Native app) User triggered the app install dialog"/>
  <int value="22"
      label="(Native app) User began installing the app (deprecated)"/>
  <int value="23"
      label="(Native app) User waited for the app to finish installing
             (deprecated)"/>
  <int value="24" label="(Web app) User installed a web app"/>
</enum>

<enum name="AppBannersUserResponse">
  <int value="1" label="Native app install dialog was accepted by the user"/>
  <int value="2"
      label="Web app add-to-homescreen dialog was accepted by the user"/>
  <int value="3" label="Native app install dialog was dismissed by the user"/>
  <int value="4"
      label="Web app add-to-homescreen dialog was dismissed by the user"/>
  <int value="5"
      label="Native app banner was ignored by the user (deprecated)"/>
  <int value="6" label="Web app banner was ignored by the user (deprecated)"/>
</enum>

<enum name="AppIdentityDisplayMetric">
  <int value="0" label="No App Identity Change."/>
  <int value="1" label="Icon changing."/>
  <int value="2" label="Mask changing."/>
  <int value="3" label="Mask and Icon changing."/>
  <int value="4" label="App name changing."/>
  <int value="5" label="App name and Icon changing."/>
  <int value="6" label="App name and Mask changing."/>
  <int value="7" label="App name, Mask, and Icon changing."/>
  <int value="8" label="Short name changing."/>
  <int value="9" label="Short name and Icon changing."/>
  <int value="10" label="Short name and Mask changing."/>
  <int value="11" label="Short name, Mask, and Icon changing."/>
  <int value="12" label="Short name and App name changing."/>
  <int value="13" label="Short name, App name, and Icon changing."/>
  <int value="14" label="Short name, App name, and Mask changing."/>
  <int value="15" label="Short name, App name, Mask and Icon changing."/>
  <int value="17" label="App Icon changing, icon below threshold."/>
  <int value="19" label="App Icon and Mask changing, icon below threshold."/>
  <int value="21" label="App Icon and Name changing, icon below threshold."/>
  <int value="23"
      label="App Icon, Mask, and Name changing, icon below threshold."/>
  <int value="29"
      label="App Icon, Name, and Short Name changing, icon below threshold."/>
</enum>

<enum name="AppSettingsPageEntryPoints">
  <int value="0" label="From page info view in app window/tab"/>
  <int value="1" label="From chrome://apps page"/>
  <int value="2"
      label="From a browser command, currently the App Menu in the menu bar
             on Mac OS"/>
  <int value="3" label="From a sub apps install dialog"/>
  <int value="4" label="From the settings button on a notification"/>
  <int value="5" label="From the page specific site data dialog"/>
  <int value="6" label="From the navigation capturing IPH bubble"/>
</enum>

<enum name="DefaultOfflineClosingReason">
  <int value="0" label="Network re-established"/>
  <int value="1" label="New navigation"/>
  <int value="2" label="Tab/App closed"/>
</enum>

<!-- LINT.IfChange(FetchInstallInfoResult) -->

<enum name="FetchInstallInfoResult">
  <int value="0" label="AppInfoObtained"/>
  <int value="1" label="WebContentsDestroyed"/>
  <int value="2" label="UrlLoadingFailure"/>
  <int value="3" label="NoValidManifest"/>
  <int value="4" label="WrongManifestId"/>
  <int value="5" label="Failure"/>
  <int value="6" label="Shutdown"/>
</enum>

<!-- LINT.ThenChange(//chrome/browser/web_applications/scheduler/fetch_install_info_from_install_url_result.h:FetchInstallInfoResult) -->

<!-- LINT.IfChange(FetchManifestAndUpdateResult) -->

<enum name="FetchManifestAndUpdateResult">
  <int value="0" label="Success, updated"/>
  <int value="1" label="Success, no update detected"/>
  <int value="2" label="Shutdown"/>
  <int value="3" label="App not installed"/>
  <int value="4" label="URL loading error"/>
  <int value="5" label="Manifest retrieval error"/>
  <int value="6" label="Invalid manifest"/>
  <int value="7" label="Icon download error"/>
  <int value="8" label="Installation error"/>
  <int value="9" label="Primary page changed"/>
  <int value="10" label="Manifest to WebAppInstallInfo failed"/>
</enum>

<!-- LINT.ThenChange(/chrome/browser/web_applications/commands/fetch_manifest_and_update_result.h:FetchManifestAndUpdateResult) -->

<enum name="GeneratedIconFixResult">
  <int value="0" label="kAppUninstalled"/>
  <int value="1" label="kShutdown"/>
  <int value="2" label="kDownloadFailure"/>
  <int value="3" label="kStillGenerated"/>
  <int value="4" label="kWriteFailure"/>
  <int value="5" label="kSuccess"/>
</enum>

<enum name="GeneratedIconFixScheduleDecision">
  <int value="0" label="kNotSynced"/>
  <int value="1" label="kTimeWindowExpired"/>
  <int value="2" label="kNotRequired"/>
  <int value="3" label="kAttemptLimitReached"/>
  <int value="4" label="kAlreadyScheduled"/>
  <int value="5" label="kSchedule"/>
</enum>

<enum name="HttpStatusCodeClass">
  <int value="0" label="Invalid"/>
  <int value="1" label="1XX"/>
  <int value="2" label="2XX"/>
  <int value="3" label="3XX"/>
  <int value="4" label="4XX"/>
  <int value="5" label="5XX"/>
</enum>

<enum name="InstallableAmbientBadgeState">
  <int value="0" label="Pipeline not started"/>
  <int value="1" label="Pipeline is running"/>
  <int value="2" label="blocked due to recently dismissed"/>
  <int value="3" label="Waiting for service worker"/>
  <int value="4" label="Waiting for site engagement"/>
  <int value="5" label="Showing ambient badge"/>
  <int value="6" label="Ambient badge dismissed"/>
</enum>

<!-- LINT.IfChange(InstallMigrateToAppResult) -->

<enum name="InstallMigrateToAppResult">
  <int value="0" label="kSuccessNewInstall"/>
  <int value="1" label="kSuccessAlreadyInstalled"/>
  <int value="2" label="kInstallError"/>
  <int value="3" label="kWebContentsDestroyed"/>
  <int value="4" label="kShutdown"/>
  <int value="5" label="kIconDownloadFailed"/>
  <int value="6" label="kIconReadFromDiskFailed"/>
  <int value="7" label="kIconWriteToDiskFailed"/>
  <int value="8" label="kInstallFinalizeFailed"/>
  <int value="9" label="kManifestConversionFailed"/>
  <int value="10" label="kAppNotAllowedToUpdate"/>
  <int value="11" label="kUserNavigated"/>
  <int value="12" label="kManifestToWebAppInstallInfoError"/>
  <int value="13" label="kInstallFromInfoFailed"/>
  <int value="14" label="kUpdateFailed"/>
  <int value="15" label="kUrlLoadFailed"/>
  <int value="16" label="kManifestIdMismatch"/>
  <int value="17" label="kMigrateFromMismatch"/>
</enum>

<!-- LINT.ThenChange(/chrome/browser/web_applications/scheduler/install_migrate_to_app_result.h:InstallMigrateToAppResult) -->

<enum name="IsolatedWebAppCleanupBundleCacheError">
  <int value="0" label="System shutdown"/>
  <int value="1" label="Could not delete all bundles"/>
</enum>

<enum name="IsolatedWebAppCleanupOrphanedIWAsError">
  <int value="1" label="Could not delete all orphaned isolated web apps."/>
  <int value="2" label="Skipped execution during system shutdown."/>
</enum>

<enum name="IsolatedWebAppCopyBundleToCacheError">
  <int value="0" label="System shutdown"/>
  <int value="1" label="App not installed"/>
  <int value="2" label="Not IWA"/>
  <int value="3" label="Cannot extract owned bundle path"/>
  <int value="4" label="Failed to create dir"/>
  <int value="5" label="Failed to copy file"/>
</enum>

<enum name="IsolatedWebAppGetBundleCachePathError">
  <int value="0" label="System shutdown"/>
  <int value="1" label="Provided version not found"/>
  <int value="2" label="IWA not cached"/>
</enum>

<enum name="IsolatedWebAppInstallError">
  <int value="1" label="Cannot copy to profile directory"/>
  <int value="2" label="Trust check failed"/>
  <int value="3" label="Failed to load install URL"/>
  <int value="4" label="App is not installable"/>
  <int value="5" label="Failed to validate manifest"/>
  <int value="6" label="Failed to retrieve icons"/>
  <int value="7" label="Failed to install"/>
  <int value="8" label="App is blocked"/>
</enum>

<enum name="IsolatedWebAppReadResponseHeadError">
  <int value="1" label="Response head parsing: Internal error"/>
  <int value="2" label="Response head parsing: Format error"/>
  <int value="3" label="Response not found"/>
</enum>

<enum name="IsolatedWebAppRemoveObsoleteBundleVersionsError">
  <int value="0" label="System shutdown"/>
  <int value="1" label="IWA not installed"/>
  <int value="2" label="Installed version not cached"/>
  <int value="3" label="Could not delete all versions"/>
</enum>

<enum name="IsolatedWebAppResponseReaderCacheState">
  <int value="0" label="Not cached"/>
  <int value="1" label="Cached and ready"/>
  <int value="2"
      label="Cached but still processing integrity block, signatures, or
             metadata"/>
</enum>

<enum name="IsolatedWebAppSwbnFileUsabilityError">
  <int value="1" label="Integrity Block parsing: Internal error"/>
  <int value="2" label="Integrity Block parsing: Format error"/>
  <int value="3" label="Integrity Block parsing: Version error"/>
  <int value="4" label="Integrity Block validation error"/>
  <int value="5" label="Signature verification error"/>
  <int value="6" label="Metadata parsing: Internal error"/>
  <int value="7" label="Metadata parsing: Format error"/>
  <int value="8" label="Metadata parsing: Version error"/>
  <int value="9" label="Metadata validation error"/>
</enum>

<enum name="IsolatedWebAppUpdateError">
  <int value="1" label="Cannot calculate IsolatedWebAppUrlInfo"/>
  <int value="2" label="Update manifest download failed"/>
  <int value="3" label="Update manifest invalid json"/>
  <int value="4" label="Invalid update manifest"/>
  <int value="5" label="Update manifest no applicable version"/>
  <int value="6" label="IWA not installed"/>
  <int value="7" label="Download path creation failed"/>
  <int value="8" label="Bundle download error"/>
  <int value="9" label="Update dry run failed"/>
  <int value="10" label="Update apply failed"/>
  <int value="11" label="System shutdown"/>
  <int value="12" label="Version pinning is not allowed"/>
  <int value="13" label="Downgrade is not allowed"/>
</enum>

<!-- LINT.IfChange(IwaComponentBestEffortWaitOutcome) -->

<enum name="IwaComponentBestEffortWaitOutcome">
  <int value="0" label="Component already ready (No wait needed)"/>
  <int value="1"
      label="Fell back to preload (On-demand update timed out/failed)"/>
  <int value="2"
      label="Loaded existing cache (Completed waiting for local disk read)"/>
  <int value="3"
      label="Downloaded new component (Successfully fetched newer version)"/>
</enum>

<!-- LINT.ThenChange(//chrome/browser/web_applications/isolated_web_apps/key_distribution/iwa_key_distribution_histograms.h:IwaComponentBestEffortWaitOutcome) -->

<!-- LINT.IfChange(IwaComponentUpdateError) -->

<enum name="IwaComponentUpdateError">
  <int value="0" label="Stale version"/>
  <int value="1" label="Component file not found"/>
  <int value="2" label="Malformed protobuf"/>
  <int value="3" label="Malformed base64 key"/>
</enum>

<!-- LINT.ThenChange(//chrome/browser/web_applications/isolated_web_apps/key_distribution/iwa_key_distribution_histograms.h:IwaComponentUpdateError) -->

<!-- LINT.IfChange(IwaComponentUpdateSource) -->

<enum name="IwaComponentUpdateSource">
  <int value="0" label="Preloaded component"/>
  <int value="1" label="Downloaded component"/>
</enum>

<!-- LINT.ThenChange(//chrome/browser/web_applications/isolated_web_apps/key_distribution/iwa_key_distribution_histograms.h:IwaComponentUpdateSource) -->

<!-- LINT.IfChange(KeyDistributionComponentSource) -->

<enum name="KeyDistributionComponentSource">
  <int value="0" label="No component"/>
  <int value="1" label="Preloaded component"/>
  <int value="2" label="Downloaded component"/>
</enum>

<!-- LINT.ThenChange(//chrome/browser/web_applications/isolated_web_apps/key_distribution/iwa_key_distribution_histograms.h:KeyDistributionComponentSource) -->

<!-- LINT.IfChange(KeyRotationBundleIdentityCheckResult) -->

<enum name="KeyRotationBundleIdentityCheckResult">
  <int value="0" label="Trusted - rotated key"/>
  <int value="1" label="Trusted - previous key"/>
  <int value="2" label="Failed"/>
</enum>

<!-- LINT.ThenChange(//components/webapps/isolated_web_apps/identity/iwa_identity_validator.cc:KeyRotationBundleIdentityCheckResult) -->

<enum name="LaunchedAppType">
  <int value="0" label="DIY app launched"/>
  <int value="1" label="Crafted app launched"/>
</enum>

<enum name="LaunchFromHomeScreen">
  <int value="0" label="Launched as standalone web app"/>
  <int value="1" label="Launched as a tab"/>
</enum>

<!-- LINT.IfChange(LaunchUrlInScopeResult) -->

<enum name="LaunchUrlInScopeResult">
  <int value="0" label="In scope"/>
  <int value="1" label="Not in scope"/>
  <int value="2" label="In scope but missing trailing slash"/>
</enum>

<!-- LINT.ThenChange(chrome/browser/ui/web_applications/web_app_launch_process.cc:LaunchUrlInScopeResult) -->

<enum name="ManagedSessionType">
  <int value="0" label="Managed User Session"/>
  <int value="1" label="Managed Guest Session"/>
  <int value="2" label="Kiosk Session"/>
</enum>

<enum name="ManifestIconDownloaderResult">
  <int value="0" label="No images were found while downloading"/>
  <int value="1"
      label="Images found did not match sizes specified in manifest"/>
  <int value="2" label="Image download successful"/>
</enum>

<enum name="NavigationCapturingDisplayMode">
  <int value="0"
      label="Opened in standalone window when display mode was standalone"/>
  <int value="1"
      label="Opened in browser tab when display mode was browser tab"/>
  <int value="2"
      label="Opened in standalone window when display mode was browser tab"/>
  <int value="3"
      label="Opened in browser tab when display mode was standalone"/>
</enum>

<enum name="NavigationCapturingRedirectionResult">
  <int value="0" label="Browser tab reparented into tab"/>
  <int value="1" label="Browser tab reparented into app window"/>
  <int value="2" label="App window reparented into browser tab"/>
  <int value="3" label="App window reparented into app"/>
  <int value="4" label="New app window opened"/>
  <int value="5" label="New tab belonging to an app opened"/>
  <int value="6" label="Navigated existing app tab"/>
  <int value="7" label="Navigated existing app window"/>
  <int value="8" label="Focused existing app tab"/>
  <int value="9" label="Focused existing app window"/>
  <int value="10"
      label="Redirection happening in same context as triggered in"/>
  <int value="11" label="Final url not capturable"/>
  <int value="12" label="Redirection not handled"/>
</enum>

<enum name="NavigationCapturingResult">
  <int value="0" label="New app tab opened"/>
  <int value="1" label="New app window opened"/>
  <int value="2" label="Focused existing app tab"/>
  <int value="3" label="Focused existing app window"/>
  <int value="4" label="Navigated existing app tab"/>
  <int value="5" label="Navigated existing app window"/>
  <int value="6" label="Opened new app tab from user modified click"/>
  <int value="7" label="Opened new app window from user modified click"/>
  <int value="8" label="Opened new app tab from auxiliary context"/>
  <int value="9" label="Opened new app window from auxiliary context"/>
  <int value="10" label="Navigation canceled"/>
  <int value="11" label="Override browser for navigation"/>
  <int value="12"
      label="Intermediary tab opened, possible for redirection to be captured"/>
  <int value="13" label="Not handled"/>
</enum>

<enum name="PreinstalledAppDisabledReason">
  <int value="0" label="kNotDisabled"/>
  <int value="1" label="kUninstallPreinstalledAppsNotEnabled"/>
  <int value="2" label="kUninstallUserTypeNotAllowed"/>
  <int value="3" label="kUninstallGatedFeatureNotEnabled"/>
  <int value="4" label="kIgnoreGatedFeatureNotEnabled"/>
  <int value="5" label="kIgnoreArcAvailable"/>
  <int value="6" label="kIgnoreTabletFormFactor"/>
  <int value="7" label="kIgnoreNotNewUser"/>
  <int value="8" label="kIgnoreNotPreviouslyPreinstalled"/>
  <int value="9" label="kUninstallReplacingAppBlockedByPolicy"/>
  <int value="10" label="kUninstallReplacingAppForceInstalled"/>
  <int value="11" label="kInstallReplacingAppStillInstalled"/>
  <int value="12" label="kUninstallDefaultAppAndAppsToReplaceUninstalled"/>
  <int value="13" label="kIgnoreReplacingAppUninstalledByUser"/>
  <int value="14" label="kIgnoreStylusRequired"/>
  <int value="15" label="kInstallOverridePreviousUserUninstall"/>
  <int value="16" label="kIgnoreStylusRequiredNoDeviceData"/>
  <int value="17" label="kIgnorePreviouslyUninstalledByUser"/>
</enum>

<!-- LINT.IfChange(ProtocolHandlerPickerAction) -->

<enum name="ProtocolHandlerPickerAction">
  <int value="0" label="Preferred app launched"/>
  <int value="1" label="Dialog shown"/>
  <int value="2" label="Flow aborted (dialog already opened)"/>
</enum>

<!-- LINT.ThenChange(/chrome/browser/ui/views/web_apps/protocol_handler_picker_coordinator.cc:ProtocolHandlerPickerAction) -->

<!-- LINT.IfChange(ProtocolHandlerPickerDialogClosedReason) -->

<enum name="ProtocolHandlerPickerDialogClosedReason">
  <int value="0" label="Ok button clicked"/>
  <int value="1" label="Cancel button clicked"/>
  <int value="2" label="Other"/>
</enum>

<!-- LINT.ThenChange(/chrome/browser/ui/views/web_apps/protocol_handler_picker_coordinator.cc:ProtocolHandlerPickerDialogClosedReason) -->

<!-- LINT.IfChange(RewriteIconResult) -->

<enum name="RewriteIconResult">
  <int value="0" label="The app's state was changed unexpectedly"/>
  <int value="1" label="Icon successfully rewritten with mask"/>
  <int value="2" label="Failed to fetch shortcut info"/>
  <int value="3" label="Failed to update shortcuts"/>
</enum>

<!-- LINT.ThenChange(/chrome/browser/web_applications/scheduler/rewrite_diy_icons_result.h:RewriteIconResult) -->

<enum name="RunOnOSLoginCommandCompletionState">
  <int value="0" label="Run On OS Login command successfully completed"/>
  <int value="1"
      label="Run On OS Login command failed due to a shutdown of the command
             system"/>
  <int value="2"
      label="Run On OS Login command failed because setting of command is not
             allowed by policy."/>
  <int value="3"
      label="Run On OS Login command shutdown during sync because login mode
             already matched what is set."/>
  <int value="4"
      label="Run On OS Login command failed because app is not locally
             installed"/>
  <int value="5"
      label="Run On OS Login command failed because OS Hooks were not
             properly set."/>
</enum>

<enum name="ShortcutsCreationResult">
  <summary>Result of creating shortcuts for PWA.</summary>
  <int value="0" label="Success"/>
  <int value="1" label="Fail to create shortcut"/>
</enum>

<enum name="ShortcutsMenuIconAndDataDifference">
  <int value="0" label="Number of icons match number of shortcuts menu items"/>
  <int value="1"
      label="Number of icons lower than number of shortcuts menu items"/>
  <int value="2"
      label="Number of shortcuts menu items lower than number of icons"/>
</enum>

<enum name="ShortcutsMenuWinRegistrationResult">
  <int value="0" label="Success"/>
  <int value="1" label="Failed to create shortcuts menu icons directory"/>
  <int value="2" label="Failed to create icon from image family"/>
  <int value="3" label="Failed to begin jump list update"/>
  <int value="4" label="Failed to add link items to jump list"/>
  <int value="5" label="Failed to commit update to jump list"/>
</enum>

<enum name="SubAppInstallServiceResult">
  <int value="0" label="Success"/>
  <int value="1" label="SuccessBypassApproval"/>
  <int value="2" label="Failure general"/>
  <int value="3" label="Failure invalid manifest"/>
  <int value="4" label="Failure already installed"/>
  <int value="5" label="Failure user declined"/>
  <int value="6" label="Failure user declined embargo"/>
  <int value="7" label="Failure number of sub apps exceeds limit"/>
  <int value="8" label="Failure overlapping scope"/>
  <int value="9" label="Failure recursive install"/>
  <int value="10" label="Failure web apps not user installable"/>
  <int value="11" label="Failure limit per prompt is exceeded"/>
</enum>

<!-- LINT.IfChange(WebAppApplyManifestMigrationResult) -->

<enum name="WebAppApplyManifestMigrationResult">
  <int value="0" label="System was shutdown"/>
  <int value="1" label="Source app is invalid for migration"/>
  <int value="2" label="Destination app not found during migration"/>
  <int value="3" label="Source app not removed during migration"/>
  <int value="4" label="Destination app did not link to source app"/>
  <int value="5" label="A suggested migration was successful"/>
  <int value="6"
      label="A forced migration failed while copying icons from source app"/>
  <int value="7" label="A forced migration was successful"/>
</enum>

<!-- LINT.ThenChange(/chrome/browser/web_applications/scheduler/apply_manifest_migration_result.h:ApplyManifestMigrationResult) -->

<!-- LINT.IfChange(WebAppApplyPendingManifestUpdateResult) -->

<enum name="WebAppApplyPendingManifestUpdateResult">
  <int value="0" label="System shutdown"/>
  <int value="1" label="App not installed"/>
  <int value="2" label="Icon changes applied successfully"/>
  <int value="3" label="Failed to overwrite icons from pending icons"/>
  <int value="4" label="App has no pending updates"/>
  <int value="5" label="Failed to remove pending icon directories"/>
  <int value="6" label="App name updated successfully"/>
  <int value="7" label="App name and icon updated successfully"/>
</enum>

<!-- LINT.ThenChange(/chrome/browser/web_applications/commands/scheduler/apply_pending_manifest_update_result.h:ApplyPendingManifestUpdateResult) -->

<!-- LINT.IfChange(WebAppDatabaseOpenResult) -->

<enum name="WebAppDatabaseOpenResult">
  <int value="0" label="Success"/>
  <int value="1" label="OpenError"/>
  <int value="2" label="ReadError"/>
  <int value="3" label="DowngradeDetected"/>
</enum>

<!-- LINT.ThenChange(//chrome/browser/web_applications/web_app_database.h:WebAppDatabaseOpenResult) -->

<enum name="WebAppIconDownloaderResult">
  <int value="0" label="Success"/>
  <int value="1" label="PrimaryPageChanged"/>
  <int value="2" label="Failure"/>
  <int value="3" label="TimeoutFailure"/>
  <int value="4" label="TimeoutWithPartialDownloadSuccess"/>
</enum>

<enum name="WebAppIconsDownloadedResult">
  <int value="0" label="Completed"/>
  <int value="1" label="PrimaryPageChanged"/>
  <int value="2" label="AbortedDueToFailure"/>
</enum>

<!-- LINT.IfChange(WebAppIdentityUpdateResult) -->

<enum name="WebAppIdentityUpdateResult">
  <int value="0" label="User accepted the update from dialog"/>
  <int value="1" label="User chose to uninstall the app from the dialog"/>
  <int value="2" label="User chose to ignore this app's update"/>
  <int value="3" label="App was uninstalled while the dialog is being shown"/>
  <int value="4" label="Dialog terminated unexpectedly"/>
  <int value="5" label="Dialog closed the app"/>
</enum>

<!-- LINT.ThenChange(/chrome/browser/web_applications/ui_manager/update_dialog_types.h:WebAppIdentityUpdateResult) -->

<!-- LINT.IfChange(WebAppInstallFromMigrateFromFieldResult) -->

<enum name="WebAppInstallFromMigrateFromFieldResult">
  <int value="0" label="AlreadyInstalled"/>
  <int value="1" label="SuccessInstalled"/>
  <int value="2" label="ManifestToWebAppInstallInfoError"/>
  <int value="3" label="InstallFromInfoFailed"/>
  <int value="4" label="UpdateFailed"/>
  <int value="5" label="WebContentsWasDestroyed"/>
  <int value="6" label="NoSourceAppInstalled"/>
  <int value="7" label="UserNavigated"/>
  <int value="8" label="SystemShutdown"/>
</enum>

<!-- LINT.ThenChange(//chrome/browser/web_applications/commands/web_app_install_from_migrate_from_field_command.h:WebAppInstallFromMigrateFromFieldResult) -->

<enum name="WebAppLauncherLaunchResult">
  <int value="0" label="Success"/>
  <int value="1" label="Started">
    Terminated unexpectedly after starting launch.
  </int>
  <int value="2" label="Error">Launching the Chrome process failed.</int>
</enum>

<enum name="WebAppLaunchHandlerClientMode">
  <summary>
    The manifest launch_handler.client_mode of a web app as defined in:
    https://wicg.github.io/web-app-launch/
  </summary>
  <int value="0" label="Auto"/>
  <int value="1" label="NavigateNew"/>
  <int value="2" label="NavigateExisting"/>
  <int value="3" label="FocusExisting"/>
</enum>

<!-- LINT.IfChange(WebAppLaunchOrReparentResult) -->

<enum name="WebAppLaunchOrReparentResult">
  <int value="0" label="Reparented"/>
  <int value="1" label="Launched"/>
  <int value="2" label="Web contents gone"/>
  <int value="3" label="App not installed as dedicated window"/>
  <int value="4" label="Shutdown"/>
</enum>

<!-- LINT.ThenChange(//chrome/browser/web_applications/scheduler/launch_or_reparent_result.h:LaunchOrReparentResult) -->

<enum name="WebAppManifestIdParseResult">
  <int value="0" label="Success"/>
  <int value="1" label="Invalid Manifest Id"/>
  <int value="2" label="Manifest ID Resolution Failure"/>
  <int value="3" label="Manifest ID Mismatch"/>
</enum>

<!-- LINT.IfChange(WebAppManifestSilentUpdateCheckResult) -->

<enum name="WebAppManifestSilentUpdateCheckResult">
  <int value="0" label="App not installed (deprecated)"/>
  <int value="1" label="App update failed during installation"/>
  <int value="2" label="System shutdown"/>
  <int value="3" label="App silently updated"/>
  <int value="4" label="App is up to date"/>
  <int value="5" label="Icon read from disk failed"/>
  <int value="6" label="WebContents destroyed"/>
  <int value="7" label="App not updated, secure fields stored"/>
  <int value="8" label="App updated, secure fields stored"/>
  <int value="9" label="Pending icons failed to be written to disk"/>
  <int value="10" label="App has invalid manifest"/>
  <int value="11" label="App has invalid pending update info"/>
  <int value="12"
      label="Update stopped because user navigated page in the middle"/>
  <int value="13" label="Manifest could not be converted to a web app"/>
  <int value="14"
      label="App not updated due to icon diff throttle, secure fields stored"/>
  <int value="15"
      label="App not allowed to update because it opened in a browser tab, or
             it is not installed."/>
  <int value="16" label="App silently updated, icon differences were minimal"/>
</enum>

<!-- LINT.ThenChange(/chrome/browser/web_applications/scheduler/manifest_silent_update_result.h:ManifestSilentUpdateCheckResult) -->

<enum name="WebAppMlInstallResponse">
  <int value="0" label="Install accepted"/>
  <int value="1" label="Dialog ignored without interaction"/>
  <int value="2" label="Dialog cancelled via user interaction"/>
  <int value="3"
      label="Guardrails prevented usage of (any) ML response, no dialog shown"/>
  <int value="4"
      label="The reporter was destroyed, likely on page navigation or close."/>
</enum>

<enum name="WebAppOpenMode">
  <int value="0" label="kInWindowOther">
    Launched installed web app in standalone window by any method other than
    command line or a platform shortcut.
  </int>
  <int value="1" label="kInTab">
    Launched as an installed web application in a browser tab
  </int>
  <int value="2" label="kUnknown">
    The requested web application was not installed
  </int>
  <int value="3" label="kInWindowByUrl">
    Launched installed web app in standalone window from command line, using
    --app flag.
  </int>
  <int value="4" label="kInWindowByAppId">
    Launched installed web app in standalone window from command line, using
    --app-id flag.
  </int>
</enum>

<enum name="WebAppOriginAssociationFetchResult">
  <summary>Result of web app origin association file fetch.</summary>
  <int value="0" label="FetchSucceed"/>
  <int value="1" label="FailedNoResponseBody"/>
  <int value="2" label="FetchFailedInvalidUrl"/>
</enum>

<enum name="WebAppOriginAssociationParseResult">
  <summary>Result of web app origin association file fetch.</summary>
  <int value="0" label="ParseSucceed"/>
  <int value="1" label="ParseFailedNotADictionary"/>
  <int value="2" label="ParseFailedInvalidJson"/>
</enum>

<!-- LINT.IfChange(WebAppProtoParseResult) -->

<enum name="WebAppProtoParseResult">
  <int value="0" label="Success"/>
  <int value="1" label="NoSyncData"/>
  <int value="2" label="NoStartUrlInSyncData"/>
  <int value="3" label="InvalidStartUrl"/>
  <int value="4" label="NoScope"/>
  <int value="5" label="InvalidScope"/>
  <int value="6" label="InvalidScopeWithRef"/>
  <int value="7" label="InvalidScopeWithQuery"/>
  <int value="8" label="NoRelativeManifestId"/>
  <int value="9" label="InvalidManifestId"/>
  <int value="10" label="NoUserDisplayModeInSync"/>
  <int value="11" label="MissingUserDisplayModeForCurrentPlatform"/>
  <int value="12" label="NoSources"/>
  <int value="13" label="NoSourcesAndNotUninstalling"/>
  <int value="14" label="NoName"/>
  <int value="15" label="NoInstallState"/>
  <int value="16" label="InvalidInstallState"/>
  <int value="17" label="MissingChromeOsData"/>
  <int value="18" label="HasChromeOsDataOnNonChromeOs"/>
  <int value="19" label="NoManifestIcons"/>
  <int value="20" label="InvalidFileHandlerNoActionOrLaunchType"/>
  <int value="21" label="InvalidFileHandlerAction"/>
  <int value="22" label="InvalidFileHandlerAcceptEntry"/>
  <int value="23" label="(Obsolete) InvalidIconsInFileHandler"/>
  <int value="24" label="InvalidShareTarget"/>
  <int value="25" label="InvalidShareTargetAction"/>
  <int value="26" label="InvalidShareTargetFile"/>
  <int value="27" label="InvalidShortcutsMenuItemInfo"/>
  <int value="28" label="MoreDownloadedShortcutIconsThanInfos"/>
  <int value="29" label="EmptyAdditionalSearchTerm"/>
  <int value="30" label="InvalidProtocolHandler"/>
  <int value="31" label="InvalidProtocolHandlerUrl"/>
  <int value="32" label="EmptyAllowedLaunchProtocol"/>
  <int value="33" label="EmptyDisallowedLaunchProtocol"/>
  <int value="34" label="InvalidScopeExtension"/>
  <int value="35" label="OpaqueScopeExtensionOrigin"/>
  <int value="36" label="EmptyScopeExtensionOrigin"/>
  <int value="37" label="InvalidScopeExtensionScope"/>
  <int value="38" label="OpaqueValidatedScopeExtension"/>
  <int value="39" label="EmptyValidatedScopeExtensionOrigin"/>
  <int value="40" label="InvalidScopeExtensionValidated"/>
  <int value="41" label="ScopeExtensionOriginMismatchWithScope"/>
  <int value="42" label="InvalidManifestUrl"/>
  <int value="43" label="InvalidInstallUrl"/>
  <int value="44" label="EmptyPolicyId"/>
  <int value="45" label="InvalidIsolationDataVersion"/>
  <int value="46" label="InvalidIsolationDataLocation"/>
  <int value="47" label="InvalidPendingUpdateInfoLocation"/>
  <int value="48" label="DevModeMismatchInIsolationData"/>
  <int value="49" label="InvalidPendingUpdateInfoVersion"/>
  <int value="50" label="InvalidPendingUpdateIntegrityBlockData"/>
  <int value="51" label="InvalidIntegrityBlockData"/>
  <int value="52" label="InvalidUpdateManifestUrlIwa"/>
  <int value="53" label="InvalidUpdateChannel"/>
  <int value="54" label="InvalidGeneratedIconFix"/>
  <int value="55" label="EmptyPendingUpdateInfo"/>
  <int value="56" label="MismatchedPendingUpdateInfoIcons"/>
  <int value="57" label="MissingDownloadedIconsForPendingUpdate"/>
  <int value="58" label="InvalidPendingUpdateManifestIcons"/>
  <int value="59" label="InvalidPendingUpdateTrustedIcons"/>
  <int value="60" label="InvalidDownloadedManifestIconForPendingUpdate"/>
  <int value="61" label="InvalidDownloadedTrustedIconForPendingUpdate"/>
  <int value="62" label="MissingWasIgnoredForPendingUpdate"/>
  <int value="63" label="InvalidParsedTrustedIcons"/>
  <int value="64" label="(Obsolete) InvalidBorderlessUrlPatterns"/>
  <int value="65" label="InvalidInstalledBy"/>
  <int value="66" label="InvalidWebAppUnvalidatedMigrationSource"/>
  <int value="67" label="InvalidPendingMigrationInfo"/>
  <int value="68" label="InvalidWebAppValidatedMigrationSource"/>
  <int value="69" label="InvalidDisplayOverrideUrlPatterns"/>
  <int value="70" label="StartUrlNotInScope"/>
  <int value="71" label="MigratedFromManifestIdInvalid"/>
  <int value="72" label="AppIdMismatch"/>
  <int value="73" label="AppIdMismatchForSubApp"/>
</enum>

<!-- LINT.ThenChange(/chrome/browser/web_applications/web_app_database_serialization.h:ProtoParseResult) -->

<enum name="WebAppStorageKeyParseResult">
  <int value="0" label="Success"/>
  <int value="1" label="No Start URL"/>
  <int value="2" label="Invalid Start URL"/>
  <int value="3" label="Invalid Manifest Id"/>
</enum>

<enum name="WebAppSystemMediaControlsEvent">
  <summary>
    Event relating to web apps playing media. These correlate with
    system_media_controls_observer.h interface. Not all of these are common.
    This event is only fired from system media controls interactions and not
    direct interactions with playing media in PWAs. PlayingMedia is fired more
    frequently, e.g. when audio goes to the next track after finishing one
    track.
  </summary>
  <int value="0" label="PlayingMedia"/>
  <int value="1" label="Next"/>
  <int value="2" label="Previous"/>
  <int value="3" label="Play"/>
  <int value="4" label="Pause"/>
  <int value="5" label="PlayPause"/>
  <int value="6" label="Stop"/>
  <int value="7" label="Seek"/>
  <int value="8" label="SeekTo"/>
</enum>

<enum name="WebappUninstallDialogAction">
  <int value="0" label="Uninstall only"/>
  <int value="1" label="Uninstall and remove data"/>
  <int value="2" label="Dialog canceled"/>
</enum>

<!-- LINT.IfChange(WebappUninstallSource) -->

<enum name="WebappUninstallSource">
  <int value="0" label="Unknown surface, potentially in ChromeOS"/>
  <int value="1" label="Menu item from the 3-dot menu of a WebApp window"/>
  <int value="2" label="Context menu for a WebApp in chrome://apps"/>
  <int value="3" label="Via OS Settings or Controls"/>
  <int value="4" label="Uninstalled from Sync"/>
  <int value="5" label="App management surface, currently ChromeOS-only"/>
  <int value="6" label="Migration"/>
  <int value="7" label="App List (Launcher in ChromeOS)"/>
  <int value="8" label="Shelf (in ChromeOS)"/>
  <int value="9" label="Internally managed pre-installed app management"/>
  <int value="10" label="Externally managed pre-installed app management"/>
  <int value="11" label="Enterprise policy app management"/>
  <int value="12" label="System app management on ChromeOS"/>
  <int value="13" label="Placeholder app management for preinstalled apps"/>
  <int value="14" label="Externally managed Arc apps"/>
  <int value="15" label="SubApps API"/>
  <int value="16" label="Incomplete uninstall cleanup on startup."/>
  <int value="17" label="Sub apps uninstall kicked off by parent app"/>
  <int value="18" label="Lock screen app infrastructure"/>
  <int value="19" label="Cleaned up during tests"/>
  <int value="20" label="Deduping install urls"/>
  <int value="21" label="Healthcare app cleaning up during sessions."/>
  <int value="22" label="IWA enterprise policy"/>
  <int value="23" label="PWA.uninstall from devtools"/>
  <int value="24" label="Via IWA blocklist"/>
  <int value="25" label="source app is policy installed"/>
  <int value="26" label="Via toolbar after launch"/>
</enum>

<!-- LINT.ThenChange(/components/webapps/browser/installable/installable_metrics.h:WebappUninstallSource) -->

<!-- LINT.IfChange(WebAppUpdateDataReadResult) -->

<enum name="WebAppUpdateDataReadResult">
  <int value="0" label="Flag not enabled (deprecated)"/>
  <int value="1" label="App not installed"/>
  <int value="2" label="App does not have pending update"/>
  <int value="3" label="Failed to read existing app icons"/>
  <int value="4" label="Failed to read pending update app icons"/>
  <int value="5" label="Command failed due to system shutdown"/>
  <int value="6" label="Command ran successfully"/>
  <int value="7" label="Update metadata insignificant, silently updated"/>
</enum>

<!-- LINT.ThenChange(/chrome/browser/web_applications/commands/app_update_data_read_command.h:AppUpdateDataReadResult) -->

<enum name="WebAppUrlLoaderResult">
  <int value="0" label="UrlLoaded"/>
  <int value="1" label="RedirectedUrlLoaded"/>
  <int value="2" label="FailedUnknownReason"/>
  <int value="3" label="FailedPageTookTooLong"/>
  <int value="4" label="FailedWebContentsDestroyed"/>
  <int value="5" label="FailedErrorPageLoaded"/>
</enum>

<!-- LINT.IfChange(WebInstallServiceResult) -->

<enum name="WebInstallServiceResult">
  <int value="0" label="Success"/>
  <int value="1" label="Success Already Installed"/>
  <int value="2" label="Unexpected failure"/>
  <int value="3" label="Permission denied"/>
  <int value="4" label="Unsupported profile/context"/>
  <int value="5" label="Canceled by user (via the install dialog)"/>
  <int value="6" label="Install command failed"/>
  <int value="7" label="No custom id field in manifest"/>
  <int value="8" label="Manifest id mismatch"/>
  <int value="9" label="Install in progress"/>
</enum>

<!-- LINT.ThenChange(/chrome/browser/web_applications/web_install_service_impl.h:WebInstallServiceResult) -->

<!-- LINT.IfChange(WebInstallServiceType) -->

<enum name="WebInstallServiceType">
  <int value="0" label="Current Document"/>
  <int value="1" label="Background Document"/>
</enum>

<!-- LINT.ThenChange(/chrome/browser/web_applications/web_install_service_impl.h:WebInstallServiceType) -->

<enum name="WinRegistryErrorCode">
  <int value="0" label="ERROR_OTHER"/>
  <int value="1" label="ERROR_SUCCESS"/>
  <int value="2" label="ERROR_FILE_NOT_FOUND"/>
  <int value="3" label="ERROR_ACCESS_DENIED"/>
  <int value="4" label="ERROR_INVALID_HANDLE"/>
  <int value="5" label="ERROR_SHARING_VIOLATION"/>
  <int value="6" label="ERROR_LOCK_VIOLATION"/>
  <int value="7" label="ERROR_MORE_DATA"/>
  <int value="8" label="ERROR_REGISTRY_RECOVERED"/>
  <int value="9" label="ERROR_REGISTRY_CORRUPT"/>
  <int value="10" label="ERROR_REGISTRY_IO_FAILED"/>
  <int value="11" label="ERROR_NOT_REGISTRY_FILE"/>
  <int value="12" label="ERROR_REGISTRY_QUOTA_LIMIT"/>
  <int value="13" label="ERROR_REGISTRY_HIVE_RECOVERED"/>
  <int value="14" label="ERROR_CLUSTER_REGISTRY_INVALID_FUNCTION"/>
</enum>

</enums>

</histogram-configuration>
