Commit fce1ef4d authored by Kyle Williams's avatar Kyle Williams Committed by Chromium LUCI CQ

variations: Support "MEET_DEVICE" form_factor for Finch studies

Create a new form factor for Meeting Room Hardware Workspace Devices,
also known as Chromebox for Meetings, to allow finch support for CfM
specific experiments.

BUG=b:177442621
TEST=ensure unit tests work correctly and test with basic logging to
ensure the correct form factor chosen in chrome.

Change-Id: I89af958017dfb2e68c3e423be7832ef0d7dc8a47
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2628108
Commit-Queue: Kyle Williams <kdgwill@chromium.org>
Reviewed-by: default avatarAlexei Svitkine <asvitkine@chromium.org>
Auto-Submit: Kyle Williams <kdgwill@chromium.org>
Cr-Commit-Position: refs/heads/master@{#844738}
parent 36ece3db
......@@ -11,6 +11,7 @@
#include "chrome/browser/google/google_brand.h"
#include "chrome/browser/net/system_network_context_manager.h"
#include "chrome/common/channel_info.h"
#include "components/variations/service/variations_service_client.h"
#include "components/version_info/version_info.h"
#include "services/network/public/cpp/shared_url_loader_factory.h"
......@@ -19,7 +20,9 @@
#endif
#if BUILDFLAG(IS_CHROMEOS_ASH)
#include "chrome/browser/chromeos/policy/enrollment_requisition_manager.h"
#include "chrome/browser/chromeos/settings/cros_settings.h"
#include "chromeos/components/chromebox_for_meetings/buildflags/buildflags.h"
#endif
#if defined(OS_WIN) || defined(OS_MAC)
......@@ -78,6 +81,20 @@ bool ChromeVariationsServiceClient::OverridesRestrictParameter(
#endif
}
variations::Study::FormFactor
ChromeVariationsServiceClient::GetCurrentFormFactor() {
#if BUILDFLAG(IS_CHROMEOS_ASH)
#if BUILDFLAG(PLATFORM_CFM)
bool is_meet_device =
policy::EnrollmentRequisitionManager::IsRemoraRequisition();
if (is_meet_device)
return variations::Study::MEET_DEVICE;
#endif // BUILDFLAG(PLATFORM_CFM)
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
return variations::VariationsServiceClient::GetCurrentFormFactor();
}
bool ChromeVariationsServiceClient::IsEnterprise() {
#if defined(OS_WIN) || defined(OS_MAC)
return base::IsMachineExternallyManaged();
......
......@@ -28,6 +28,7 @@ class ChromeVariationsServiceClient
scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override;
network_time::NetworkTimeTracker* GetNetworkTimeTracker() override;
bool OverridesRestrictParameter(std::string* parameter) override;
variations::Study::FormFactor GetCurrentFormFactor() override;
bool IsEnterprise() override;
private:
......
......@@ -376,8 +376,12 @@ TEST_F(FieldTrialUtilTest,
TEST_F(FieldTrialUtilTest,
AssociateParamsFromFieldTrialConfigWithAllFormFactors) {
const Study::Platform platform = Study::PLATFORM_WINDOWS;
const Study::FormFactor form_factors[] =
{Study::DESKTOP, Study::PHONE, Study::TABLET};
const Study::FormFactor form_factors[] = {
Study::DESKTOP,
Study::PHONE,
Study::TABLET,
Study::MEET_DEVICE,
};
const FieldTrialTestingExperimentParams array_kFieldTrialConfig_params[] =
{{"x", "1"}, {"y", "2"}};
const FieldTrialTestingExperiment array_kFieldTrialConfig_experiments[] = {
......@@ -450,10 +454,13 @@ TEST_F(FieldTrialUtilTest,
const Study::Platform platform = Study::PLATFORM_WINDOWS;
const Study::FormFactor current_form_factor =
variation_service_client_.GetCurrentFormFactor();
const Study::FormFactor all_form_factors[] =
{Study::DESKTOP, Study::PHONE, Study::TABLET};
for (size_t i = 0; i < base::size(all_form_factors); ++i) {
const Study::FormFactor form_factor = all_form_factors[i];
const Study::FormFactor all_form_factors[] = {
Study::DESKTOP,
Study::PHONE,
Study::TABLET,
Study::MEET_DEVICE,
};
for (const Study::FormFactor form_factor : all_form_factors) {
if (form_factor == current_form_factor)
continue;
const FieldTrialTestingExperimentParams array_kFieldTrialConfig_params[] =
......
......@@ -239,11 +239,13 @@ message Study {
// Chrome Desktop on Windows, Mac, Linux, or Chrome OS.
DESKTOP = 0;
// Phone-based mobile Chrome, e.g. an Android phone or iPhone.
PHONE = 1;
PHONE = 1;
// Tablet-based mobile Chrome, e.g. an Android tablet or iPad.
TABLET = 2;
TABLET = 2;
// Chrome OS running in single-app Kiosk mode.
KIOSK = 3;
KIOSK = 3;
// Chrome OS running on Meet Hardware devices e.g. Chromebox For Meetings.
MEET_DEVICE = 4;
}
// Enum to pass as optional bool.
......
......@@ -88,9 +88,9 @@ TEST(VariationsStudyFilteringTest, CheckStudyChannel) {
}
TEST(VariationsStudyFilteringTest, CheckStudyFormFactor) {
const Study::FormFactor form_factors[] = {
Study::DESKTOP, Study::PHONE, Study::TABLET, Study::KIOSK,
};
const Study::FormFactor form_factors[] = {Study::DESKTOP, Study::PHONE,
Study::TABLET, Study::KIOSK,
Study::MEET_DEVICE};
ASSERT_EQ(Study::FormFactor_ARRAYSIZE,
static_cast<int>(base::size(form_factors)));
......
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