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/root_window.h" | 5 #include "ui/aura/root_window.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
(...skipping 1713 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1724 const EventFilterRecorder::Events& events = filter->events(); | 1724 const EventFilterRecorder::Events& events = filter->events(); |
1725 EXPECT_EQ("TOUCH_MOVED TOUCH_RELEASED GESTURE_SCROLL_END GESTURE_END", | 1725 EXPECT_EQ("TOUCH_MOVED TOUCH_RELEASED GESTURE_SCROLL_END GESTURE_END", |
1726 EventTypesToString(events)); | 1726 EventTypesToString(events)); |
1727 ASSERT_EQ(2u, filter->touch_locations().size()); | 1727 ASSERT_EQ(2u, filter->touch_locations().size()); |
1728 EXPECT_EQ(gfx::Point(-40, 10).ToString(), | 1728 EXPECT_EQ(gfx::Point(-40, 10).ToString(), |
1729 filter->touch_locations()[0].ToString()); | 1729 filter->touch_locations()[0].ToString()); |
1730 EXPECT_EQ(gfx::Point(-40, 10).ToString(), | 1730 EXPECT_EQ(gfx::Point(-40, 10).ToString(), |
1731 filter->touch_locations()[1].ToString()); | 1731 filter->touch_locations()[1].ToString()); |
1732 } | 1732 } |
1733 | 1733 |
| 1734 class SelfDestructDelegate : public test::TestWindowDelegate { |
| 1735 public: |
| 1736 SelfDestructDelegate() {} |
| 1737 virtual ~SelfDestructDelegate() {} |
| 1738 |
| 1739 virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE { |
| 1740 window_.reset(); |
| 1741 } |
| 1742 |
| 1743 void set_window(scoped_ptr<aura::Window> window) { |
| 1744 window_ = window.Pass(); |
| 1745 } |
| 1746 bool has_window() const { return !!window_.get(); } |
| 1747 |
| 1748 private: |
| 1749 scoped_ptr<aura::Window> window_; |
| 1750 DISALLOW_COPY_AND_ASSIGN(SelfDestructDelegate); |
| 1751 }; |
| 1752 |
| 1753 TEST_F(RootWindowTest, SynthesizedLocatedEvent) { |
| 1754 test::EventGenerator generator(root_window()); |
| 1755 generator.MoveMouseTo(10, 10); |
| 1756 EXPECT_EQ("10,10", |
| 1757 Env::GetInstance()->last_mouse_location().ToString()); |
| 1758 |
| 1759 // Synthesized event should not update the mouse location. |
| 1760 ui::MouseEvent mouseev(ui::ET_MOUSE_MOVED, gfx::Point(), gfx::Point(), |
| 1761 ui::EF_IS_SYNTHESIZED, 0); |
| 1762 generator.Dispatch(&mouseev); |
| 1763 EXPECT_EQ("10,10", |
| 1764 Env::GetInstance()->last_mouse_location().ToString()); |
| 1765 |
| 1766 generator.MoveMouseTo(0, 0); |
| 1767 EXPECT_EQ("0,0", |
| 1768 Env::GetInstance()->last_mouse_location().ToString()); |
| 1769 |
| 1770 // Make sure the location gets updated when a syntheiszed enter |
| 1771 // event destroyed the window. |
| 1772 SelfDestructDelegate delegate; |
| 1773 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 1774 &delegate, 1, gfx::Rect(50, 50, 100, 100), root_window())); |
| 1775 delegate.set_window(window.Pass()); |
| 1776 EXPECT_TRUE(delegate.has_window()); |
| 1777 |
| 1778 generator.MoveMouseTo(100, 100); |
| 1779 EXPECT_FALSE(delegate.has_window()); |
| 1780 EXPECT_EQ("100,100", |
| 1781 Env::GetInstance()->last_mouse_location().ToString()); |
| 1782 } |
| 1783 |
1734 } // namespace aura | 1784 } // namespace aura |
OLD | NEW |