5
5
#include " chrome/browser/ui/webui/chromeos/login/oobe_display_chooser.h"
6
6
7
7
#include < memory>
8
- #include < vector>
9
8
10
9
#include " ash/display/display_configuration_controller.h"
11
10
#include " ash/shell.h"
14
13
#include " testing/gtest/include/gtest/gtest.h"
15
14
#include " ui/display/display.h"
16
15
#include " ui/display/display_observer.h"
17
- #include " ui/display/manager/chromeos/touchscreen_util.h"
18
16
#include " ui/display/manager/display_manager.h"
19
17
#include " ui/display/screen.h"
20
18
#include " ui/display/test/display_manager_test_api.h"
21
- #include " ui/events/devices/device_data_manager.h"
22
- #include " ui/events/devices/touchscreen_device.h"
23
19
24
20
namespace chromeos {
25
21
@@ -29,93 +25,63 @@ class OobeDisplayChooserTest : public ash::test::AshTestBase {
29
25
public:
30
26
OobeDisplayChooserTest () : ash::test::AshTestBase() {}
31
27
32
- int64_t GetPrimaryDisplay () {
33
- return display::Screen::GetScreen ()->GetPrimaryDisplay ().id ();
28
+ void SetUp () override {
29
+ ash::test::AshTestBase::SetUp ();
30
+ display_manager_test_api_.reset (
31
+ new display::test::DisplayManagerTestApi (display_manager ()));
34
32
}
35
33
36
- void UpdateTouchscreenDevices (const ui::TouchscreenDevice& touchscreen) {
37
- std::vector<ui::TouchscreenDevice> devices{touchscreen};
34
+ void EnableTouch (int64_t id) {
35
+ display_manager_test_api_->SetTouchSupport (
36
+ id, display::Display::TouchSupport::TOUCH_SUPPORT_AVAILABLE);
37
+ }
38
38
39
- ui::DeviceHotplugEventObserver* manager =
40
- ui::DeviceDataManager::GetInstance ();
41
- manager->OnTouchscreenDevicesUpdated (devices);
39
+ void DisableTouch (int64_t id) {
40
+ display_manager_test_api_->SetTouchSupport (
41
+ id, display::Display::TouchSupport::TOUCH_SUPPORT_UNAVAILABLE);
42
+ }
43
+
44
+ int64_t GetPrimaryDisplay () {
45
+ return display::Screen::GetScreen ()->GetPrimaryDisplay ().id ();
42
46
}
43
47
44
48
private:
49
+ std::unique_ptr<display::test::DisplayManagerTestApi>
50
+ display_manager_test_api_;
51
+
45
52
DISALLOW_COPY_AND_ASSIGN (OobeDisplayChooserTest);
46
53
};
47
54
48
- const uint16_t kWhitelistedId = 0x266e ;
49
-
50
55
} // namespace
51
56
52
57
TEST_F (OobeDisplayChooserTest, PreferTouchAsPrimary) {
53
- // Setup 2 displays, second one is intended to be a touch display
54
- std::vector<display::ManagedDisplayInfo> display_info;
55
- display_info.push_back (
56
- display::ManagedDisplayInfo::CreateFromSpecWithID (" 0+0-3000x2000" , 1 ));
57
- display_info.push_back (
58
- display::ManagedDisplayInfo::CreateFromSpecWithID (" 3000+0-800x600" , 2 ));
59
- display_manager ()->OnNativeDisplaysChanged (display_info);
60
- base::RunLoop ().RunUntilIdle ();
61
-
62
- // Make sure the non-touch display is primary
63
- ash::Shell::Get ()->window_tree_host_manager ()->SetPrimaryDisplayId (1 );
64
-
65
- // Setup corresponding TouchscreenDevice object
66
- ui::TouchscreenDevice touchscreen =
67
- ui::TouchscreenDevice (1 , ui::InputDeviceType::INPUT_DEVICE_EXTERNAL,
68
- " Touchscreen" , gfx::Size (800 , 600 ), 1 );
69
- touchscreen.vendor_id = kWhitelistedId ;
70
- UpdateTouchscreenDevices (touchscreen);
71
- base::RunLoop ().RunUntilIdle ();
58
+ OobeDisplayChooser display_chooser;
72
59
73
- // Associate touchscreen device with display
74
- display_info[1 ].AddInputDevice (touchscreen.id );
75
- display_info[1 ].set_touch_support (display::Display::TOUCH_SUPPORT_AVAILABLE);
76
- display_manager ()->OnNativeDisplaysChanged (display_info);
77
- base::RunLoop ().RunUntilIdle ();
60
+ UpdateDisplay (" 3000x2000,800x600" );
61
+ display::DisplayIdList ids = display_manager ()->GetCurrentDisplayIdList ();
62
+ DisableTouch (ids[0 ]);
63
+ EnableTouch (ids[1 ]);
78
64
79
- OobeDisplayChooser display_chooser;
80
- EXPECT_EQ (1 , GetPrimaryDisplay ());
65
+ EXPECT_EQ (ids[0 ], GetPrimaryDisplay ());
81
66
display_chooser.TryToPlaceUiOnTouchDisplay ();
82
67
base::RunLoop ().RunUntilIdle ();
83
- EXPECT_EQ (2 , GetPrimaryDisplay ());
84
- }
85
-
86
- TEST_F (OobeDisplayChooserTest, DontSwitchFromTouch) {
87
- // Setup 2 displays, second one is intended to be a touch display
88
- std::vector<display::ManagedDisplayInfo> display_info;
89
- display_info.push_back (
90
- display::ManagedDisplayInfo::CreateFromSpecWithID (" 0+0-3000x2000" , 1 ));
91
- display_info.push_back (
92
- display::ManagedDisplayInfo::CreateFromSpecWithID (" 3000+0-800x600" , 2 ));
93
- display_info[0 ].set_touch_support (display::Display::TOUCH_SUPPORT_AVAILABLE);
94
- display_manager ()->OnNativeDisplaysChanged (display_info);
95
- base::RunLoop ().RunUntilIdle ();
96
68
97
- // Make sure the non-touch display is primary
98
- ash::Shell::Get ()-> window_tree_host_manager ()-> SetPrimaryDisplayId ( 1 );
69
+ EXPECT_EQ (ids[ 1 ], GetPrimaryDisplay ());
70
+ }
99
71
100
- // Setup corresponding TouchscreenDevice object
101
- ui::TouchscreenDevice touchscreen =
102
- ui::TouchscreenDevice (1 , ui::InputDeviceType::INPUT_DEVICE_EXTERNAL,
103
- " Touchscreen" , gfx::Size (800 , 600 ), 1 );
104
- touchscreen.vendor_id = kWhitelistedId ;
105
- UpdateTouchscreenDevices (touchscreen);
106
- base::RunLoop ().RunUntilIdle ();
72
+ TEST_F (OobeDisplayChooserTest, AddingSecondTouchDisplayShouldbeNOP) {
73
+ OobeDisplayChooser display_chooser;
107
74
108
- // Associate touchscreen device with display
109
- display_info[1 ].AddInputDevice (touchscreen.id );
110
- display_info[1 ].set_touch_support (display::Display::TOUCH_SUPPORT_AVAILABLE);
111
- display_manager ()->OnNativeDisplaysChanged (display_info);
112
- base::RunLoop ().RunUntilIdle ();
75
+ UpdateDisplay (" 3000x2000,800x600" );
76
+ display::DisplayIdList ids = display_manager ()->GetCurrentDisplayIdList ();
77
+ EnableTouch (ids[0 ]);
78
+ EnableTouch (ids[1 ]);
113
79
114
- OobeDisplayChooser display_chooser;
115
- EXPECT_EQ (1 , GetPrimaryDisplay ());
80
+ EXPECT_EQ (ids[0 ], GetPrimaryDisplay ());
116
81
display_chooser.TryToPlaceUiOnTouchDisplay ();
117
82
base::RunLoop ().RunUntilIdle ();
118
- EXPECT_EQ (1 , GetPrimaryDisplay ());
83
+
84
+ EXPECT_EQ (ids[0 ], GetPrimaryDisplay ());
119
85
}
120
86
121
87
} // namespace chromeos
0 commit comments