blob: 03d289302431ecc7285e32c657cb032d6d53ee01 [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.
#include "chrome/browser/web_applications/commands/command_metrics.h"
#include <string_view>
#include "base/metrics/histogram_functions.h"
#include "base/strings/strcat.h"
namespace web_app {
namespace {
constexpr std::string_view ToVariantString(InstallCommand command) {
// These must exactly match the variant strings in .../webapps/histograms.xml.
switch (command) {
case InstallCommand::kFetchManifestAndInstall:
return ".FetchManifestAndInstall";
case InstallCommand::kInstallAppFromVerifiedManifest:
return ".InstallAppFromVerifiedManifest";
case InstallCommand::kInstallFromInfo:
return ".InstallFromInfo";
case InstallCommand::kInstallIsolatedWebApp:
return ".InstallIsolatedWebApp";
case InstallCommand::kWebAppInstallFromUrl:
return ".WebInstallFromUrl";
}
}
constexpr std::string_view ToVariantString(WebAppType type) {
// These must exactly match the variant strings in .../webapps/histograms.xml.
switch (type) {
case WebAppType::kCraftedApp:
return ".Crafted";
case WebAppType::kDiyApp:
return ".Diy";
case WebAppType::kUnknown:
return ".Unknown";
case WebAppType::kIsolatedWebApp:
return ".Isolated";
}
}
} // namespace
void RecordInstallMetrics(InstallCommand command,
WebAppType app_type,
webapps::InstallResultCode result,
webapps::WebappInstallSource source) {
base::UmaHistogramEnumeration("WebApp.InstallCommand.ResultCode", result);
base::UmaHistogramEnumeration(
base::StrCat(
{"WebApp.InstallCommand", ToVariantString(command), ".ResultCode"}),
result);
base::UmaHistogramEnumeration(
base::StrCat(
{"WebApp.InstallCommand", ToVariantString(app_type), ".ResultCode"}),
result);
base::UmaHistogramEnumeration(
base::StrCat({"WebApp.InstallCommand", ToVariantString(command),
ToVariantString(app_type), ".ResultCode"}),
result);
base::UmaHistogramEnumeration("WebApp.InstallCommand.Surface", source);
base::UmaHistogramEnumeration(
base::StrCat(
{"WebApp.InstallCommand", ToVariantString(command), ".Surface"}),
source);
base::UmaHistogramEnumeration(
base::StrCat(
{"WebApp.InstallCommand", ToVariantString(app_type), ".Surface"}),
source);
base::UmaHistogramEnumeration(
base::StrCat({"WebApp.InstallCommand", ToVariantString(command),
ToVariantString(app_type), ".Surface"}),
source);
}
} // namespace web_app