| 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 "ash/host/ash_window_tree_host_x11.h" | 5 #include "ash/host/ash_window_tree_host_x11.h" |
| 6 | 6 |
| 7 #undef None | 7 #undef None |
| 8 #undef Bool | 8 #undef Bool |
| 9 | 9 |
| 10 #include "base/sys_info.h" | 10 #include "base/sys_info.h" |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 // tests will fail. | 77 // tests will fail. |
| 78 // Fake a ChromeOS running env. | 78 // Fake a ChromeOS running env. |
| 79 const char* kLsbRelease = ""; | 79 const char* kLsbRelease = ""; |
| 80 base::SysInfo::SetChromeOSVersionInfoForTest(kLsbRelease, base::Time()); | 80 base::SysInfo::SetChromeOSVersionInfoForTest(kLsbRelease, base::Time()); |
| 81 #endif | 81 #endif |
| 82 } | 82 } |
| 83 }; | 83 }; |
| 84 | 84 |
| 85 // Fails on ChromeOS valgrind bot. http://crbug.com/499997 | 85 // Fails on ChromeOS valgrind bot. http://crbug.com/499997 |
| 86 #if defined(OS_CHROMEOS) | 86 #if defined(OS_CHROMEOS) |
| 87 #define MAYBE_DispatchTouchEventToOneRootWindow DISABLED_DispatchTouchEventToOne
RootWindow | 87 #define MAYBE_DispatchTouchEventToOneRootWindow \ |
| 88 DISABLED_DispatchTouchEventToOneRootWindow |
| 88 #else | 89 #else |
| 89 #define MAYBE_DispatchTouchEventToOneRootWindow DispatchTouchEventToOneRootWindo
w | 90 #define MAYBE_DispatchTouchEventToOneRootWindow \ |
| 91 DispatchTouchEventToOneRootWindow |
| 90 #endif | 92 #endif |
| 91 | 93 |
| 92 // Send X touch events to one WindowTreeHost. The WindowTreeHost's | 94 // Send X touch events to one WindowTreeHost. The WindowTreeHost's |
| 93 // delegate will get corresponding ui::TouchEvent if the touch events | 95 // delegate will get corresponding ui::TouchEvent if the touch events |
| 94 // are targeting this WindowTreeHost. | 96 // are targeting this WindowTreeHost. |
| 95 TEST_F(AshWindowTreeHostX11Test, MAYBE_DispatchTouchEventToOneRootWindow) { | 97 TEST_F(AshWindowTreeHostX11Test, MAYBE_DispatchTouchEventToOneRootWindow) { |
| 96 std::unique_ptr<aura::WindowTreeHostX11> window_tree_host( | 98 std::unique_ptr<aura::WindowTreeHostX11> window_tree_host( |
| 97 new AshWindowTreeHostX11(gfx::Rect(0, 0, 2560, 1700))); | 99 new AshWindowTreeHostX11(gfx::Rect(0, 0, 2560, 1700))); |
| 98 window_tree_host->InitHost(); | 100 window_tree_host->InitHost(); |
| 99 std::unique_ptr<RootWindowEventHandler> handler( | 101 std::unique_ptr<RootWindowEventHandler> handler( |
| 100 new RootWindowEventHandler(window_tree_host.get())); | 102 new RootWindowEventHandler(window_tree_host.get())); |
| 101 | 103 |
| 102 std::vector<int> devices; | 104 std::vector<int> devices; |
| 103 devices.push_back(0); | 105 devices.push_back(0); |
| 104 ui::SetUpTouchDevicesForTest(devices); | 106 ui::SetUpTouchDevicesForTest(devices); |
| 105 std::vector<ui::Valuator> valuators; | 107 std::vector<ui::Valuator> valuators; |
| 106 | 108 |
| 107 EXPECT_EQ(ui::ET_UNKNOWN, handler->last_touch_type()); | 109 EXPECT_EQ(ui::ET_UNKNOWN, handler->last_touch_type()); |
| 108 EXPECT_EQ(-1, handler->last_touch_id()); | 110 EXPECT_EQ(-1, handler->last_touch_id()); |
| 109 | 111 |
| 110 ui::ScopedXI2Event scoped_xevent; | 112 ui::ScopedXI2Event scoped_xevent; |
| 111 // This touch is out of bounds. | 113 // This touch is out of bounds. |
| 112 scoped_xevent.InitTouchEvent( | 114 scoped_xevent.InitTouchEvent(0, XI_TouchBegin, 5, gfx::Point(1500, 2500), |
| 113 0, XI_TouchBegin, 5, gfx::Point(1500, 2500), valuators); | 115 valuators); |
| 114 if (window_tree_host->CanDispatchEvent(scoped_xevent)) | 116 if (window_tree_host->CanDispatchEvent(scoped_xevent)) |
| 115 window_tree_host->DispatchEvent(scoped_xevent); | 117 window_tree_host->DispatchEvent(scoped_xevent); |
| 116 EXPECT_EQ(ui::ET_UNKNOWN, handler->last_touch_type()); | 118 EXPECT_EQ(ui::ET_UNKNOWN, handler->last_touch_type()); |
| 117 EXPECT_EQ(-1, handler->last_touch_id()); | 119 EXPECT_EQ(-1, handler->last_touch_id()); |
| 118 EXPECT_EQ(gfx::Point(0, 0), handler->last_touch_location()); | 120 EXPECT_EQ(gfx::Point(0, 0), handler->last_touch_location()); |
| 119 | 121 |
| 120 // Following touchs are within bounds and are passed to delegate. | 122 // Following touchs are within bounds and are passed to delegate. |
| 121 scoped_xevent.InitTouchEvent( | 123 scoped_xevent.InitTouchEvent(0, XI_TouchBegin, 5, gfx::Point(1500, 1500), |
| 122 0, XI_TouchBegin, 5, gfx::Point(1500, 1500), valuators); | 124 valuators); |
| 123 if (window_tree_host->CanDispatchEvent(scoped_xevent)) | 125 if (window_tree_host->CanDispatchEvent(scoped_xevent)) |
| 124 window_tree_host->DispatchEvent(scoped_xevent); | 126 window_tree_host->DispatchEvent(scoped_xevent); |
| 125 EXPECT_EQ(ui::ET_TOUCH_PRESSED, handler->last_touch_type()); | 127 EXPECT_EQ(ui::ET_TOUCH_PRESSED, handler->last_touch_type()); |
| 126 EXPECT_EQ(0, handler->last_touch_id()); | 128 EXPECT_EQ(0, handler->last_touch_id()); |
| 127 EXPECT_EQ(gfx::Point(1500, 1500), handler->last_touch_location()); | 129 EXPECT_EQ(gfx::Point(1500, 1500), handler->last_touch_location()); |
| 128 | 130 |
| 129 scoped_xevent.InitTouchEvent( | 131 scoped_xevent.InitTouchEvent(0, XI_TouchUpdate, 5, gfx::Point(1500, 1600), |
| 130 0, XI_TouchUpdate, 5, gfx::Point(1500, 1600), valuators); | 132 valuators); |
| 131 if (window_tree_host->CanDispatchEvent(scoped_xevent)) | 133 if (window_tree_host->CanDispatchEvent(scoped_xevent)) |
| 132 window_tree_host->DispatchEvent(scoped_xevent); | 134 window_tree_host->DispatchEvent(scoped_xevent); |
| 133 EXPECT_EQ(ui::ET_TOUCH_MOVED, handler->last_touch_type()); | 135 EXPECT_EQ(ui::ET_TOUCH_MOVED, handler->last_touch_type()); |
| 134 EXPECT_EQ(0, handler->last_touch_id()); | 136 EXPECT_EQ(0, handler->last_touch_id()); |
| 135 EXPECT_EQ(gfx::Point(1500, 1600), handler->last_touch_location()); | 137 EXPECT_EQ(gfx::Point(1500, 1600), handler->last_touch_location()); |
| 136 | 138 |
| 137 scoped_xevent.InitTouchEvent( | 139 scoped_xevent.InitTouchEvent(0, XI_TouchEnd, 5, gfx::Point(1500, 1600), |
| 138 0, XI_TouchEnd, 5, gfx::Point(1500, 1600), valuators); | 140 valuators); |
| 139 if (window_tree_host->CanDispatchEvent(scoped_xevent)) | 141 if (window_tree_host->CanDispatchEvent(scoped_xevent)) |
| 140 window_tree_host->DispatchEvent(scoped_xevent); | 142 window_tree_host->DispatchEvent(scoped_xevent); |
| 141 EXPECT_EQ(ui::ET_TOUCH_RELEASED, handler->last_touch_type()); | 143 EXPECT_EQ(ui::ET_TOUCH_RELEASED, handler->last_touch_type()); |
| 142 EXPECT_EQ(0, handler->last_touch_id()); | 144 EXPECT_EQ(0, handler->last_touch_id()); |
| 143 EXPECT_EQ(gfx::Point(1500, 1600), handler->last_touch_location()); | 145 EXPECT_EQ(gfx::Point(1500, 1600), handler->last_touch_location()); |
| 144 | 146 |
| 145 handler.reset(); | 147 handler.reset(); |
| 146 } | 148 } |
| 147 | 149 |
| 148 // Send X touch events to two WindowTreeHost. The WindowTreeHost which is | 150 // Send X touch events to two WindowTreeHost. The WindowTreeHost which is |
| (...skipping 18 matching lines...) Expand all Loading... |
| 167 ui::SetUpTouchDevicesForTest(devices); | 169 ui::SetUpTouchDevicesForTest(devices); |
| 168 std::vector<ui::Valuator> valuators; | 170 std::vector<ui::Valuator> valuators; |
| 169 | 171 |
| 170 EXPECT_EQ(ui::ET_UNKNOWN, handler1->last_touch_type()); | 172 EXPECT_EQ(ui::ET_UNKNOWN, handler1->last_touch_type()); |
| 171 EXPECT_EQ(-1, handler1->last_touch_id()); | 173 EXPECT_EQ(-1, handler1->last_touch_id()); |
| 172 EXPECT_EQ(ui::ET_UNKNOWN, handler2->last_touch_type()); | 174 EXPECT_EQ(ui::ET_UNKNOWN, handler2->last_touch_type()); |
| 173 EXPECT_EQ(-1, handler2->last_touch_id()); | 175 EXPECT_EQ(-1, handler2->last_touch_id()); |
| 174 | 176 |
| 175 // 2 Touch events are targeted at the second WindowTreeHost. | 177 // 2 Touch events are targeted at the second WindowTreeHost. |
| 176 ui::ScopedXI2Event scoped_xevent; | 178 ui::ScopedXI2Event scoped_xevent; |
| 177 scoped_xevent.InitTouchEvent( | 179 scoped_xevent.InitTouchEvent(0, XI_TouchBegin, 5, gfx::Point(1500, 2500), |
| 178 0, XI_TouchBegin, 5, gfx::Point(1500, 2500), valuators); | 180 valuators); |
| 179 if (window_tree_host1->CanDispatchEvent(scoped_xevent)) | 181 if (window_tree_host1->CanDispatchEvent(scoped_xevent)) |
| 180 window_tree_host1->DispatchEvent(scoped_xevent); | 182 window_tree_host1->DispatchEvent(scoped_xevent); |
| 181 if (window_tree_host2->CanDispatchEvent(scoped_xevent)) | 183 if (window_tree_host2->CanDispatchEvent(scoped_xevent)) |
| 182 window_tree_host2->DispatchEvent(scoped_xevent); | 184 window_tree_host2->DispatchEvent(scoped_xevent); |
| 183 EXPECT_EQ(ui::ET_UNKNOWN, handler1->last_touch_type()); | 185 EXPECT_EQ(ui::ET_UNKNOWN, handler1->last_touch_type()); |
| 184 EXPECT_EQ(-1, handler1->last_touch_id()); | 186 EXPECT_EQ(-1, handler1->last_touch_id()); |
| 185 EXPECT_EQ(gfx::Point(0, 0), handler1->last_touch_location()); | 187 EXPECT_EQ(gfx::Point(0, 0), handler1->last_touch_location()); |
| 186 EXPECT_EQ(ui::ET_TOUCH_PRESSED, handler2->last_touch_type()); | 188 EXPECT_EQ(ui::ET_TOUCH_PRESSED, handler2->last_touch_type()); |
| 187 EXPECT_EQ(0, handler2->last_touch_id()); | 189 EXPECT_EQ(0, handler2->last_touch_id()); |
| 188 EXPECT_EQ(gfx::Point(1500, 2500), handler2->last_touch_location()); | 190 EXPECT_EQ(gfx::Point(1500, 2500), handler2->last_touch_location()); |
| 189 | 191 |
| 190 scoped_xevent.InitTouchEvent( | 192 scoped_xevent.InitTouchEvent(0, XI_TouchBegin, 6, gfx::Point(1600, 2600), |
| 191 0, XI_TouchBegin, 6, gfx::Point(1600, 2600), valuators); | 193 valuators); |
| 192 if (window_tree_host1->CanDispatchEvent(scoped_xevent)) | 194 if (window_tree_host1->CanDispatchEvent(scoped_xevent)) |
| 193 window_tree_host1->DispatchEvent(scoped_xevent); | 195 window_tree_host1->DispatchEvent(scoped_xevent); |
| 194 if (window_tree_host2->CanDispatchEvent(scoped_xevent)) | 196 if (window_tree_host2->CanDispatchEvent(scoped_xevent)) |
| 195 window_tree_host2->DispatchEvent(scoped_xevent); | 197 window_tree_host2->DispatchEvent(scoped_xevent); |
| 196 EXPECT_EQ(ui::ET_UNKNOWN, handler1->last_touch_type()); | 198 EXPECT_EQ(ui::ET_UNKNOWN, handler1->last_touch_type()); |
| 197 EXPECT_EQ(-1, handler1->last_touch_id()); | 199 EXPECT_EQ(-1, handler1->last_touch_id()); |
| 198 EXPECT_EQ(gfx::Point(0, 0), handler1->last_touch_location()); | 200 EXPECT_EQ(gfx::Point(0, 0), handler1->last_touch_location()); |
| 199 EXPECT_EQ(ui::ET_TOUCH_PRESSED, handler2->last_touch_type()); | 201 EXPECT_EQ(ui::ET_TOUCH_PRESSED, handler2->last_touch_type()); |
| 200 EXPECT_EQ(1, handler2->last_touch_id()); | 202 EXPECT_EQ(1, handler2->last_touch_id()); |
| 201 EXPECT_EQ(gfx::Point(1600, 2600), handler2->last_touch_location()); | 203 EXPECT_EQ(gfx::Point(1600, 2600), handler2->last_touch_location()); |
| 202 | 204 |
| 203 scoped_xevent.InitTouchEvent( | 205 scoped_xevent.InitTouchEvent(0, XI_TouchUpdate, 5, gfx::Point(1500, 2550), |
| 204 0, XI_TouchUpdate, 5, gfx::Point(1500, 2550), valuators); | 206 valuators); |
| 205 if (window_tree_host1->CanDispatchEvent(scoped_xevent)) | 207 if (window_tree_host1->CanDispatchEvent(scoped_xevent)) |
| 206 window_tree_host1->DispatchEvent(scoped_xevent); | 208 window_tree_host1->DispatchEvent(scoped_xevent); |
| 207 if (window_tree_host2->CanDispatchEvent(scoped_xevent)) | 209 if (window_tree_host2->CanDispatchEvent(scoped_xevent)) |
| 208 window_tree_host2->DispatchEvent(scoped_xevent); | 210 window_tree_host2->DispatchEvent(scoped_xevent); |
| 209 EXPECT_EQ(ui::ET_UNKNOWN, handler1->last_touch_type()); | 211 EXPECT_EQ(ui::ET_UNKNOWN, handler1->last_touch_type()); |
| 210 EXPECT_EQ(-1, handler1->last_touch_id()); | 212 EXPECT_EQ(-1, handler1->last_touch_id()); |
| 211 EXPECT_EQ(gfx::Point(0, 0), handler1->last_touch_location()); | 213 EXPECT_EQ(gfx::Point(0, 0), handler1->last_touch_location()); |
| 212 EXPECT_EQ(ui::ET_TOUCH_MOVED, handler2->last_touch_type()); | 214 EXPECT_EQ(ui::ET_TOUCH_MOVED, handler2->last_touch_type()); |
| 213 EXPECT_EQ(0, handler2->last_touch_id()); | 215 EXPECT_EQ(0, handler2->last_touch_id()); |
| 214 EXPECT_EQ(gfx::Point(1500, 2550), handler2->last_touch_location()); | 216 EXPECT_EQ(gfx::Point(1500, 2550), handler2->last_touch_location()); |
| 215 | 217 |
| 216 scoped_xevent.InitTouchEvent( | 218 scoped_xevent.InitTouchEvent(0, XI_TouchUpdate, 6, gfx::Point(1600, 2650), |
| 217 0, XI_TouchUpdate, 6, gfx::Point(1600, 2650), valuators); | 219 valuators); |
| 218 if (window_tree_host1->CanDispatchEvent(scoped_xevent)) | 220 if (window_tree_host1->CanDispatchEvent(scoped_xevent)) |
| 219 window_tree_host1->DispatchEvent(scoped_xevent); | 221 window_tree_host1->DispatchEvent(scoped_xevent); |
| 220 if (window_tree_host2->CanDispatchEvent(scoped_xevent)) | 222 if (window_tree_host2->CanDispatchEvent(scoped_xevent)) |
| 221 window_tree_host2->DispatchEvent(scoped_xevent); | 223 window_tree_host2->DispatchEvent(scoped_xevent); |
| 222 EXPECT_EQ(ui::ET_UNKNOWN, handler1->last_touch_type()); | 224 EXPECT_EQ(ui::ET_UNKNOWN, handler1->last_touch_type()); |
| 223 EXPECT_EQ(-1, handler1->last_touch_id()); | 225 EXPECT_EQ(-1, handler1->last_touch_id()); |
| 224 EXPECT_EQ(gfx::Point(0, 0), handler1->last_touch_location()); | 226 EXPECT_EQ(gfx::Point(0, 0), handler1->last_touch_location()); |
| 225 EXPECT_EQ(ui::ET_TOUCH_MOVED, handler2->last_touch_type()); | 227 EXPECT_EQ(ui::ET_TOUCH_MOVED, handler2->last_touch_type()); |
| 226 EXPECT_EQ(1, handler2->last_touch_id()); | 228 EXPECT_EQ(1, handler2->last_touch_id()); |
| 227 EXPECT_EQ(gfx::Point(1600, 2650), handler2->last_touch_location()); | 229 EXPECT_EQ(gfx::Point(1600, 2650), handler2->last_touch_location()); |
| 228 | 230 |
| 229 scoped_xevent.InitTouchEvent( | 231 scoped_xevent.InitTouchEvent(0, XI_TouchEnd, 5, gfx::Point(1500, 2550), |
| 230 0, XI_TouchEnd, 5, gfx::Point(1500, 2550), valuators); | 232 valuators); |
| 231 if (window_tree_host1->CanDispatchEvent(scoped_xevent)) | 233 if (window_tree_host1->CanDispatchEvent(scoped_xevent)) |
| 232 window_tree_host1->DispatchEvent(scoped_xevent); | 234 window_tree_host1->DispatchEvent(scoped_xevent); |
| 233 if (window_tree_host2->CanDispatchEvent(scoped_xevent)) | 235 if (window_tree_host2->CanDispatchEvent(scoped_xevent)) |
| 234 window_tree_host2->DispatchEvent(scoped_xevent); | 236 window_tree_host2->DispatchEvent(scoped_xevent); |
| 235 EXPECT_EQ(ui::ET_UNKNOWN, handler1->last_touch_type()); | 237 EXPECT_EQ(ui::ET_UNKNOWN, handler1->last_touch_type()); |
| 236 EXPECT_EQ(-1, handler1->last_touch_id()); | 238 EXPECT_EQ(-1, handler1->last_touch_id()); |
| 237 EXPECT_EQ(gfx::Point(0, 0), handler1->last_touch_location()); | 239 EXPECT_EQ(gfx::Point(0, 0), handler1->last_touch_location()); |
| 238 EXPECT_EQ(ui::ET_TOUCH_RELEASED, handler2->last_touch_type()); | 240 EXPECT_EQ(ui::ET_TOUCH_RELEASED, handler2->last_touch_type()); |
| 239 EXPECT_EQ(0, handler2->last_touch_id()); | 241 EXPECT_EQ(0, handler2->last_touch_id()); |
| 240 EXPECT_EQ(gfx::Point(1500, 2550), handler2->last_touch_location()); | 242 EXPECT_EQ(gfx::Point(1500, 2550), handler2->last_touch_location()); |
| 241 | 243 |
| 242 scoped_xevent.InitTouchEvent( | 244 scoped_xevent.InitTouchEvent(0, XI_TouchEnd, 6, gfx::Point(1600, 2650), |
| 243 0, XI_TouchEnd, 6, gfx::Point(1600, 2650), valuators); | 245 valuators); |
| 244 if (window_tree_host1->CanDispatchEvent(scoped_xevent)) | 246 if (window_tree_host1->CanDispatchEvent(scoped_xevent)) |
| 245 window_tree_host1->DispatchEvent(scoped_xevent); | 247 window_tree_host1->DispatchEvent(scoped_xevent); |
| 246 if (window_tree_host2->CanDispatchEvent(scoped_xevent)) | 248 if (window_tree_host2->CanDispatchEvent(scoped_xevent)) |
| 247 window_tree_host2->DispatchEvent(scoped_xevent); | 249 window_tree_host2->DispatchEvent(scoped_xevent); |
| 248 EXPECT_EQ(ui::ET_UNKNOWN, handler1->last_touch_type()); | 250 EXPECT_EQ(ui::ET_UNKNOWN, handler1->last_touch_type()); |
| 249 EXPECT_EQ(-1, handler1->last_touch_id()); | 251 EXPECT_EQ(-1, handler1->last_touch_id()); |
| 250 EXPECT_EQ(gfx::Point(0, 0), handler1->last_touch_location()); | 252 EXPECT_EQ(gfx::Point(0, 0), handler1->last_touch_location()); |
| 251 EXPECT_EQ(ui::ET_TOUCH_RELEASED, handler2->last_touch_type()); | 253 EXPECT_EQ(ui::ET_TOUCH_RELEASED, handler2->last_touch_type()); |
| 252 EXPECT_EQ(1, handler2->last_touch_id()); | 254 EXPECT_EQ(1, handler2->last_touch_id()); |
| 253 EXPECT_EQ(gfx::Point(1600, 2650), handler2->last_touch_location()); | 255 EXPECT_EQ(gfx::Point(1600, 2650), handler2->last_touch_location()); |
| 254 | 256 |
| 255 handler1.reset(); | 257 handler1.reset(); |
| 256 handler2.reset(); | 258 handler2.reset(); |
| 257 } | 259 } |
| 258 | 260 |
| 259 } // namespace aura | 261 } // namespace aura |
| OLD | NEW |