OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "KeyboardEventManager.h" | 5 #include "KeyboardEventManager.h" |
6 | 6 |
7 #include "core/dom/Element.h" | 7 #include "core/dom/Element.h" |
8 #include "core/editing/Editor.h" | 8 #include "core/editing/Editor.h" |
9 #include "core/events/KeyboardEvent.h" | 9 #include "core/events/KeyboardEvent.h" |
10 #include "core/html/HTMLDialogElement.h" | 10 #include "core/html/HTMLDialogElement.h" |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 retVal = WebFocusTypeRight; | 49 retVal = WebFocusTypeRight; |
50 return retVal; | 50 return retVal; |
51 } | 51 } |
52 | 52 |
53 } // namespace | 53 } // namespace |
54 | 54 |
55 KeyboardEventManager::KeyboardEventManager(LocalFrame* frame, | 55 KeyboardEventManager::KeyboardEventManager(LocalFrame* frame, |
56 ScrollManager* scrollManager) | 56 ScrollManager* scrollManager) |
57 : m_frame(frame), m_scrollManager(scrollManager) {} | 57 : m_frame(frame), m_scrollManager(scrollManager) {} |
58 | 58 |
| 59 DEFINE_TRACE(KeyboardEventManager) { |
| 60 visitor->trace(m_frame); |
| 61 visitor->trace(m_scrollManager); |
| 62 } |
| 63 |
59 bool KeyboardEventManager::handleAccessKey(const WebKeyboardEvent& evt) { | 64 bool KeyboardEventManager::handleAccessKey(const WebKeyboardEvent& evt) { |
60 // FIXME: Ignoring the state of Shift key is what neither IE nor Firefox do. | 65 // FIXME: Ignoring the state of Shift key is what neither IE nor Firefox do. |
61 // IE matches lower and upper case access keys regardless of Shift key state -
but if both upper and | 66 // IE matches lower and upper case access keys regardless of Shift key state -
but if both upper and |
62 // lower case variants are present in a document, the correct element is match
ed based on Shift key state. | 67 // lower case variants are present in a document, the correct element is match
ed based on Shift key state. |
63 // Firefox only matches an access key if Shift is not pressed, and does that c
ase-insensitively. | 68 // Firefox only matches an access key if Shift is not pressed, and does that c
ase-insensitively. |
64 DCHECK(!(kAccessKeyModifiers & WebInputEvent::ShiftKey)); | 69 DCHECK(!(kAccessKeyModifiers & WebInputEvent::ShiftKey)); |
65 if ((evt.modifiers & (WebKeyboardEvent::KeyModifiers & | 70 if ((evt.modifiers & (WebKeyboardEvent::KeyModifiers & |
66 ~WebInputEvent::ShiftKey)) != kAccessKeyModifiers) | 71 ~WebInputEvent::ShiftKey)) != kAccessKeyModifiers) |
67 return false; | 72 return false; |
68 String key = String(evt.unmodifiedText); | 73 String key = String(evt.unmodifiedText); |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 focusType, | 308 focusType, |
304 InputDeviceCapabilities::doesntFireTouchEventsSourceCapabilities())) | 309 InputDeviceCapabilities::doesntFireTouchEventsSourceCapabilities())) |
305 event->setDefaultHandled(); | 310 event->setDefaultHandled(); |
306 } | 311 } |
307 | 312 |
308 void KeyboardEventManager::defaultEscapeEventHandler(KeyboardEvent* event) { | 313 void KeyboardEventManager::defaultEscapeEventHandler(KeyboardEvent* event) { |
309 if (HTMLDialogElement* dialog = m_frame->document()->activeModalDialog()) | 314 if (HTMLDialogElement* dialog = m_frame->document()->activeModalDialog()) |
310 dialog->dispatchEvent(Event::createCancelable(EventTypeNames::cancel)); | 315 dialog->dispatchEvent(Event::createCancelable(EventTypeNames::cancel)); |
311 } | 316 } |
312 | 317 |
313 DEFINE_TRACE(KeyboardEventManager) { | |
314 visitor->trace(m_frame); | |
315 visitor->trace(m_scrollManager); | |
316 } | |
317 | |
318 static OverrideCapsLockState s_overrideCapsLockState; | 318 static OverrideCapsLockState s_overrideCapsLockState; |
319 | 319 |
320 void KeyboardEventManager::setCurrentCapsLockState( | 320 void KeyboardEventManager::setCurrentCapsLockState( |
321 OverrideCapsLockState state) { | 321 OverrideCapsLockState state) { |
322 s_overrideCapsLockState = state; | 322 s_overrideCapsLockState = state; |
323 } | 323 } |
324 | 324 |
325 bool KeyboardEventManager::currentCapsLockState() { | 325 bool KeyboardEventManager::currentCapsLockState() { |
326 switch (s_overrideCapsLockState) { | 326 switch (s_overrideCapsLockState) { |
327 case OverrideCapsLockState::Default: | 327 case OverrideCapsLockState::Default: |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
362 if (currentModifiers & ::cmdKey) | 362 if (currentModifiers & ::cmdKey) |
363 modifiers |= WebInputEvent::MetaKey; | 363 modifiers |= WebInputEvent::MetaKey; |
364 #else | 364 #else |
365 // TODO(crbug.com/538289): Implement on other platforms. | 365 // TODO(crbug.com/538289): Implement on other platforms. |
366 return static_cast<WebInputEvent::Modifiers>(0); | 366 return static_cast<WebInputEvent::Modifiers>(0); |
367 #endif | 367 #endif |
368 return static_cast<WebInputEvent::Modifiers>(modifiers); | 368 return static_cast<WebInputEvent::Modifiers>(modifiers); |
369 } | 369 } |
370 | 370 |
371 } // namespace blink | 371 } // namespace blink |
OLD | NEW |