1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/metrics/ui/form_factor_metrics_provider.h"
#include "build/config/chromebox_for_meetings/buildflags.h" // PLATFORM_CFM
#include "build/build_config.h"
#include "ui/base/device_form_factor.h"
#if BUILDFLAG(IS_ANDROID)
#include "base/android/build_info.h"
#endif
namespace metrics {
void FormFactorMetricsProvider::ProvideSystemProfileMetrics(
SystemProfileProto* system_profile_proto) {
system_profile_proto->mutable_hardware()->set_form_factor(GetFormFactor());
}
SystemProfileProto::Hardware::FormFactor
FormFactorMetricsProvider::GetFormFactor() const {
// Temporary workaround to report foldable for UMA without affecting
// other form factors. This will be removed and replaced with a long-term
// solution in DeviceFormFactor::GetDeviceFormFactor() after conducting an
// audit of form factor usage or exposing ui_mode.
// VariationsServiceClient::GetCurrentFormFactor() also needs to be updated.
#if BUILDFLAG(IS_ANDROID)
if (base::android::BuildInfo::GetInstance()->is_foldable()) {
return SystemProfileProto::Hardware::FORM_FACTOR_FOLDABLE;
}
#endif
#if BUILDFLAG(PLATFORM_CFM)
return SystemProfileProto::Hardware::FORM_FACTOR_MEET_DEVICE;
#else
switch (ui::GetDeviceFormFactor()) {
case ui::DEVICE_FORM_FACTOR_DESKTOP:
return SystemProfileProto::Hardware::FORM_FACTOR_DESKTOP;
case ui::DEVICE_FORM_FACTOR_PHONE:
return SystemProfileProto::Hardware::FORM_FACTOR_PHONE;
case ui::DEVICE_FORM_FACTOR_TABLET:
return SystemProfileProto::Hardware::FORM_FACTOR_TABLET;
case ui::DEVICE_FORM_FACTOR_TV:
return SystemProfileProto::Hardware::FORM_FACTOR_TV;
case ui::DEVICE_FORM_FACTOR_AUTOMOTIVE:
return SystemProfileProto::Hardware::FORM_FACTOR_AUTOMOTIVE;
case ui::DEVICE_FORM_FACTOR_FOLDABLE:
return SystemProfileProto::Hardware::FORM_FACTOR_FOLDABLE;
default:
return SystemProfileProto::Hardware::FORM_FACTOR_UNKNOWN;
}
#endif // BUILDFLAG(PLATFORM_CFM)
}
} // namespace metrics
|