Commit 88df8955 authored by Jazz Xu's avatar Jazz Xu Committed by Commit Bot

CrOS GMC: Add feature params to control default pin state.

This CL adds feature param to control default pin state for the
experiment.

Change-Id: I42f8244adfc5f8fb5a195f7a5243314864cd57a8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2488721Reviewed-by: default avatarTommy Steimel <steimel@chromium.org>
Reviewed-by: default avatarBecca Hughes <beccahughes@chromium.org>
Reviewed-by: default avatarTetsui Ohkubo <tetsui@chromium.org>
Commit-Queue: Jazz Xu <jazzhsu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#820471}
parent 7eed1814
......@@ -24,6 +24,7 @@
#include "components/prefs/pref_change_registrar.h"
#include "components/prefs/pref_registry_simple.h"
#include "components/prefs/pref_service.h"
#include "media/base/media_switches.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/display/manager/display_manager.h"
#include "ui/display/manager/managed_display_info.h"
......@@ -67,6 +68,21 @@ bool GetIsPinnedToShelfByDefault() {
return diagonal_len > kMinimumScreenSizeDiagonal;
}
// Used for getting default pin state for experiment.
bool GetIsPinnedToShelfByFeatureParams() {
switch (media::kCrosGlobalMediaControlsPinParam.Get()) {
case media::kCrosGlobalMediaControlsPinOptions::kPin:
return true;
case media::kCrosGlobalMediaControlsPinOptions::kNotPin:
return false;
case media::kCrosGlobalMediaControlsPinOptions::kHeuristic:
return GetIsPinnedToShelfByDefault();
}
NOTREACHED();
return false;
}
// Enum that specifies the pin state of global media controls.
enum PinState {
kDefault = 0,
......@@ -135,7 +151,7 @@ bool MediaTray::IsPinnedToShelf() {
case PinState::kUnpinned:
return false;
case PinState::kDefault:
return GetIsPinnedToShelfByDefault();
return GetIsPinnedToShelfByFeatureParams();
}
NOTREACHED();
......
......@@ -366,4 +366,51 @@ TEST_F(MediaTrayTest, DialogAnchor) {
EXPECT_EQ(initial_bounds, GetBubbleBounds());
}
class MediaTrayPinnedParamTest : public AshTestBase {
public:
MediaTrayPinnedParamTest() = default;
~MediaTrayPinnedParamTest() override = default;
void SetUp() override {
auto& pin_param = media::kCrosGlobalMediaControlsPinParam;
feature_list_.InitAndEnableFeatureWithParameters(
media::kGlobalMediaControlsForChromeOS,
{{pin_param.name,
pin_param.GetName(media::kCrosGlobalMediaControlsPinOptions::kPin)}});
AshTestBase::SetUp();
}
private:
base::test::ScopedFeatureList feature_list_;
};
TEST_F(MediaTrayPinnedParamTest, PinParamTest) {
UpdateDisplay("100x100");
EXPECT_TRUE(MediaTray::IsPinnedToShelf());
}
class MediaTrayNotPinnedParamTest : public AshTestBase {
public:
MediaTrayNotPinnedParamTest() = default;
~MediaTrayNotPinnedParamTest() override = default;
void SetUp() override {
auto& pin_param = media::kCrosGlobalMediaControlsPinParam;
feature_list_.InitAndEnableFeatureWithParameters(
media::kGlobalMediaControlsForChromeOS,
{{pin_param.name,
pin_param.GetName(
media::kCrosGlobalMediaControlsPinOptions::kNotPin)}});
AshTestBase::SetUp();
}
private:
base::test::ScopedFeatureList feature_list_;
};
TEST_F(MediaTrayNotPinnedParamTest, PinParamTest) {
UpdateDisplay("2560x1440");
EXPECT_FALSE(MediaTray::IsPinnedToShelf());
}
} // namespace ash
......@@ -381,6 +381,19 @@ const base::Feature kGlobalMediaControlsForCast{
const base::Feature kGlobalMediaControlsForChromeOS{
"GlobalMediaControlsForChromeOS", base::FEATURE_DISABLED_BY_DEFAULT};
constexpr base::FeatureParam<kCrosGlobalMediaControlsPinOptions>::Option
kCrosGlobalMediaControlsParamOptions[] = {
{kCrosGlobalMediaControlsPinOptions::kPin, "default-pinned"},
{kCrosGlobalMediaControlsPinOptions::kNotPin, "default-unpinned"},
{kCrosGlobalMediaControlsPinOptions::kHeuristic, "heuristic"}};
constexpr base::FeatureParam<kCrosGlobalMediaControlsPinOptions>
kCrosGlobalMediaControlsPinParam(
&kGlobalMediaControlsForChromeOS,
"CrosGlobalMediaControlsPinParam",
kCrosGlobalMediaControlsPinOptions::kHeuristic,
&kCrosGlobalMediaControlsParamOptions);
// Allow global media controls notifications to be dragged out into overlay
// notifications. It is no-op if kGlobalMediaControls is not enabled.
const base::Feature kGlobalMediaControlsOverlayControls{
......
......@@ -239,6 +239,17 @@ MEDIA_EXPORT std::string GetEffectiveAutoplayPolicy(
MEDIA_EXPORT bool IsVideoCaptureAcceleratedJpegDecodingEnabled();
enum class kCrosGlobalMediaControlsPinOptions {
kPin,
kNotPin,
kHeuristic,
};
// Feature param used to force default pin/unpin for global media controls in
// CrOS.
MEDIA_EXPORT extern const base::FeatureParam<kCrosGlobalMediaControlsPinOptions>
kCrosGlobalMediaControlsPinParam;
} // namespace media
#endif // MEDIA_BASE_MEDIA_SWITCHES_H_
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