Commit 43073d2d authored by Thomas Lukaszewicz's avatar Thomas Lukaszewicz Committed by Commit Bot

Views: Added default constructability to Slider

Updated Slider to be default constructable. Cleaned up some calling
code.

Bug: 1108460
Change-Id: I03b91286288322c2709e9ace2d0196dbc04ff230
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2313496Reviewed-by: default avatarJenny Zhang <jennyz@chromium.org>
Reviewed-by: default avatarRobert Liao <robliao@chromium.org>
Commit-Queue: Thomas Lukaszewicz <tluk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#791234}
parent ec999b8f
......@@ -217,13 +217,6 @@ views::ImageView* TrayPopupUtils::CreateMainImageView() {
return image;
}
views::Slider* TrayPopupUtils::CreateSlider(views::SliderListener* listener) {
views::Slider* slider = new views::Slider(listener);
slider->SetBorder(views::CreateEmptyBorder(
gfx::Insets(0, kTrayPopupSliderHorizontalPadding)));
return slider;
}
views::ToggleButton* TrayPopupUtils::CreateToggleButton(
views::ButtonListener* listener,
int accessible_name_id) {
......
......@@ -25,8 +25,6 @@ class Label;
class LabelButton;
class Painter;
class Separator;
class Slider;
class SliderListener;
class ToggleButton;
} // namespace views
......@@ -105,10 +103,6 @@ class TrayPopupUtils {
// TODO(bruthig): Update all system menu rows to use this.
static views::ImageView* CreateMainImageView();
// Returns a slider configured for proper layout within a TriView container
// with a FillLayout.
static views::Slider* CreateSlider(views::SliderListener* listener);
// Returns a ToggleButton that has been configured for system menu layout.
static views::ToggleButton* CreateToggleButton(
views::ButtonListener* listener,
......
......@@ -28,11 +28,10 @@ using AshColorMode = AshColorProvider::AshColorMode;
namespace {
views::Slider* CreateSlider(UnifiedSliderListener* listener, bool readonly) {
if (readonly)
return new ReadOnlySlider();
return new SystemSlider(listener);
std::unique_ptr<views::Slider> CreateSlider(UnifiedSliderListener* listener,
bool readonly) {
return readonly ? std::make_unique<ReadOnlySlider>()
: std::make_unique<SystemSlider>(listener);
}
} // namespace
......@@ -53,7 +52,7 @@ SkColor SystemSlider::GetTroughColor() const {
return AshColorProvider::Get()->GetDisabledColor(GetThumbColor());
}
ReadOnlySlider::ReadOnlySlider() : SystemSlider(nullptr) {}
ReadOnlySlider::ReadOnlySlider() : SystemSlider() {}
bool ReadOnlySlider::OnMousePressed(const ui::MouseEvent& event) {
return false;
......@@ -180,15 +179,15 @@ UnifiedSliderView::UnifiedSliderView(UnifiedSliderListener* listener,
const gfx::VectorIcon& icon,
int accessible_name_id,
bool readonly)
: button_(new UnifiedSliderButton(listener, icon, accessible_name_id)),
slider_(CreateSlider(listener, readonly)) {
: button_(AddChildView(
std::make_unique<UnifiedSliderButton>(listener,
icon,
accessible_name_id))),
slider_(AddChildView(CreateSlider(listener, readonly))) {
auto* layout = SetLayoutManager(std::make_unique<views::BoxLayout>(
views::BoxLayout::Orientation::kHorizontal, kUnifiedSliderRowPadding,
kUnifiedSliderViewSpacing));
AddChildView(button_);
AddChildView(slider_);
// 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.
......
......@@ -26,7 +26,7 @@ class UnifiedSliderListener : public views::ButtonListener,
// Custom slider for the system menu to use different color scheme.
class SystemSlider : public views::Slider {
public:
explicit SystemSlider(views::SliderListener* listener);
explicit SystemSlider(views::SliderListener* listener = nullptr);
private:
SkColor GetThumbColor() const override;
......
......@@ -47,7 +47,7 @@ class VIEWS_EXPORT Slider : public View, public gfx::AnimationDelegate {
public:
METADATA_HEADER(Slider);
explicit Slider(SliderListener* listener);
explicit Slider(SliderListener* listener = nullptr);
~Slider() override;
float GetValue() const;
......
......@@ -25,6 +25,7 @@
#include "ui/views/test/slider_test_api.h"
#include "ui/views/test/views_test_base.h"
#include "ui/views/view.h"
#include "ui/views/widget/unique_widget_ptr.h"
#include "ui/views/widget/widget.h"
#include "ui/views/widget/widget_delegate.h"
#include "ui/views/widget/widget_utils.h"
......@@ -169,7 +170,7 @@ class SliderTest : public views::ViewsTestBase {
// The maximum y value within the bounds of the slider.
int max_y_ = 0;
// The widget container for the slider being tested.
views::Widget* widget_ = nullptr;
views::UniqueWidgetPtr widget_;
// An event generator.
std::unique_ptr<ui::test::EventGenerator> event_generator_;
......@@ -179,10 +180,9 @@ class SliderTest : public views::ViewsTestBase {
void SliderTest::SetUp() {
views::ViewsTestBase::SetUp();
slider_ = new Slider(nullptr);
View* view = slider_;
gfx::Size size = view->GetPreferredSize();
view->SetSize(size);
auto slider = std::make_unique<Slider>();
gfx::Size size = slider->GetPreferredSize();
slider->SetSize(size);
max_x_ = size.width() - 1;
max_y_ = size.height() - 1;
default_locale_ = base::i18n::GetConfiguredLocale();
......@@ -191,19 +191,17 @@ void SliderTest::SetUp() {
CreateParams(views::Widget::InitParams::TYPE_WINDOW_FRAMELESS));
init_params.bounds = gfx::Rect(size);
widget_ = new views::Widget();
widget_ = std::make_unique<Widget>();
widget_->Init(std::move(init_params));
widget_->SetContentsView(slider_);
slider_ = widget_->SetContentsView(std::move(slider));
widget_->Show();
event_generator_ =
std::make_unique<ui::test::EventGenerator>(GetRootWindow(widget_));
std::make_unique<ui::test::EventGenerator>(GetRootWindow(widget_.get()));
}
void SliderTest::TearDown() {
if (widget_ && !widget_->IsClosed())
widget_->Close();
widget_.reset();
base::i18n::SetICUDefaultLocale(default_locale_);
views::ViewsTestBase::TearDown();
......
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