diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2015-10-06 02:59:38 +0200 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2015-10-21 10:59:36 +0200 |
commit | c77d3b965f6099ffcb2eddc359948f106afca7b5 (patch) | |
tree | 1f421208c1a17bc21c3c3b06c45dfb64650dae6e /components/script/dom/bindings/utils.rs | |
parent | 7fb3c51bbbbc708b1472cb79751349adff8b9501 (diff) | |
download | servo-c77d3b965f6099ffcb2eddc359948f106afca7b5.tar.gz servo-c77d3b965f6099ffcb2eddc359948f106afca7b5.zip |
Introduce IDLInterface::derives()
This method is given a DOMClass value and returns whether it derives from Self.
Interfaces with no descendants directly check whether the given DOMClass is the
same as their own.
Diffstat (limited to 'components/script/dom/bindings/utils.rs')
-rw-r--r-- | components/script/dom/bindings/utils.rs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/components/script/dom/bindings/utils.rs b/components/script/dom/bindings/utils.rs index af028ebfcbc..4b4e6cfea93 100644 --- a/components/script/dom/bindings/utils.rs +++ b/components/script/dom/bindings/utils.rs @@ -8,7 +8,7 @@ use dom::bindings::codegen::InheritTypes::TopTypeId; use dom::bindings::codegen::PrototypeList; use dom::bindings::codegen::PrototypeList::MAX_PROTO_CHAIN_LENGTH; use dom::bindings::conversions::native_from_handleobject; -use dom::bindings::conversions::private_from_proto_chain; +use dom::bindings::conversions::private_from_proto_check; use dom::bindings::conversions::{is_dom_class, jsstring_to_str}; use dom::bindings::error::throw_type_error; use dom::bindings::error::{Error, ErrorResult, Fallible, throw_invalid_this}; @@ -755,7 +755,10 @@ unsafe fn generic_call(cx: *mut JSContext, argc: libc::c_uint, vp: *mut JSVal, let info = RUST_FUNCTION_VALUE_TO_JITINFO(JS_CALLEE(cx, vp)); let proto_id = (*info).protoID; let depth = (*info).depth; - let this = match private_from_proto_chain(obj.ptr, proto_id, depth) { + let proto_check = |class: &'static DOMClass| { + class.interface_chain[depth as usize] as u16 == proto_id + }; + let this = match private_from_proto_check(obj.ptr, proto_check) { Ok(val) => val, Err(()) => { if is_lenient { |