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

Side by Side Diff: ash/sticky_keys/sticky_keys_unittest.cc

Issue 147203004: aura: Remove event-dispatch methods from WindowTreeHostDelegate interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: win Created 6 years, 10 months 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
OLDNEW
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 "ash/sticky_keys/sticky_keys_controller.h" 5 #include "ash/sticky_keys/sticky_keys_controller.h"
6 6
7 #include <X11/Xlib.h> 7 #include <X11/Xlib.h>
8 #undef None 8 #undef None
9 #undef Bool 9 #undef Bool
10 #undef RootWindow 10 #undef RootWindow
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 257
258 void SendActivateStickyKeyPattern(StickyKeysHandler* handler, 258 void SendActivateStickyKeyPattern(StickyKeysHandler* handler,
259 ui::KeyboardCode key_code) { 259 ui::KeyboardCode key_code) {
260 scoped_ptr<ui::KeyEvent> ev; 260 scoped_ptr<ui::KeyEvent> ev;
261 ev.reset(GenerateKey(true, key_code)); 261 ev.reset(GenerateKey(true, key_code));
262 handler->HandleKeyEvent(ev.get()); 262 handler->HandleKeyEvent(ev.get());
263 ev.reset(GenerateKey(false, key_code)); 263 ev.reset(GenerateKey(false, key_code));
264 handler->HandleKeyEvent(ev.get()); 264 handler->HandleKeyEvent(ev.get());
265 } 265 }
266 266
267 void SendActivateStickyKeyPattern(aura::WindowTreeHostDelegate* delegate, 267 void SendActivateStickyKeyPattern(aura::WindowEventDispatcher* dispatcher,
268 ui::KeyboardCode key_code) { 268 ui::KeyboardCode key_code) {
269 scoped_ptr<ui::KeyEvent> ev; 269 scoped_ptr<ui::KeyEvent> ev;
270 ev.reset(GenerateKey(true, key_code)); 270 ev.reset(GenerateKey(true, key_code));
271 delegate->OnHostKeyEvent(ev.get()); 271 ui::EventDispatchDetails details = dispatcher->OnEventFromSource(ev.get());
272 CHECK(!details.dispatcher_destroyed);
272 ev.reset(GenerateKey(false, key_code)); 273 ev.reset(GenerateKey(false, key_code));
273 delegate->OnHostKeyEvent(ev.get()); 274 details = dispatcher->OnEventFromSource(ev.get());
275 CHECK(!details.dispatcher_destroyed);
274 } 276 }
275 277
276 aura::Window* target() { return target_; } 278 aura::Window* target() { return target_; }
277 279
278 private: 280 private:
279 // Owned by root window of shell, but we can still delete |target_| safely. 281 // Owned by root window of shell, but we can still delete |target_| safely.
280 aura::Window* target_; 282 aura::Window* target_;
281 // The root window of |target_|. Not owned. 283 // The root window of |target_|. Not owned.
282 aura::Window* root_window_; 284 aura::Window* root_window_;
283 285
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after
785 mev.reset(GenerateSynthesizedMouseEvent(false)); 787 mev.reset(GenerateSynthesizedMouseEvent(false));
786 sticky_key.HandleMouseEvent(mev.get()); 788 sticky_key.HandleMouseEvent(mev.get());
787 EXPECT_TRUE(mev->flags() & ui::EF_CONTROL_DOWN); 789 EXPECT_TRUE(mev->flags() & ui::EF_CONTROL_DOWN);
788 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state()); 790 EXPECT_EQ(STICKY_KEY_STATE_DISABLED, sticky_key.current_state());
789 } 791 }
790 792
791 TEST_F(StickyKeysTest, KeyEventDispatchImpl) { 793 TEST_F(StickyKeysTest, KeyEventDispatchImpl) {
792 // Test the actual key event dispatch implementation. 794 // Test the actual key event dispatch implementation.
793 EventBuffer buffer; 795 EventBuffer buffer;
794 ScopedVector<ui::Event> events; 796 ScopedVector<ui::Event> events;
795 aura::WindowTreeHostDelegate* delegate = Shell::GetPrimaryRootWindow() 797 aura::WindowEventDispatcher* dispatcher = Shell::GetPrimaryRootWindow()
796 ->GetDispatcher()->AsWindowTreeHostDelegate(); 798 ->GetDispatcher();
797 Shell::GetInstance()->AddPreTargetHandler(&buffer); 799 Shell::GetInstance()->AddPreTargetHandler(&buffer);
798 Shell::GetInstance()->sticky_keys_controller()->Enable(true); 800 Shell::GetInstance()->sticky_keys_controller()->Enable(true);
799 801
800 SendActivateStickyKeyPattern(delegate, ui::VKEY_CONTROL); 802 SendActivateStickyKeyPattern(dispatcher, ui::VKEY_CONTROL);
801 scoped_ptr<ui::KeyEvent> ev; 803 scoped_ptr<ui::KeyEvent> ev;
802 buffer.PopEvents(&events); 804 buffer.PopEvents(&events);
803 805
804 // Test key press event is correctly modified and modifier release 806 // Test key press event is correctly modified and modifier release
805 // event is sent. 807 // event is sent.
806 ev.reset(GenerateKey(true, ui::VKEY_C)); 808 ev.reset(GenerateKey(true, ui::VKEY_C));
807 delegate->OnHostKeyEvent(ev.get()); 809 ui::EventDispatchDetails details = dispatcher->OnEventFromSource(ev.get());
808 buffer.PopEvents(&events); 810 buffer.PopEvents(&events);
809 EXPECT_EQ(2u, events.size()); 811 EXPECT_EQ(2u, events.size());
810 EXPECT_EQ(ui::ET_KEY_PRESSED, events[0]->type()); 812 EXPECT_EQ(ui::ET_KEY_PRESSED, events[0]->type());
811 EXPECT_EQ(ui::VKEY_C, static_cast<ui::KeyEvent*>(events[0])->key_code()); 813 EXPECT_EQ(ui::VKEY_C, static_cast<ui::KeyEvent*>(events[0])->key_code());
812 EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN); 814 EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN);
813 EXPECT_EQ(ui::ET_KEY_RELEASED, events[1]->type()); 815 EXPECT_EQ(ui::ET_KEY_RELEASED, events[1]->type());
814 EXPECT_EQ(ui::VKEY_CONTROL, 816 EXPECT_EQ(ui::VKEY_CONTROL,
815 static_cast<ui::KeyEvent*>(events[1])->key_code()); 817 static_cast<ui::KeyEvent*>(events[1])->key_code());
816 818
817 // Test key release event is not modified. 819 // Test key release event is not modified.
818 ev.reset(GenerateKey(false, ui::VKEY_C)); 820 ev.reset(GenerateKey(false, ui::VKEY_C));
819 delegate->OnHostKeyEvent(ev.get()); 821 details = dispatcher->OnEventFromSource(ev.get());
822 ASSERT_FALSE(details.dispatcher_destroyed);
820 buffer.PopEvents(&events); 823 buffer.PopEvents(&events);
821 EXPECT_EQ(1u, events.size()); 824 EXPECT_EQ(1u, events.size());
822 EXPECT_EQ(ui::ET_KEY_RELEASED, events[0]->type()); 825 EXPECT_EQ(ui::ET_KEY_RELEASED, events[0]->type());
823 EXPECT_EQ(ui::VKEY_C, 826 EXPECT_EQ(ui::VKEY_C,
824 static_cast<ui::KeyEvent*>(events[0])->key_code()); 827 static_cast<ui::KeyEvent*>(events[0])->key_code());
825 EXPECT_FALSE(events[0]->flags() & ui::EF_CONTROL_DOWN); 828 EXPECT_FALSE(events[0]->flags() & ui::EF_CONTROL_DOWN);
826 829
827 Shell::GetInstance()->RemovePreTargetHandler(&buffer); 830 Shell::GetInstance()->RemovePreTargetHandler(&buffer);
828 } 831 }
829 832
830 TEST_F(StickyKeysTest, MouseEventDispatchImpl) { 833 TEST_F(StickyKeysTest, MouseEventDispatchImpl) {
831 // Test the actual sticky mouse event dispatch implementation. 834 // Test the actual sticky mouse event dispatch implementation.
832 EventBuffer buffer; 835 EventBuffer buffer;
833 ScopedVector<ui::Event> events; 836 ScopedVector<ui::Event> events;
834 aura::WindowTreeHostDelegate* delegate = Shell::GetPrimaryRootWindow() 837 aura::WindowEventDispatcher* dispatcher = Shell::GetPrimaryRootWindow()
835 ->GetDispatcher()->AsWindowTreeHostDelegate(); 838 ->GetDispatcher();
836 Shell::GetInstance()->AddPreTargetHandler(&buffer); 839 Shell::GetInstance()->AddPreTargetHandler(&buffer);
837 Shell::GetInstance()->sticky_keys_controller()->Enable(true); 840 Shell::GetInstance()->sticky_keys_controller()->Enable(true);
838 841
839 scoped_ptr<ui::MouseEvent> ev; 842 scoped_ptr<ui::MouseEvent> ev;
840 SendActivateStickyKeyPattern(delegate, ui::VKEY_CONTROL); 843 SendActivateStickyKeyPattern(dispatcher, ui::VKEY_CONTROL);
841 buffer.PopEvents(&events); 844 buffer.PopEvents(&events);
842 845
843 // Test mouse press event is correctly modified. 846 // Test mouse press event is correctly modified.
844 ev.reset(GenerateMouseEvent(true)); 847 ev.reset(GenerateMouseEvent(true));
845 delegate->OnHostMouseEvent(ev.get()); 848 ui::EventDispatchDetails details = dispatcher->OnEventFromSource(ev.get());
846 buffer.PopEvents(&events); 849 buffer.PopEvents(&events);
847 EXPECT_EQ(1u, events.size()); 850 EXPECT_EQ(1u, events.size());
848 EXPECT_EQ(ui::ET_MOUSE_PRESSED, events[0]->type()); 851 EXPECT_EQ(ui::ET_MOUSE_PRESSED, events[0]->type());
849 EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN); 852 EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN);
850 853
851 // Test mouse release event is correctly modified and modifier release 854 // Test mouse release event is correctly modified and modifier release
852 // event is sent. 855 // event is sent.
853 ev.reset(GenerateMouseEvent(false)); 856 ev.reset(GenerateMouseEvent(false));
854 delegate->OnHostMouseEvent(ev.get()); 857 details = dispatcher->OnEventFromSource(ev.get());
858 ASSERT_FALSE(details.dispatcher_destroyed);
855 buffer.PopEvents(&events); 859 buffer.PopEvents(&events);
856 EXPECT_EQ(2u, events.size()); 860 EXPECT_EQ(2u, events.size());
857 EXPECT_EQ(ui::ET_MOUSE_RELEASED, events[0]->type()); 861 EXPECT_EQ(ui::ET_MOUSE_RELEASED, events[0]->type());
858 EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN); 862 EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN);
859 EXPECT_EQ(ui::ET_KEY_RELEASED, events[1]->type()); 863 EXPECT_EQ(ui::ET_KEY_RELEASED, events[1]->type());
860 EXPECT_EQ(ui::VKEY_CONTROL, 864 EXPECT_EQ(ui::VKEY_CONTROL,
861 static_cast<ui::KeyEvent*>(events[1])->key_code()); 865 static_cast<ui::KeyEvent*>(events[1])->key_code());
862 866
863 Shell::GetInstance()->RemovePreTargetHandler(&buffer); 867 Shell::GetInstance()->RemovePreTargetHandler(&buffer);
864 } 868 }
865 869
866 TEST_F(StickyKeysTest, MouseWheelEventDispatchImpl) { 870 TEST_F(StickyKeysTest, MouseWheelEventDispatchImpl) {
867 // Test the actual mouse wheel event dispatch implementation. 871 // Test the actual mouse wheel event dispatch implementation.
868 EventBuffer buffer; 872 EventBuffer buffer;
869 ScopedVector<ui::Event> events; 873 ScopedVector<ui::Event> events;
870 aura::WindowTreeHostDelegate* delegate = Shell::GetPrimaryRootWindow() 874 aura::WindowEventDispatcher* dispatcher = Shell::GetPrimaryRootWindow()
871 ->GetDispatcher()->AsWindowTreeHostDelegate(); 875 ->GetDispatcher();
872 Shell::GetInstance()->AddPreTargetHandler(&buffer); 876 Shell::GetInstance()->AddPreTargetHandler(&buffer);
873 Shell::GetInstance()->sticky_keys_controller()->Enable(true); 877 Shell::GetInstance()->sticky_keys_controller()->Enable(true);
874 878
875 scoped_ptr<ui::MouseWheelEvent> ev; 879 scoped_ptr<ui::MouseWheelEvent> ev;
876 SendActivateStickyKeyPattern(delegate, ui::VKEY_CONTROL); 880 SendActivateStickyKeyPattern(dispatcher, ui::VKEY_CONTROL);
877 buffer.PopEvents(&events); 881 buffer.PopEvents(&events);
878 882
879 // Test positive mouse wheel event is correctly modified and modifier release 883 // Test positive mouse wheel event is correctly modified and modifier release
880 // event is sent. 884 // event is sent.
881 ev.reset(GenerateMouseWheelEvent(ui::MouseWheelEvent::kWheelDelta)); 885 ev.reset(GenerateMouseWheelEvent(ui::MouseWheelEvent::kWheelDelta));
882 delegate->OnHostMouseEvent(ev.get()); 886 ui::EventDispatchDetails details = dispatcher->OnEventFromSource(ev.get());
887 ASSERT_FALSE(details.dispatcher_destroyed);
883 buffer.PopEvents(&events); 888 buffer.PopEvents(&events);
884 EXPECT_EQ(2u, events.size()); 889 EXPECT_EQ(2u, events.size());
885 EXPECT_TRUE(events[0]->IsMouseWheelEvent()); 890 EXPECT_TRUE(events[0]->IsMouseWheelEvent());
886 EXPECT_EQ(ui::MouseWheelEvent::kWheelDelta, 891 EXPECT_EQ(ui::MouseWheelEvent::kWheelDelta,
887 static_cast<ui::MouseWheelEvent*>(events[0])->y_offset()); 892 static_cast<ui::MouseWheelEvent*>(events[0])->y_offset());
888 EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN); 893 EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN);
889 EXPECT_EQ(ui::ET_KEY_RELEASED, events[1]->type()); 894 EXPECT_EQ(ui::ET_KEY_RELEASED, events[1]->type());
890 EXPECT_EQ(ui::VKEY_CONTROL, 895 EXPECT_EQ(ui::VKEY_CONTROL,
891 static_cast<ui::KeyEvent*>(events[1])->key_code()); 896 static_cast<ui::KeyEvent*>(events[1])->key_code());
892 897
893 // Test negative mouse wheel event is correctly modified and modifier release 898 // Test negative mouse wheel event is correctly modified and modifier release
894 // event is sent. 899 // event is sent.
895 SendActivateStickyKeyPattern(delegate, ui::VKEY_CONTROL); 900 SendActivateStickyKeyPattern(dispatcher, ui::VKEY_CONTROL);
896 buffer.PopEvents(&events); 901 buffer.PopEvents(&events);
897 902
898 ev.reset(GenerateMouseWheelEvent(-ui::MouseWheelEvent::kWheelDelta)); 903 ev.reset(GenerateMouseWheelEvent(-ui::MouseWheelEvent::kWheelDelta));
899 delegate->OnHostMouseEvent(ev.get()); 904 details = dispatcher->OnEventFromSource(ev.get());
905 ASSERT_FALSE(details.dispatcher_destroyed);
900 buffer.PopEvents(&events); 906 buffer.PopEvents(&events);
901 EXPECT_EQ(2u, events.size()); 907 EXPECT_EQ(2u, events.size());
902 EXPECT_TRUE(events[0]->IsMouseWheelEvent()); 908 EXPECT_TRUE(events[0]->IsMouseWheelEvent());
903 EXPECT_EQ(-ui::MouseWheelEvent::kWheelDelta, 909 EXPECT_EQ(-ui::MouseWheelEvent::kWheelDelta,
904 static_cast<ui::MouseWheelEvent*>(events[0])->y_offset()); 910 static_cast<ui::MouseWheelEvent*>(events[0])->y_offset());
905 EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN); 911 EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN);
906 EXPECT_EQ(ui::ET_KEY_RELEASED, events[1]->type()); 912 EXPECT_EQ(ui::ET_KEY_RELEASED, events[1]->type());
907 EXPECT_EQ(ui::VKEY_CONTROL, 913 EXPECT_EQ(ui::VKEY_CONTROL,
908 static_cast<ui::KeyEvent*>(events[1])->key_code()); 914 static_cast<ui::KeyEvent*>(events[1])->key_code());
909 915
910 Shell::GetInstance()->RemovePreTargetHandler(&buffer); 916 Shell::GetInstance()->RemovePreTargetHandler(&buffer);
911 } 917 }
912 918
913 } // namespace ash 919 } // namespace ash
OLDNEW
« no previous file with comments | « ash/sticky_keys/sticky_keys_overlay_unittest.cc ('k') | ash/wm/caption_buttons/frame_maximize_button_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698