#include "android_webview/browser/metrics/android_metrics_provider.h"
#include "android_webview/browser/metrics/system_state_util.h"
#include "base/metrics/histogram_functions.h"
#include "components/metrics/android_metrics_helper.h"
#include "components/prefs/pref_registry_simple.h"
namespace android_webview {
namespace {
void EmitMultipleUserProfilesHistogram() {
const MultipleUserProfilesState multiple_user_profiles_state =
GetMultipleUserProfilesState();
base::UmaHistogramEnumeration("Android.MultipleUserProfilesState",
multiple_user_profiles_state);
}
void EmitPrimaryCpuAbiBitness(PrimaryCpuAbiBitness primary_cpu_abi_bitness) {
if (primary_cpu_abi_bitness != PrimaryCpuAbiBitness::kUnknown) {
base::UmaHistogramEnumeration("Android.WebView.PrimaryCpuAbiBitness",
primary_cpu_abi_bitness);
}
}
}
void AndroidMetricsProvider::ProvidePreviousSessionData(
metrics::ChromeUserMetricsExtension* uma_proto) {
EmitMultipleUserProfilesHistogram();
CHECK(!local_state_saved_);
auto primary_cpu_abi_bitness = static_cast<PrimaryCpuAbiBitness>(
local_state_->GetInteger(prefs::kPrimaryCpuAbiBitnessPref));
EmitPrimaryCpuAbiBitness(primary_cpu_abi_bitness);
metrics::AndroidMetricsHelper::GetInstance()->EmitHistograms(
local_state_,
false);
}
void AndroidMetricsProvider::OnDidCreateMetricsLog() {
EmitMultipleUserProfilesHistogram();
PrimaryCpuAbiBitness primary_cpu_abi_bitness = GetPrimaryCpuAbiBitness();
if (!local_state_saved_) {
local_state_->SetInteger(prefs::kPrimaryCpuAbiBitnessPref,
static_cast<int>(primary_cpu_abi_bitness));
local_state_saved_ = true;
}
EmitPrimaryCpuAbiBitness(primary_cpu_abi_bitness);
metrics::AndroidMetricsHelper::GetInstance()->EmitHistograms(
local_state_,
true);
}
void AndroidMetricsProvider::RegisterPrefs(PrefRegistrySimple* registry) {
registry->RegisterIntegerPref(prefs::kPrimaryCpuAbiBitnessPref, 0);
metrics::AndroidMetricsHelper::RegisterPrefs(registry);
}
void AndroidMetricsProvider::ResetGlobalStateForTesting() {
metrics::AndroidMetricsHelper::ResetGlobalStateForTesting();
local_state_saved_ = false;
}
}