Commit 1ca3c153 authored by Alan Cutter's avatar Alan Cutter Committed by Chromium LUCI CQ

Add WebApp.Preinstalled.UninstallAndReplaceCount UMA histogram

This CL adds metrics for how often preinstalled web apps migrate and
remove an existing app install.

This data is useful to monitor rollouts of default web apps that are
replacing old Chrome apps to ensure the migration is happening as
expected.

Bug: 809304, 1058265
Change-Id: Ie9edb4a1cf89e84d7e56a20bad028dd8ea1aeb07
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2561999
Commit-Queue: Alan Cutter <alancutter@chromium.org>
Reviewed-by: default avatarGlen Robertson <glenrob@chromium.org>
Reviewed-by: default avatarRobert Kaplow <rkaplow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#832148}
parent 184cea3e
......@@ -18,7 +18,7 @@
#include "base/files/file_util.h"
#include "base/json/json_file_value_serializer.h"
#include "base/json/json_reader.h"
#include "base/metrics/histogram_functions.h"
#include "base/metrics/histogram_macros.h"
#include "base/no_destructor.h"
#include "base/path_service.h"
#include "base/stl_util.h"
......@@ -142,6 +142,8 @@ const char* ExternalWebAppManager::kHistogramDisabledCount =
"WebApp.Preinstalled.DisabledCount";
const char* ExternalWebAppManager::kHistogramConfigErrorCount =
"WebApp.Preinstalled.ConfigErrorCount";
const char* ExternalWebAppManager::kHistogramUninstallAndReplaceCount =
"WebApp.Preinstalled.UninstallAndReplaceCount";
void ExternalWebAppManager::RegisterProfilePrefs(
user_prefs::PrefRegistrySyncable* registry) {
......@@ -315,12 +317,12 @@ void ExternalWebAppManager::PostProcessConfigs(ConsumeInstallOptions callback,
return false;
});
base::UmaHistogramCounts100(ExternalWebAppManager::kHistogramEnabledCount,
total_count - disabled_count);
base::UmaHistogramCounts100(ExternalWebAppManager::kHistogramDisabledCount,
disabled_count);
base::UmaHistogramCounts100(ExternalWebAppManager::kHistogramConfigErrorCount,
parsed_configs.error_count);
UMA_HISTOGRAM_COUNTS_100(ExternalWebAppManager::kHistogramEnabledCount,
total_count - disabled_count);
UMA_HISTOGRAM_COUNTS_100(ExternalWebAppManager::kHistogramDisabledCount,
disabled_count);
UMA_HISTOGRAM_COUNTS_100(ExternalWebAppManager::kHistogramConfigErrorCount,
parsed_configs.error_count);
std::move(callback).Run(std::move(parsed_configs.options_list));
}
......@@ -347,10 +349,16 @@ void ExternalWebAppManager::OnExternalWebAppsSynchronized(
prefs::kWebAppsLastPreinstallSynchronizeVersion,
version_info::GetMajorVersionNumber());
size_t uninstall_and_replace_count = 0;
for (const auto& url_and_result : install_results) {
base::UmaHistogramEnumeration("Webapp.InstallResult.Default",
url_and_result.second.code);
UMA_HISTOGRAM_ENUMERATION("Webapp.InstallResult.Default",
url_and_result.second.code);
if (url_and_result.second.did_uninstall_and_replace)
++uninstall_and_replace_count;
}
UMA_HISTOGRAM_COUNTS_100(
ExternalWebAppManager::kHistogramUninstallAndReplaceCount,
uninstall_and_replace_count);
if (callback) {
std::move(callback).Run(std::move(install_results),
......
......@@ -48,6 +48,7 @@ class ExternalWebAppManager {
static const char* kHistogramEnabledCount;
static const char* kHistogramDisabledCount;
static const char* kHistogramConfigErrorCount;
static const char* kHistogramUninstallAndReplaceCount;
static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
......
......@@ -246,6 +246,7 @@ IN_PROC_BROWSER_TEST_F(ExternalWebAppMigrationBrowserTest,
EXPECT_TRUE(IsExtensionAppInstalled());
{
base::HistogramTester histograms;
extensions::TestExtensionRegistryObserver uninstall_observer(
extensions::ExtensionRegistry::Get(profile()));
......@@ -256,6 +257,8 @@ IN_PROC_BROWSER_TEST_F(ExternalWebAppMigrationBrowserTest,
uninstall_observer.WaitForExtensionUninstalled();
EXPECT_EQ(uninstalled_app->id(), kExtensionId);
EXPECT_FALSE(IsExtensionAppInstalled());
histograms.ExpectUniqueSample(
ExternalWebAppManager::kHistogramUninstallAndReplaceCount, 1, 1);
}
}
......@@ -272,6 +275,7 @@ IN_PROC_BROWSER_TEST_F(ExternalWebAppMigrationBrowserTest,
// Re-run migration.
{
base::HistogramTester histograms;
base::AutoReset<bool> testing_scope =
SetExternalAppInstallFeatureAlwaysEnabledForTesting();
ASSERT_TRUE(IsExternalAppInstallFeatureEnabled(kMigrationFlag));
......@@ -286,6 +290,8 @@ IN_PROC_BROWSER_TEST_F(ExternalWebAppMigrationBrowserTest,
uninstall_observer.WaitForExtensionUninstalled();
EXPECT_EQ(uninstalled_app->id(), kExtensionId);
EXPECT_FALSE(IsExtensionAppInstalled());
histograms.ExpectUniqueSample(
ExternalWebAppManager::kHistogramUninstallAndReplaceCount, 1, 1);
}
}
......@@ -341,6 +347,7 @@ IN_PROC_BROWSER_TEST_F(ExternalWebAppMigrationBrowserTest, MigratePreferences) {
EXPECT_TRUE(IsExtensionAppInstalled());
{
base::HistogramTester histograms;
extensions::TestExtensionRegistryObserver uninstall_observer(
extensions::ExtensionRegistry::Get(profile()));
......@@ -351,6 +358,8 @@ IN_PROC_BROWSER_TEST_F(ExternalWebAppMigrationBrowserTest, MigratePreferences) {
uninstall_observer.WaitForExtensionUninstalled();
EXPECT_EQ(uninstalled_app->id(), kExtensionId);
EXPECT_FALSE(IsExtensionAppInstalled());
histograms.ExpectUniqueSample(
ExternalWebAppManager::kHistogramUninstallAndReplaceCount, 1, 1);
}
}
......@@ -494,6 +503,8 @@ IN_PROC_BROWSER_TEST_F(ExternalWebAppMigrationBrowserTest,
ExternalWebAppManager::kHistogramDisabledCount, 0, 1);
histograms.ExpectUniqueSample(
ExternalWebAppManager::kHistogramConfigErrorCount, 0, 1);
histograms.ExpectUniqueSample(
ExternalWebAppManager::kHistogramUninstallAndReplaceCount, 1, 1);
}
}
}
......
......@@ -10,6 +10,7 @@
#include "base/bind.h"
#include "base/callback.h"
#include "base/callback_helpers.h"
#include "base/metrics/histogram_functions.h"
#include "base/strings/utf_string_conversions.h"
#include "base/threading/thread_task_runner_handle.h"
#include "chrome/browser/favicon/favicon_utils.h"
......
......@@ -16984,6 +16984,17 @@ regressions. -->
</summary>
</histogram>
<histogram name="WebApp.Preinstalled.UninstallAndReplaceCount" units="apps"
expires_after="2021-04-01">
<owner>alancutter@chromium.org</owner>
<owner>desktop-pwas-team@google.com</owner>
<summary>
Records how many preinstalled web app installations uninstalled and replaced
an old default app (web app or Chrome app). This corresponds to the
&quot;uninstall_and_replace&quot; field in preinstalled web app configs.
</summary>
</histogram>
<histogram name="WebApp.Shortcuts.Creation.Result"
enum="ShortcutsCreationResult" expires_after="M93">
<owner>phillis@chromium.org</owner>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment