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

Side by Side Diff: ui/display/manager/chromeos/x11/native_display_event_dispatcher_x11_unittest.cc

Issue 2540313002: Split //ui/display and create //ui/display/manager. (Closed)
Patch Set: Cleanup export header. Created 4 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <stdint.h> 5 #include <stdint.h>
6 #include <X11/extensions/Xrandr.h> 6 #include <X11/extensions/Xrandr.h>
7 7
8 #undef Bool 8 #undef Bool
9 #undef None 9 #undef None
10 10
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "base/test/simple_test_tick_clock.h" 12 #include "base/test/simple_test_tick_clock.h"
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 #include "ui/display/chromeos/x11/display_mode_x11.h" 14 #include "ui/display/manager/chromeos/x11/display_mode_x11.h"
15 #include "ui/display/chromeos/x11/display_snapshot_x11.h" 15 #include "ui/display/manager/chromeos/x11/display_snapshot_x11.h"
16 #include "ui/display/chromeos/x11/native_display_delegate_x11.h" 16 #include "ui/display/manager/chromeos/x11/native_display_delegate_x11.h"
17 #include "ui/display/chromeos/x11/native_display_event_dispatcher_x11.h" 17 #include "ui/display/manager/chromeos/x11/native_display_event_dispatcher_x11.h"
18 18
19 namespace ui { 19 namespace ui {
20 20
21 namespace { 21 namespace {
22 22
23 DisplaySnapshotX11* CreateOutput(int64_t id, 23 DisplaySnapshotX11* CreateOutput(int64_t id,
24 DisplayConnectionType type, 24 DisplayConnectionType type,
25 RROutput output, 25 RROutput output,
26 RRCrtc crtc) { 26 RRCrtc crtc) {
27 static const DisplayModeX11 kDefaultDisplayMode(gfx::Size(1, 1), 27 static const DisplayModeX11 kDefaultDisplayMode(gfx::Size(1, 1), false, 60.0f,
28 false,
29 60.0f,
30 20); 28 20);
31 std::vector<std::unique_ptr<const DisplayMode>> modes; 29 std::vector<std::unique_ptr<const DisplayMode>> modes;
32 const DisplayMode* mode; 30 const DisplayMode* mode;
33 31
34 modes.push_back(kDefaultDisplayMode.Clone()); 32 modes.push_back(kDefaultDisplayMode.Clone());
35 mode = modes.front().get(); 33 mode = modes.front().get();
36 34
37 DisplaySnapshotX11* snapshot = new DisplaySnapshotX11( 35 DisplaySnapshotX11* snapshot = new DisplaySnapshotX11(
38 id, 36 id, gfx::Point(0, 0), gfx::Size(0, 0), type, false, false, std::string(),
39 gfx::Point(0, 0), 37 std::move(modes), std::vector<uint8_t>(), mode, NULL, output, crtc, 0);
40 gfx::Size(0, 0),
41 type,
42 false,
43 false,
44 std::string(),
45 std::move(modes),
46 std::vector<uint8_t>(),
47 mode,
48 NULL,
49 output,
50 crtc,
51 0);
52 38
53 return snapshot; 39 return snapshot;
54 } 40 }
55 41
56 DisplaySnapshotX11* CreateExternalOutput(RROutput output, RRCrtc crtc) { 42 DisplaySnapshotX11* CreateExternalOutput(RROutput output, RRCrtc crtc) {
57 return CreateOutput(static_cast<int64_t>(output), 43 return CreateOutput(static_cast<int64_t>(output),
58 DISPLAY_CONNECTION_TYPE_UNKNOWN, 44 DISPLAY_CONNECTION_TYPE_UNKNOWN, output, crtc);
59 output,
60 crtc);
61 } 45 }
62 46
63 DisplaySnapshotX11* CreateInternalOutput(RROutput output, RRCrtc crtc) { 47 DisplaySnapshotX11* CreateInternalOutput(RROutput output, RRCrtc crtc) {
64 return CreateOutput(0, 48 return CreateOutput(0, DISPLAY_CONNECTION_TYPE_INTERNAL, output, crtc);
65 DISPLAY_CONNECTION_TYPE_INTERNAL,
66 output,
67 crtc);
68 } 49 }
69 50
70 class TestHelperDelegate : public NativeDisplayDelegateX11::HelperDelegate { 51 class TestHelperDelegate : public NativeDisplayDelegateX11::HelperDelegate {
71 public: 52 public:
72 TestHelperDelegate(); 53 TestHelperDelegate();
73 ~TestHelperDelegate() override; 54 ~TestHelperDelegate() override;
74 55
75 int num_calls_update_xrandr_config() const { 56 int num_calls_update_xrandr_config() const {
76 return num_calls_update_xrandr_config_; 57 return num_calls_update_xrandr_config_;
77 } 58 }
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 EXPECT_EQ(1, helper_delegate_->num_calls_notify_observers()); 240 EXPECT_EQ(1, helper_delegate_->num_calls_notify_observers());
260 241
261 // Simulate removal of second output from cached output list. 242 // Simulate removal of second output from cached output list.
262 outputs.erase(outputs.begin() + 1); 243 outputs.erase(outputs.begin() + 1);
263 helper_delegate_->set_cached_outputs(outputs.get()); 244 helper_delegate_->set_cached_outputs(outputs.get());
264 245
265 DispatchOutputChangeEvent(2, 11, 20, false); 246 DispatchOutputChangeEvent(2, 11, 20, false);
266 EXPECT_EQ(1, helper_delegate_->num_calls_notify_observers()); 247 EXPECT_EQ(1, helper_delegate_->num_calls_notify_observers());
267 } 248 }
268 249
269 TEST_F(NativeDisplayEventDispatcherX11Test, 250 TEST_F(NativeDisplayEventDispatcherX11Test, ForceUpdateAfterCacheExpiration) {
270 ForceUpdateAfterCacheExpiration) {
271 // +1 to compenstate a possible rounding error. 251 // +1 to compenstate a possible rounding error.
272 const int kHalfOfExpirationMs = 252 const int kHalfOfExpirationMs =
273 NativeDisplayEventDispatcherX11::kUseCacheAfterStartupMs / 2 + 1; 253 NativeDisplayEventDispatcherX11::kUseCacheAfterStartupMs / 2 + 1;
274 254
275 ScopedVector<DisplaySnapshot> outputs; 255 ScopedVector<DisplaySnapshot> outputs;
276 outputs.push_back(CreateExternalOutput(1, 10)); 256 outputs.push_back(CreateExternalOutput(1, 10));
277 outputs.push_back(CreateExternalOutput(2, 11)); 257 outputs.push_back(CreateExternalOutput(2, 11));
278 helper_delegate_->set_cached_outputs(outputs.get()); 258 helper_delegate_->set_cached_outputs(outputs.get());
279 259
280 EXPECT_EQ(0, helper_delegate_->num_calls_notify_observers()); 260 EXPECT_EQ(0, helper_delegate_->num_calls_notify_observers());
281 261
282 // Duplicated event will be ignored during the startup. 262 // Duplicated event will be ignored during the startup.
283 DispatchOutputChangeEvent(2, 11, 20, true); 263 DispatchOutputChangeEvent(2, 11, 20, true);
284 EXPECT_EQ(0, helper_delegate_->num_calls_notify_observers()); 264 EXPECT_EQ(0, helper_delegate_->num_calls_notify_observers());
285 265
286 test_tick_clock_->Advance(base::TimeDelta::FromMilliseconds( 266 test_tick_clock_->Advance(
287 kHalfOfExpirationMs)); 267 base::TimeDelta::FromMilliseconds(kHalfOfExpirationMs));
288 268
289 // Duplicated event will still be ignored. 269 // Duplicated event will still be ignored.
290 DispatchOutputChangeEvent(2, 11, 20, true); 270 DispatchOutputChangeEvent(2, 11, 20, true);
291 EXPECT_EQ(0, helper_delegate_->num_calls_notify_observers()); 271 EXPECT_EQ(0, helper_delegate_->num_calls_notify_observers());
292 272
293 // The startup timeout has been elapsed. Duplicated event 273 // The startup timeout has been elapsed. Duplicated event
294 // should not be ignored. 274 // should not be ignored.
295 test_tick_clock_->Advance( 275 test_tick_clock_->Advance(
296 base::TimeDelta::FromMilliseconds(kHalfOfExpirationMs)); 276 base::TimeDelta::FromMilliseconds(kHalfOfExpirationMs));
297 DispatchOutputChangeEvent(2, 11, 20, true); 277 DispatchOutputChangeEvent(2, 11, 20, true);
298 EXPECT_EQ(1, helper_delegate_->num_calls_notify_observers()); 278 EXPECT_EQ(1, helper_delegate_->num_calls_notify_observers());
299 279
300 // Sending the same event immediately shoudldn't be ignored. 280 // Sending the same event immediately shoudldn't be ignored.
301 DispatchOutputChangeEvent(2, 11, 20, true); 281 DispatchOutputChangeEvent(2, 11, 20, true);
302 EXPECT_EQ(2, helper_delegate_->num_calls_notify_observers()); 282 EXPECT_EQ(2, helper_delegate_->num_calls_notify_observers());
303 283
304 // Advancing time further should not change the behavior. 284 // Advancing time further should not change the behavior.
305 test_tick_clock_->Advance(base::TimeDelta::FromMilliseconds( 285 test_tick_clock_->Advance(
306 kHalfOfExpirationMs)); 286 base::TimeDelta::FromMilliseconds(kHalfOfExpirationMs));
307 DispatchOutputChangeEvent(2, 11, 20, true); 287 DispatchOutputChangeEvent(2, 11, 20, true);
308 EXPECT_EQ(3, helper_delegate_->num_calls_notify_observers()); 288 EXPECT_EQ(3, helper_delegate_->num_calls_notify_observers());
309 289
310 test_tick_clock_->Advance( 290 test_tick_clock_->Advance(
311 base::TimeDelta::FromMilliseconds(kHalfOfExpirationMs)); 291 base::TimeDelta::FromMilliseconds(kHalfOfExpirationMs));
312 DispatchOutputChangeEvent(2, 11, 20, true); 292 DispatchOutputChangeEvent(2, 11, 20, true);
313 EXPECT_EQ(4, helper_delegate_->num_calls_notify_observers()); 293 EXPECT_EQ(4, helper_delegate_->num_calls_notify_observers());
314 } 294 }
315 295
316 TEST_F(NativeDisplayEventDispatcherX11Test, 296 TEST_F(NativeDisplayEventDispatcherX11Test, UpdateMissingExternalDisplayId) {
317 UpdateMissingExternalDisplayId) {
318 ScopedVector<DisplaySnapshot> outputs; 297 ScopedVector<DisplaySnapshot> outputs;
319 outputs.push_back(CreateInternalOutput(1, 10)); 298 outputs.push_back(CreateInternalOutput(1, 10));
320 helper_delegate_->set_cached_outputs(outputs.get()); 299 helper_delegate_->set_cached_outputs(outputs.get());
321 300
322 ASSERT_EQ(0, helper_delegate_->num_calls_notify_observers()); 301 ASSERT_EQ(0, helper_delegate_->num_calls_notify_observers());
323 302
324 // Internal display's ID can be zero and not updated. 303 // Internal display's ID can be zero and not updated.
325 DispatchOutputChangeEvent(1, 10, 20, true); 304 DispatchOutputChangeEvent(1, 10, 20, true);
326 EXPECT_EQ(0, helper_delegate_->num_calls_notify_observers()); 305 EXPECT_EQ(0, helper_delegate_->num_calls_notify_observers());
327 306
328 outputs.clear(); 307 outputs.clear();
329 outputs.push_back(CreateOutput(0, DISPLAY_CONNECTION_TYPE_UNKNOWN, 2, 11)); 308 outputs.push_back(CreateOutput(0, DISPLAY_CONNECTION_TYPE_UNKNOWN, 2, 11));
330 helper_delegate_->set_cached_outputs(outputs.get()); 309 helper_delegate_->set_cached_outputs(outputs.get());
331 310
332 // External display should be updated if the id is zero. 311 // External display should be updated if the id is zero.
333 DispatchOutputChangeEvent(2, 11, 20, true); 312 DispatchOutputChangeEvent(2, 11, 20, true);
334 EXPECT_EQ(1, helper_delegate_->num_calls_notify_observers()); 313 EXPECT_EQ(1, helper_delegate_->num_calls_notify_observers());
335 } 314 }
336 315
337 } // namespace ui 316 } // namespace ui
OLDNEW
« no previous file with comments | « ui/display/manager/chromeos/x11/native_display_event_dispatcher_x11.cc ('k') | ui/display/manager/display_layout.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698