Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Side by Side Diff: ui/views/controls/button/toggle_button_unittest.cc

Issue 2396133005: [ash-md] Animates ToggleButton highlight to move it in sync with the thumb (Closed)
Patch Set: [ash-md] Animates ToggleButton highlight to move it in sync with the thumb (better destruction sequ… Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ui/views/controls/button/toggle_button.h"
6
7 #include "base/macros.h"
8 #include "base/memory/ptr_util.h"
9 #include "build/build_config.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11 #include "ui/events/event_utils.h"
12 #include "ui/views/test/views_test_base.h"
13
14 namespace views {
15
16 class TestToggleButton : public ToggleButton {
17 public:
18 explicit TestToggleButton(int* counter)
19 : ToggleButton(nullptr), counter_(counter) {}
20 ~TestToggleButton() override {
21 // Calling SetInkDropMode() in this subclass allows this class's
22 // implementation of RemoveInkDropLayer() to be called. The same
23 // call is made in ~ToggleButton() so this is testing the general technique.
24 SetInkDropMode(InkDropMode::OFF);
25 }
26
27 protected:
28 // ToggleButton:
29 void AddInkDropLayer(ui::Layer* ink_drop_layer) override {
30 ++(*counter_);
31 ToggleButton::AddInkDropLayer(ink_drop_layer);
32 }
33
34 void RemoveInkDropLayer(ui::Layer* ink_drop_layer) override {
35 ToggleButton::RemoveInkDropLayer(ink_drop_layer);
36 --(*counter_);
37 }
38
39 private:
40 int* counter_;
41
42 DISALLOW_COPY_AND_ASSIGN(TestToggleButton);
43 };
44
45 class ToggleButtonTest : public ViewsTestBase {
46 public:
47 ToggleButtonTest() {}
48 ~ToggleButtonTest() override {}
49
50 void SetUp() override {
51 ViewsTestBase::SetUp();
52
53 // Create a widget so that the ToggleButton can query the hover state
54 // correctly.
55 widget_.reset(new Widget);
56 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
57 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
58 params.bounds = gfx::Rect(0, 0, 650, 650);
59 widget_->Init(params);
60 widget_->Show();
61
62 button_ = new TestToggleButton(&counter_);
63 widget_->SetContentsView(button_);
64 }
65
66 void TearDown() override {
67 widget_.reset();
68 ViewsTestBase::TearDown();
69 }
70
71 protected:
72 int counter() const { return counter_; }
73 Widget* widget() { return widget_.get(); }
74 TestToggleButton* button() { return button_; }
75
76 private:
77 std::unique_ptr<Widget> widget_;
78 TestToggleButton* button_ = nullptr;
79 int counter_ = 0;
80
81 DISALLOW_COPY_AND_ASSIGN(ToggleButtonTest);
82 };
83
84 // Starts ink drop animation on a ToggleButton and destroys the button.
85 // The test verifies that the ink drop layer is removed properly when the
86 // ToggleButton gets destroyed.
87 TEST_F(ToggleButtonTest, ToggleButtonDestroyed) {
88 EXPECT_EQ(0, counter());
89 gfx::Point center(10, 10);
90 button()->OnMousePressed(ui::MouseEvent(
91 ui::ET_MOUSE_PRESSED, center, center, ui::EventTimeForNow(),
92 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
93 EXPECT_EQ(1, counter());
94 delete button();
95 EXPECT_EQ(0, counter());
96 }
97
98 } // namespace views
OLDNEW
« ui/views/controls/button/toggle_button.cc ('K') | « ui/views/controls/button/toggle_button.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698