| OLD | NEW |
| 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 "ui/display/chromeos/touchscreen_util.h" |
| 6 |
| 7 #include <memory> |
| 5 #include <string> | 8 #include <string> |
| 6 #include <vector> | 9 #include <vector> |
| 7 | 10 |
| 8 #include "ash/shell.h" | 11 #include "base/memory/ptr_util.h" |
| 9 #include "ash/test/ash_test_base.h" | |
| 10 #include "ash/touch/touchscreen_util.h" | |
| 11 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 13 #include "ui/display/manager/display_manager.h" |
| 12 #include "ui/display/manager/managed_display_info.h" | 14 #include "ui/display/manager/managed_display_info.h" |
| 15 #include "ui/display/screen_base.h" |
| 13 #include "ui/display/test/display_manager_test_api.h" | 16 #include "ui/display/test/display_manager_test_api.h" |
| 14 #include "ui/events/devices/input_device.h" | 17 #include "ui/events/devices/input_device.h" |
| 15 | 18 |
| 16 namespace ash { | 19 namespace display { |
| 17 | 20 |
| 18 using DisplayInfoList = std::vector<display::ManagedDisplayInfo>; | 21 using DisplayInfoList = std::vector<ManagedDisplayInfo>; |
| 19 | 22 |
| 20 class TouchscreenUtilTest : public test::AshTestBase { | 23 class TouchscreenUtilTest : public testing::Test { |
| 21 public: | 24 public: |
| 22 TouchscreenUtilTest() {} | 25 TouchscreenUtilTest() {} |
| 23 ~TouchscreenUtilTest() override {} | 26 ~TouchscreenUtilTest() override {} |
| 24 | 27 |
| 28 DisplayManager* display_manager() { return display_manager_.get(); } |
| 29 |
| 30 // testing::Test: |
| 25 void SetUp() override { | 31 void SetUp() override { |
| 26 test::AshTestBase::SetUp(); | 32 // Recreate for each test, DisplayManager has a lot of state. |
| 33 display_manager_ = |
| 34 base::MakeUnique<DisplayManager>(base::MakeUnique<ScreenBase>()); |
| 35 |
| 27 // Internal display will always match to internal touchscreen. If internal | 36 // Internal display will always match to internal touchscreen. If internal |
| 28 // touchscreen can't be detected, it is then associated to a touch screen | 37 // touchscreen can't be detected, it is then associated to a touch screen |
| 29 // with matching size. | 38 // with matching size. |
| 30 { | 39 { |
| 31 display::ManagedDisplayInfo display(1, "1", false); | 40 ManagedDisplayInfo display(1, "1", false); |
| 32 scoped_refptr<display::ManagedDisplayMode> mode( | 41 scoped_refptr<ManagedDisplayMode> mode(new ManagedDisplayMode( |
| 33 new display::ManagedDisplayMode(gfx::Size(1920, 1080), 60.0, | 42 gfx::Size(1920, 1080), 60.0, false /* interlaced */, |
| 34 false /* interlaced */, | 43 true /* native */, 1.0 /* ui_scale */, |
| 35 true /* native */, 1.0 /* ui_scale */, | 44 1.0 /* device_scale_factor */)); |
| 36 1.0 /* device_scale_factor */)); | 45 ManagedDisplayInfo::ManagedDisplayModeList modes(1, mode); |
| 37 display::ManagedDisplayInfo::ManagedDisplayModeList modes(1, mode); | |
| 38 display.SetManagedDisplayModes(modes); | 46 display.SetManagedDisplayModes(modes); |
| 39 displays_.push_back(display); | 47 displays_.push_back(display); |
| 40 } | 48 } |
| 41 | 49 |
| 42 { | 50 { |
| 43 display::ManagedDisplayInfo display(2, "2", false); | 51 ManagedDisplayInfo display(2, "2", false); |
| 44 | 52 |
| 45 scoped_refptr<display::ManagedDisplayMode> mode( | 53 scoped_refptr<ManagedDisplayMode> mode(new ManagedDisplayMode( |
| 46 new display::ManagedDisplayMode(gfx::Size(800, 600), 60.0, | 54 gfx::Size(800, 600), 60.0, false /* interlaced */, true /* native */, |
| 47 false /* interlaced */, | 55 1.0 /* ui_scale */, 1.0 /* device_scale_factor */)); |
| 48 true /* native */, 1.0 /* ui_scale */, | 56 ManagedDisplayInfo::ManagedDisplayModeList modes(1, mode); |
| 49 1.0 /* device_scale_factor */)); | |
| 50 display::ManagedDisplayInfo::ManagedDisplayModeList modes(1, mode); | |
| 51 display.SetManagedDisplayModes(modes); | 57 display.SetManagedDisplayModes(modes); |
| 52 displays_.push_back(display); | 58 displays_.push_back(display); |
| 53 } | 59 } |
| 54 | 60 |
| 55 // Display without native mode. Must not be matched to any touch screen. | 61 // Display without native mode. Must not be matched to any touch screen. |
| 56 { | 62 { |
| 57 display::ManagedDisplayInfo display(3, "3", false); | 63 ManagedDisplayInfo display(3, "3", false); |
| 58 displays_.push_back(display); | 64 displays_.push_back(display); |
| 59 } | 65 } |
| 60 | 66 |
| 61 { | 67 { |
| 62 display::ManagedDisplayInfo display(4, "4", false); | 68 ManagedDisplayInfo display(4, "4", false); |
| 63 | 69 |
| 64 scoped_refptr<display::ManagedDisplayMode> mode( | 70 scoped_refptr<ManagedDisplayMode> mode(new ManagedDisplayMode( |
| 65 new display::ManagedDisplayMode(gfx::Size(1024, 768), 60.0, | 71 gfx::Size(1024, 768), 60.0, false /* interlaced */, |
| 66 false /* interlaced */, | 72 /* native */ true, 1.0 /* ui_scale */, |
| 67 /* native */ true, 1.0 /* ui_scale */, | 73 1.0 /* device_scale_factor */)); |
| 68 1.0 /* device_scale_factor */)); | 74 ManagedDisplayInfo::ManagedDisplayModeList modes(1, mode); |
| 69 display::ManagedDisplayInfo::ManagedDisplayModeList modes(1, mode); | |
| 70 display.SetManagedDisplayModes(modes); | 75 display.SetManagedDisplayModes(modes); |
| 71 displays_.push_back(display); | 76 displays_.push_back(display); |
| 72 } | 77 } |
| 73 } | 78 } |
| 74 | 79 |
| 75 void TearDown() override { | 80 void TearDown() override { displays_.clear(); } |
| 76 displays_.clear(); | |
| 77 test::AshTestBase::TearDown(); | |
| 78 } | |
| 79 | 81 |
| 80 protected: | 82 protected: |
| 81 DisplayInfoList displays_; | 83 DisplayInfoList displays_; |
| 84 std::unique_ptr<DisplayManager> display_manager_; |
| 82 | 85 |
| 83 private: | 86 private: |
| 84 DISALLOW_COPY_AND_ASSIGN(TouchscreenUtilTest); | 87 DISALLOW_COPY_AND_ASSIGN(TouchscreenUtilTest); |
| 85 }; | 88 }; |
| 86 | 89 |
| 87 TEST_F(TouchscreenUtilTest, NoTouchscreens) { | 90 TEST_F(TouchscreenUtilTest, NoTouchscreens) { |
| 88 std::vector<ui::TouchscreenDevice> devices; | 91 std::vector<ui::TouchscreenDevice> devices; |
| 89 | 92 |
| 90 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), | 93 test::ScopedSetInternalDisplayId set_internal(display_manager(), |
| 91 displays_[0].id()); | 94 displays_[0].id()); |
| 92 AssociateTouchscreens(&displays_, devices); | 95 AssociateTouchscreens(&displays_, devices); |
| 93 | 96 |
| 94 for (size_t i = 0; i < displays_.size(); ++i) | 97 for (size_t i = 0; i < displays_.size(); ++i) |
| 95 EXPECT_EQ(0u, displays_[i].input_devices().size()); | 98 EXPECT_EQ(0u, displays_[i].input_devices().size()); |
| 96 } | 99 } |
| 97 | 100 |
| 98 // Verify that if there are a lot of touchscreens, they will all get associated | 101 // Verify that if there are a lot of touchscreens, they will all get associated |
| 99 // with a display. | 102 // with a display. |
| 100 TEST_F(TouchscreenUtilTest, ManyTouchscreens) { | 103 TEST_F(TouchscreenUtilTest, ManyTouchscreens) { |
| 101 std::vector<ui::TouchscreenDevice> devices; | 104 std::vector<ui::TouchscreenDevice> devices; |
| 102 for (int i = 0; i < 5; ++i) { | 105 for (int i = 0; i < 5; ++i) { |
| 103 devices.push_back( | 106 devices.push_back( |
| 104 ui::TouchscreenDevice(i, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "", | 107 ui::TouchscreenDevice(i, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "", |
| 105 gfx::Size(256, 256), 0)); | 108 gfx::Size(256, 256), 0)); |
| 106 } | 109 } |
| 107 | 110 |
| 108 DisplayInfoList displays; | 111 DisplayInfoList displays; |
| 109 displays.push_back(displays_[3]); | 112 displays.push_back(displays_[3]); |
| 110 | 113 |
| 111 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), | 114 test::ScopedSetInternalDisplayId set_internal(display_manager(), |
| 112 displays_[0].id()); | 115 displays_[0].id()); |
| 113 AssociateTouchscreens(&displays, devices); | 116 AssociateTouchscreens(&displays, devices); |
| 114 | 117 |
| 115 for (int i = 0; i < 5; ++i) | 118 for (int i = 0; i < 5; ++i) |
| 116 EXPECT_EQ(i, displays[0].input_devices()[i]); | 119 EXPECT_EQ(i, displays[0].input_devices()[i]); |
| 117 } | 120 } |
| 118 | 121 |
| 119 TEST_F(TouchscreenUtilTest, OneToOneMapping) { | 122 TEST_F(TouchscreenUtilTest, OneToOneMapping) { |
| 120 std::vector<ui::TouchscreenDevice> devices; | 123 std::vector<ui::TouchscreenDevice> devices; |
| 121 devices.push_back( | 124 devices.push_back( |
| 122 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "1", | 125 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "1", |
| 123 gfx::Size(800, 600), 0)); | 126 gfx::Size(800, 600), 0)); |
| 124 devices.push_back( | 127 devices.push_back( |
| 125 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "2", | 128 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "2", |
| 126 gfx::Size(1024, 768), 0)); | 129 gfx::Size(1024, 768), 0)); |
| 127 | 130 |
| 128 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), | 131 test::ScopedSetInternalDisplayId set_internal(display_manager(), |
| 129 displays_[0].id()); | 132 displays_[0].id()); |
| 130 AssociateTouchscreens(&displays_, devices); | 133 AssociateTouchscreens(&displays_, devices); |
| 131 | 134 |
| 132 EXPECT_EQ(0u, displays_[0].input_devices().size()); | 135 EXPECT_EQ(0u, displays_[0].input_devices().size()); |
| 133 EXPECT_EQ(1u, displays_[1].input_devices().size()); | 136 EXPECT_EQ(1u, displays_[1].input_devices().size()); |
| 134 EXPECT_EQ(1, displays_[1].input_devices()[0]); | 137 EXPECT_EQ(1, displays_[1].input_devices()[0]); |
| 135 EXPECT_EQ(0u, displays_[2].input_devices().size()); | 138 EXPECT_EQ(0u, displays_[2].input_devices().size()); |
| 136 EXPECT_EQ(1u, displays_[3].input_devices().size()); | 139 EXPECT_EQ(1u, displays_[3].input_devices().size()); |
| 137 EXPECT_EQ(2, displays_[3].input_devices()[0]); | 140 EXPECT_EQ(2, displays_[3].input_devices()[0]); |
| 138 } | 141 } |
| 139 | 142 |
| 140 TEST_F(TouchscreenUtilTest, MapToCorrectDisplaySize) { | 143 TEST_F(TouchscreenUtilTest, MapToCorrectDisplaySize) { |
| 141 std::vector<ui::TouchscreenDevice> devices; | 144 std::vector<ui::TouchscreenDevice> devices; |
| 142 devices.push_back( | 145 devices.push_back( |
| 143 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "2", | 146 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "2", |
| 144 gfx::Size(1024, 768), 0)); | 147 gfx::Size(1024, 768), 0)); |
| 145 | 148 |
| 146 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), | 149 test::ScopedSetInternalDisplayId set_internal(display_manager(), |
| 147 displays_[0].id()); | 150 displays_[0].id()); |
| 148 AssociateTouchscreens(&displays_, devices); | 151 AssociateTouchscreens(&displays_, devices); |
| 149 | 152 |
| 150 EXPECT_EQ(0u, displays_[0].input_devices().size()); | 153 EXPECT_EQ(0u, displays_[0].input_devices().size()); |
| 151 EXPECT_EQ(0u, displays_[1].input_devices().size()); | 154 EXPECT_EQ(0u, displays_[1].input_devices().size()); |
| 152 EXPECT_EQ(0u, displays_[2].input_devices().size()); | 155 EXPECT_EQ(0u, displays_[2].input_devices().size()); |
| 153 EXPECT_EQ(1u, displays_[3].input_devices().size()); | 156 EXPECT_EQ(1u, displays_[3].input_devices().size()); |
| 154 EXPECT_EQ(2, displays_[3].input_devices()[0]); | 157 EXPECT_EQ(2, displays_[3].input_devices()[0]); |
| 155 } | 158 } |
| 156 | 159 |
| 157 TEST_F(TouchscreenUtilTest, MapWhenSizeDiffersByOne) { | 160 TEST_F(TouchscreenUtilTest, MapWhenSizeDiffersByOne) { |
| 158 std::vector<ui::TouchscreenDevice> devices; | 161 std::vector<ui::TouchscreenDevice> devices; |
| 159 devices.push_back( | 162 devices.push_back( |
| 160 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "1", | 163 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "1", |
| 161 gfx::Size(801, 600), 0)); | 164 gfx::Size(801, 600), 0)); |
| 162 devices.push_back( | 165 devices.push_back( |
| 163 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "2", | 166 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "2", |
| 164 gfx::Size(1023, 768), 0)); | 167 gfx::Size(1023, 768), 0)); |
| 165 | 168 |
| 166 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), | 169 test::ScopedSetInternalDisplayId set_internal(display_manager(), |
| 167 displays_[0].id()); | 170 displays_[0].id()); |
| 168 AssociateTouchscreens(&displays_, devices); | 171 AssociateTouchscreens(&displays_, devices); |
| 169 | 172 |
| 170 EXPECT_EQ(0u, displays_[0].input_devices().size()); | 173 EXPECT_EQ(0u, displays_[0].input_devices().size()); |
| 171 EXPECT_EQ(1u, displays_[1].input_devices().size()); | 174 EXPECT_EQ(1u, displays_[1].input_devices().size()); |
| 172 EXPECT_EQ(1, displays_[1].input_devices()[0]); | 175 EXPECT_EQ(1, displays_[1].input_devices()[0]); |
| 173 EXPECT_EQ(0u, displays_[2].input_devices().size()); | 176 EXPECT_EQ(0u, displays_[2].input_devices().size()); |
| 174 EXPECT_EQ(1u, displays_[3].input_devices().size()); | 177 EXPECT_EQ(1u, displays_[3].input_devices().size()); |
| 175 EXPECT_EQ(2, displays_[3].input_devices()[0]); | 178 EXPECT_EQ(2, displays_[3].input_devices()[0]); |
| 176 } | 179 } |
| 177 | 180 |
| 178 TEST_F(TouchscreenUtilTest, MapWhenSizesDoNotMatch) { | 181 TEST_F(TouchscreenUtilTest, MapWhenSizesDoNotMatch) { |
| 179 std::vector<ui::TouchscreenDevice> devices; | 182 std::vector<ui::TouchscreenDevice> devices; |
| 180 devices.push_back( | 183 devices.push_back( |
| 181 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "1", | 184 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "1", |
| 182 gfx::Size(1022, 768), 0)); | 185 gfx::Size(1022, 768), 0)); |
| 183 devices.push_back( | 186 devices.push_back( |
| 184 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "2", | 187 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "2", |
| 185 gfx::Size(802, 600), 0)); | 188 gfx::Size(802, 600), 0)); |
| 186 | 189 |
| 187 DisplayInfoList displays; | 190 DisplayInfoList displays; |
| 188 displays.push_back(displays_[0]); | 191 displays.push_back(displays_[0]); |
| 189 displays.push_back(displays_[1]); | 192 displays.push_back(displays_[1]); |
| 190 | 193 |
| 191 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), | 194 test::ScopedSetInternalDisplayId set_internal(display_manager(), |
| 192 displays[0].id()); | 195 displays[0].id()); |
| 193 AssociateTouchscreens(&displays, devices); | 196 AssociateTouchscreens(&displays, devices); |
| 194 | 197 |
| 195 EXPECT_EQ(0u, displays[0].input_devices().size()); | 198 EXPECT_EQ(0u, displays[0].input_devices().size()); |
| 196 EXPECT_EQ(2u, displays[1].input_devices().size()); | 199 EXPECT_EQ(2u, displays[1].input_devices().size()); |
| 197 EXPECT_EQ(1, displays[1].input_devices()[0]); | 200 EXPECT_EQ(1, displays[1].input_devices()[0]); |
| 198 EXPECT_EQ(2, displays[1].input_devices()[1]); | 201 EXPECT_EQ(2, displays[1].input_devices()[1]); |
| 199 } | 202 } |
| 200 | 203 |
| 201 TEST_F(TouchscreenUtilTest, MapInternalTouchscreen) { | 204 TEST_F(TouchscreenUtilTest, MapInternalTouchscreen) { |
| 202 std::vector<ui::TouchscreenDevice> devices; | 205 std::vector<ui::TouchscreenDevice> devices; |
| 203 devices.push_back( | 206 devices.push_back( |
| 204 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "1", | 207 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "1", |
| 205 gfx::Size(1920, 1080), 0)); | 208 gfx::Size(1920, 1080), 0)); |
| 206 devices.push_back( | 209 devices.push_back( |
| 207 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "2", | 210 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "2", |
| 208 gfx::Size(9999, 888), 0)); | 211 gfx::Size(9999, 888), 0)); |
| 209 | 212 |
| 210 DisplayInfoList displays; | 213 DisplayInfoList displays; |
| 211 displays.push_back(displays_[0]); | 214 displays.push_back(displays_[0]); |
| 212 displays.push_back(displays_[1]); | 215 displays.push_back(displays_[1]); |
| 213 | 216 |
| 214 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), | 217 test::ScopedSetInternalDisplayId set_internal(display_manager(), |
| 215 displays[0].id()); | 218 displays[0].id()); |
| 216 AssociateTouchscreens(&displays, devices); | 219 AssociateTouchscreens(&displays, devices); |
| 217 | 220 |
| 218 // Internal touchscreen is always mapped to internal display. | 221 // Internal touchscreen is always mapped to internal display. |
| 219 EXPECT_EQ(1u, displays[0].input_devices().size()); | 222 EXPECT_EQ(1u, displays[0].input_devices().size()); |
| 220 EXPECT_EQ(2, displays[0].input_devices()[0]); | 223 EXPECT_EQ(2, displays[0].input_devices()[0]); |
| 221 EXPECT_EQ(1u, displays[1].input_devices().size()); | 224 EXPECT_EQ(1u, displays[1].input_devices().size()); |
| 222 EXPECT_EQ(1, displays[1].input_devices()[0]); | 225 EXPECT_EQ(1, displays[1].input_devices()[0]); |
| 223 } | 226 } |
| 224 | 227 |
| 225 TEST_F(TouchscreenUtilTest, MultipleInternal) { | 228 TEST_F(TouchscreenUtilTest, MultipleInternal) { |
| 226 std::vector<ui::TouchscreenDevice> devices; | 229 std::vector<ui::TouchscreenDevice> devices; |
| 227 devices.push_back( | 230 devices.push_back( |
| 228 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "1", | 231 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "1", |
| 229 gfx::Size(1920, 1080), 0)); | 232 gfx::Size(1920, 1080), 0)); |
| 230 devices.push_back( | 233 devices.push_back( |
| 231 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "2", | 234 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "2", |
| 232 gfx::Size(1920, 1080), 0)); | 235 gfx::Size(1920, 1080), 0)); |
| 233 | 236 |
| 234 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), | 237 test::ScopedSetInternalDisplayId set_internal(display_manager(), |
| 235 displays_[0].id()); | 238 displays_[0].id()); |
| 236 AssociateTouchscreens(&displays_, devices); | 239 AssociateTouchscreens(&displays_, devices); |
| 237 | 240 |
| 238 EXPECT_EQ(2u, displays_[0].input_devices().size()); | 241 EXPECT_EQ(2u, displays_[0].input_devices().size()); |
| 239 EXPECT_EQ(0u, displays_[1].input_devices().size()); | 242 EXPECT_EQ(0u, displays_[1].input_devices().size()); |
| 240 EXPECT_EQ(0u, displays_[2].input_devices().size()); | 243 EXPECT_EQ(0u, displays_[2].input_devices().size()); |
| 241 EXPECT_EQ(0u, displays_[3].input_devices().size()); | 244 EXPECT_EQ(0u, displays_[3].input_devices().size()); |
| 242 } | 245 } |
| 243 | 246 |
| 244 TEST_F(TouchscreenUtilTest, MultipleInternalAndExternal) { | 247 TEST_F(TouchscreenUtilTest, MultipleInternalAndExternal) { |
| 245 std::vector<ui::TouchscreenDevice> devices; | 248 std::vector<ui::TouchscreenDevice> devices; |
| 246 devices.push_back( | 249 devices.push_back( |
| 247 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "1", | 250 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "1", |
| 248 gfx::Size(1920, 1080), 0)); | 251 gfx::Size(1920, 1080), 0)); |
| 249 devices.push_back( | 252 devices.push_back( |
| 250 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "2", | 253 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "2", |
| 251 gfx::Size(1920, 1080), 0)); | 254 gfx::Size(1920, 1080), 0)); |
| 252 devices.push_back( | 255 devices.push_back( |
| 253 ui::TouchscreenDevice(3, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "3", | 256 ui::TouchscreenDevice(3, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "3", |
| 254 gfx::Size(1024, 768), 0)); | 257 gfx::Size(1024, 768), 0)); |
| 255 | 258 |
| 256 display::test::ScopedSetInternalDisplayId set_internal( | 259 test::ScopedSetInternalDisplayId set_internal(display_manager(), |
| 257 Shell::GetInstance()->display_manager(), displays_[0].id()); | 260 displays_[0].id()); |
| 258 AssociateTouchscreens(&displays_, devices); | 261 AssociateTouchscreens(&displays_, devices); |
| 259 | 262 |
| 260 EXPECT_EQ(2u, displays_[0].input_devices().size()); | 263 EXPECT_EQ(2u, displays_[0].input_devices().size()); |
| 261 EXPECT_EQ(1, displays_[0].input_devices()[0]); | 264 EXPECT_EQ(1, displays_[0].input_devices()[0]); |
| 262 EXPECT_EQ(2, displays_[0].input_devices()[1]); | 265 EXPECT_EQ(2, displays_[0].input_devices()[1]); |
| 263 EXPECT_EQ(0u, displays_[1].input_devices().size()); | 266 EXPECT_EQ(0u, displays_[1].input_devices().size()); |
| 264 EXPECT_EQ(0u, displays_[2].input_devices().size()); | 267 EXPECT_EQ(0u, displays_[2].input_devices().size()); |
| 265 EXPECT_EQ(1u, displays_[3].input_devices().size()); | 268 EXPECT_EQ(1u, displays_[3].input_devices().size()); |
| 266 EXPECT_EQ(3, displays_[3].input_devices()[0]); | 269 EXPECT_EQ(3, displays_[3].input_devices()[0]); |
| 267 } | 270 } |
| (...skipping 11 matching lines...) Expand all Loading... |
| 279 // Internal touchscreen should not be associated with any display | 282 // Internal touchscreen should not be associated with any display |
| 280 AssociateTouchscreens(&displays_, devices); | 283 AssociateTouchscreens(&displays_, devices); |
| 281 | 284 |
| 282 EXPECT_EQ(1u, displays_[0].input_devices().size()); | 285 EXPECT_EQ(1u, displays_[0].input_devices().size()); |
| 283 EXPECT_EQ(1, displays_[0].input_devices()[0]); | 286 EXPECT_EQ(1, displays_[0].input_devices()[0]); |
| 284 EXPECT_EQ(0u, displays_[1].input_devices().size()); | 287 EXPECT_EQ(0u, displays_[1].input_devices().size()); |
| 285 EXPECT_EQ(0u, displays_[2].input_devices().size()); | 288 EXPECT_EQ(0u, displays_[2].input_devices().size()); |
| 286 EXPECT_EQ(0u, displays_[3].input_devices().size()); | 289 EXPECT_EQ(0u, displays_[3].input_devices().size()); |
| 287 } | 290 } |
| 288 | 291 |
| 289 } // namespace ash | 292 } // namespace display |
| OLD | NEW |