OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/message_loop/message_loop.h" | 5 #include "base/message_loop/message_loop.h" |
6 #include "chrome/browser/ui/views/toolbar/reload_button.h" | 6 #include "chrome/browser/ui/views/toolbar/reload_button.h" |
7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
8 #include "ui/events/event_utils.h" | 8 #include "ui/events/event_utils.h" |
9 | 9 |
10 class ReloadButtonTest : public testing::Test { | 10 class ReloadButtonTest : public testing::Test { |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 reload_.stop_to_reload_timer_.IsRunning()); | 51 reload_.stop_to_reload_timer_.IsRunning()); |
52 } | 52 } |
53 | 53 |
54 TEST_F(ReloadButtonTest, Basic) { | 54 TEST_F(ReloadButtonTest, Basic) { |
55 // The stop/reload button starts in the "enabled reload" state with no timers | 55 // The stop/reload button starts in the "enabled reload" state with no timers |
56 // running. | 56 // running. |
57 CheckState(true, ReloadButton::MODE_RELOAD, ReloadButton::MODE_RELOAD, false, | 57 CheckState(true, ReloadButton::MODE_RELOAD, ReloadButton::MODE_RELOAD, false, |
58 false); | 58 false); |
59 | 59 |
60 // Press the button. This should start the double-click timer. | 60 // Press the button. This should start the double-click timer. |
61 ui::MouseEvent e(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), | 61 ui::MouseEvent e( |
62 ui::EventTimeForNow(), 0, 0); | 62 ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), ui::EventTimeForNow(), |
| 63 0, 0, ui::PointerEventDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
63 reload_.ButtonPressed(&reload_, e); | 64 reload_.ButtonPressed(&reload_, e); |
64 CheckState(true, ReloadButton::MODE_RELOAD, ReloadButton::MODE_RELOAD, true, | 65 CheckState(true, ReloadButton::MODE_RELOAD, ReloadButton::MODE_RELOAD, true, |
65 false); | 66 false); |
66 | 67 |
67 // Now change the mode (as if the browser had started loading the page). This | 68 // Now change the mode (as if the browser had started loading the page). This |
68 // should cancel the double-click timer since the button is not hovered. | 69 // should cancel the double-click timer since the button is not hovered. |
69 reload_.ChangeMode(ReloadButton::MODE_STOP, false); | 70 reload_.ChangeMode(ReloadButton::MODE_STOP, false); |
70 CheckState(true, ReloadButton::MODE_STOP, ReloadButton::MODE_STOP, false, | 71 CheckState(true, ReloadButton::MODE_STOP, ReloadButton::MODE_STOP, false, |
71 false); | 72 false); |
72 | 73 |
73 // Press the button again. This should change back to reload. | 74 // Press the button again. This should change back to reload. |
74 reload_.ButtonPressed(&reload_, e); | 75 reload_.ButtonPressed(&reload_, e); |
75 CheckState(true, ReloadButton::MODE_RELOAD, ReloadButton::MODE_RELOAD, false, | 76 CheckState(true, ReloadButton::MODE_RELOAD, ReloadButton::MODE_RELOAD, false, |
76 false); | 77 false); |
77 } | 78 } |
78 | 79 |
79 TEST_F(ReloadButtonTest, DoubleClickTimer) { | 80 TEST_F(ReloadButtonTest, DoubleClickTimer) { |
80 // Start by pressing the button. | 81 // Start by pressing the button. |
81 ui::MouseEvent e(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), | 82 ui::MouseEvent e( |
82 ui::EventTimeForNow(), 0, 0); | 83 ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), ui::EventTimeForNow(), |
| 84 0, 0, ui::PointerEventDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
83 reload_.ButtonPressed(&reload_, e); | 85 reload_.ButtonPressed(&reload_, e); |
84 | 86 |
85 // Try to press the button again. This should do nothing because the timer is | 87 // Try to press the button again. This should do nothing because the timer is |
86 // running. | 88 // running. |
87 int original_reload_count = reload_count(); | 89 int original_reload_count = reload_count(); |
88 reload_.ButtonPressed(&reload_, e); | 90 reload_.ButtonPressed(&reload_, e); |
89 CheckState(true, ReloadButton::MODE_RELOAD, ReloadButton::MODE_RELOAD, true, | 91 CheckState(true, ReloadButton::MODE_RELOAD, ReloadButton::MODE_RELOAD, true, |
90 false); | 92 false); |
91 EXPECT_EQ(original_reload_count, reload_count()); | 93 EXPECT_EQ(original_reload_count, reload_count()); |
92 | 94 |
93 // Hover the button, and change mode. The visible mode should not change, | 95 // Hover the button, and change mode. The visible mode should not change, |
94 // again because the timer is running. | 96 // again because the timer is running. |
95 set_mouse_hovered(true); | 97 set_mouse_hovered(true); |
96 reload_.ChangeMode(ReloadButton::MODE_STOP, false); | 98 reload_.ChangeMode(ReloadButton::MODE_STOP, false); |
97 CheckState(true, ReloadButton::MODE_STOP, ReloadButton::MODE_RELOAD, true, | 99 CheckState(true, ReloadButton::MODE_STOP, ReloadButton::MODE_RELOAD, true, |
98 false); | 100 false); |
99 | 101 |
100 // Now fire the timer. This should complete the mode change. | 102 // Now fire the timer. This should complete the mode change. |
101 loop_.RunUntilIdle(); | 103 loop_.RunUntilIdle(); |
102 CheckState(true, ReloadButton::MODE_STOP, ReloadButton::MODE_STOP, false, | 104 CheckState(true, ReloadButton::MODE_STOP, ReloadButton::MODE_STOP, false, |
103 false); | 105 false); |
104 } | 106 } |
105 | 107 |
106 TEST_F(ReloadButtonTest, DisableOnHover) { | 108 TEST_F(ReloadButtonTest, DisableOnHover) { |
107 // Change to stop and hover. | 109 // Change to stop and hover. |
108 ui::MouseEvent e(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), | 110 ui::MouseEvent e( |
109 ui::EventTimeForNow(), 0, 0); | 111 ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), ui::EventTimeForNow(), |
| 112 0, 0, ui::PointerEventDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
110 reload_.ButtonPressed(&reload_, e); | 113 reload_.ButtonPressed(&reload_, e); |
111 reload_.ChangeMode(ReloadButton::MODE_STOP, false); | 114 reload_.ChangeMode(ReloadButton::MODE_STOP, false); |
112 set_mouse_hovered(true); | 115 set_mouse_hovered(true); |
113 | 116 |
114 // Now change back to reload. This should result in a disabled stop button | 117 // Now change back to reload. This should result in a disabled stop button |
115 // due to the hover. | 118 // due to the hover. |
116 reload_.ChangeMode(ReloadButton::MODE_RELOAD, false); | 119 reload_.ChangeMode(ReloadButton::MODE_RELOAD, false); |
117 CheckState(false, ReloadButton::MODE_RELOAD, ReloadButton::MODE_STOP, false, | 120 CheckState(false, ReloadButton::MODE_RELOAD, ReloadButton::MODE_STOP, false, |
118 true); | 121 true); |
119 | 122 |
120 // Un-hover the button, which should allow it to reset. | 123 // Un-hover the button, which should allow it to reset. |
121 set_mouse_hovered(false); | 124 set_mouse_hovered(false); |
122 ui::MouseEvent e2(ui::ET_MOUSE_MOVED, gfx::Point(), gfx::Point(), | 125 ui::MouseEvent e2( |
123 ui::EventTimeForNow(), 0, 0); | 126 ui::ET_MOUSE_MOVED, gfx::Point(), gfx::Point(), ui::EventTimeForNow(), 0, |
| 127 0, ui::PointerEventDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
124 reload_.OnMouseExited(e2); | 128 reload_.OnMouseExited(e2); |
125 CheckState(true, ReloadButton::MODE_RELOAD, ReloadButton::MODE_RELOAD, false, | 129 CheckState(true, ReloadButton::MODE_RELOAD, ReloadButton::MODE_RELOAD, false, |
126 false); | 130 false); |
127 } | 131 } |
128 | 132 |
129 TEST_F(ReloadButtonTest, ResetOnClick) { | 133 TEST_F(ReloadButtonTest, ResetOnClick) { |
130 // Change to stop and hover. | 134 // Change to stop and hover. |
131 ui::MouseEvent e(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), | 135 ui::MouseEvent e( |
132 ui::EventTimeForNow(), 0, 0); | 136 ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), ui::EventTimeForNow(), |
| 137 0, 0, ui::PointerEventDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
133 reload_.ButtonPressed(&reload_, e); | 138 reload_.ButtonPressed(&reload_, e); |
134 reload_.ChangeMode(ReloadButton::MODE_STOP, false); | 139 reload_.ChangeMode(ReloadButton::MODE_STOP, false); |
135 set_mouse_hovered(true); | 140 set_mouse_hovered(true); |
136 | 141 |
137 // Press the button. This should change back to reload despite the hover, | 142 // Press the button. This should change back to reload despite the hover, |
138 // because it's a direct user action. | 143 // because it's a direct user action. |
139 reload_.ButtonPressed(&reload_, e); | 144 reload_.ButtonPressed(&reload_, e); |
140 CheckState(true, ReloadButton::MODE_RELOAD, ReloadButton::MODE_RELOAD, false, | 145 CheckState(true, ReloadButton::MODE_RELOAD, ReloadButton::MODE_RELOAD, false, |
141 false); | 146 false); |
142 } | 147 } |
143 | 148 |
144 TEST_F(ReloadButtonTest, ResetOnTimer) { | 149 TEST_F(ReloadButtonTest, ResetOnTimer) { |
145 // Change to stop, hover, and change back to reload. | 150 // Change to stop, hover, and change back to reload. |
146 ui::MouseEvent e(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), | 151 ui::MouseEvent e( |
147 ui::EventTimeForNow(), 0, 0); | 152 ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), ui::EventTimeForNow(), |
| 153 0, 0, ui::PointerEventDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
148 reload_.ButtonPressed(&reload_, e); | 154 reload_.ButtonPressed(&reload_, e); |
149 reload_.ChangeMode(ReloadButton::MODE_STOP, false); | 155 reload_.ChangeMode(ReloadButton::MODE_STOP, false); |
150 set_mouse_hovered(true); | 156 set_mouse_hovered(true); |
151 reload_.ChangeMode(ReloadButton::MODE_RELOAD, false); | 157 reload_.ChangeMode(ReloadButton::MODE_RELOAD, false); |
152 | 158 |
153 // Now fire the stop-to-reload timer. This should reset the button. | 159 // Now fire the stop-to-reload timer. This should reset the button. |
154 loop_.RunUntilIdle(); | 160 loop_.RunUntilIdle(); |
155 CheckState(true, ReloadButton::MODE_RELOAD, ReloadButton::MODE_RELOAD, false, | 161 CheckState(true, ReloadButton::MODE_RELOAD, ReloadButton::MODE_RELOAD, false, |
156 false); | 162 false); |
157 } | 163 } |
OLD | NEW |