diff options
author | Pyfisch <pyfisch@gmail.com> | 2018-10-06 17:35:45 +0200 |
---|---|---|
committer | Pyfisch <pyfisch@gmail.com> | 2018-10-07 22:39:00 +0200 |
commit | 0ccaa7e1a9e9bf9472d869576019b9cda350ad87 (patch) | |
tree | 812a25be7dcad507d183b25d683a9ebaec3d493c /components/script_traits/lib.rs | |
parent | 76ddbe4d7afd48b83b23f3fd0cff47b214a0a290 (diff) | |
download | servo-0ccaa7e1a9e9bf9472d869576019b9cda350ad87.tar.gz servo-0ccaa7e1a9e9bf9472d869576019b9cda350ad87.zip |
Use keyboard-types crate
Have embedders send DOM keys to servo and use a strongly typed KeyboardEvent
from the W3C UI Events spec. All keyboard handling now uses the new types.
Introduce a ShortcutMatcher to recognize key bindings. Shortcuts are now
recognized in a uniform way.
Updated the winit port.
Updated webdriver integration.
part of #20331
Diffstat (limited to 'components/script_traits/lib.rs')
-rw-r--r-- | components/script_traits/lib.rs | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/components/script_traits/lib.rs b/components/script_traits/lib.rs index 6c087690b5f..94b015fa543 100644 --- a/components/script_traits/lib.rs +++ b/components/script_traits/lib.rs @@ -19,6 +19,7 @@ extern crate gfx_traits; extern crate hyper; extern crate hyper_serde; extern crate ipc_channel; +extern crate keyboard_types; extern crate libc; #[macro_use] extern crate malloc_size_of; @@ -50,8 +51,9 @@ use hyper::header::Headers; use hyper::method::Method; use ipc_channel::{Error as IpcError}; use ipc_channel::ipc::{IpcReceiver, IpcSender}; +use keyboard_types::KeyboardEvent; use libc::c_void; -use msg::constellation_msg::{BrowsingContextId, HistoryStateId, Key, KeyModifiers, KeyState, PipelineId}; +use msg::constellation_msg::{BrowsingContextId, HistoryStateId, PipelineId}; use msg::constellation_msg::{PipelineNamespaceId, TraversalDirection, TopLevelBrowsingContextId}; use net_traits::{FetchResponseMsg, ReferrerPolicy, ResourceThreads}; use net_traits::image::base::Image; @@ -477,7 +479,7 @@ pub enum CompositorEvent { Option<UntrustedNodeAddress>, ), /// A key was pressed. - KeyEvent(Option<char>, Key, KeyState, KeyModifiers), + KeyboardEvent(KeyboardEvent), } /// Requests a TimerEvent-Message be sent after the given duration. @@ -706,7 +708,7 @@ pub enum WebDriverCommandMsg { /// of a browsing context. ScriptCommand(BrowsingContextId, WebDriverScriptCommand), /// Act as if keys were pressed in the browsing context with the given ID. - SendKeys(BrowsingContextId, Vec<(Key, KeyModifiers, KeyState)>), + SendKeys(BrowsingContextId, Vec<KeyboardEvent>), /// Set the window size. SetWindowSize( TopLevelBrowsingContextId, @@ -734,7 +736,7 @@ pub enum ConstellationMsg { /// Query the constellation to see if the current compositor output is stable IsReadyToSaveImage(HashMap<PipelineId, Epoch>), /// Inform the constellation of a key event. - KeyEvent(Option<char>, Key, KeyState, KeyModifiers), + Keyboard(KeyboardEvent), /// Request to load a page. LoadUrl(TopLevelBrowsingContextId, ServoUrl), /// Request to traverse the joint session history of the provided browsing context. @@ -778,7 +780,7 @@ impl fmt::Debug for ConstellationMsg { GetPipeline(..) => "GetPipeline", GetFocusTopLevelBrowsingContext(..) => "GetFocusTopLevelBrowsingContext", IsReadyToSaveImage(..) => "IsReadyToSaveImage", - KeyEvent(..) => "KeyEvent", + Keyboard(..) => "Keyboard", LoadUrl(..) => "LoadUrl", TraverseHistory(..) => "TraverseHistory", WindowSize(..) => "WindowSize", |