| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/shell.h" | 5 #include "ash/shell.h" |
| 6 #include "base/macros.h" | 6 #include "base/macros.h" |
| 7 #include "components/exo/buffer.h" | 7 #include "components/exo/buffer.h" |
| 8 #include "components/exo/display.h" |
| 8 #include "components/exo/keyboard.h" | 9 #include "components/exo/keyboard.h" |
| 9 #include "components/exo/keyboard_delegate.h" | 10 #include "components/exo/keyboard_delegate.h" |
| 10 #include "components/exo/shell_surface.h" | 11 #include "components/exo/shell_surface.h" |
| 11 #include "components/exo/surface.h" | 12 #include "components/exo/surface.h" |
| 12 #include "components/exo/test/exo_test_base.h" | 13 #include "components/exo/test/exo_test_base.h" |
| 13 #include "components/exo/test/exo_test_helper.h" | 14 #include "components/exo/test/exo_test_helper.h" |
| 14 #include "testing/gmock/include/gmock/gmock.h" | 15 #include "testing/gmock/include/gmock/gmock.h" |
| 15 #include "ui/aura/client/focus_client.h" | 16 #include "ui/aura/client/focus_client.h" |
| 16 #include "ui/events/keycodes/dom/dom_code.h" | 17 #include "ui/events/keycodes/dom/dom_code.h" |
| 17 #include "ui/events/test/event_generator.h" | 18 #include "ui/events/test/event_generator.h" |
| (...skipping 11 matching lines...) Expand all Loading... |
| 29 MOCK_METHOD1(OnKeyboardDestroying, void(Keyboard*)); | 30 MOCK_METHOD1(OnKeyboardDestroying, void(Keyboard*)); |
| 30 MOCK_CONST_METHOD1(CanAcceptKeyboardEventsForSurface, bool(Surface*)); | 31 MOCK_CONST_METHOD1(CanAcceptKeyboardEventsForSurface, bool(Surface*)); |
| 31 MOCK_METHOD2(OnKeyboardEnter, | 32 MOCK_METHOD2(OnKeyboardEnter, |
| 32 void(Surface*, const std::vector<ui::DomCode>&)); | 33 void(Surface*, const std::vector<ui::DomCode>&)); |
| 33 MOCK_METHOD1(OnKeyboardLeave, void(Surface*)); | 34 MOCK_METHOD1(OnKeyboardLeave, void(Surface*)); |
| 34 MOCK_METHOD3(OnKeyboardKey, void(base::TimeTicks, ui::DomCode, bool)); | 35 MOCK_METHOD3(OnKeyboardKey, void(base::TimeTicks, ui::DomCode, bool)); |
| 35 MOCK_METHOD1(OnKeyboardModifiers, void(int)); | 36 MOCK_METHOD1(OnKeyboardModifiers, void(int)); |
| 36 }; | 37 }; |
| 37 | 38 |
| 38 TEST_F(KeyboardTest, OnKeyboardEnter) { | 39 TEST_F(KeyboardTest, OnKeyboardEnter) { |
| 40 const Display display; |
| 39 std::unique_ptr<Surface> surface(new Surface); | 41 std::unique_ptr<Surface> surface(new Surface); |
| 40 std::unique_ptr<ShellSurface> shell_surface(new ShellSurface(surface.get())); | 42 std::unique_ptr<ShellSurface> shell_surface( |
| 43 new ShellSurface(display, surface.get())); |
| 41 gfx::Size buffer_size(10, 10); | 44 gfx::Size buffer_size(10, 10); |
| 42 std::unique_ptr<Buffer> buffer( | 45 std::unique_ptr<Buffer> buffer( |
| 43 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size))); | 46 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size))); |
| 44 surface->Attach(buffer.get()); | 47 surface->Attach(buffer.get()); |
| 45 surface->Commit(); | 48 surface->Commit(); |
| 46 | 49 |
| 47 aura::client::FocusClient* focus_client = | 50 aura::client::FocusClient* focus_client = |
| 48 aura::client::GetFocusClient(ash::Shell::GetPrimaryRootWindow()); | 51 aura::client::GetFocusClient(ash::Shell::GetPrimaryRootWindow()); |
| 49 focus_client->FocusWindow(surface->window()); | 52 focus_client->FocusWindow(surface->window()); |
| 50 | 53 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 70 focus_client->FocusWindow(nullptr); | 73 focus_client->FocusWindow(nullptr); |
| 71 focus_client->FocusWindow(surface->window()); | 74 focus_client->FocusWindow(surface->window()); |
| 72 // Surface should maintain keyboard focus when moved to top-level window. | 75 // Surface should maintain keyboard focus when moved to top-level window. |
| 73 focus_client->FocusWindow(surface->window()->GetToplevelWindow()); | 76 focus_client->FocusWindow(surface->window()->GetToplevelWindow()); |
| 74 | 77 |
| 75 EXPECT_CALL(delegate, OnKeyboardDestroying(keyboard.get())); | 78 EXPECT_CALL(delegate, OnKeyboardDestroying(keyboard.get())); |
| 76 keyboard.reset(); | 79 keyboard.reset(); |
| 77 } | 80 } |
| 78 | 81 |
| 79 TEST_F(KeyboardTest, OnKeyboardLeave) { | 82 TEST_F(KeyboardTest, OnKeyboardLeave) { |
| 83 const Display display; |
| 80 std::unique_ptr<Surface> surface(new Surface); | 84 std::unique_ptr<Surface> surface(new Surface); |
| 81 std::unique_ptr<ShellSurface> shell_surface(new ShellSurface(surface.get())); | 85 std::unique_ptr<ShellSurface> shell_surface( |
| 86 new ShellSurface(display, surface.get())); |
| 82 gfx::Size buffer_size(10, 10); | 87 gfx::Size buffer_size(10, 10); |
| 83 std::unique_ptr<Buffer> buffer( | 88 std::unique_ptr<Buffer> buffer( |
| 84 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size))); | 89 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size))); |
| 85 surface->Attach(buffer.get()); | 90 surface->Attach(buffer.get()); |
| 86 surface->Commit(); | 91 surface->Commit(); |
| 87 | 92 |
| 88 aura::client::FocusClient* focus_client = | 93 aura::client::FocusClient* focus_client = |
| 89 aura::client::GetFocusClient(ash::Shell::GetPrimaryRootWindow()); | 94 aura::client::GetFocusClient(ash::Shell::GetPrimaryRootWindow()); |
| 90 focus_client->FocusWindow(nullptr); | 95 focus_client->FocusWindow(nullptr); |
| 91 | 96 |
| 92 MockKeyboardDelegate delegate; | 97 MockKeyboardDelegate delegate; |
| 93 std::unique_ptr<Keyboard> keyboard(new Keyboard(&delegate)); | 98 std::unique_ptr<Keyboard> keyboard(new Keyboard(&delegate)); |
| 94 | 99 |
| 95 EXPECT_CALL(delegate, CanAcceptKeyboardEventsForSurface(surface.get())) | 100 EXPECT_CALL(delegate, CanAcceptKeyboardEventsForSurface(surface.get())) |
| 96 .WillOnce(testing::Return(true)); | 101 .WillOnce(testing::Return(true)); |
| 97 EXPECT_CALL(delegate, OnKeyboardModifiers(0)); | 102 EXPECT_CALL(delegate, OnKeyboardModifiers(0)); |
| 98 EXPECT_CALL(delegate, | 103 EXPECT_CALL(delegate, |
| 99 OnKeyboardEnter(surface.get(), std::vector<ui::DomCode>())); | 104 OnKeyboardEnter(surface.get(), std::vector<ui::DomCode>())); |
| 100 focus_client->FocusWindow(surface->window()); | 105 focus_client->FocusWindow(surface->window()); |
| 101 | 106 |
| 102 EXPECT_CALL(delegate, OnKeyboardLeave(surface.get())); | 107 EXPECT_CALL(delegate, OnKeyboardLeave(surface.get())); |
| 103 focus_client->FocusWindow(nullptr); | 108 focus_client->FocusWindow(nullptr); |
| 104 | 109 |
| 105 EXPECT_CALL(delegate, OnKeyboardDestroying(keyboard.get())); | 110 EXPECT_CALL(delegate, OnKeyboardDestroying(keyboard.get())); |
| 106 keyboard.reset(); | 111 keyboard.reset(); |
| 107 } | 112 } |
| 108 | 113 |
| 109 TEST_F(KeyboardTest, OnKeyboardKey) { | 114 TEST_F(KeyboardTest, OnKeyboardKey) { |
| 115 const Display display; |
| 110 std::unique_ptr<Surface> surface(new Surface); | 116 std::unique_ptr<Surface> surface(new Surface); |
| 111 std::unique_ptr<ShellSurface> shell_surface(new ShellSurface(surface.get())); | 117 std::unique_ptr<ShellSurface> shell_surface( |
| 118 new ShellSurface(display, surface.get())); |
| 112 gfx::Size buffer_size(10, 10); | 119 gfx::Size buffer_size(10, 10); |
| 113 std::unique_ptr<Buffer> buffer( | 120 std::unique_ptr<Buffer> buffer( |
| 114 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size))); | 121 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size))); |
| 115 surface->Attach(buffer.get()); | 122 surface->Attach(buffer.get()); |
| 116 surface->Commit(); | 123 surface->Commit(); |
| 117 | 124 |
| 118 aura::client::FocusClient* focus_client = | 125 aura::client::FocusClient* focus_client = |
| 119 aura::client::GetFocusClient(ash::Shell::GetPrimaryRootWindow()); | 126 aura::client::GetFocusClient(ash::Shell::GetPrimaryRootWindow()); |
| 120 focus_client->FocusWindow(nullptr); | 127 focus_client->FocusWindow(nullptr); |
| 121 | 128 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 139 // This should only generate one release event for KEY_A. | 146 // This should only generate one release event for KEY_A. |
| 140 EXPECT_CALL(delegate, OnKeyboardKey(testing::_, ui::DomCode::US_A, false)); | 147 EXPECT_CALL(delegate, OnKeyboardKey(testing::_, ui::DomCode::US_A, false)); |
| 141 generator.ReleaseKey(ui::VKEY_A, 0); | 148 generator.ReleaseKey(ui::VKEY_A, 0); |
| 142 generator.ReleaseKey(ui::VKEY_A, 0); | 149 generator.ReleaseKey(ui::VKEY_A, 0); |
| 143 | 150 |
| 144 EXPECT_CALL(delegate, OnKeyboardDestroying(keyboard.get())); | 151 EXPECT_CALL(delegate, OnKeyboardDestroying(keyboard.get())); |
| 145 keyboard.reset(); | 152 keyboard.reset(); |
| 146 } | 153 } |
| 147 | 154 |
| 148 TEST_F(KeyboardTest, OnKeyboardModifiers) { | 155 TEST_F(KeyboardTest, OnKeyboardModifiers) { |
| 156 const Display display; |
| 149 std::unique_ptr<Surface> surface(new Surface); | 157 std::unique_ptr<Surface> surface(new Surface); |
| 150 std::unique_ptr<ShellSurface> shell_surface(new ShellSurface(surface.get())); | 158 std::unique_ptr<ShellSurface> shell_surface( |
| 159 new ShellSurface(display, surface.get())); |
| 151 gfx::Size buffer_size(10, 10); | 160 gfx::Size buffer_size(10, 10); |
| 152 std::unique_ptr<Buffer> buffer( | 161 std::unique_ptr<Buffer> buffer( |
| 153 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size))); | 162 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size))); |
| 154 surface->Attach(buffer.get()); | 163 surface->Attach(buffer.get()); |
| 155 surface->Commit(); | 164 surface->Commit(); |
| 156 | 165 |
| 157 aura::client::FocusClient* focus_client = | 166 aura::client::FocusClient* focus_client = |
| 158 aura::client::GetFocusClient(ash::Shell::GetPrimaryRootWindow()); | 167 aura::client::GetFocusClient(ash::Shell::GetPrimaryRootWindow()); |
| 159 focus_client->FocusWindow(nullptr); | 168 focus_client->FocusWindow(nullptr); |
| 160 | 169 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 184 EXPECT_CALL(delegate, OnKeyboardKey(testing::_, ui::DomCode::US_B, false)); | 193 EXPECT_CALL(delegate, OnKeyboardKey(testing::_, ui::DomCode::US_B, false)); |
| 185 EXPECT_CALL(delegate, OnKeyboardModifiers(0)); | 194 EXPECT_CALL(delegate, OnKeyboardModifiers(0)); |
| 186 generator.ReleaseKey(ui::VKEY_B, 0); | 195 generator.ReleaseKey(ui::VKEY_B, 0); |
| 187 | 196 |
| 188 EXPECT_CALL(delegate, OnKeyboardDestroying(keyboard.get())); | 197 EXPECT_CALL(delegate, OnKeyboardDestroying(keyboard.get())); |
| 189 keyboard.reset(); | 198 keyboard.reset(); |
| 190 } | 199 } |
| 191 | 200 |
| 192 } // namespace | 201 } // namespace |
| 193 } // namespace exo | 202 } // namespace exo |
| OLD | NEW |