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

Side by Side Diff: components/exo/keyboard_unittest.cc

Issue 2396883003: exo: Fix dragging edge cases (Closed)
Patch Set: Fix unit tests Created 4 years, 2 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
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698