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

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

Issue 2808093006: [Device Service] Move Gamepad Blink headers to be part of the Gamepad client library (Closed)
Patch Set: rebase and address comments Created 3 years, 8 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
« no previous file with comments | « components/exo/gaming_seat.cc ('k') | content/browser/DEPS » ('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 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 "components/exo/gaming_seat.h" 5 #include "components/exo/gaming_seat.h"
6 #include "ash/shell.h" 6 #include "ash/shell.h"
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "base/test/test_simple_task_runner.h" 9 #include "base/test/test_simple_task_runner.h"
10 #include "components/exo/buffer.h" 10 #include "components/exo/buffer.h"
(...skipping 29 matching lines...) Expand all
40 MOCK_METHOD2(OnAxis, void(int, double)); 40 MOCK_METHOD2(OnAxis, void(int, double));
41 MOCK_METHOD3(OnButton, void(int, bool, double)); 41 MOCK_METHOD3(OnButton, void(int, bool, double));
42 MOCK_METHOD0(OnFrame, void()); 42 MOCK_METHOD0(OnFrame, void());
43 }; 43 };
44 44
45 class GamingSeatTest : public test::ExoTestBase { 45 class GamingSeatTest : public test::ExoTestBase {
46 public: 46 public:
47 GamingSeatTest() {} 47 GamingSeatTest() {}
48 48
49 std::unique_ptr<device::GamepadDataFetcher> MockDataFetcherFactory() { 49 std::unique_ptr<device::GamepadDataFetcher> MockDataFetcherFactory() {
50 blink::WebGamepads initial_data; 50 device::Gamepads initial_data;
51 std::unique_ptr<device::MockGamepadDataFetcher> fetcher( 51 std::unique_ptr<device::MockGamepadDataFetcher> fetcher(
52 new device::MockGamepadDataFetcher(initial_data)); 52 new device::MockGamepadDataFetcher(initial_data));
53 mock_data_fetcher_ = fetcher.get(); 53 mock_data_fetcher_ = fetcher.get();
54 return std::move(fetcher); 54 return std::move(fetcher);
55 } 55 }
56 56
57 void InitializeGamingSeat(MockGamingSeatDelegate* delegate) { 57 void InitializeGamingSeat(MockGamingSeatDelegate* delegate) {
58 polling_task_runner_ = new base::TestSimpleTaskRunner(); 58 polling_task_runner_ = new base::TestSimpleTaskRunner();
59 gaming_seat_.reset( 59 gaming_seat_.reset(
60 new GamingSeat(delegate, polling_task_runner_.get(), 60 new GamingSeat(delegate, polling_task_runner_.get(),
61 base::Bind(&GamingSeatTest::MockDataFetcherFactory, 61 base::Bind(&GamingSeatTest::MockDataFetcherFactory,
62 base::Unretained(this)))); 62 base::Unretained(this))));
63 // Run the polling task runner to have it create the data fetcher. 63 // Run the polling task runner to have it create the data fetcher.
64 polling_task_runner_->RunPendingTasks(); 64 polling_task_runner_->RunPendingTasks();
65 } 65 }
66 66
67 void DestroyGamingSeat(MockGamingSeatDelegate* delegate) { 67 void DestroyGamingSeat(MockGamingSeatDelegate* delegate) {
68 EXPECT_CALL(*delegate, Die()).Times(1); 68 EXPECT_CALL(*delegate, Die()).Times(1);
69 mock_data_fetcher_ = nullptr; 69 mock_data_fetcher_ = nullptr;
70 gaming_seat_.reset(); 70 gaming_seat_.reset();
71 // Process tasks until polling is shut down. 71 // Process tasks until polling is shut down.
72 polling_task_runner_->RunPendingTasks(); 72 polling_task_runner_->RunPendingTasks();
73 polling_task_runner_ = nullptr; 73 polling_task_runner_ = nullptr;
74 } 74 }
75 75
76 void SetDataAndPostToDelegate(const blink::WebGamepads& new_data) { 76 void SetDataAndPostToDelegate(const device::Gamepads& new_data) {
77 ASSERT_TRUE(mock_data_fetcher_ != nullptr); 77 ASSERT_TRUE(mock_data_fetcher_ != nullptr);
78 mock_data_fetcher_->SetTestData(new_data); 78 mock_data_fetcher_->SetTestData(new_data);
79 // Run one polling cycle, which will post a task to the origin task runner. 79 // Run one polling cycle, which will post a task to the origin task runner.
80 polling_task_runner_->RunPendingTasks(); 80 polling_task_runner_->RunPendingTasks();
81 // Run origin task runner to invoke delegate. 81 // Run origin task runner to invoke delegate.
82 base::RunLoop().RunUntilIdle(); 82 base::RunLoop().RunUntilIdle();
83 } 83 }
84 84
85 protected: 85 protected:
86 std::unique_ptr<GamingSeat> gaming_seat_; 86 std::unique_ptr<GamingSeat> gaming_seat_;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 .WillOnce(testing::Return(&gamepad_delegate0)) 125 .WillOnce(testing::Return(&gamepad_delegate0))
126 .WillOnce(testing::Return(&gamepad_delegate2)) 126 .WillOnce(testing::Return(&gamepad_delegate2))
127 .WillOnce(testing::Return(&gamepad_delegate1)); 127 .WillOnce(testing::Return(&gamepad_delegate1));
128 // disconnect gamepad 1 128 // disconnect gamepad 1
129 EXPECT_CALL(gamepad_delegate1, OnRemoved()).Times(1); 129 EXPECT_CALL(gamepad_delegate1, OnRemoved()).Times(1);
130 // disconnect other gamepads 130 // disconnect other gamepads
131 EXPECT_CALL(gamepad_delegate0, OnRemoved()).Times(1); 131 EXPECT_CALL(gamepad_delegate0, OnRemoved()).Times(1);
132 EXPECT_CALL(gamepad_delegate2, OnRemoved()).Times(1); 132 EXPECT_CALL(gamepad_delegate2, OnRemoved()).Times(1);
133 } 133 }
134 // Gamepad connected. 134 // Gamepad connected.
135 blink::WebGamepads gamepad_connected; 135 device::Gamepads gamepad_connected;
136 gamepad_connected.items[0].connected = true; 136 gamepad_connected.items[0].connected = true;
137 gamepad_connected.items[0].timestamp = 1; 137 gamepad_connected.items[0].timestamp = 1;
138 SetDataAndPostToDelegate(gamepad_connected); 138 SetDataAndPostToDelegate(gamepad_connected);
139 139
140 gamepad_connected.items[2].connected = true; 140 gamepad_connected.items[2].connected = true;
141 gamepad_connected.items[2].timestamp = 1; 141 gamepad_connected.items[2].timestamp = 1;
142 SetDataAndPostToDelegate(gamepad_connected); 142 SetDataAndPostToDelegate(gamepad_connected);
143 143
144 gamepad_connected.items[1].connected = true; 144 gamepad_connected.items[1].connected = true;
145 gamepad_connected.items[1].timestamp = 1; 145 gamepad_connected.items[1].timestamp = 1;
146 SetDataAndPostToDelegate(gamepad_connected); 146 SetDataAndPostToDelegate(gamepad_connected);
147 147
148 // Gamepad 1 is dis connected 148 // Gamepad 1 is dis connected
149 gamepad_connected.items[1].connected = false; 149 gamepad_connected.items[1].connected = false;
150 gamepad_connected.items[1].timestamp = 2; 150 gamepad_connected.items[1].timestamp = 2;
151 151
152 SetDataAndPostToDelegate(gamepad_connected); 152 SetDataAndPostToDelegate(gamepad_connected);
153 153
154 // Gamepad disconnected. 154 // Gamepad disconnected.
155 blink::WebGamepads all_disconnected; 155 device::Gamepads all_disconnected;
156 SetDataAndPostToDelegate(all_disconnected); 156 SetDataAndPostToDelegate(all_disconnected);
157 157
158 DestroyGamingSeat(gaming_seat_delegate); 158 DestroyGamingSeat(gaming_seat_delegate);
159 } 159 }
160 160
161 TEST_F(GamingSeatTest, OnAxis) { 161 TEST_F(GamingSeatTest, OnAxis) {
162 std::unique_ptr<Surface> surface(new Surface); 162 std::unique_ptr<Surface> surface(new Surface);
163 std::unique_ptr<ShellSurface> shell_surface(new ShellSurface(surface.get())); 163 std::unique_ptr<ShellSurface> shell_surface(new ShellSurface(surface.get()));
164 gfx::Size buffer_size(10, 10); 164 gfx::Size buffer_size(10, 10);
165 std::unique_ptr<Buffer> buffer( 165 std::unique_ptr<Buffer> buffer(
166 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size))); 166 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size)));
167 surface->Attach(buffer.get()); 167 surface->Attach(buffer.get());
168 surface->Commit(); 168 surface->Commit();
169 169
170 testing::StrictMock<MockGamingSeatDelegate>* gaming_seat_delegate = 170 testing::StrictMock<MockGamingSeatDelegate>* gaming_seat_delegate =
171 new testing::StrictMock<MockGamingSeatDelegate>(); 171 new testing::StrictMock<MockGamingSeatDelegate>();
172 EXPECT_CALL(*gaming_seat_delegate, 172 EXPECT_CALL(*gaming_seat_delegate,
173 CanAcceptGamepadEventsForSurface(testing::_)) 173 CanAcceptGamepadEventsForSurface(testing::_))
174 .WillOnce(testing::Return(true)); 174 .WillOnce(testing::Return(true));
175 175
176 InitializeGamingSeat(gaming_seat_delegate); 176 InitializeGamingSeat(gaming_seat_delegate);
177 testing::StrictMock<MockGamepadDelegate> gamepad_delegate0; 177 testing::StrictMock<MockGamepadDelegate> gamepad_delegate0;
178 testing::StrictMock<MockGamepadDelegate> gamepad_delegate2; 178 testing::StrictMock<MockGamepadDelegate> gamepad_delegate2;
179 179
180 // connect gamepad 0 and 2 180 // connect gamepad 0 and 2
181 EXPECT_CALL(*gaming_seat_delegate, GamepadAdded()) 181 EXPECT_CALL(*gaming_seat_delegate, GamepadAdded())
182 .WillOnce(testing::Return(&gamepad_delegate0)) 182 .WillOnce(testing::Return(&gamepad_delegate0))
183 .WillOnce(testing::Return(&gamepad_delegate2)); 183 .WillOnce(testing::Return(&gamepad_delegate2));
184 184
185 blink::WebGamepads gamepad_connected; 185 device::Gamepads gamepad_connected;
186 gamepad_connected.items[0].connected = true; 186 gamepad_connected.items[0].connected = true;
187 gamepad_connected.items[0].timestamp = 1; 187 gamepad_connected.items[0].timestamp = 1;
188 SetDataAndPostToDelegate(gamepad_connected); 188 SetDataAndPostToDelegate(gamepad_connected);
189 189
190 gamepad_connected.items[2].connected = true; 190 gamepad_connected.items[2].connected = true;
191 gamepad_connected.items[2].timestamp = 1; 191 gamepad_connected.items[2].timestamp = 1;
192 SetDataAndPostToDelegate(gamepad_connected); 192 SetDataAndPostToDelegate(gamepad_connected);
193 193
194 // send axis event to 2 and then 0 194 // send axis event to 2 and then 0
195 blink::WebGamepads axis_moved; 195 device::Gamepads axis_moved;
196 axis_moved.items[0].connected = true; 196 axis_moved.items[0].connected = true;
197 axis_moved.items[0].timestamp = 1; 197 axis_moved.items[0].timestamp = 1;
198 axis_moved.items[2].connected = true; 198 axis_moved.items[2].connected = true;
199 axis_moved.items[2].timestamp = 2; 199 axis_moved.items[2].timestamp = 2;
200 axis_moved.items[2].axes_length = 1; 200 axis_moved.items[2].axes_length = 1;
201 axis_moved.items[2].axes[0] = 1.0; 201 axis_moved.items[2].axes[0] = 1.0;
202 202
203 EXPECT_CALL(gamepad_delegate2, OnAxis(0, 1.0)).Times(1); 203 EXPECT_CALL(gamepad_delegate2, OnAxis(0, 1.0)).Times(1);
204 EXPECT_CALL(gamepad_delegate2, OnFrame()).Times(1); 204 EXPECT_CALL(gamepad_delegate2, OnFrame()).Times(1);
205 SetDataAndPostToDelegate(axis_moved); 205 SetDataAndPostToDelegate(axis_moved);
(...skipping 28 matching lines...) Expand all
234 234
235 InitializeGamingSeat(gaming_seat_delegate); 235 InitializeGamingSeat(gaming_seat_delegate);
236 testing::StrictMock<MockGamepadDelegate> gamepad_delegate0; 236 testing::StrictMock<MockGamepadDelegate> gamepad_delegate0;
237 testing::StrictMock<MockGamepadDelegate> gamepad_delegate2; 237 testing::StrictMock<MockGamepadDelegate> gamepad_delegate2;
238 238
239 // connect gamepad 0 and 2 239 // connect gamepad 0 and 2
240 EXPECT_CALL(*gaming_seat_delegate, GamepadAdded()) 240 EXPECT_CALL(*gaming_seat_delegate, GamepadAdded())
241 .WillOnce(testing::Return(&gamepad_delegate0)) 241 .WillOnce(testing::Return(&gamepad_delegate0))
242 .WillOnce(testing::Return(&gamepad_delegate2)); 242 .WillOnce(testing::Return(&gamepad_delegate2));
243 243
244 blink::WebGamepads gamepad_connected; 244 device::Gamepads gamepad_connected;
245 gamepad_connected.items[0].connected = true; 245 gamepad_connected.items[0].connected = true;
246 gamepad_connected.items[0].timestamp = 1; 246 gamepad_connected.items[0].timestamp = 1;
247 SetDataAndPostToDelegate(gamepad_connected); 247 SetDataAndPostToDelegate(gamepad_connected);
248 248
249 gamepad_connected.items[2].connected = true; 249 gamepad_connected.items[2].connected = true;
250 gamepad_connected.items[2].timestamp = 1; 250 gamepad_connected.items[2].timestamp = 1;
251 SetDataAndPostToDelegate(gamepad_connected); 251 SetDataAndPostToDelegate(gamepad_connected);
252 252
253 // send axis event to 2 and then 0 253 // send axis event to 2 and then 0
254 blink::WebGamepads axis_moved; 254 device::Gamepads axis_moved;
255 axis_moved.items[0].connected = true; 255 axis_moved.items[0].connected = true;
256 axis_moved.items[0].timestamp = 1; 256 axis_moved.items[0].timestamp = 1;
257 axis_moved.items[2].connected = true; 257 axis_moved.items[2].connected = true;
258 axis_moved.items[2].timestamp = 2; 258 axis_moved.items[2].timestamp = 2;
259 259
260 axis_moved.items[2].buttons_length = 1; 260 axis_moved.items[2].buttons_length = 1;
261 axis_moved.items[2].buttons[0].pressed = true; 261 axis_moved.items[2].buttons[0].pressed = true;
262 axis_moved.items[2].buttons[0].value = 1.0; 262 axis_moved.items[2].buttons[0].value = 1.0;
263 263
264 EXPECT_CALL(gamepad_delegate2, OnButton(0, true, 1.0)).Times(1); 264 EXPECT_CALL(gamepad_delegate2, OnButton(0, true, 1.0)).Times(1);
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 // scheduled in the next round. 316 // scheduled in the next round.
317 polling_task_runner_->RunPendingTasks(); 317 polling_task_runner_->RunPendingTasks();
318 polling_task_runner_->RunPendingTasks(); 318 polling_task_runner_->RunPendingTasks();
319 ASSERT_FALSE(polling_task_runner_->HasPendingTask()); 319 ASSERT_FALSE(polling_task_runner_->HasPendingTask());
320 320
321 DestroyGamingSeat(gaming_seat_delegate); 321 DestroyGamingSeat(gaming_seat_delegate);
322 } 322 }
323 323
324 } // namespace 324 } // namespace
325 } // namespace exo 325 } // namespace exo
OLDNEW
« no previous file with comments | « components/exo/gaming_seat.cc ('k') | content/browser/DEPS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698