From c82eb3b1a450c4b7021e4d35d640b631f85ca39c Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Wed, 19 Nov 2014 11:59:32 -0400 Subject: Call the NamedGetter method from the get trap in proxy bindings. --- components/script/dom/bindings/codegen/CodegenRust.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'components/script/dom/bindings/codegen/CodegenRust.py') diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 01efdd012c0..35e3a05d2d0 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -3836,14 +3836,14 @@ if expando.is_not_null() { getIndexedOrExpando = getFromExpando + "\n" namedGetter = self.descriptor.operations['NamedGetter'] - if namedGetter and False: #XXXjdm unfinished - getNamed = ("if (JSID_IS_STRING(id)) {\n" + + if namedGetter: + getNamed = ("if (RUST_JSID_IS_STRING(id) != 0) {\n" + " let name = jsid_to_str(cx, id);\n" + " let this = UnwrapProxy(proxy);\n" + " let this = JS::from_raw(this);\n" + " let this = this.root();\n" + CGIndenter(CGProxyNamedGetter(self.descriptor, templateValues)).define() + - "}\n") % (self.descriptor.concreteType) + "}\n") else: getNamed = "" -- cgit v1.2.3 From ade0b7be8ea6fa46af6498eb8e9a22b76792a54b Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Tue, 23 Dec 2014 13:39:42 +0100 Subject: Use the custom defineProperty trap when it exists. --- components/script/dom/bindings/codegen/CodegenRust.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'components/script/dom/bindings/codegen/CodegenRust.py') diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 35e3a05d2d0..8fee5cae6a5 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -2086,11 +2086,14 @@ class CGDefineProxyHandler(CGAbstractMethod): return CGAbstractMethod.define(self) def definition_body(self): + customDefineProperty = 'defineProperty_' + if self.descriptor.operations['IndexedSetter'] or self.descriptor.operations['NamedSetter']: + customDefineProperty = 'defineProperty' body = """\ let traps = ProxyTraps { getPropertyDescriptor: Some(getPropertyDescriptor), getOwnPropertyDescriptor: Some(getOwnPropertyDescriptor), - defineProperty: Some(defineProperty_), + defineProperty: Some(%s), getOwnPropertyNames: ptr::null(), delete_: Some(delete_), enumerate: ptr::null(), @@ -2120,7 +2123,7 @@ let traps = ProxyTraps { }; CreateProxyHandler(&traps, &Class as *const _ as *const _) -""" % (FINALIZE_HOOK_NAME, +""" % (customDefineProperty, FINALIZE_HOOK_NAME, TRACE_HOOK_NAME) return CGGeneric(body) -- cgit v1.2.3 From e0bab0875434da934ca908ee51c338080eac7244 Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Tue, 23 Dec 2014 14:07:25 +0100 Subject: Correct the generated code for NamedSetter calls. --- components/script/dom/bindings/codegen/CodegenRust.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'components/script/dom/bindings/codegen/CodegenRust.py') diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 8fee5cae6a5..03efd2b59f5 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -2279,8 +2279,15 @@ class CGPerSignatureCall(CGThing): invalidEnumValueFatal=not setter) for i in range(argConversionStartsAt, self.argCount)]) + errorResult = None + if self.isFallible(): + if nativeMethodName == "NamedSetter": + errorResult = " false" + else: + errorResult = " false as JSBool" + cgThings.append(CGCallGenerator( - ' false as JSBool' if self.isFallible() else None, + errorResult, self.getArguments(), self.argsPre, returnType, self.extendedAttributes, descriptor, nativeMethodName, static)) -- cgit v1.2.3 From 919f2217f0b67290b8dafd7d9ce53547f61f3d08 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Wed, 24 Dec 2014 16:55:38 +0100 Subject: Implement dummy getOwnPropertyNames and enumerate traps. --- components/script/dom/bindings/codegen/CodegenRust.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'components/script/dom/bindings/codegen/CodegenRust.py') diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 03efd2b59f5..e3a455d63c8 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -2094,15 +2094,15 @@ let traps = ProxyTraps { getPropertyDescriptor: Some(getPropertyDescriptor), getOwnPropertyDescriptor: Some(getOwnPropertyDescriptor), defineProperty: Some(%s), - getOwnPropertyNames: ptr::null(), + getOwnPropertyNames: Some(getOwnPropertyNames_), delete_: Some(delete_), - enumerate: ptr::null(), + enumerate: Some(enumerate_), has: None, hasOwn: Some(hasOwn), get: Some(get), set: None, - keys: ptr::null(), + keys: None, iterate: None, call: None, @@ -4532,6 +4532,7 @@ class CGBindingRoot(CGThing): 'dom::bindings::proxyhandler::{_obj_toString, defineProperty_}', 'dom::bindings::proxyhandler::{FillPropertyDescriptor, GetExpandoObject}', 'dom::bindings::proxyhandler::{delete_, getPropertyDescriptor}', + 'dom::bindings::proxyhandler::{getOwnPropertyNames_, enumerate_}', 'dom::bindings::str::ByteString', 'page::JSPageInfo', 'libc', -- cgit v1.2.3