mirror of
https://github.com/servo/servo.git
synced 2025-07-23 15:23:42 +01:00
Make WebIDL static methods take a more specific global if possible
This commit is contained in:
parent
973f77c006
commit
ddfb8805dc
3 changed files with 12 additions and 11 deletions
|
@ -3378,12 +3378,13 @@ class CGAbstractStaticBindingMethod(CGAbstractMethod):
|
||||||
Argument('*mut JSVal', 'vp'),
|
Argument('*mut JSVal', 'vp'),
|
||||||
]
|
]
|
||||||
CGAbstractMethod.__init__(self, descriptor, name, "bool", args, extern=True)
|
CGAbstractMethod.__init__(self, descriptor, name, "bool", args, extern=True)
|
||||||
|
self.exposureSet = descriptor.interface.exposureSet
|
||||||
|
|
||||||
def definition_body(self):
|
def definition_body(self):
|
||||||
preamble = CGGeneric("""\
|
preamble = "let global = GlobalScope::from_object(JS_CALLEE(cx, vp).to_object());\n"
|
||||||
let global = GlobalScope::from_object(JS_CALLEE(cx, vp).to_object());
|
if len(self.exposureSet) == 1:
|
||||||
""")
|
preamble += "let global = Root::downcast::<dom::types::%s>(global).unwrap();\n" % list(self.exposureSet)[0]
|
||||||
return CGList([preamble, self.generate_code()])
|
return CGList([CGGeneric(preamble), self.generate_code()])
|
||||||
|
|
||||||
def generate_code(self):
|
def generate_code(self):
|
||||||
raise NotImplementedError # Override me!
|
raise NotImplementedError # Override me!
|
||||||
|
|
|
@ -7,7 +7,7 @@ use dom::bindings::error::Error::Syntax;
|
||||||
use dom::bindings::error::Fallible;
|
use dom::bindings::error::Fallible;
|
||||||
use dom::bindings::reflector::Reflector;
|
use dom::bindings::reflector::Reflector;
|
||||||
use dom::bindings::str::DOMString;
|
use dom::bindings::str::DOMString;
|
||||||
use dom::globalscope::GlobalScope;
|
use dom::window::Window;
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
|
|
||||||
pub type UUID = DOMString;
|
pub type UUID = DOMString;
|
||||||
|
@ -271,22 +271,22 @@ const VALID_UUID_REGEX: &'static str = "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-
|
||||||
|
|
||||||
impl BluetoothUUID {
|
impl BluetoothUUID {
|
||||||
// https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothuuid-canonicaluuid
|
// https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothuuid-canonicaluuid
|
||||||
pub fn CanonicalUUID(_: &GlobalScope, alias: u32) -> UUID {
|
pub fn CanonicalUUID(_: &Window, alias: u32) -> UUID {
|
||||||
canonical_uuid(alias)
|
canonical_uuid(alias)
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothuuid-getservice
|
// https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothuuid-getservice
|
||||||
pub fn GetService(_: &GlobalScope, name: BluetoothServiceUUID) -> Fallible<UUID> {
|
pub fn GetService(_: &Window, name: BluetoothServiceUUID) -> Fallible<UUID> {
|
||||||
Self::service(name)
|
Self::service(name)
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothuuid-getcharacteristic
|
// https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothuuid-getcharacteristic
|
||||||
pub fn GetCharacteristic(_: &GlobalScope, name: BluetoothCharacteristicUUID) -> Fallible<UUID> {
|
pub fn GetCharacteristic(_: &Window, name: BluetoothCharacteristicUUID) -> Fallible<UUID> {
|
||||||
Self::characteristic(name)
|
Self::characteristic(name)
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothuuid-getdescriptor
|
// https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothuuid-getdescriptor
|
||||||
pub fn GetDescriptor(_: &GlobalScope, name: BluetoothDescriptorUUID) -> Fallible<UUID> {
|
pub fn GetDescriptor(_: &Window, name: BluetoothDescriptorUUID) -> Fallible<UUID> {
|
||||||
Self::descriptor(name)
|
Self::descriptor(name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ use cssparser::serialize_identifier;
|
||||||
use dom::bindings::error::Fallible;
|
use dom::bindings::error::Fallible;
|
||||||
use dom::bindings::reflector::Reflector;
|
use dom::bindings::reflector::Reflector;
|
||||||
use dom::bindings::str::DOMString;
|
use dom::bindings::str::DOMString;
|
||||||
use dom::globalscope::GlobalScope;
|
use dom::window::Window;
|
||||||
|
|
||||||
#[dom_struct]
|
#[dom_struct]
|
||||||
pub struct CSS {
|
pub struct CSS {
|
||||||
|
@ -15,7 +15,7 @@ pub struct CSS {
|
||||||
|
|
||||||
impl CSS {
|
impl CSS {
|
||||||
// http://dev.w3.org/csswg/cssom/#serialize-an-identifier
|
// http://dev.w3.org/csswg/cssom/#serialize-an-identifier
|
||||||
pub fn Escape(_: &GlobalScope, ident: DOMString) -> Fallible<DOMString> {
|
pub fn Escape(_: &Window, ident: DOMString) -> Fallible<DOMString> {
|
||||||
let mut escaped = String::new();
|
let mut escaped = String::new();
|
||||||
serialize_identifier(&ident, &mut escaped).unwrap();
|
serialize_identifier(&ident, &mut escaped).unwrap();
|
||||||
Ok(DOMString::from(escaped))
|
Ok(DOMString::from(escaped))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue