auto merge of #4773 : Ms2ger/servo/snake-bindings, r=jdm

This commit is contained in:
bors-servo 2015-01-30 07:00:50 -07:00
commit 648b4991b9
4 changed files with 18 additions and 15 deletions

View file

@ -95,7 +95,8 @@ impl CallbackInterface {
/// Returns the property with the given `name`, if it is a callable object, /// Returns the property with the given `name`, if it is a callable object,
/// or `Err(())` otherwise. If it returns `Err(())`, a JSAPI exception is /// or `Err(())` otherwise. If it returns `Err(())`, a JSAPI exception is
/// pending. /// pending.
pub fn GetCallableProperty(&self, cx: *mut JSContext, name: &str) -> Result<JSVal, ()> { pub fn get_callable_property(&self, cx: *mut JSContext, name: &str)
-> Result<JSVal, ()> {
let mut callable = UndefinedValue(); let mut callable = UndefinedValue();
unsafe { unsafe {
let name = CString::from_slice(name.as_bytes()); let name = CString::from_slice(name.as_bytes());
@ -115,8 +116,8 @@ impl CallbackInterface {
} }
/// Wraps the reflector for `p` into the compartment of `cx`. /// Wraps the reflector for `p` into the compartment of `cx`.
pub fn WrapCallThisObject<T: Reflectable>(cx: *mut JSContext, pub fn wrap_call_this_object<T: Reflectable>(cx: *mut JSContext,
p: JSRef<T>) -> *mut JSObject { p: JSRef<T>) -> *mut JSObject {
let mut obj = p.reflector().get_jsobject(); let mut obj = p.reflector().get_jsobject();
assert!(!obj.is_null()); assert!(!obj.is_null());
@ -153,7 +154,7 @@ impl CallSetup {
} }
/// Returns the `JSContext` used for the call. /// Returns the `JSContext` used for the call.
pub fn GetContext(&self) -> *mut JSContext { pub fn get_context(&self) -> *mut JSContext {
self.cx self.cx
} }
} }

View file

@ -4566,7 +4566,7 @@ class CGBindingRoot(CGThing):
'dom::bindings::trace::JSTraceable', 'dom::bindings::trace::JSTraceable',
'dom::bindings::callback::{CallbackContainer,CallbackInterface,CallbackFunction}', 'dom::bindings::callback::{CallbackContainer,CallbackInterface,CallbackFunction}',
'dom::bindings::callback::{CallSetup,ExceptionHandling}', 'dom::bindings::callback::{CallSetup,ExceptionHandling}',
'dom::bindings::callback::{WrapCallThisObject}', 'dom::bindings::callback::wrap_call_this_object',
'dom::bindings::conversions::{FromJSValConvertible, ToJSValConvertible}', 'dom::bindings::conversions::{FromJSValConvertible, ToJSValConvertible}',
'dom::bindings::conversions::{unwrap, unwrap_jsmanaged}', 'dom::bindings::conversions::{unwrap, unwrap_jsmanaged}',
'dom::bindings::conversions::DOM_OBJECT_SLOT', 'dom::bindings::conversions::DOM_OBJECT_SLOT',
@ -4721,8 +4721,8 @@ class CGCallback(CGClass):
# Record the names of all the arguments, so we can use them when we call # Record the names of all the arguments, so we can use them when we call
# the private method. # the private method.
argnames = [arg.name for arg in args] argnames = [arg.name for arg in args]
argnamesWithThis = ["s.GetContext()", "thisObjJS"] + argnames argnamesWithThis = ["s.get_context()", "thisObjJS"] + argnames
argnamesWithoutThis = ["s.GetContext()", "ptr::null_mut()"] + argnames argnamesWithoutThis = ["s.get_context()", "ptr::null_mut()"] + argnames
# Now that we've recorded the argnames for our call to our private # Now that we've recorded the argnames for our call to our private
# method, insert our optional argument for deciding whether the # method, insert our optional argument for deciding whether the
# CallSetup should re-throw exceptions on aRv. # CallSetup should re-throw exceptions on aRv.
@ -4742,13 +4742,13 @@ class CGCallback(CGClass):
argsWithoutThis.insert(0, Argument(None, "self")) argsWithoutThis.insert(0, Argument(None, "self"))
setupCall = ("let s = CallSetup::new(self, aExceptionHandling);\n" setupCall = ("let s = CallSetup::new(self, aExceptionHandling);\n"
"if s.GetContext().is_null() {\n" "if s.get_context().is_null() {\n"
" return Err(FailureUnknown);\n" " return Err(FailureUnknown);\n"
"}\n") "}\n")
bodyWithThis = string.Template( bodyWithThis = string.Template(
setupCall+ setupCall+
"let thisObjJS = WrapCallThisObject(s.GetContext(), thisObj);\n" "let thisObjJS = wrap_call_this_object(s.get_context(), thisObj);\n"
"if thisObjJS.is_null() {\n" "if thisObjJS.is_null() {\n"
" return Err(FailureUnknown);\n" " return Err(FailureUnknown);\n"
"}\n" "}\n"
@ -5000,7 +5000,7 @@ class CallbackMember(CGNativeMember):
return "" return ""
return ( return (
"CallSetup s(CallbackPreserveColor(), aRv, aExceptionHandling);\n" "CallSetup s(CallbackPreserveColor(), aRv, aExceptionHandling);\n"
"JSContext* cx = s.GetContext();\n" "JSContext* cx = s.get_context();\n"
"if (!cx) {\n" "if (!cx) {\n"
" return Err(FailureUnknown);\n" " return Err(FailureUnknown);\n"
"}\n") "}\n")
@ -5083,7 +5083,7 @@ class CallbackOperationBase(CallbackMethod):
"methodName": self.methodName "methodName": self.methodName
} }
getCallableFromProp = string.Template( getCallableFromProp = string.Template(
'match self.parent.GetCallableProperty(cx, "${methodName}") {\n' 'match self.parent.get_callable_property(cx, "${methodName}") {\n'
' Err(_) => return Err(FailureUnknown),\n' ' Err(_) => return Err(FailureUnknown),\n'
' Ok(callable) => callable,\n' ' Ok(callable) => callable,\n'
'}').substitute(replacements) '}').substitute(replacements)

View file

@ -286,8 +286,10 @@ pub fn jsid_to_str(cx: *mut JSContext, id: jsid) -> DOMString {
} }
impl FromJSValConvertible<StringificationBehavior> for DOMString { impl FromJSValConvertible<StringificationBehavior> for DOMString {
fn from_jsval(cx: *mut JSContext, value: JSVal, nullBehavior: StringificationBehavior) -> Result<DOMString, ()> { fn from_jsval(cx: *mut JSContext, value: JSVal,
if nullBehavior == StringificationBehavior::Empty && value.is_null() { null_behavior: StringificationBehavior)
-> Result<DOMString, ()> {
if null_behavior == StringificationBehavior::Empty && value.is_null() {
Ok("".to_owned()) Ok("".to_owned())
} else { } else {
let jsstr = unsafe { JS_ValueToString(cx, value) }; let jsstr = unsafe { JS_ValueToString(cx, value) };

View file

@ -56,7 +56,7 @@ pub mod dom {
/// The code to expose the DOM to JavaScript through IDL bindings. /// The code to expose the DOM to JavaScript through IDL bindings.
#[allow(unsafe_blocks)] #[allow(unsafe_blocks)]
#[deny(missing_docs)] #[deny(missing_docs, non_snake_case)]
pub mod bindings { pub mod bindings {
pub mod cell; pub mod cell;
pub mod global; pub mod global;
@ -72,7 +72,7 @@ pub mod dom {
pub mod trace; pub mod trace;
/// Generated JS-Rust bindings. /// Generated JS-Rust bindings.
#[allow(missing_docs)] #[allow(missing_docs, non_snake_case)]
pub mod codegen { pub mod codegen {
#[allow(unrooted_must_root)] #[allow(unrooted_must_root)]
pub mod Bindings; pub mod Bindings;