Commit 7a2c82c8 authored by Kristyn Hamasaki's avatar Kristyn Hamasaki Committed by Commit Bot

Convert some Slider fields to be properties

Bug: 972150
Change-Id: Iaceb58f88fa48baedda753c0520a552edeaff556
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1649306Reviewed-by: default avatarScott Violet <sky@chromium.org>
Commit-Queue: Kristyn Hamasaki <khamasaki@google.com>
Cr-Commit-Position: refs/heads/master@{#672721}
parent 2bf52e12
......@@ -151,7 +151,7 @@ void UnifiedVolumeView::Update(bool by_user) {
float level = CrasAudioHandler::Get()->GetOutputVolumePercent() / 100.f;
// Indicate that the slider is inactive when it's muted.
slider()->UpdateState(!is_muted);
slider()->SetIsActive(!is_muted);
// The button should be gray whay muted and colored otherwise.
button()->SetToggled(!is_muted);
......@@ -165,7 +165,7 @@ void UnifiedVolumeView::Update(bool by_user) {
// there will be a small discrepancy between slider's value and volume level
// on audio side. To avoid the jittering in slider UI, do not set change
// slider value if the change is less than the threshold.
if (std::abs(level - slider()->value()) < kSliderIgnoreUpdateThreshold)
if (std::abs(level - slider()->GetValue()) < kSliderIgnoreUpdateThreshold)
return;
SetSliderValue(level, by_user);
......
......@@ -130,7 +130,7 @@ UnifiedSliderView::UnifiedSliderView(UnifiedSliderListener* listener,
// Prevent an accessibility event while initiallizing this view. Typically
// the first update of the slider value is conducted by the caller function
// to reflect the current value.
slider_->set_enable_accessibility_events(false);
slider_->SetEnableAccessibilityEvents(false);
slider_->GetViewAccessibility().OverrideName(
l10n_util::GetStringUTF16(accessible_name_id));
......@@ -152,7 +152,7 @@ void UnifiedSliderView::SetSliderValue(float value, bool by_user) {
slider_->SetValue(value);
if (by_user)
slider_->set_enable_accessibility_events(true);
slider_->SetEnableAccessibilityEvents(true);
}
const char* UnifiedSliderView::GetClassName() const {
......
......@@ -76,13 +76,34 @@ Slider::Slider(SliderListener* listener)
Slider::~Slider() = default;
float Slider::GetValue() const {
return value_;
}
void Slider::SetValue(float value) {
SetValueInternal(value, VALUE_CHANGED_BY_API);
}
void Slider::UpdateState(bool control_on) {
is_active_ = control_on;
SchedulePaint();
bool Slider::GetEnableAccessibilityEvents() const {
return accessibility_events_enabled_;
}
void Slider::SetEnableAccessibilityEvents(bool enabled) {
if (accessibility_events_enabled_ == enabled)
return;
accessibility_events_enabled_ = enabled;
OnPropertyChanged(&accessibility_events_enabled_, kPropertyEffectsNone);
}
bool Slider::GetIsActive() const {
return is_active_;
}
void Slider::SetIsActive(bool is_active) {
if (is_active == is_active_)
return;
is_active_ = is_active;
OnPropertyChanged(&is_active_, kPropertyEffectsPaint);
}
float Slider::GetAnimatingValue() const{
......@@ -140,8 +161,9 @@ void Slider::SetValueInternal(float value, SliderChangeReason reason) {
move_animation_->SetSlideDuration(kSlideValueChangeDurationMs);
move_animation_->Show();
}
OnPropertyChanged(&value_, kPropertyEffectsNone);
} else {
SchedulePaint();
OnPropertyChanged(&value_, kPropertyEffectsPaint);
}
if (accessibility_events_enabled_) {
......@@ -355,6 +377,9 @@ void Slider::OnGestureEvent(ui::GestureEvent* event) {
BEGIN_METADATA(Slider)
METADATA_PARENT_CLASS(View)
ADD_PROPERTY_METADATA(Slider, float, Value)
ADD_PROPERTY_METADATA(Slider, bool, EnableAccessibilityEvents)
ADD_PROPERTY_METADATA(Slider, bool, IsActive)
END_METADATA()
} // namespace views
......@@ -49,15 +49,15 @@ class VIEWS_EXPORT Slider : public View, public gfx::AnimationDelegate {
explicit Slider(SliderListener* listener);
~Slider() override;
float value() const { return value_; }
float GetValue() const;
void SetValue(float value);
void set_enable_accessibility_events(bool enabled) {
accessibility_events_enabled_ = enabled;
}
bool GetEnableAccessibilityEvents() const;
void SetEnableAccessibilityEvents(bool enabled);
// Update UI based on control on/off state.
void UpdateState(bool control_on);
// Gets/Sets IsActive state
bool GetIsActive() const;
void SetIsActive(bool is_active);
protected:
// Returns the current position of the thumb on the slider.
......
......@@ -233,20 +233,20 @@ void SliderTest::ClickAt(int x, int y) {
TEST_F(SliderTest, UpdateFromClickHorizontal) {
ClickAt(0, 0);
EXPECT_EQ(0.0f, slider()->value());
EXPECT_EQ(0.0f, slider()->GetValue());
ClickAt(max_x(), 0);
EXPECT_EQ(1.0f, slider()->value());
EXPECT_EQ(1.0f, slider()->GetValue());
}
TEST_F(SliderTest, UpdateFromClickRTLHorizontal) {
base::i18n::SetICUDefaultLocale("he");
ClickAt(0, 0);
EXPECT_EQ(1.0f, slider()->value());
EXPECT_EQ(1.0f, slider()->GetValue());
ClickAt(max_x(), 0);
EXPECT_EQ(0.0f, slider()->value());
EXPECT_EQ(0.0f, slider()->GetValue());
}
// No touch on desktop Mac. Tracked in http://crbug.com/445520.
......@@ -257,17 +257,17 @@ TEST_F(SliderTest, SliderValueForTapGesture) {
// Tap below the minimum.
slider()->SetValue(0.5);
event_generator()->GestureTapAt(gfx::Point(0, 0));
EXPECT_FLOAT_EQ(0, slider()->value());
EXPECT_FLOAT_EQ(0, slider()->GetValue());
// Tap above the maximum.
slider()->SetValue(0.5);
event_generator()->GestureTapAt(gfx::Point(max_x(), max_y()));
EXPECT_FLOAT_EQ(1, slider()->value());
EXPECT_FLOAT_EQ(1, slider()->GetValue());
// Tap somwhere in the middle.
slider()->SetValue(0.5);
event_generator()->GestureTapAt(gfx::Point(0.75 * max_x(), 0.75 * max_y()));
EXPECT_NEAR(0.75, slider()->value(), 0.03);
EXPECT_NEAR(0.75, slider()->GetValue(), 0.03);
}
// Test the slider location after a scroll gesture.
......@@ -277,14 +277,14 @@ TEST_F(SliderTest, SliderValueForScrollGesture) {
event_generator()->GestureScrollSequence(
gfx::Point(0.5 * max_x(), 0.5 * max_y()), gfx::Point(0, 0),
base::TimeDelta::FromMilliseconds(10), 5 /* steps */);
EXPECT_EQ(0, slider()->value());
EXPECT_EQ(0, slider()->GetValue());
// Scroll above the maximum.
slider()->SetValue(0.5);
event_generator()->GestureScrollSequence(
gfx::Point(0.5 * max_x(), 0.5 * max_y()), gfx::Point(max_x(), max_y()),
base::TimeDelta::FromMilliseconds(10), 5 /* steps */);
EXPECT_EQ(1, slider()->value());
EXPECT_EQ(1, slider()->GetValue());
// Scroll somewhere in the middle.
slider()->SetValue(0.25);
......@@ -292,7 +292,7 @@ TEST_F(SliderTest, SliderValueForScrollGesture) {
gfx::Point(0.25 * max_x(), 0.25 * max_y()),
gfx::Point(0.75 * max_x(), 0.75 * max_y()),
base::TimeDelta::FromMilliseconds(10), 5 /* steps */);
EXPECT_NEAR(0.75, slider()->value(), 0.03);
EXPECT_NEAR(0.75, slider()->GetValue(), 0.03);
}
// Test the slider location by adjusting it using keyboard.
......@@ -301,38 +301,38 @@ TEST_F(SliderTest, SliderValueForKeyboard) {
slider()->SetValue(value);
slider()->RequestFocus();
event_generator()->PressKey(ui::VKEY_RIGHT, 0);
EXPECT_GT(slider()->value(), value);
EXPECT_GT(slider()->GetValue(), value);
slider()->SetValue(value);
event_generator()->PressKey(ui::VKEY_LEFT, 0);
EXPECT_LT(slider()->value(), value);
EXPECT_LT(slider()->GetValue(), value);
slider()->SetValue(value);
event_generator()->PressKey(ui::VKEY_UP, 0);
EXPECT_GT(slider()->value(), value);
EXPECT_GT(slider()->GetValue(), value);
slider()->SetValue(value);
event_generator()->PressKey(ui::VKEY_DOWN, 0);
EXPECT_LT(slider()->value(), value);
EXPECT_LT(slider()->GetValue(), value);
// RTL reverse left/right but not up/down.
base::i18n::SetICUDefaultLocale("he");
EXPECT_TRUE(base::i18n::IsRTL());
event_generator()->PressKey(ui::VKEY_RIGHT, 0);
EXPECT_LT(slider()->value(), value);
EXPECT_LT(slider()->GetValue(), value);
slider()->SetValue(value);
event_generator()->PressKey(ui::VKEY_LEFT, 0);
EXPECT_GT(slider()->value(), value);
EXPECT_GT(slider()->GetValue(), value);
slider()->SetValue(value);
event_generator()->PressKey(ui::VKEY_UP, 0);
EXPECT_GT(slider()->value(), value);
EXPECT_GT(slider()->GetValue(), value);
slider()->SetValue(value);
event_generator()->PressKey(ui::VKEY_DOWN, 0);
EXPECT_LT(slider()->value(), value);
EXPECT_LT(slider()->GetValue(), value);
}
// Verifies the correct SliderListener events are raised for a tap gesture.
......
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