OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/aura/window_event_dispatcher.h" | 5 #include "ui/aura/window_event_dispatcher.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
(...skipping 2191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2202 "GESTURE_SCROLL_END GESTURE_END", | 2202 "GESTURE_SCROLL_END GESTURE_END", |
2203 EventTypesToString(events)); | 2203 EventTypesToString(events)); |
2204 ASSERT_EQ(2u, recorder.touch_locations().size()); | 2204 ASSERT_EQ(2u, recorder.touch_locations().size()); |
2205 EXPECT_EQ(gfx::Point(-40, 10).ToString(), | 2205 EXPECT_EQ(gfx::Point(-40, 10).ToString(), |
2206 recorder.touch_locations()[0].ToString()); | 2206 recorder.touch_locations()[0].ToString()); |
2207 EXPECT_EQ(gfx::Point(-40, 10).ToString(), | 2207 EXPECT_EQ(gfx::Point(-40, 10).ToString(), |
2208 recorder.touch_locations()[1].ToString()); | 2208 recorder.touch_locations()[1].ToString()); |
2209 root_window()->RemovePreTargetHandler(&recorder); | 2209 root_window()->RemovePreTargetHandler(&recorder); |
2210 } | 2210 } |
2211 | 2211 |
2212 // This handler triggers a nested message loop when it receives a right click | 2212 // This handler triggers a nested run loop when it receives a right click |
2213 // event, and runs a single callback in the nested message loop. | 2213 // event, and runs a single callback in the nested run loop. |
2214 class TriggerNestedLoopOnRightMousePress : public ui::test::TestEventHandler { | 2214 class TriggerNestedLoopOnRightMousePress : public ui::test::TestEventHandler { |
2215 public: | 2215 public: |
2216 explicit TriggerNestedLoopOnRightMousePress(const base::Closure& callback) | 2216 explicit TriggerNestedLoopOnRightMousePress(const base::Closure& callback) |
2217 : callback_(callback) {} | 2217 : callback_(callback) {} |
2218 ~TriggerNestedLoopOnRightMousePress() override {} | 2218 ~TriggerNestedLoopOnRightMousePress() override {} |
2219 | 2219 |
2220 const gfx::Point mouse_move_location() const { return mouse_move_location_; } | 2220 const gfx::Point mouse_move_location() const { return mouse_move_location_; } |
2221 | 2221 |
2222 private: | 2222 private: |
2223 void OnMouseEvent(ui::MouseEvent* mouse) override { | 2223 void OnMouseEvent(ui::MouseEvent* mouse) override { |
(...skipping 13 matching lines...) Expand all Loading... |
2237 mouse_move_location_ = mouse->location(); | 2237 mouse_move_location_ = mouse->location(); |
2238 } | 2238 } |
2239 } | 2239 } |
2240 | 2240 |
2241 base::Closure callback_; | 2241 base::Closure callback_; |
2242 gfx::Point mouse_move_location_; | 2242 gfx::Point mouse_move_location_; |
2243 | 2243 |
2244 DISALLOW_COPY_AND_ASSIGN(TriggerNestedLoopOnRightMousePress); | 2244 DISALLOW_COPY_AND_ASSIGN(TriggerNestedLoopOnRightMousePress); |
2245 }; | 2245 }; |
2246 | 2246 |
2247 // Tests that if dispatching a 'held' event triggers a nested message loop, then | 2247 // Tests that if dispatching a 'held' event triggers a nested run loop, then |
2248 // the events that are dispatched from the nested message loop are transformed | 2248 // the events that are dispatched from the nested run loop are transformed |
2249 // correctly. | 2249 // correctly. |
2250 TEST_P(WindowEventDispatcherTestInHighDPI, | 2250 TEST_P(WindowEventDispatcherTestInHighDPI, |
2251 EventsTransformedInRepostedEventTriggeredNestedLoop) { | 2251 EventsTransformedInRepostedEventTriggeredNestedLoop) { |
2252 std::unique_ptr<Window> window(CreateNormalWindow(1, root_window(), NULL)); | 2252 std::unique_ptr<Window> window(CreateNormalWindow(1, root_window(), NULL)); |
2253 // Make sure the window is visible. | 2253 // Make sure the window is visible. |
2254 RunAllPendingInMessageLoop(); | 2254 RunAllPendingInMessageLoop(); |
2255 | 2255 |
2256 ui::MouseEvent mouse_move(ui::ET_MOUSE_MOVED, gfx::Point(80, 80), | 2256 ui::MouseEvent mouse_move(ui::ET_MOUSE_MOVED, gfx::Point(80, 80), |
2257 gfx::Point(80, 80), ui::EventTimeForNow(), | 2257 gfx::Point(80, 80), ui::EventTimeForNow(), |
2258 ui::EF_NONE, ui::EF_NONE); | 2258 ui::EF_NONE, ui::EF_NONE); |
(...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2904 base::RunLoop run_loop; | 2904 base::RunLoop run_loop; |
2905 base::MessageLoop::current()->task_runner()->PostTask( | 2905 base::MessageLoop::current()->task_runner()->PostTask( |
2906 FROM_HERE, base::Bind(&NestedLocationDelegate::InRunMessageLoop, | 2906 FROM_HERE, base::Bind(&NestedLocationDelegate::InRunMessageLoop, |
2907 base::Unretained(this), &run_loop)); | 2907 base::Unretained(this), &run_loop)); |
2908 run_loop.Run(); | 2908 run_loop.Run(); |
2909 initial_run_loop->Quit(); | 2909 initial_run_loop->Quit(); |
2910 } | 2910 } |
2911 | 2911 |
2912 void InRunMessageLoop(base::RunLoop* run_loop) { | 2912 void InRunMessageLoop(base::RunLoop* run_loop) { |
2913 ++nested_message_loop_count_; | 2913 ++nested_message_loop_count_; |
2914 // Nested message loops trigger falling back to using the location from | 2914 // nested run loops trigger falling back to using the location from |
2915 // WindowTreeClient, which is 0,0. | 2915 // WindowTreeClient, which is 0,0. |
2916 EXPECT_EQ(gfx::Point(0, 0), Env::GetInstance()->last_mouse_location()); | 2916 EXPECT_EQ(gfx::Point(0, 0), Env::GetInstance()->last_mouse_location()); |
2917 run_loop->Quit(); | 2917 run_loop->Quit(); |
2918 } | 2918 } |
2919 | 2919 |
2920 int mouse_event_count_ = 0; | 2920 int mouse_event_count_ = 0; |
2921 // Incremented when the deepest message loop is encountered. | 2921 // Incremented when the deepest message loop is encountered. |
2922 int nested_message_loop_count_ = 0; | 2922 int nested_message_loop_count_ = 0; |
2923 gfx::Point last_mouse_location_; | 2923 gfx::Point last_mouse_location_; |
2924 | 2924 |
(...skipping 22 matching lines...) Expand all Loading... |
2947 EXPECT_EQ(1, last_event_location_delegate.mouse_event_count()); | 2947 EXPECT_EQ(1, last_event_location_delegate.mouse_event_count()); |
2948 EXPECT_EQ(1, last_event_location_delegate.nested_message_loop_count()); | 2948 EXPECT_EQ(1, last_event_location_delegate.nested_message_loop_count()); |
2949 EXPECT_EQ(mouse_location, last_event_location_delegate.last_mouse_location()); | 2949 EXPECT_EQ(mouse_location, last_event_location_delegate.last_mouse_location()); |
2950 | 2950 |
2951 // After dispatch the location should fallback to that of the | 2951 // After dispatch the location should fallback to that of the |
2952 // WindowTreeClient, which defaults to 0,0. | 2952 // WindowTreeClient, which defaults to 0,0. |
2953 EXPECT_EQ(gfx::Point(0, 0), Env::GetInstance()->last_mouse_location()); | 2953 EXPECT_EQ(gfx::Point(0, 0), Env::GetInstance()->last_mouse_location()); |
2954 } | 2954 } |
2955 | 2955 |
2956 } // namespace aura | 2956 } // namespace aura |
OLD | NEW |