mirror of
https://github.com/servo/servo.git
synced 2025-07-24 15:50:21 +01:00
Add KeyboardEvent stub.
This commit is contained in:
parent
1c64dabb15
commit
bb7074698a
9 changed files with 122 additions and 24 deletions
|
@ -4280,7 +4280,7 @@ class CGDictionary(CGThing):
|
||||||
d = self.dictionary
|
d = self.dictionary
|
||||||
if d.parent:
|
if d.parent:
|
||||||
inheritance = " pub parent: %s::%s<'a, 'b>,\n" % (self.makeModuleName(d.parent),
|
inheritance = " pub parent: %s::%s<'a, 'b>,\n" % (self.makeModuleName(d.parent),
|
||||||
self.makeClassName(d.parent))
|
self.makeClassName(d.parent))
|
||||||
else:
|
else:
|
||||||
inheritance = ""
|
inheritance = ""
|
||||||
memberDecls = [" pub %s: %s," %
|
memberDecls = [" pub %s: %s," %
|
||||||
|
@ -4347,12 +4347,7 @@ class CGDictionary(CGThing):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def makeModuleName(dictionary):
|
def makeModuleName(dictionary):
|
||||||
name = dictionary.identifier.name
|
return dictionary.module()
|
||||||
if name.endswith('Init'):
|
|
||||||
return toBindingNamespace(name.replace('Init', ''))
|
|
||||||
#XXXjdm This breaks on the test webidl files, sigh.
|
|
||||||
#raise TypeError("No idea how to find this dictionary's definition: " + name)
|
|
||||||
return "/* uh oh */ %s" % name
|
|
||||||
|
|
||||||
def getMemberType(self, memberInfo):
|
def getMemberType(self, memberInfo):
|
||||||
member, (_, _, declType, _) = memberInfo
|
member, (_, _, declType, _) = memberInfo
|
||||||
|
@ -4535,7 +4530,7 @@ class CGBindingRoot(CGThing):
|
||||||
'dom::bindings::utils::{DOMJSClass, JSCLASS_DOM_GLOBAL}',
|
'dom::bindings::utils::{DOMJSClass, JSCLASS_DOM_GLOBAL}',
|
||||||
'dom::bindings::utils::{FindEnumStringIndex, GetArrayIndexFromId}',
|
'dom::bindings::utils::{FindEnumStringIndex, GetArrayIndexFromId}',
|
||||||
'dom::bindings::utils::{GetPropertyOnPrototype, GetProtoOrIfaceArray}',
|
'dom::bindings::utils::{GetPropertyOnPrototype, GetProtoOrIfaceArray}',
|
||||||
'dom::bindings::utils::{HasPropertyOnPrototype, IntVal}',
|
'dom::bindings::utils::{HasPropertyOnPrototype, IntVal, UintVal}',
|
||||||
'dom::bindings::utils::{Reflectable}',
|
'dom::bindings::utils::{Reflectable}',
|
||||||
'dom::bindings::utils::{squirrel_away_unique}',
|
'dom::bindings::utils::{squirrel_away_unique}',
|
||||||
'dom::bindings::utils::{ThrowingConstructor, unwrap, unwrap_jsmanaged}',
|
'dom::bindings::utils::{ThrowingConstructor, unwrap, unwrap_jsmanaged}',
|
||||||
|
@ -5430,7 +5425,8 @@ class GlobalGenRoots():
|
||||||
def Bindings(config):
|
def Bindings(config):
|
||||||
|
|
||||||
descriptors = (set(d.name + "Binding" for d in config.getDescriptors(register=True)) |
|
descriptors = (set(d.name + "Binding" for d in config.getDescriptors(register=True)) |
|
||||||
set(d.unroll().module() for d in config.callbacks))
|
set(d.unroll().module() for d in config.callbacks) |
|
||||||
|
set(d.module() for d in config.getDictionaries()))
|
||||||
curr = CGList([CGGeneric("pub mod %s;\n" % name) for name in sorted(descriptors)])
|
curr = CGList([CGGeneric("pub mod %s;\n" % name) for name in sorted(descriptors)])
|
||||||
curr = CGWrapper(curr, pre=AUTOGENERATED_WARNING_COMMENT)
|
curr = CGWrapper(curr, pre=AUTOGENERATED_WARNING_COMMENT)
|
||||||
return curr
|
return curr
|
||||||
|
|
|
@ -1422,6 +1422,9 @@ class IDLDictionary(IDLObjectWithScope):
|
||||||
self.identifier.name,
|
self.identifier.name,
|
||||||
[member.location] + locations)
|
[member.location] + locations)
|
||||||
|
|
||||||
|
def module(self):
|
||||||
|
return self.location.filename().split('/')[-1].split('.webidl')[0] + 'Binding'
|
||||||
|
|
||||||
def addExtendedAttributes(self, attrs):
|
def addExtendedAttributes(self, attrs):
|
||||||
assert len(attrs) == 0
|
assert len(attrs) == 0
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ pub enum EventPhase {
|
||||||
pub enum EventTypeId {
|
pub enum EventTypeId {
|
||||||
CustomEventTypeId,
|
CustomEventTypeId,
|
||||||
HTMLEventTypeId,
|
HTMLEventTypeId,
|
||||||
KeyEventTypeId,
|
KeyboardEventTypeId,
|
||||||
MessageEventTypeId,
|
MessageEventTypeId,
|
||||||
MouseEventTypeId,
|
MouseEventTypeId,
|
||||||
ProgressEventTypeId,
|
ProgressEventTypeId,
|
||||||
|
|
43
components/script/dom/keyboardevent.rs
Normal file
43
components/script/dom/keyboardevent.rs
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
use dom::bindings::codegen::Bindings::KeyboardEventBinding;
|
||||||
|
use dom::bindings::codegen::Bindings::KeyboardEventBinding::KeyboardEventMethods;
|
||||||
|
use dom::bindings::codegen::InheritTypes::KeyboardEventDerived;
|
||||||
|
use dom::bindings::error::Fallible;
|
||||||
|
use dom::bindings::global::GlobalRef;
|
||||||
|
use dom::bindings::js::{JSRef, Temporary};
|
||||||
|
use dom::bindings::utils::{Reflectable, Reflector/*, reflect_dom_object*/};
|
||||||
|
use dom::event::{Event, KeyboardEventTypeId};
|
||||||
|
use dom::uievent::UIEvent;
|
||||||
|
use servo_util::str::DOMString;
|
||||||
|
|
||||||
|
#[jstraceable]
|
||||||
|
#[must_root]
|
||||||
|
pub struct KeyboardEvent {
|
||||||
|
uievent: UIEvent,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl KeyboardEventDerived for Event {
|
||||||
|
fn is_keyboardevent(&self) -> bool {
|
||||||
|
*self.type_id() == KeyboardEventTypeId
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl KeyboardEvent {
|
||||||
|
pub fn Constructor(_global: &GlobalRef,
|
||||||
|
_type_: DOMString,
|
||||||
|
_init: &KeyboardEventBinding::KeyboardEventInit) -> Fallible<Temporary<KeyboardEvent>> {
|
||||||
|
fail!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> KeyboardEventMethods for JSRef<'a, KeyboardEvent> {
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Reflectable for KeyboardEvent {
|
||||||
|
fn reflector<'a>(&'a self) -> &'a Reflector {
|
||||||
|
self.uievent.reflector()
|
||||||
|
}
|
||||||
|
}
|
|
@ -21,7 +21,7 @@ use std::default::Default;
|
||||||
|
|
||||||
#[dom_struct]
|
#[dom_struct]
|
||||||
pub struct MouseEvent {
|
pub struct MouseEvent {
|
||||||
mouseevent: UIEvent,
|
uievent: UIEvent,
|
||||||
screen_x: Cell<i32>,
|
screen_x: Cell<i32>,
|
||||||
screen_y: Cell<i32>,
|
screen_y: Cell<i32>,
|
||||||
client_x: Cell<i32>,
|
client_x: Cell<i32>,
|
||||||
|
@ -43,7 +43,7 @@ impl MouseEventDerived for Event {
|
||||||
impl MouseEvent {
|
impl MouseEvent {
|
||||||
fn new_inherited() -> MouseEvent {
|
fn new_inherited() -> MouseEvent {
|
||||||
MouseEvent {
|
MouseEvent {
|
||||||
mouseevent: UIEvent::new_inherited(MouseEventTypeId),
|
uievent: UIEvent::new_inherited(MouseEventTypeId),
|
||||||
screen_x: Cell::new(0),
|
screen_x: Cell::new(0),
|
||||||
screen_y: Cell::new(0),
|
screen_y: Cell::new(0),
|
||||||
client_x: Cell::new(0),
|
client_x: Cell::new(0),
|
||||||
|
@ -91,13 +91,13 @@ impl MouseEvent {
|
||||||
type_: DOMString,
|
type_: DOMString,
|
||||||
init: &MouseEventBinding::MouseEventInit) -> Fallible<Temporary<MouseEvent>> {
|
init: &MouseEventBinding::MouseEventInit) -> Fallible<Temporary<MouseEvent>> {
|
||||||
let event = MouseEvent::new(global.as_window(), type_,
|
let event = MouseEvent::new(global.as_window(), type_,
|
||||||
init.parent.parent.bubbles,
|
init.parent.parent.parent.bubbles,
|
||||||
init.parent.parent.cancelable,
|
init.parent.parent.parent.cancelable,
|
||||||
init.parent.view.root_ref(),
|
init.parent.parent.view.root_ref(),
|
||||||
init.parent.detail,
|
init.parent.parent.detail,
|
||||||
init.screenX, init.screenY,
|
init.screenX, init.screenY,
|
||||||
init.clientX, init.clientY, init.ctrlKey,
|
init.clientX, init.clientY, init.parent.ctrlKey,
|
||||||
init.altKey, init.shiftKey, init.metaKey,
|
init.parent.altKey, init.parent.shiftKey, init.parent.metaKey,
|
||||||
init.button, init.relatedTarget.root_ref());
|
init.button, init.relatedTarget.root_ref());
|
||||||
Ok(event)
|
Ok(event)
|
||||||
}
|
}
|
||||||
|
@ -178,6 +178,6 @@ impl<'a> MouseEventMethods for JSRef<'a, MouseEvent> {
|
||||||
|
|
||||||
impl Reflectable for MouseEvent {
|
impl Reflectable for MouseEvent {
|
||||||
fn reflector<'a>(&'a self) -> &'a Reflector {
|
fn reflector<'a>(&'a self) -> &'a Reflector {
|
||||||
self.mouseevent.reflector()
|
self.uievent.reflector()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
36
components/script/dom/webidls/KeyboardEvent.webidl
Normal file
36
components/script/dom/webidls/KeyboardEvent.webidl
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||||
|
* You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
*
|
||||||
|
* The origin of this IDL file is
|
||||||
|
* https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3-Events.html#interface-KeyboardEvent
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
[Constructor(DOMString typeArg, optional KeyboardEventInit keyboardEventInitDict)]
|
||||||
|
interface KeyboardEvent : UIEvent {
|
||||||
|
// KeyLocationCode
|
||||||
|
const unsigned long DOM_KEY_LOCATION_STANDARD = 0x00;
|
||||||
|
const unsigned long DOM_KEY_LOCATION_LEFT = 0x01;
|
||||||
|
const unsigned long DOM_KEY_LOCATION_RIGHT = 0x02;
|
||||||
|
const unsigned long DOM_KEY_LOCATION_NUMPAD = 0x03;
|
||||||
|
//readonly attribute DOMString key;
|
||||||
|
//readonly attribute DOMString code;
|
||||||
|
//readonly attribute unsigned long location;
|
||||||
|
//readonly attribute boolean ctrlKey;
|
||||||
|
//readonly attribute boolean shiftKey;
|
||||||
|
//readonly attribute boolean altKey;
|
||||||
|
//readonly attribute boolean metaKey;
|
||||||
|
//readonly attribute boolean repeat;
|
||||||
|
//readonly attribute boolean isComposing;
|
||||||
|
//boolean getModifierState (DOMString keyArg);
|
||||||
|
};
|
||||||
|
|
||||||
|
dictionary KeyboardEventInit : SharedKeyboardAndMouseEventInit {
|
||||||
|
DOMString key = "";
|
||||||
|
DOMString code = "";
|
||||||
|
unsigned long location = 0;
|
||||||
|
boolean repeat = false;
|
||||||
|
boolean isComposing = false;
|
||||||
|
};
|
|
@ -22,15 +22,11 @@ interface MouseEvent : UIEvent {
|
||||||
};
|
};
|
||||||
|
|
||||||
// https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3-Events.html#idl-def-MouseEventInit
|
// https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3-Events.html#idl-def-MouseEventInit
|
||||||
dictionary MouseEventInit : UIEventInit {
|
dictionary MouseEventInit : SharedKeyboardAndMouseEventInit {
|
||||||
long screenX = 0;
|
long screenX = 0;
|
||||||
long screenY = 0;
|
long screenY = 0;
|
||||||
long clientX = 0;
|
long clientX = 0;
|
||||||
long clientY = 0;
|
long clientY = 0;
|
||||||
boolean ctrlKey = false;
|
|
||||||
boolean shiftKey = false;
|
|
||||||
boolean altKey = false;
|
|
||||||
boolean metaKey = false;
|
|
||||||
short button = 0;
|
short button = 0;
|
||||||
//unsigned short buttons = 0;
|
//unsigned short buttons = 0;
|
||||||
EventTarget? relatedTarget = null;
|
EventTarget? relatedTarget = null;
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
// https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3-Events.html#idl-def-SharedKeyboardAndMouseEventInit
|
||||||
|
dictionary SharedKeyboardAndMouseEventInit : UIEventInit {
|
||||||
|
boolean ctrlKey = false;
|
||||||
|
boolean shiftKey = false;
|
||||||
|
boolean altKey = false;
|
||||||
|
boolean metaKey = false;
|
||||||
|
boolean keyModifierStateAltGraph = false;
|
||||||
|
boolean keyModifierStateCapsLock = false;
|
||||||
|
boolean keyModifierStateFn = false;
|
||||||
|
boolean keyModifierStateFnLock = false;
|
||||||
|
boolean keyModifierStateHyper = false;
|
||||||
|
boolean keyModifierStateNumLock = false;
|
||||||
|
boolean keyModifierStateOS = false;
|
||||||
|
boolean keyModifierStateScrollLock = false;
|
||||||
|
boolean keyModifierStateSuper = false;
|
||||||
|
boolean keyModifierStateSymbol = false;
|
||||||
|
boolean keyModifierStateSymbolLock = false;
|
||||||
|
};
|
|
@ -178,6 +178,7 @@ pub mod dom {
|
||||||
pub mod htmlulistelement;
|
pub mod htmlulistelement;
|
||||||
pub mod htmlvideoelement;
|
pub mod htmlvideoelement;
|
||||||
pub mod htmlunknownelement;
|
pub mod htmlunknownelement;
|
||||||
|
pub mod keyboardevent;
|
||||||
pub mod location;
|
pub mod location;
|
||||||
pub mod messageevent;
|
pub mod messageevent;
|
||||||
pub mod mouseevent;
|
pub mod mouseevent;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue