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 @@ ...@@ -11,6 +11,7 @@
#include "chrome/browser/google/google_brand.h" #include "chrome/browser/google/google_brand.h"
#include "chrome/browser/net/system_network_context_manager.h" #include "chrome/browser/net/system_network_context_manager.h"
#include "chrome/common/channel_info.h" #include "chrome/common/channel_info.h"
#include "components/variations/service/variations_service_client.h"
#include "components/version_info/version_info.h" #include "components/version_info/version_info.h"
#include "services/network/public/cpp/shared_url_loader_factory.h" #include "services/network/public/cpp/shared_url_loader_factory.h"
...@@ -19,7 +20,9 @@ ...@@ -19,7 +20,9 @@
#endif #endif
#if BUILDFLAG(IS_CHROMEOS_ASH) #if BUILDFLAG(IS_CHROMEOS_ASH)
#include "chrome/browser/chromeos/policy/enrollment_requisition_manager.h"
#include "chrome/browser/chromeos/settings/cros_settings.h" #include "chrome/browser/chromeos/settings/cros_settings.h"
#include "chromeos/components/chromebox_for_meetings/buildflags/buildflags.h"
#endif #endif
#if defined(OS_WIN) || defined(OS_MAC) #if defined(OS_WIN) || defined(OS_MAC)
...@@ -78,6 +81,20 @@ bool ChromeVariationsServiceClient::OverridesRestrictParameter( ...@@ -78,6 +81,20 @@ bool ChromeVariationsServiceClient::OverridesRestrictParameter(
#endif #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() { bool ChromeVariationsServiceClient::IsEnterprise() {
#if defined(OS_WIN) || defined(OS_MAC) #if defined(OS_WIN) || defined(OS_MAC)
return base::IsMachineExternallyManaged(); return base::IsMachineExternallyManaged();
......
...@@ -28,6 +28,7 @@ class ChromeVariationsServiceClient ...@@ -28,6 +28,7 @@ class ChromeVariationsServiceClient
scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override; scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override;
network_time::NetworkTimeTracker* GetNetworkTimeTracker() override; network_time::NetworkTimeTracker* GetNetworkTimeTracker() override;
bool OverridesRestrictParameter(std::string* parameter) override; bool OverridesRestrictParameter(std::string* parameter) override;
variations::Study::FormFactor GetCurrentFormFactor() override;
bool IsEnterprise() override; bool IsEnterprise() override;
private: private:
......
...@@ -376,8 +376,12 @@ TEST_F(FieldTrialUtilTest, ...@@ -376,8 +376,12 @@ TEST_F(FieldTrialUtilTest,
TEST_F(FieldTrialUtilTest, TEST_F(FieldTrialUtilTest,
AssociateParamsFromFieldTrialConfigWithAllFormFactors) { AssociateParamsFromFieldTrialConfigWithAllFormFactors) {
const Study::Platform platform = Study::PLATFORM_WINDOWS; const Study::Platform platform = Study::PLATFORM_WINDOWS;
const Study::FormFactor form_factors[] = const Study::FormFactor form_factors[] = {
{Study::DESKTOP, Study::PHONE, Study::TABLET}; Study::DESKTOP,
Study::PHONE,
Study::TABLET,
Study::MEET_DEVICE,
};
const FieldTrialTestingExperimentParams array_kFieldTrialConfig_params[] = const FieldTrialTestingExperimentParams array_kFieldTrialConfig_params[] =
{{"x", "1"}, {"y", "2"}}; {{"x", "1"}, {"y", "2"}};
const FieldTrialTestingExperiment array_kFieldTrialConfig_experiments[] = { const FieldTrialTestingExperiment array_kFieldTrialConfig_experiments[] = {
...@@ -450,10 +454,13 @@ TEST_F(FieldTrialUtilTest, ...@@ -450,10 +454,13 @@ TEST_F(FieldTrialUtilTest,
const Study::Platform platform = Study::PLATFORM_WINDOWS; const Study::Platform platform = Study::PLATFORM_WINDOWS;
const Study::FormFactor current_form_factor = const Study::FormFactor current_form_factor =
variation_service_client_.GetCurrentFormFactor(); variation_service_client_.GetCurrentFormFactor();
const Study::FormFactor all_form_factors[] = const Study::FormFactor all_form_factors[] = {
{Study::DESKTOP, Study::PHONE, Study::TABLET}; Study::DESKTOP,
for (size_t i = 0; i < base::size(all_form_factors); ++i) { Study::PHONE,
const Study::FormFactor form_factor = all_form_factors[i]; Study::TABLET,
Study::MEET_DEVICE,
};
for (const Study::FormFactor form_factor : all_form_factors) {
if (form_factor == current_form_factor) if (form_factor == current_form_factor)
continue; continue;
const FieldTrialTestingExperimentParams array_kFieldTrialConfig_params[] = const FieldTrialTestingExperimentParams array_kFieldTrialConfig_params[] =
......
...@@ -244,6 +244,8 @@ message Study { ...@@ -244,6 +244,8 @@ message Study {
TABLET = 2; TABLET = 2;
// Chrome OS running in single-app Kiosk mode. // 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. // Enum to pass as optional bool.
......
...@@ -88,9 +88,9 @@ TEST(VariationsStudyFilteringTest, CheckStudyChannel) { ...@@ -88,9 +88,9 @@ TEST(VariationsStudyFilteringTest, CheckStudyChannel) {
} }
TEST(VariationsStudyFilteringTest, CheckStudyFormFactor) { TEST(VariationsStudyFilteringTest, CheckStudyFormFactor) {
const Study::FormFactor form_factors[] = { const Study::FormFactor form_factors[] = {Study::DESKTOP, Study::PHONE,
Study::DESKTOP, Study::PHONE, Study::TABLET, Study::KIOSK, Study::TABLET, Study::KIOSK,
}; Study::MEET_DEVICE};
ASSERT_EQ(Study::FormFactor_ARRAYSIZE, ASSERT_EQ(Study::FormFactor_ARRAYSIZE,
static_cast<int>(base::size(form_factors))); 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