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

Side by Side Diff: ui/aura/root_window_unittest.cc

Issue 101573006: Changes MouseEvent constructor to take changed_button_flags. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix test; needs updated expectations as mouse entered wasnt sent before because of env::mouse_butto… Created 7 years 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 | Annotate | Revision Log
« no previous file with comments | « ui/aura/root_window.cc ('k') | ui/aura/test/event_generator.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 gfx::Rect bounds1(100, 200, kWindowWidth, kWindowHeight); 107 gfx::Rect bounds1(100, 200, kWindowWidth, kWindowHeight);
108 gfx::Rect bounds2(300, 400, kWindowWidth, kWindowHeight); 108 gfx::Rect bounds2(300, 400, kWindowWidth, kWindowHeight);
109 scoped_ptr<aura::Window> window1(CreateTestWindowWithDelegate( 109 scoped_ptr<aura::Window> window1(CreateTestWindowWithDelegate(
110 delegate1.get(), -1234, bounds1, root_window())); 110 delegate1.get(), -1234, bounds1, root_window()));
111 scoped_ptr<aura::Window> window2(CreateTestWindowWithDelegate( 111 scoped_ptr<aura::Window> window2(CreateTestWindowWithDelegate(
112 delegate2.get(), -5678, bounds2, root_window())); 112 delegate2.get(), -5678, bounds2, root_window()));
113 113
114 // Send a mouse event to window1. 114 // Send a mouse event to window1.
115 gfx::Point point(101, 201); 115 gfx::Point point(101, 201);
116 ui::MouseEvent event1( 116 ui::MouseEvent event1(
117 ui::ET_MOUSE_PRESSED, point, point, ui::EF_LEFT_MOUSE_BUTTON); 117 ui::ET_MOUSE_PRESSED, point, point, ui::EF_LEFT_MOUSE_BUTTON,
118 ui::EF_LEFT_MOUSE_BUTTON);
118 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(&event1); 119 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(&event1);
119 120
120 // Event was tested for non-client area for the target window. 121 // Event was tested for non-client area for the target window.
121 EXPECT_EQ(1, delegate1->non_client_count()); 122 EXPECT_EQ(1, delegate1->non_client_count());
122 EXPECT_EQ(0, delegate2->non_client_count()); 123 EXPECT_EQ(0, delegate2->non_client_count());
123 // The non-client component test was in local coordinates. 124 // The non-client component test was in local coordinates.
124 EXPECT_EQ(gfx::Point(1, 1), delegate1->non_client_location()); 125 EXPECT_EQ(gfx::Point(1, 1), delegate1->non_client_location());
125 // Mouse event was received by target window. 126 // Mouse event was received by target window.
126 EXPECT_EQ(1, delegate1->mouse_event_count()); 127 EXPECT_EQ(1, delegate1->mouse_event_count());
127 EXPECT_EQ(0, delegate2->mouse_event_count()); 128 EXPECT_EQ(0, delegate2->mouse_event_count());
128 // Event was in local coordinates. 129 // Event was in local coordinates.
129 EXPECT_EQ(gfx::Point(1, 1), delegate1->mouse_event_location()); 130 EXPECT_EQ(gfx::Point(1, 1), delegate1->mouse_event_location());
130 // Non-client flag was set. 131 // Non-client flag was set.
131 EXPECT_TRUE(delegate1->mouse_event_flags() & ui::EF_IS_NON_CLIENT); 132 EXPECT_TRUE(delegate1->mouse_event_flags() & ui::EF_IS_NON_CLIENT);
132 } 133 }
133 134
134 TEST_F(RootWindowTest, RepostEvent) { 135 TEST_F(RootWindowTest, RepostEvent) {
135 // Test RepostEvent in RootWindow. It only works for Mouse Press. 136 // Test RepostEvent in RootWindow. It only works for Mouse Press.
136 EXPECT_FALSE(Env::GetInstance()->IsMouseButtonDown()); 137 EXPECT_FALSE(Env::GetInstance()->IsMouseButtonDown());
137 gfx::Point point(10, 10); 138 gfx::Point point(10, 10);
138 ui::MouseEvent event( 139 ui::MouseEvent event(
139 ui::ET_MOUSE_PRESSED, point, point, ui::EF_LEFT_MOUSE_BUTTON); 140 ui::ET_MOUSE_PRESSED, point, point, ui::EF_LEFT_MOUSE_BUTTON,
141 ui::EF_LEFT_MOUSE_BUTTON);
140 dispatcher()->RepostEvent(event); 142 dispatcher()->RepostEvent(event);
141 RunAllPendingInMessageLoop(); 143 RunAllPendingInMessageLoop();
142 EXPECT_TRUE(Env::GetInstance()->IsMouseButtonDown()); 144 EXPECT_TRUE(Env::GetInstance()->IsMouseButtonDown());
143 } 145 }
144 146
145 // Check that we correctly track the state of the mouse buttons in response to 147 // Check that we correctly track the state of the mouse buttons in response to
146 // button press and release events. 148 // button press and release events.
147 TEST_F(RootWindowTest, MouseButtonState) { 149 TEST_F(RootWindowTest, MouseButtonState) {
148 EXPECT_FALSE(Env::GetInstance()->IsMouseButtonDown()); 150 EXPECT_FALSE(Env::GetInstance()->IsMouseButtonDown());
149 151
150 gfx::Point location; 152 gfx::Point location;
151 scoped_ptr<ui::MouseEvent> event; 153 scoped_ptr<ui::MouseEvent> event;
152 154
153 // Press the left button. 155 // Press the left button.
154 event.reset(new ui::MouseEvent( 156 event.reset(new ui::MouseEvent(
155 ui::ET_MOUSE_PRESSED, 157 ui::ET_MOUSE_PRESSED,
156 location, 158 location,
157 location, 159 location,
160 ui::EF_LEFT_MOUSE_BUTTON,
158 ui::EF_LEFT_MOUSE_BUTTON)); 161 ui::EF_LEFT_MOUSE_BUTTON));
159 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(event.get()); 162 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(event.get());
160 EXPECT_TRUE(Env::GetInstance()->IsMouseButtonDown()); 163 EXPECT_TRUE(Env::GetInstance()->IsMouseButtonDown());
161 164
162 // Additionally press the right. 165 // Additionally press the right.
163 event.reset(new ui::MouseEvent( 166 event.reset(new ui::MouseEvent(
164 ui::ET_MOUSE_PRESSED, 167 ui::ET_MOUSE_PRESSED,
165 location, 168 location,
166 location, 169 location,
167 ui::EF_LEFT_MOUSE_BUTTON | ui::EF_RIGHT_MOUSE_BUTTON)); 170 ui::EF_LEFT_MOUSE_BUTTON | ui::EF_RIGHT_MOUSE_BUTTON,
171 ui::EF_RIGHT_MOUSE_BUTTON));
168 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(event.get()); 172 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(event.get());
169 EXPECT_TRUE(Env::GetInstance()->IsMouseButtonDown()); 173 EXPECT_TRUE(Env::GetInstance()->IsMouseButtonDown());
170 174
171 // Release the left button. 175 // Release the left button.
172 event.reset(new ui::MouseEvent( 176 event.reset(new ui::MouseEvent(
173 ui::ET_MOUSE_RELEASED, 177 ui::ET_MOUSE_RELEASED,
174 location, 178 location,
175 location, 179 location,
176 ui::EF_RIGHT_MOUSE_BUTTON)); 180 ui::EF_RIGHT_MOUSE_BUTTON,
181 ui::EF_LEFT_MOUSE_BUTTON));
177 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(event.get()); 182 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(event.get());
178 EXPECT_TRUE(Env::GetInstance()->IsMouseButtonDown()); 183 EXPECT_TRUE(Env::GetInstance()->IsMouseButtonDown());
179 184
180 // Release the right button. We should ignore the Shift-is-down flag. 185 // Release the right button. We should ignore the Shift-is-down flag.
181 event.reset(new ui::MouseEvent( 186 event.reset(new ui::MouseEvent(
182 ui::ET_MOUSE_RELEASED, 187 ui::ET_MOUSE_RELEASED,
183 location, 188 location,
184 location, 189 location,
185 ui::EF_SHIFT_DOWN)); 190 ui::EF_SHIFT_DOWN,
191 ui::EF_RIGHT_MOUSE_BUTTON));
186 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(event.get()); 192 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(event.get());
187 EXPECT_FALSE(Env::GetInstance()->IsMouseButtonDown()); 193 EXPECT_FALSE(Env::GetInstance()->IsMouseButtonDown());
188 194
189 // Press the middle button. 195 // Press the middle button.
190 event.reset(new ui::MouseEvent( 196 event.reset(new ui::MouseEvent(
191 ui::ET_MOUSE_PRESSED, 197 ui::ET_MOUSE_PRESSED,
192 location, 198 location,
193 location, 199 location,
200 ui::EF_MIDDLE_MOUSE_BUTTON,
194 ui::EF_MIDDLE_MOUSE_BUTTON)); 201 ui::EF_MIDDLE_MOUSE_BUTTON));
195 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(event.get()); 202 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(event.get());
196 EXPECT_TRUE(Env::GetInstance()->IsMouseButtonDown()); 203 EXPECT_TRUE(Env::GetInstance()->IsMouseButtonDown());
197 } 204 }
198 205
199 TEST_F(RootWindowTest, TranslatedEvent) { 206 TEST_F(RootWindowTest, TranslatedEvent) {
200 scoped_ptr<Window> w1(test::CreateTestWindowWithDelegate(NULL, 1, 207 scoped_ptr<Window> w1(test::CreateTestWindowWithDelegate(NULL, 1,
201 gfx::Rect(50, 50, 100, 100), root_window())); 208 gfx::Rect(50, 50, 100, 100), root_window()));
202 209
203 gfx::Point origin(100, 100); 210 gfx::Point origin(100, 100);
204 ui::MouseEvent root(ui::ET_MOUSE_PRESSED, origin, origin, 0); 211 ui::MouseEvent root(ui::ET_MOUSE_PRESSED, origin, origin, 0, 0);
205 212
206 EXPECT_EQ("100,100", root.location().ToString()); 213 EXPECT_EQ("100,100", root.location().ToString());
207 EXPECT_EQ("100,100", root.root_location().ToString()); 214 EXPECT_EQ("100,100", root.root_location().ToString());
208 215
209 ui::MouseEvent translated_event( 216 ui::MouseEvent translated_event(
210 root, static_cast<Window*>(root_window()), w1.get(), 217 root, static_cast<Window*>(root_window()), w1.get(),
211 ui::ET_MOUSE_ENTERED, root.flags()); 218 ui::ET_MOUSE_ENTERED, root.flags());
212 EXPECT_EQ("50,50", translated_event.location().ToString()); 219 EXPECT_EQ("50,50", translated_event.location().ToString());
213 EXPECT_EQ("100,100", translated_event.root_location().ToString()); 220 EXPECT_EQ("100,100", translated_event.root_location().ToString());
214 } 221 }
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 // over |window| and verify |window| gets it (|window| gets it because it has 567 // over |window| and verify |window| gets it (|window| gets it because it has
561 // capture). 568 // capture).
562 EXPECT_FALSE(Env::GetInstance()->IsMouseButtonDown()); 569 EXPECT_FALSE(Env::GetInstance()->IsMouseButtonDown());
563 scoped_ptr<Window> window(CreateNormalWindow(1, root_window(), NULL)); 570 scoped_ptr<Window> window(CreateNormalWindow(1, root_window(), NULL));
564 window->SetBounds(gfx::Rect(20, 20, 40, 30)); 571 window->SetBounds(gfx::Rect(20, 20, 40, 30));
565 EventFilterRecorder* recorder = new EventFilterRecorder; 572 EventFilterRecorder* recorder = new EventFilterRecorder;
566 window->SetEventFilter(recorder); // Takes ownership. 573 window->SetEventFilter(recorder); // Takes ownership.
567 window->SetCapture(); 574 window->SetCapture();
568 const ui::MouseEvent press_event( 575 const ui::MouseEvent press_event(
569 ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), 576 ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(),
570 ui::EF_LEFT_MOUSE_BUTTON); 577 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON);
571 dispatcher()->RepostEvent(press_event); 578 dispatcher()->RepostEvent(press_event);
572 RunAllPendingInMessageLoop(); // Necessitated by RepostEvent(). 579 RunAllPendingInMessageLoop(); // Necessitated by RepostEvent().
573 // Mouse moves/enters may be generated. We only care about a pressed. 580 // Mouse moves/enters may be generated. We only care about a pressed.
574 EXPECT_TRUE(EventTypesToString(recorder->events()).find("MOUSE_PRESSED") != 581 EXPECT_TRUE(EventTypesToString(recorder->events()).find("MOUSE_PRESSED") !=
575 std::string::npos) << EventTypesToString(recorder->events()); 582 std::string::npos) << EventTypesToString(recorder->events());
576 } 583 }
577 584
578 TEST_F(RootWindowTest, MouseMovesHeld) { 585 TEST_F(RootWindowTest, MouseMovesHeld) {
579 EventFilterRecorder* filter = new EventFilterRecorder; 586 EventFilterRecorder* filter = new EventFilterRecorder;
580 root_window()->SetEventFilter(filter); // passes ownership 587 root_window()->SetEventFilter(filter); // passes ownership
581 588
582 test::TestWindowDelegate delegate; 589 test::TestWindowDelegate delegate;
583 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( 590 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate(
584 &delegate, 1, gfx::Rect(0, 0, 100, 100), root_window())); 591 &delegate, 1, gfx::Rect(0, 0, 100, 100), root_window()));
585 592
586 ui::MouseEvent mouse_move_event(ui::ET_MOUSE_MOVED, gfx::Point(0, 0), 593 ui::MouseEvent mouse_move_event(ui::ET_MOUSE_MOVED, gfx::Point(0, 0),
587 gfx::Point(0, 0), 0); 594 gfx::Point(0, 0), 0, 0);
588 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent( 595 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(
589 &mouse_move_event); 596 &mouse_move_event);
590 // Discard MOUSE_ENTER. 597 // Discard MOUSE_ENTER.
591 filter->events().clear(); 598 filter->events().clear();
592 599
593 dispatcher()->HoldPointerMoves(); 600 dispatcher()->HoldPointerMoves();
594 601
595 // Check that we don't immediately dispatch the MOUSE_DRAGGED event. 602 // Check that we don't immediately dispatch the MOUSE_DRAGGED event.
596 ui::MouseEvent mouse_dragged_event(ui::ET_MOUSE_DRAGGED, gfx::Point(0, 0), 603 ui::MouseEvent mouse_dragged_event(ui::ET_MOUSE_DRAGGED, gfx::Point(0, 0),
597 gfx::Point(0, 0), 0); 604 gfx::Point(0, 0), 0, 0);
598 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent( 605 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(
599 &mouse_dragged_event); 606 &mouse_dragged_event);
600 EXPECT_TRUE(filter->events().empty()); 607 EXPECT_TRUE(filter->events().empty());
601 608
602 // Check that we do dispatch the held MOUSE_DRAGGED event before another type 609 // Check that we do dispatch the held MOUSE_DRAGGED event before another type
603 // of event. 610 // of event.
604 ui::MouseEvent mouse_pressed_event(ui::ET_MOUSE_PRESSED, gfx::Point(0, 0), 611 ui::MouseEvent mouse_pressed_event(ui::ET_MOUSE_PRESSED, gfx::Point(0, 0),
605 gfx::Point(0, 0), 0); 612 gfx::Point(0, 0), 0, 0);
606 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent( 613 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(
607 &mouse_pressed_event); 614 &mouse_pressed_event);
608 EXPECT_EQ("MOUSE_DRAGGED MOUSE_PRESSED", 615 EXPECT_EQ("MOUSE_DRAGGED MOUSE_PRESSED",
609 EventTypesToString(filter->events())); 616 EventTypesToString(filter->events()));
610 filter->events().clear(); 617 filter->events().clear();
611 618
612 // Check that we coalesce held MOUSE_DRAGGED events. 619 // Check that we coalesce held MOUSE_DRAGGED events.
613 ui::MouseEvent mouse_dragged_event2(ui::ET_MOUSE_DRAGGED, gfx::Point(1, 1), 620 ui::MouseEvent mouse_dragged_event2(ui::ET_MOUSE_DRAGGED, gfx::Point(1, 1),
614 gfx::Point(1, 1), 0); 621 gfx::Point(1, 1), 0, 0);
615 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent( 622 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(
616 &mouse_dragged_event); 623 &mouse_dragged_event);
617 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent( 624 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(
618 &mouse_dragged_event2); 625 &mouse_dragged_event2);
619 EXPECT_TRUE(filter->events().empty()); 626 EXPECT_TRUE(filter->events().empty());
620 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent( 627 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(
621 &mouse_pressed_event); 628 &mouse_pressed_event);
622 EXPECT_EQ("MOUSE_DRAGGED MOUSE_PRESSED", 629 EXPECT_EQ("MOUSE_DRAGGED MOUSE_PRESSED",
623 EventTypesToString(filter->events())); 630 EventTypesToString(filter->events()));
624 filter->events().clear(); 631 filter->events().clear();
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
725 test::TestWindowDelegate delegate; 732 test::TestWindowDelegate delegate;
726 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( 733 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate(
727 &delegate, 1234, gfx::Rect(5, 5, 100, 100), root_window())); 734 &delegate, 1234, gfx::Rect(5, 5, 100, 100), root_window()));
728 window->Show(); 735 window->Show();
729 window->SetCapture(); 736 window->SetCapture();
730 737
731 test::TestCursorClient cursor_client(root_window()); 738 test::TestCursorClient cursor_client(root_window());
732 739
733 // Dispatch a non-synthetic mouse event when mouse events are enabled. 740 // Dispatch a non-synthetic mouse event when mouse events are enabled.
734 ui::MouseEvent mouse1(ui::ET_MOUSE_MOVED, gfx::Point(10, 10), 741 ui::MouseEvent mouse1(ui::ET_MOUSE_MOVED, gfx::Point(10, 10),
735 gfx::Point(10, 10), 0); 742 gfx::Point(10, 10), 0, 0);
736 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(&mouse1); 743 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(&mouse1);
737 EXPECT_FALSE(filter->events().empty()); 744 EXPECT_FALSE(filter->events().empty());
738 filter->events().clear(); 745 filter->events().clear();
739 746
740 // Dispatch a synthetic mouse event when mouse events are enabled. 747 // Dispatch a synthetic mouse event when mouse events are enabled.
741 ui::MouseEvent mouse2(ui::ET_MOUSE_MOVED, gfx::Point(10, 10), 748 ui::MouseEvent mouse2(ui::ET_MOUSE_MOVED, gfx::Point(10, 10),
742 gfx::Point(10, 10), ui::EF_IS_SYNTHESIZED); 749 gfx::Point(10, 10), ui::EF_IS_SYNTHESIZED, 0);
743 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(&mouse2); 750 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(&mouse2);
744 EXPECT_FALSE(filter->events().empty()); 751 EXPECT_FALSE(filter->events().empty());
745 filter->events().clear(); 752 filter->events().clear();
746 753
747 // Dispatch a synthetic mouse event when mouse events are disabled. 754 // Dispatch a synthetic mouse event when mouse events are disabled.
748 cursor_client.DisableMouseEvents(); 755 cursor_client.DisableMouseEvents();
749 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(&mouse2); 756 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(&mouse2);
750 EXPECT_TRUE(filter->events().empty()); 757 EXPECT_TRUE(filter->events().empty());
751 } 758 }
752 759
753 // Tests that a mouse exit is dispatched to the last known cursor location 760 // Tests that a mouse exit is dispatched to the last known cursor location
754 // when the cursor becomes invisible. 761 // when the cursor becomes invisible.
755 TEST_F(RootWindowTest, DispatchMouseExitWhenCursorHidden) { 762 TEST_F(RootWindowTest, DispatchMouseExitWhenCursorHidden) {
756 EventFilterRecorder* filter = new EventFilterRecorder; 763 EventFilterRecorder* filter = new EventFilterRecorder;
757 root_window()->SetEventFilter(filter); // passes ownership 764 root_window()->SetEventFilter(filter); // passes ownership
758 765
759 test::TestWindowDelegate delegate; 766 test::TestWindowDelegate delegate;
760 gfx::Point window_origin(7, 18); 767 gfx::Point window_origin(7, 18);
761 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( 768 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate(
762 &delegate, 1234, gfx::Rect(window_origin, 769 &delegate, 1234, gfx::Rect(window_origin,
763 gfx::Size(100, 100)), root_window())); 770 gfx::Size(100, 100)), root_window()));
764 window->Show(); 771 window->Show();
765 772
766 // Dispatch a mouse move event into the window. 773 // Dispatch a mouse move event into the window.
767 gfx::Point mouse_location(gfx::Point(15, 25)); 774 gfx::Point mouse_location(gfx::Point(15, 25));
768 ui::MouseEvent mouse1(ui::ET_MOUSE_MOVED, mouse_location, 775 ui::MouseEvent mouse1(ui::ET_MOUSE_MOVED, mouse_location,
769 mouse_location, 0); 776 mouse_location, 0, 0);
770 EXPECT_TRUE(filter->events().empty()); 777 EXPECT_TRUE(filter->events().empty());
771 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(&mouse1); 778 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(&mouse1);
772 EXPECT_FALSE(filter->events().empty()); 779 EXPECT_FALSE(filter->events().empty());
773 filter->events().clear(); 780 filter->events().clear();
774 781
775 // Hide the cursor and verify a mouse exit was dispatched. 782 // Hide the cursor and verify a mouse exit was dispatched.
776 dispatcher()->OnCursorVisibilityChanged(false); 783 dispatcher()->OnCursorVisibilityChanged(false);
777 EXPECT_FALSE(filter->events().empty()); 784 EXPECT_FALSE(filter->events().empty());
778 EXPECT_EQ("MOUSE_EXITED", EventTypesToString(filter->events())); 785 EXPECT_EQ("MOUSE_EXITED", EventTypesToString(filter->events()));
779 786
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after
1254 virtual ~DontResetHeldEventWindowDelegate() {} 1261 virtual ~DontResetHeldEventWindowDelegate() {}
1255 1262
1256 int mouse_event_count() const { return mouse_event_count_; } 1263 int mouse_event_count() const { return mouse_event_count_; }
1257 1264
1258 // TestWindowDelegate: 1265 // TestWindowDelegate:
1259 virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE { 1266 virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE {
1260 if ((event->flags() & ui::EF_SHIFT_DOWN) != 0 && 1267 if ((event->flags() & ui::EF_SHIFT_DOWN) != 0 &&
1261 mouse_event_count_++ == 0) { 1268 mouse_event_count_++ == 0) {
1262 ui::MouseEvent mouse_event(ui::ET_MOUSE_PRESSED, 1269 ui::MouseEvent mouse_event(ui::ET_MOUSE_PRESSED,
1263 gfx::Point(10, 10), gfx::Point(10, 10), 1270 gfx::Point(10, 10), gfx::Point(10, 10),
1264 ui::EF_SHIFT_DOWN); 1271 ui::EF_SHIFT_DOWN, 0);
1265 root_->GetDispatcher()->RepostEvent(mouse_event); 1272 root_->GetDispatcher()->RepostEvent(mouse_event);
1266 } 1273 }
1267 } 1274 }
1268 1275
1269 private: 1276 private:
1270 Window* root_; 1277 Window* root_;
1271 int mouse_event_count_; 1278 int mouse_event_count_;
1272 1279
1273 DISALLOW_COPY_AND_ASSIGN(DontResetHeldEventWindowDelegate); 1280 DISALLOW_COPY_AND_ASSIGN(DontResetHeldEventWindowDelegate);
1274 }; 1281 };
1275 1282
1276 } // namespace 1283 } // namespace
1277 1284
1278 // Verifies RootWindow doesn't reset |RootWindow::held_repostable_event_| after 1285 // Verifies RootWindow doesn't reset |RootWindow::held_repostable_event_| after
1279 // dispatching. This is done by using DontResetHeldEventWindowDelegate, which 1286 // dispatching. This is done by using DontResetHeldEventWindowDelegate, which
1280 // tracks the number of events with ui::EF_SHIFT_DOWN set (all reposted events 1287 // tracks the number of events with ui::EF_SHIFT_DOWN set (all reposted events
1281 // have EF_SHIFT_DOWN). When the first event is seen RepostEvent() is used to 1288 // have EF_SHIFT_DOWN). When the first event is seen RepostEvent() is used to
1282 // schedule another reposted event. 1289 // schedule another reposted event.
1283 TEST_F(RootWindowTest, DontResetHeldEvent) { 1290 TEST_F(RootWindowTest, DontResetHeldEvent) {
1284 DontResetHeldEventWindowDelegate delegate(root_window()); 1291 DontResetHeldEventWindowDelegate delegate(root_window());
1285 scoped_ptr<Window> w1(CreateNormalWindow(1, root_window(), &delegate)); 1292 scoped_ptr<Window> w1(CreateNormalWindow(1, root_window(), &delegate));
1286 RootWindowHostDelegate* root_window_delegate = 1293 RootWindowHostDelegate* root_window_delegate =
1287 static_cast<RootWindowHostDelegate*>(root_window()->GetDispatcher()); 1294 static_cast<RootWindowHostDelegate*>(root_window()->GetDispatcher());
1288 w1->SetBounds(gfx::Rect(0, 0, 40, 40)); 1295 w1->SetBounds(gfx::Rect(0, 0, 40, 40));
1289 ui::MouseEvent pressed(ui::ET_MOUSE_PRESSED, 1296 ui::MouseEvent pressed(ui::ET_MOUSE_PRESSED,
1290 gfx::Point(10, 10), gfx::Point(10, 10), 1297 gfx::Point(10, 10), gfx::Point(10, 10),
1291 ui::EF_SHIFT_DOWN); 1298 ui::EF_SHIFT_DOWN, 0);
1292 root_window()->GetDispatcher()->RepostEvent(pressed); 1299 root_window()->GetDispatcher()->RepostEvent(pressed);
1293 ui::MouseEvent pressed2(ui::ET_MOUSE_PRESSED, 1300 ui::MouseEvent pressed2(ui::ET_MOUSE_PRESSED,
1294 gfx::Point(10, 10), gfx::Point(10, 10), 0); 1301 gfx::Point(10, 10), gfx::Point(10, 10), 0, 0);
1295 // Invoke OnHostMouseEvent() to flush event scheduled by way of RepostEvent(). 1302 // Invoke OnHostMouseEvent() to flush event scheduled by way of RepostEvent().
1296 root_window_delegate->OnHostMouseEvent(&pressed2); 1303 root_window_delegate->OnHostMouseEvent(&pressed2);
1297 // Delegate should have seen reposted event (identified by way of 1304 // Delegate should have seen reposted event (identified by way of
1298 // EF_SHIFT_DOWN). Invoke OnHostMouseEvent() to flush the second 1305 // EF_SHIFT_DOWN). Invoke OnHostMouseEvent() to flush the second
1299 // RepostedEvent(). 1306 // RepostedEvent().
1300 EXPECT_EQ(1, delegate.mouse_event_count()); 1307 EXPECT_EQ(1, delegate.mouse_event_count());
1301 root_window_delegate->OnHostMouseEvent(&pressed2); 1308 root_window_delegate->OnHostMouseEvent(&pressed2);
1302 EXPECT_EQ(2, delegate.mouse_event_count()); 1309 EXPECT_EQ(2, delegate.mouse_event_count());
1303 } 1310 }
1304 1311
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1351 // Should be deleted by |delegate|. 1358 // Should be deleted by |delegate|.
1352 RootWindow* r2 = 1359 RootWindow* r2 =
1353 new RootWindow(RootWindow::CreateParams(gfx::Rect(0, 0, 100, 100))); 1360 new RootWindow(RootWindow::CreateParams(gfx::Rect(0, 0, 100, 100)));
1354 r2->Init(); 1361 r2->Init();
1355 DeleteRootFromHeldMouseEventDelegate delegate(r2); 1362 DeleteRootFromHeldMouseEventDelegate delegate(r2);
1356 // Owned by |r2|. 1363 // Owned by |r2|.
1357 Window* w1 = CreateNormalWindow(1, r2->window(), &delegate); 1364 Window* w1 = CreateNormalWindow(1, r2->window(), &delegate);
1358 w1->SetBounds(gfx::Rect(0, 0, 40, 40)); 1365 w1->SetBounds(gfx::Rect(0, 0, 40, 40));
1359 ui::MouseEvent pressed(ui::ET_MOUSE_PRESSED, 1366 ui::MouseEvent pressed(ui::ET_MOUSE_PRESSED,
1360 gfx::Point(10, 10), gfx::Point(10, 10), 1367 gfx::Point(10, 10), gfx::Point(10, 10),
1361 ui::EF_SHIFT_DOWN); 1368 ui::EF_SHIFT_DOWN, 0);
1362 r2->RepostEvent(pressed); 1369 r2->RepostEvent(pressed);
1363 // RunAllPendingInMessageLoop() to make sure the |pressed| is run. 1370 // RunAllPendingInMessageLoop() to make sure the |pressed| is run.
1364 RunAllPendingInMessageLoop(); 1371 RunAllPendingInMessageLoop();
1365 EXPECT_TRUE(delegate.got_mouse_event()); 1372 EXPECT_TRUE(delegate.got_mouse_event());
1366 EXPECT_TRUE(delegate.got_destroy()); 1373 EXPECT_TRUE(delegate.got_destroy());
1367 } 1374 }
1368 1375
1369 TEST_F(RootWindowTest, WindowHideCancelsActiveTouches) { 1376 TEST_F(RootWindowTest, WindowHideCancelsActiveTouches) {
1370 EventFilterRecorder* filter = new EventFilterRecorder; 1377 EventFilterRecorder* filter = new EventFilterRecorder;
1371 root_window()->SetEventFilter(filter); // passes ownership 1378 root_window()->SetEventFilter(filter); // passes ownership
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
1470 class RootWindowTestWithMessageLoop : public RootWindowTest { 1477 class RootWindowTestWithMessageLoop : public RootWindowTest {
1471 public: 1478 public:
1472 RootWindowTestWithMessageLoop() {} 1479 RootWindowTestWithMessageLoop() {}
1473 virtual ~RootWindowTestWithMessageLoop() {} 1480 virtual ~RootWindowTestWithMessageLoop() {}
1474 1481
1475 void RunTest() { 1482 void RunTest() {
1476 // Start a nested message-loop, post an event to be dispatched, and then 1483 // Start a nested message-loop, post an event to be dispatched, and then
1477 // terminate the message-loop. When the message-loop unwinds and gets back, 1484 // terminate the message-loop. When the message-loop unwinds and gets back,
1478 // the reposted event should not have fired. 1485 // the reposted event should not have fired.
1479 ui::MouseEvent mouse(ui::ET_MOUSE_PRESSED, gfx::Point(10, 10), 1486 ui::MouseEvent mouse(ui::ET_MOUSE_PRESSED, gfx::Point(10, 10),
1480 gfx::Point(10, 10), ui::EF_NONE); 1487 gfx::Point(10, 10), ui::EF_NONE, ui::EF_NONE);
1481 message_loop()->PostTask(FROM_HERE, 1488 message_loop()->PostTask(FROM_HERE,
1482 base::Bind(&RootWindow::RepostEvent, 1489 base::Bind(&RootWindow::RepostEvent,
1483 base::Unretained(dispatcher()), 1490 base::Unretained(dispatcher()),
1484 mouse)); 1491 mouse));
1485 message_loop()->PostTask(FROM_HERE, 1492 message_loop()->PostTask(FROM_HERE,
1486 message_loop()->QuitClosure()); 1493 message_loop()->QuitClosure());
1487 1494
1488 base::MessageLoop::ScopedNestableTaskAllower allow(message_loop()); 1495 base::MessageLoop::ScopedNestableTaskAllower allow(message_loop());
1489 base::RunLoop loop; 1496 base::RunLoop loop;
1490 loop.Run(); 1497 loop.Run();
(...skipping 30 matching lines...) Expand all
1521 CHECK(!message_loop()->is_running()); 1528 CHECK(!message_loop()->is_running());
1522 // Perform the test in a callback, so that it runs after the message-loop 1529 // Perform the test in a callback, so that it runs after the message-loop
1523 // starts. 1530 // starts.
1524 message_loop()->PostTask(FROM_HERE, 1531 message_loop()->PostTask(FROM_HERE,
1525 base::Bind(&RootWindowTestWithMessageLoop::RunTest, 1532 base::Bind(&RootWindowTestWithMessageLoop::RunTest,
1526 base::Unretained(this))); 1533 base::Unretained(this)));
1527 message_loop()->Run(); 1534 message_loop()->Run();
1528 } 1535 }
1529 1536
1530 } // namespace aura 1537 } // namespace aura
OLDNEW
« no previous file with comments | « ui/aura/root_window.cc ('k') | ui/aura/test/event_generator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698