| 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 <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "ash/common/wm/window_state.h" | 7 #include "ash/common/wm/window_state.h" |
| 8 #include "ash/shell.h" | 8 #include "ash/shell.h" |
| 9 #include "ash/sticky_keys/sticky_keys_controller.h" | 9 #include "ash/sticky_keys/sticky_keys_controller.h" |
| 10 #include "ash/sticky_keys/sticky_keys_overlay.h" | 10 #include "ash/sticky_keys/sticky_keys_overlay.h" |
| (...skipping 2053 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2064 #if defined(USE_X11) | 2064 #if defined(USE_X11) |
| 2065 std::vector<int> device_list; | 2065 std::vector<int> device_list; |
| 2066 device_list.push_back(10); | 2066 device_list.push_back(10); |
| 2067 device_list.push_back(11); | 2067 device_list.push_back(11); |
| 2068 ui::TouchFactory::GetInstance()->SetPointerDeviceForTest(device_list); | 2068 ui::TouchFactory::GetInstance()->SetPointerDeviceForTest(device_list); |
| 2069 #endif | 2069 #endif |
| 2070 const int kLeftAndAltFlag = ui::EF_LEFT_MOUSE_BUTTON | ui::EF_ALT_DOWN; | 2070 const int kLeftAndAltFlag = ui::EF_LEFT_MOUSE_BUTTON | ui::EF_ALT_DOWN; |
| 2071 | 2071 |
| 2072 // Test Alt + Left click. | 2072 // Test Alt + Left click. |
| 2073 { | 2073 { |
| 2074 ui::MouseEvent press(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), | 2074 ui::MouseEvent press( |
| 2075 ui::EventTimeForNow(), kLeftAndAltFlag, | 2075 ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), ui::EventTimeForNow(), |
| 2076 ui::EF_LEFT_MOUSE_BUTTON); | 2076 kLeftAndAltFlag, ui::EF_LEFT_MOUSE_BUTTON, |
| 2077 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 2077 ui::EventTestApi test_press(&press); | 2078 ui::EventTestApi test_press(&press); |
| 2078 test_press.set_source_device_id(10); | 2079 test_press.set_source_device_id(10); |
| 2079 // Sanity check. | 2080 // Sanity check. |
| 2080 EXPECT_EQ(ui::ET_MOUSE_PRESSED, press.type()); | 2081 EXPECT_EQ(ui::ET_MOUSE_PRESSED, press.type()); |
| 2081 EXPECT_EQ(kLeftAndAltFlag, press.flags()); | 2082 EXPECT_EQ(kLeftAndAltFlag, press.flags()); |
| 2082 std::unique_ptr<ui::Event> new_event; | 2083 std::unique_ptr<ui::Event> new_event; |
| 2083 const ui::MouseEvent* result = RewriteMouseButtonEvent(press, &new_event); | 2084 const ui::MouseEvent* result = RewriteMouseButtonEvent(press, &new_event); |
| 2084 EXPECT_TRUE(ui::EF_RIGHT_MOUSE_BUTTON & result->flags()); | 2085 EXPECT_TRUE(ui::EF_RIGHT_MOUSE_BUTTON & result->flags()); |
| 2085 EXPECT_FALSE(kLeftAndAltFlag & result->flags()); | 2086 EXPECT_FALSE(kLeftAndAltFlag & result->flags()); |
| 2086 EXPECT_EQ(ui::EF_RIGHT_MOUSE_BUTTON, result->changed_button_flags()); | 2087 EXPECT_EQ(ui::EF_RIGHT_MOUSE_BUTTON, result->changed_button_flags()); |
| 2087 } | 2088 } |
| 2088 { | 2089 { |
| 2089 ui::MouseEvent release(ui::ET_MOUSE_RELEASED, gfx::Point(), gfx::Point(), | 2090 ui::MouseEvent release( |
| 2090 ui::EventTimeForNow(), kLeftAndAltFlag, | 2091 ui::ET_MOUSE_RELEASED, gfx::Point(), gfx::Point(), |
| 2091 ui::EF_LEFT_MOUSE_BUTTON); | 2092 ui::EventTimeForNow(), kLeftAndAltFlag, ui::EF_LEFT_MOUSE_BUTTON, |
| 2093 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 2092 ui::EventTestApi test_release(&release); | 2094 ui::EventTestApi test_release(&release); |
| 2093 test_release.set_source_device_id(10); | 2095 test_release.set_source_device_id(10); |
| 2094 std::unique_ptr<ui::Event> new_event; | 2096 std::unique_ptr<ui::Event> new_event; |
| 2095 const ui::MouseEvent* result = RewriteMouseButtonEvent(release, &new_event); | 2097 const ui::MouseEvent* result = RewriteMouseButtonEvent(release, &new_event); |
| 2096 EXPECT_TRUE(ui::EF_RIGHT_MOUSE_BUTTON & result->flags()); | 2098 EXPECT_TRUE(ui::EF_RIGHT_MOUSE_BUTTON & result->flags()); |
| 2097 EXPECT_FALSE(kLeftAndAltFlag & result->flags()); | 2099 EXPECT_FALSE(kLeftAndAltFlag & result->flags()); |
| 2098 EXPECT_EQ(ui::EF_RIGHT_MOUSE_BUTTON, result->changed_button_flags()); | 2100 EXPECT_EQ(ui::EF_RIGHT_MOUSE_BUTTON, result->changed_button_flags()); |
| 2099 } | 2101 } |
| 2100 #if defined(USE_X11) | 2102 #if defined(USE_X11) |
| 2101 // Test Alt + Left click, using XI2 native events. | 2103 // Test Alt + Left click, using XI2 native events. |
| (...skipping 19 matching lines...) Expand all Loading... |
| 2121 std::unique_ptr<ui::Event> new_event; | 2123 std::unique_ptr<ui::Event> new_event; |
| 2122 const ui::MouseEvent* result = RewriteMouseButtonEvent(release, &new_event); | 2124 const ui::MouseEvent* result = RewriteMouseButtonEvent(release, &new_event); |
| 2123 EXPECT_TRUE(ui::EF_RIGHT_MOUSE_BUTTON & result->flags()); | 2125 EXPECT_TRUE(ui::EF_RIGHT_MOUSE_BUTTON & result->flags()); |
| 2124 EXPECT_FALSE(kLeftAndAltFlag & result->flags()); | 2126 EXPECT_FALSE(kLeftAndAltFlag & result->flags()); |
| 2125 EXPECT_EQ(ui::EF_RIGHT_MOUSE_BUTTON, result->changed_button_flags()); | 2127 EXPECT_EQ(ui::EF_RIGHT_MOUSE_BUTTON, result->changed_button_flags()); |
| 2126 } | 2128 } |
| 2127 #endif | 2129 #endif |
| 2128 | 2130 |
| 2129 // No ALT in frst click. | 2131 // No ALT in frst click. |
| 2130 { | 2132 { |
| 2131 ui::MouseEvent press(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), | 2133 ui::MouseEvent press( |
| 2132 ui::EventTimeForNow(), ui::EF_LEFT_MOUSE_BUTTON, | 2134 ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), ui::EventTimeForNow(), |
| 2133 ui::EF_LEFT_MOUSE_BUTTON); | 2135 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON, |
| 2136 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 2134 ui::EventTestApi test_press(&press); | 2137 ui::EventTestApi test_press(&press); |
| 2135 test_press.set_source_device_id(10); | 2138 test_press.set_source_device_id(10); |
| 2136 std::unique_ptr<ui::Event> new_event; | 2139 std::unique_ptr<ui::Event> new_event; |
| 2137 const ui::MouseEvent* result = RewriteMouseButtonEvent(press, &new_event); | 2140 const ui::MouseEvent* result = RewriteMouseButtonEvent(press, &new_event); |
| 2138 EXPECT_TRUE(ui::EF_LEFT_MOUSE_BUTTON & result->flags()); | 2141 EXPECT_TRUE(ui::EF_LEFT_MOUSE_BUTTON & result->flags()); |
| 2139 EXPECT_EQ(ui::EF_LEFT_MOUSE_BUTTON, result->changed_button_flags()); | 2142 EXPECT_EQ(ui::EF_LEFT_MOUSE_BUTTON, result->changed_button_flags()); |
| 2140 } | 2143 } |
| 2141 { | 2144 { |
| 2142 ui::MouseEvent release(ui::ET_MOUSE_RELEASED, gfx::Point(), gfx::Point(), | 2145 ui::MouseEvent release( |
| 2143 ui::EventTimeForNow(), kLeftAndAltFlag, | 2146 ui::ET_MOUSE_RELEASED, gfx::Point(), gfx::Point(), |
| 2144 ui::EF_LEFT_MOUSE_BUTTON); | 2147 ui::EventTimeForNow(), kLeftAndAltFlag, ui::EF_LEFT_MOUSE_BUTTON, |
| 2148 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 2145 ui::EventTestApi test_release(&release); | 2149 ui::EventTestApi test_release(&release); |
| 2146 test_release.set_source_device_id(10); | 2150 test_release.set_source_device_id(10); |
| 2147 std::unique_ptr<ui::Event> new_event; | 2151 std::unique_ptr<ui::Event> new_event; |
| 2148 const ui::MouseEvent* result = RewriteMouseButtonEvent(release, &new_event); | 2152 const ui::MouseEvent* result = RewriteMouseButtonEvent(release, &new_event); |
| 2149 EXPECT_TRUE((ui::EF_LEFT_MOUSE_BUTTON | ui::EF_ALT_DOWN) & result->flags()); | 2153 EXPECT_TRUE((ui::EF_LEFT_MOUSE_BUTTON | ui::EF_ALT_DOWN) & result->flags()); |
| 2150 EXPECT_EQ(ui::EF_LEFT_MOUSE_BUTTON, result->changed_button_flags()); | 2154 EXPECT_EQ(ui::EF_LEFT_MOUSE_BUTTON, result->changed_button_flags()); |
| 2151 } | 2155 } |
| 2152 #if defined(USE_X11) | 2156 #if defined(USE_X11) |
| 2153 // No ALT in frst click, using XI2 native events. | 2157 // No ALT in frst click, using XI2 native events. |
| 2154 { | 2158 { |
| (...skipping 13 matching lines...) Expand all Loading... |
| 2168 ui::MouseEvent release(xev); | 2172 ui::MouseEvent release(xev); |
| 2169 std::unique_ptr<ui::Event> new_event; | 2173 std::unique_ptr<ui::Event> new_event; |
| 2170 const ui::MouseEvent* result = RewriteMouseButtonEvent(release, &new_event); | 2174 const ui::MouseEvent* result = RewriteMouseButtonEvent(release, &new_event); |
| 2171 EXPECT_TRUE((ui::EF_LEFT_MOUSE_BUTTON | ui::EF_ALT_DOWN) & result->flags()); | 2175 EXPECT_TRUE((ui::EF_LEFT_MOUSE_BUTTON | ui::EF_ALT_DOWN) & result->flags()); |
| 2172 EXPECT_EQ(ui::EF_LEFT_MOUSE_BUTTON, result->changed_button_flags()); | 2176 EXPECT_EQ(ui::EF_LEFT_MOUSE_BUTTON, result->changed_button_flags()); |
| 2173 } | 2177 } |
| 2174 #endif | 2178 #endif |
| 2175 | 2179 |
| 2176 // ALT on different device. | 2180 // ALT on different device. |
| 2177 { | 2181 { |
| 2178 ui::MouseEvent press(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), | 2182 ui::MouseEvent press( |
| 2179 ui::EventTimeForNow(), kLeftAndAltFlag, | 2183 ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), ui::EventTimeForNow(), |
| 2180 ui::EF_LEFT_MOUSE_BUTTON); | 2184 kLeftAndAltFlag, ui::EF_LEFT_MOUSE_BUTTON, |
| 2185 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 2181 ui::EventTestApi test_press(&press); | 2186 ui::EventTestApi test_press(&press); |
| 2182 test_press.set_source_device_id(11); | 2187 test_press.set_source_device_id(11); |
| 2183 std::unique_ptr<ui::Event> new_event; | 2188 std::unique_ptr<ui::Event> new_event; |
| 2184 const ui::MouseEvent* result = RewriteMouseButtonEvent(press, &new_event); | 2189 const ui::MouseEvent* result = RewriteMouseButtonEvent(press, &new_event); |
| 2185 EXPECT_TRUE(ui::EF_RIGHT_MOUSE_BUTTON & result->flags()); | 2190 EXPECT_TRUE(ui::EF_RIGHT_MOUSE_BUTTON & result->flags()); |
| 2186 EXPECT_FALSE(kLeftAndAltFlag & result->flags()); | 2191 EXPECT_FALSE(kLeftAndAltFlag & result->flags()); |
| 2187 EXPECT_EQ(ui::EF_RIGHT_MOUSE_BUTTON, result->changed_button_flags()); | 2192 EXPECT_EQ(ui::EF_RIGHT_MOUSE_BUTTON, result->changed_button_flags()); |
| 2188 } | 2193 } |
| 2189 { | 2194 { |
| 2190 ui::MouseEvent release(ui::ET_MOUSE_RELEASED, gfx::Point(), gfx::Point(), | 2195 ui::MouseEvent release( |
| 2191 ui::EventTimeForNow(), kLeftAndAltFlag, | 2196 ui::ET_MOUSE_RELEASED, gfx::Point(), gfx::Point(), |
| 2192 ui::EF_LEFT_MOUSE_BUTTON); | 2197 ui::EventTimeForNow(), kLeftAndAltFlag, ui::EF_LEFT_MOUSE_BUTTON, |
| 2198 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 2193 ui::EventTestApi test_release(&release); | 2199 ui::EventTestApi test_release(&release); |
| 2194 test_release.set_source_device_id(10); | 2200 test_release.set_source_device_id(10); |
| 2195 std::unique_ptr<ui::Event> new_event; | 2201 std::unique_ptr<ui::Event> new_event; |
| 2196 const ui::MouseEvent* result = RewriteMouseButtonEvent(release, &new_event); | 2202 const ui::MouseEvent* result = RewriteMouseButtonEvent(release, &new_event); |
| 2197 EXPECT_TRUE((ui::EF_LEFT_MOUSE_BUTTON | ui::EF_ALT_DOWN) & result->flags()); | 2203 EXPECT_TRUE((ui::EF_LEFT_MOUSE_BUTTON | ui::EF_ALT_DOWN) & result->flags()); |
| 2198 EXPECT_EQ(ui::EF_LEFT_MOUSE_BUTTON, result->changed_button_flags()); | 2204 EXPECT_EQ(ui::EF_LEFT_MOUSE_BUTTON, result->changed_button_flags()); |
| 2199 } | 2205 } |
| 2200 { | 2206 { |
| 2201 ui::MouseEvent release(ui::ET_MOUSE_RELEASED, gfx::Point(), gfx::Point(), | 2207 ui::MouseEvent release( |
| 2202 ui::EventTimeForNow(), kLeftAndAltFlag, | 2208 ui::ET_MOUSE_RELEASED, gfx::Point(), gfx::Point(), |
| 2203 ui::EF_LEFT_MOUSE_BUTTON); | 2209 ui::EventTimeForNow(), kLeftAndAltFlag, ui::EF_LEFT_MOUSE_BUTTON, |
| 2210 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 2204 ui::EventTestApi test_release(&release); | 2211 ui::EventTestApi test_release(&release); |
| 2205 test_release.set_source_device_id(11); | 2212 test_release.set_source_device_id(11); |
| 2206 std::unique_ptr<ui::Event> new_event; | 2213 std::unique_ptr<ui::Event> new_event; |
| 2207 const ui::MouseEvent* result = RewriteMouseButtonEvent(release, &new_event); | 2214 const ui::MouseEvent* result = RewriteMouseButtonEvent(release, &new_event); |
| 2208 EXPECT_TRUE(ui::EF_RIGHT_MOUSE_BUTTON & result->flags()); | 2215 EXPECT_TRUE(ui::EF_RIGHT_MOUSE_BUTTON & result->flags()); |
| 2209 EXPECT_FALSE(kLeftAndAltFlag & result->flags()); | 2216 EXPECT_FALSE(kLeftAndAltFlag & result->flags()); |
| 2210 EXPECT_EQ(ui::EF_RIGHT_MOUSE_BUTTON, result->changed_button_flags()); | 2217 EXPECT_EQ(ui::EF_RIGHT_MOUSE_BUTTON, result->changed_button_flags()); |
| 2211 } | 2218 } |
| 2212 #if defined(USE_X11) | 2219 #if defined(USE_X11) |
| 2213 // ALT on different device, using XI2 native events. | 2220 // ALT on different device, using XI2 native events. |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2290 | 2297 |
| 2291 TEST_F(EventRewriterAshTest, MouseEventDispatchImpl) { | 2298 TEST_F(EventRewriterAshTest, MouseEventDispatchImpl) { |
| 2292 std::vector<std::unique_ptr<ui::Event>> events; | 2299 std::vector<std::unique_ptr<ui::Event>> events; |
| 2293 | 2300 |
| 2294 SendActivateStickyKeyPattern(ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, | 2301 SendActivateStickyKeyPattern(ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, |
| 2295 ui::DomKey::CONTROL); | 2302 ui::DomKey::CONTROL); |
| 2296 PopEvents(&events); | 2303 PopEvents(&events); |
| 2297 | 2304 |
| 2298 // Test mouse press event is correctly modified. | 2305 // Test mouse press event is correctly modified. |
| 2299 gfx::Point location(0, 0); | 2306 gfx::Point location(0, 0); |
| 2300 ui::MouseEvent press(ui::ET_MOUSE_PRESSED, location, location, | 2307 ui::MouseEvent press( |
| 2301 ui::EventTimeForNow(), ui::EF_LEFT_MOUSE_BUTTON, | 2308 ui::ET_MOUSE_PRESSED, location, location, ui::EventTimeForNow(), |
| 2302 ui::EF_LEFT_MOUSE_BUTTON); | 2309 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON, |
| 2310 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 2303 ui::EventDispatchDetails details = Send(&press); | 2311 ui::EventDispatchDetails details = Send(&press); |
| 2304 ASSERT_FALSE(details.dispatcher_destroyed); | 2312 ASSERT_FALSE(details.dispatcher_destroyed); |
| 2305 PopEvents(&events); | 2313 PopEvents(&events); |
| 2306 EXPECT_EQ(1u, events.size()); | 2314 EXPECT_EQ(1u, events.size()); |
| 2307 EXPECT_EQ(ui::ET_MOUSE_PRESSED, events[0]->type()); | 2315 EXPECT_EQ(ui::ET_MOUSE_PRESSED, events[0]->type()); |
| 2308 EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN); | 2316 EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN); |
| 2309 | 2317 |
| 2310 // Test mouse release event is correctly modified and modifier release | 2318 // Test mouse release event is correctly modified and modifier release |
| 2311 // event is sent. The mouse event should have the correct DIP location. | 2319 // event is sent. The mouse event should have the correct DIP location. |
| 2312 ui::MouseEvent release(ui::ET_MOUSE_RELEASED, location, location, | 2320 ui::MouseEvent release( |
| 2313 ui::EventTimeForNow(), ui::EF_LEFT_MOUSE_BUTTON, | 2321 ui::ET_MOUSE_RELEASED, location, location, ui::EventTimeForNow(), |
| 2314 ui::EF_LEFT_MOUSE_BUTTON); | 2322 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON, |
| 2323 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 2315 details = Send(&release); | 2324 details = Send(&release); |
| 2316 ASSERT_FALSE(details.dispatcher_destroyed); | 2325 ASSERT_FALSE(details.dispatcher_destroyed); |
| 2317 PopEvents(&events); | 2326 PopEvents(&events); |
| 2318 EXPECT_EQ(2u, events.size()); | 2327 EXPECT_EQ(2u, events.size()); |
| 2319 EXPECT_EQ(ui::ET_MOUSE_RELEASED, events[0]->type()); | 2328 EXPECT_EQ(ui::ET_MOUSE_RELEASED, events[0]->type()); |
| 2320 EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN); | 2329 EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN); |
| 2321 EXPECT_EQ(ui::ET_KEY_RELEASED, events[1]->type()); | 2330 EXPECT_EQ(ui::ET_KEY_RELEASED, events[1]->type()); |
| 2322 EXPECT_EQ(ui::VKEY_CONTROL, | 2331 EXPECT_EQ(ui::VKEY_CONTROL, |
| 2323 static_cast<ui::KeyEvent*>(events[1].get())->key_code()); | 2332 static_cast<ui::KeyEvent*>(events[1].get())->key_code()); |
| 2324 } | 2333 } |
| (...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2599 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN)); | 2608 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN)); |
| 2600 EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN)); | 2609 EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN)); |
| 2601 | 2610 |
| 2602 // Turn off AltGr and Mod3. | 2611 // Turn off AltGr and Mod3. |
| 2603 sticky_keys_controller_->SetModifiersEnabled(false, false); | 2612 sticky_keys_controller_->SetModifiersEnabled(false, false); |
| 2604 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN)); | 2613 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN)); |
| 2605 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN)); | 2614 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN)); |
| 2606 } | 2615 } |
| 2607 | 2616 |
| 2608 } // namespace chromeos | 2617 } // namespace chromeos |
| OLD | NEW |