blob: e23ded93e9b1cef95b76eece91f2a839f1cdb3c7 [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_WEB_APPLICATIONS_COMMANDS_COMMAND_METRICS_H_
#define CHROME_BROWSER_WEB_APPLICATIONS_COMMANDS_COMMAND_METRICS_H_
#include "components/webapps/browser/install_result_code.h"
#include "components/webapps/browser/installable/installable_metrics.h"
namespace web_app {
// These values must be kept in sync with the variant list in
// .../webapps/histograms.xml.
// LINT.IfChange(InstallCommand)
enum class InstallCommand {
// A user-triggered installation from an install surface in the browser.
kFetchManifestAndInstall,
// An installation triggered by the Web App Pre-install system.
kInstallAppFromVerifiedManifest,
// A programmatic installation using pre-filled `WebAppInstallInfo`.
kInstallFromInfo,
// An installation of an Isolated Web App.
kInstallIsolatedWebApp,
// An installation triggered by the `navigator.install()` Web API.
kWebAppInstallFromUrl,
};
// LINT.ThenChange(//tools/metrics/histograms/metadata/webapps/histograms.xml)
// These values must be kept in sync with the variant list in
// .../webapps/histograms.xml.
// LINT.IfChange(WebAppType)
enum class WebAppType {
// An app installed from a site that meets all PWA criteria.
kCraftedApp,
// An app installed from a site that does not meet all PWA criteria, where
// metadata is synthesized by the browser.
kDiyApp,
// Not enough information is known to determine if the app would have been
// crafted or diy.
kUnknown,
// An Isolated Web App.
kIsolatedWebApp,
};
// LINT.ThenChange(//tools/metrics/histograms/metadata/webapps/histograms.xml)
void RecordInstallMetrics(InstallCommand command,
WebAppType app_type,
webapps::InstallResultCode result,
webapps::WebappInstallSource source);
} // namespace web_app
#endif // CHROME_BROWSER_WEB_APPLICATIONS_COMMANDS_COMMAND_METRICS_H_