| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "ui/views/controls/single_split_view.h" | 5 #include "ui/views/controls/single_split_view.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
| 9 #include "ui/events/event_utils.h" | 9 #include "ui/events/event_utils.h" |
| 10 #include "ui/views/controls/single_split_view_listener.h" | 10 #include "ui/views/controls/single_split_view_listener.h" |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 161 child0, child1, SingleSplitView::VERTICAL_SPLIT, &listener); | 161 child0, child1, SingleSplitView::VERTICAL_SPLIT, &listener); |
| 162 | 162 |
| 163 const int kTotalSplitSize = 100; | 163 const int kTotalSplitSize = 100; |
| 164 split.SetBounds(0, 0, 10, kTotalSplitSize); | 164 split.SetBounds(0, 0, 10, kTotalSplitSize); |
| 165 const int kInitialDividerOffset = 33; | 165 const int kInitialDividerOffset = 33; |
| 166 const int kMouseOffset = 2; // Mouse offset in the divider. | 166 const int kMouseOffset = 2; // Mouse offset in the divider. |
| 167 const int kMouseMoveDelta = 7; | 167 const int kMouseMoveDelta = 7; |
| 168 split.set_divider_offset(kInitialDividerOffset); | 168 split.set_divider_offset(kInitialDividerOffset); |
| 169 split.Layout(); | 169 split.Layout(); |
| 170 | 170 |
| 171 gfx::Point press_point(7, kInitialDividerOffset + kMouseOffset); | 171 gfx::PointF press_point(7, kInitialDividerOffset + kMouseOffset); |
| 172 ui::MouseEvent mouse_pressed(ui::ET_MOUSE_PRESSED, press_point, press_point, | 172 ui::MouseEvent mouse_pressed(ui::ET_MOUSE_PRESSED, press_point, press_point, |
| 173 ui::EventTimeForNow(), 0, 0); | 173 ui::EventTimeForNow(), 0, 0); |
| 174 ASSERT_TRUE(split.OnMousePressed(mouse_pressed)); | 174 ASSERT_TRUE(split.OnMousePressed(mouse_pressed)); |
| 175 EXPECT_EQ(kInitialDividerOffset, split.divider_offset()); | 175 EXPECT_EQ(kInitialDividerOffset, split.divider_offset()); |
| 176 EXPECT_EQ(0, listener.count()); | 176 EXPECT_EQ(0, listener.count()); |
| 177 | 177 |
| 178 // Drag divider to the bottom. | 178 // Drag divider to the bottom. |
| 179 gfx::Point drag_1_point( | 179 gfx::PointF drag_1_point( |
| 180 5, kInitialDividerOffset + kMouseOffset + kMouseMoveDelta); | 180 5, kInitialDividerOffset + kMouseOffset + kMouseMoveDelta); |
| 181 ui::MouseEvent mouse_dragged_1(ui::ET_MOUSE_DRAGGED, drag_1_point, | 181 ui::MouseEvent mouse_dragged_1(ui::ET_MOUSE_DRAGGED, drag_1_point, |
| 182 drag_1_point, ui::EventTimeForNow(), 0, 0); | 182 drag_1_point, ui::EventTimeForNow(), 0, 0); |
| 183 ASSERT_TRUE(split.OnMouseDragged(mouse_dragged_1)); | 183 ASSERT_TRUE(split.OnMouseDragged(mouse_dragged_1)); |
| 184 EXPECT_EQ(kInitialDividerOffset + kMouseMoveDelta, split.divider_offset()); | 184 EXPECT_EQ(kInitialDividerOffset + kMouseMoveDelta, split.divider_offset()); |
| 185 EXPECT_EQ(1, listener.count()); | 185 EXPECT_EQ(1, listener.count()); |
| 186 | 186 |
| 187 // Drag divider to the top, beyond first child minimum size. | 187 // Drag divider to the top, beyond first child minimum size. |
| 188 gfx::Point drag_2_point( | 188 gfx::PointF drag_2_point(7, kMinimumChildSize - 5); |
| 189 7, kMinimumChildSize - 5); | |
| 190 ui::MouseEvent mouse_dragged_2(ui::ET_MOUSE_DRAGGED, drag_2_point, | 189 ui::MouseEvent mouse_dragged_2(ui::ET_MOUSE_DRAGGED, drag_2_point, |
| 191 drag_2_point, ui::EventTimeForNow(), 0, 0); | 190 drag_2_point, ui::EventTimeForNow(), 0, 0); |
| 192 ASSERT_TRUE(split.OnMouseDragged(mouse_dragged_2)); | 191 ASSERT_TRUE(split.OnMouseDragged(mouse_dragged_2)); |
| 193 EXPECT_EQ(kMinimumChildSize, split.divider_offset()); | 192 EXPECT_EQ(kMinimumChildSize, split.divider_offset()); |
| 194 EXPECT_EQ(2, listener.count()); | 193 EXPECT_EQ(2, listener.count()); |
| 195 | 194 |
| 196 // Drag divider to the bottom, beyond second child minimum size. | 195 // Drag divider to the bottom, beyond second child minimum size. |
| 197 gfx::Point drag_3_point( | 196 gfx::PointF drag_3_point(7, kTotalSplitSize - kMinimumChildSize + 5); |
| 198 7, kTotalSplitSize - kMinimumChildSize + 5); | |
| 199 ui::MouseEvent mouse_dragged_3(ui::ET_MOUSE_DRAGGED, drag_3_point, | 197 ui::MouseEvent mouse_dragged_3(ui::ET_MOUSE_DRAGGED, drag_3_point, |
| 200 drag_3_point, ui::EventTimeForNow(), 0, 0); | 198 drag_3_point, ui::EventTimeForNow(), 0, 0); |
| 201 ASSERT_TRUE(split.OnMouseDragged(mouse_dragged_3)); | 199 ASSERT_TRUE(split.OnMouseDragged(mouse_dragged_3)); |
| 202 EXPECT_EQ(kTotalSplitSize - kMinimumChildSize - split.GetDividerSize(), | 200 EXPECT_EQ(kTotalSplitSize - kMinimumChildSize - split.GetDividerSize(), |
| 203 split.divider_offset()); | 201 split.divider_offset()); |
| 204 EXPECT_EQ(3, listener.count()); | 202 EXPECT_EQ(3, listener.count()); |
| 205 | 203 |
| 206 // Drag divider between childs' minimum sizes. | 204 // Drag divider between childs' minimum sizes. |
| 207 gfx::Point drag_4_point( | 205 gfx::PointF drag_4_point( |
| 208 6, kInitialDividerOffset + kMouseOffset + kMouseMoveDelta * 2); | 206 6, kInitialDividerOffset + kMouseOffset + kMouseMoveDelta * 2); |
| 209 ui::MouseEvent mouse_dragged_4(ui::ET_MOUSE_DRAGGED, drag_4_point, | 207 ui::MouseEvent mouse_dragged_4(ui::ET_MOUSE_DRAGGED, drag_4_point, |
| 210 drag_4_point, ui::EventTimeForNow(), 0, 0); | 208 drag_4_point, ui::EventTimeForNow(), 0, 0); |
| 211 ASSERT_TRUE(split.OnMouseDragged(mouse_dragged_4)); | 209 ASSERT_TRUE(split.OnMouseDragged(mouse_dragged_4)); |
| 212 EXPECT_EQ(kInitialDividerOffset + kMouseMoveDelta * 2, | 210 EXPECT_EQ(kInitialDividerOffset + kMouseMoveDelta * 2, |
| 213 split.divider_offset()); | 211 split.divider_offset()); |
| 214 EXPECT_EQ(4, listener.count()); | 212 EXPECT_EQ(4, listener.count()); |
| 215 | 213 |
| 216 gfx::Point release_point( | 214 gfx::PointF release_point( |
| 217 7, kInitialDividerOffset + kMouseOffset + kMouseMoveDelta * 2); | 215 7, kInitialDividerOffset + kMouseOffset + kMouseMoveDelta * 2); |
| 218 ui::MouseEvent mouse_released(ui::ET_MOUSE_RELEASED, release_point, | 216 ui::MouseEvent mouse_released(ui::ET_MOUSE_RELEASED, release_point, |
| 219 release_point, ui::EventTimeForNow(), 0, 0); | 217 release_point, ui::EventTimeForNow(), 0, 0); |
| 220 split.OnMouseReleased(mouse_released); | 218 split.OnMouseReleased(mouse_released); |
| 221 EXPECT_EQ(kInitialDividerOffset + kMouseMoveDelta * 2, | 219 EXPECT_EQ(kInitialDividerOffset + kMouseMoveDelta * 2, |
| 222 split.divider_offset()); | 220 split.divider_offset()); |
| 223 | 221 |
| 224 // Expect intial offset after a system/user gesture cancels the drag. | 222 // Expect intial offset after a system/user gesture cancels the drag. |
| 225 // This shouldn't occur after mouse release, but it's sufficient for testing. | 223 // This shouldn't occur after mouse release, but it's sufficient for testing. |
| 226 split.OnMouseCaptureLost(); | 224 split.OnMouseCaptureLost(); |
| 227 EXPECT_EQ(kInitialDividerOffset, split.divider_offset()); | 225 EXPECT_EQ(kInitialDividerOffset, split.divider_offset()); |
| 228 EXPECT_EQ(5, listener.count()); | 226 EXPECT_EQ(5, listener.count()); |
| 229 } | 227 } |
| 230 | 228 |
| 231 } // namespace views | 229 } // namespace views |
| OLD | NEW |