Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / ash / touch / touchscreen_util_unittest.cc
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
3 // found in the LICENSE file.
4
5 #include <string>
6 #include <vector>
7
8 #include "ash/display/display_info.h"
9 #include "ash/touch/touchscreen_util.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11 #include "ui/events/devices/input_device.h"
12
13 namespace ash {
14
15 class TouchscreenUtilTest : public testing::Test {
16  public:
17   TouchscreenUtilTest() {}
18   virtual ~TouchscreenUtilTest() {}
19
20   virtual void SetUp() override {
21     // Internal display will always match to internal touchscreen. If internal
22     // touchscreen can't be detected, it is then associated to a touch screen
23     // with matching size.
24     {
25       DisplayInfo display(1, std::string(), false);
26       DisplayMode mode(gfx::Size(1920, 1080), 60.0, false, true);
27       mode.native = true;
28       std::vector<DisplayMode> modes(1, mode);
29       display.set_display_modes(modes);
30       displays_.push_back(display);
31       gfx::Display::SetInternalDisplayId(1);
32     }
33
34     {
35       DisplayInfo display(2, std::string(), false);
36       DisplayMode mode(gfx::Size(800, 600), 60.0, false, true);
37       mode.native = true;
38       std::vector<DisplayMode> modes(1, mode);
39       display.set_display_modes(modes);
40       displays_.push_back(display);
41     }
42
43     // Display without native mode. Must not be matched to any touch screen.
44     {
45       DisplayInfo display(3, std::string(), false);
46       displays_.push_back(display);
47     }
48
49     {
50       DisplayInfo display(4, std::string(), false);
51       DisplayMode mode(gfx::Size(1024, 768), 60.0, false, true);
52       mode.native = true;
53       std::vector<DisplayMode> modes(1, mode);
54       display.set_display_modes(modes);
55       displays_.push_back(display);
56     }
57   }
58
59   virtual void TearDown() override {
60     displays_.clear();
61   }
62
63  protected:
64   std::vector<DisplayInfo> displays_;
65
66  private:
67   DISALLOW_COPY_AND_ASSIGN(TouchscreenUtilTest);
68 };
69
70 TEST_F(TouchscreenUtilTest, NoTouchscreens) {
71   std::vector<ui::TouchscreenDevice> devices;
72   AssociateTouchscreens(&displays_, devices);
73
74   for (size_t i = 0; i < displays_.size(); ++i)
75     EXPECT_EQ(ui::TouchscreenDevice::kInvalidId,
76               displays_[i].touch_device_id());
77 }
78
79 TEST_F(TouchscreenUtilTest, OneToOneMapping) {
80   std::vector<ui::TouchscreenDevice> devices;
81   devices.push_back(ui::TouchscreenDevice(
82       1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "", gfx::Size(800, 600)));
83   devices.push_back(ui::TouchscreenDevice(
84       2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "", gfx::Size(1024, 768)));
85
86   AssociateTouchscreens(&displays_, devices);
87
88   EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, displays_[0].touch_device_id());
89   EXPECT_EQ(1u, displays_[1].touch_device_id());
90   EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, displays_[2].touch_device_id());
91   EXPECT_EQ(2u, displays_[3].touch_device_id());
92 }
93
94 TEST_F(TouchscreenUtilTest, MapToCorrectDisplaySize) {
95   std::vector<ui::TouchscreenDevice> devices;
96   devices.push_back(ui::TouchscreenDevice(
97       2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "", gfx::Size(1024, 768)));
98
99   AssociateTouchscreens(&displays_, devices);
100
101   EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, displays_[0].touch_device_id());
102   EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, displays_[1].touch_device_id());
103   EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, displays_[2].touch_device_id());
104   EXPECT_EQ(2u, displays_[3].touch_device_id());
105 }
106
107 TEST_F(TouchscreenUtilTest, MapWhenSizeDiffersByOne) {
108   std::vector<ui::TouchscreenDevice> devices;
109   devices.push_back(ui::TouchscreenDevice(
110       1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "", gfx::Size(801, 600)));
111   devices.push_back(ui::TouchscreenDevice(
112       2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "", gfx::Size(1023, 768)));
113
114   AssociateTouchscreens(&displays_, devices);
115
116   EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, displays_[0].touch_device_id());
117   EXPECT_EQ(1u, displays_[1].touch_device_id());
118   EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, displays_[2].touch_device_id());
119   EXPECT_EQ(2u, displays_[3].touch_device_id());
120 }
121
122 TEST_F(TouchscreenUtilTest, MapWhenSizesDoNotMatch) {
123   std::vector<ui::TouchscreenDevice> devices;
124   devices.push_back(ui::TouchscreenDevice(
125       1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "", gfx::Size(1022, 768)));
126   devices.push_back(ui::TouchscreenDevice(
127       2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "", gfx::Size(802, 600)));
128
129   AssociateTouchscreens(&displays_, devices);
130
131   EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, displays_[0].touch_device_id());
132   EXPECT_EQ(1u, displays_[1].touch_device_id());
133   EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, displays_[2].touch_device_id());
134   EXPECT_EQ(2u, displays_[3].touch_device_id());
135 }
136
137 TEST_F(TouchscreenUtilTest, MapInternalTouchscreen) {
138   std::vector<ui::TouchscreenDevice> devices;
139   devices.push_back(
140       ui::TouchscreenDevice(1,
141                             ui::InputDeviceType::INPUT_DEVICE_EXTERNAL,
142                             "",
143                             gfx::Size(1920, 1080)));
144   devices.push_back(ui::TouchscreenDevice(
145       2, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "", gfx::Size(9999, 888)));
146
147   AssociateTouchscreens(&displays_, devices);
148
149   // Internal touchscreen is always mapped to internal display.
150   EXPECT_EQ(2u, displays_[0].touch_device_id());
151   EXPECT_EQ(1u, displays_[1].touch_device_id());
152   EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, displays_[2].touch_device_id());
153   EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, displays_[3].touch_device_id());
154 }
155
156 }  // namespace ash