blob: ef25089a406809513e46cd44e62eec8409a3c044 [file] [log] [blame]
// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/webapps/browser/pwa_install_path_tracker.h"
#include <string>
#include "base/metrics/histogram_functions.h"
#include "base/notreached.h"
namespace webapps {
namespace {
void LogHistogram(PwaInstallPathTracker::InstallPathMetric metric) {
base::UmaHistogramEnumeration("WebApk.Install.PathToInstall", metric);
}
} // anonymous namespace
PwaInstallPathTracker::PwaInstallPathTracker() = default;
PwaInstallPathTracker::~PwaInstallPathTracker() = default;
void PwaInstallPathTracker::TrackInstallPath(
bool bottom_sheet,
WebappInstallSource install_source) {
bottom_sheet_ = bottom_sheet;
install_source_ = install_source;
PwaInstallPathTracker::InstallPathMetric metric = GetInstallPathMetric();
if (metric != InstallPathMetric::kUnknownMetric)
LogHistogram(metric);
}
void PwaInstallPathTracker::TrackIphWasShown() {
iph_was_shown_ = true;
}
PwaInstallPathTracker::InstallPathMetric
PwaInstallPathTracker::GetInstallPathMetric() {
if (bottom_sheet_) {
switch (install_source_) {
case WebappInstallSource::MENU_BROWSER_TAB:
case WebappInstallSource::MENU_CUSTOM_TAB:
return iph_was_shown_ ? InstallPathMetric::kAppMenuBottomSheetWithIph
: InstallPathMetric::kAppMenuBottomSheet;
case WebappInstallSource::API_BROWSER_TAB:
case WebappInstallSource::API_CUSTOM_TAB:
return iph_was_shown_
? InstallPathMetric::kApiInitiatedBottomSheetWithIph
: InstallPathMetric::kApiInitiatedBottomSheet;
case WebappInstallSource::AMBIENT_BADGE_BROWSER_TAB:
case WebappInstallSource::AMBIENT_BADGE_CUSTOM_TAB:
return iph_was_shown_ ? InstallPathMetric::kAmbientBottomSheetWithIph
: InstallPathMetric::kAmbientBottomSheet;
default:
NOTREACHED();
break;
}
} else {
switch (install_source_) {
case WebappInstallSource::MENU_BROWSER_TAB:
case WebappInstallSource::MENU_CUSTOM_TAB:
return iph_was_shown_ ? InstallPathMetric::kAppMenuInstallWithIph
: InstallPathMetric::kAppMenuInstall;
case WebappInstallSource::API_BROWSER_TAB:
case WebappInstallSource::API_CUSTOM_TAB:
return iph_was_shown_ ? InstallPathMetric::kApiInitiatedInstallWithIph
: InstallPathMetric::kApiInitiatedInstall;
case WebappInstallSource::AMBIENT_BADGE_BROWSER_TAB:
case WebappInstallSource::AMBIENT_BADGE_CUSTOM_TAB:
return iph_was_shown_ ? InstallPathMetric::kAmbientInfobarWithIph
: InstallPathMetric::kAmbientInfobar;
default:
NOTREACHED();
break;
}
}
return InstallPathMetric::kUnknownMetric;
}
void PwaInstallPathTracker::Reset() {
install_source_ = WebappInstallSource::COUNT;
bottom_sheet_ = false;
iph_was_shown_ = false;
}
} // namespace webapps