Implement dummy getOwnPropertyNames and enumerate traps.

This commit is contained in:
Ms2ger 2014-12-24 16:55:38 +01:00
parent 57c520d8cf
commit 919f2217f0
12 changed files with 55 additions and 15 deletions

View file

@ -2094,15 +2094,15 @@ let traps = ProxyTraps {
getPropertyDescriptor: Some(getPropertyDescriptor), getPropertyDescriptor: Some(getPropertyDescriptor),
getOwnPropertyDescriptor: Some(getOwnPropertyDescriptor), getOwnPropertyDescriptor: Some(getOwnPropertyDescriptor),
defineProperty: Some(%s), defineProperty: Some(%s),
getOwnPropertyNames: ptr::null(), getOwnPropertyNames: Some(getOwnPropertyNames_),
delete_: Some(delete_), delete_: Some(delete_),
enumerate: ptr::null(), enumerate: Some(enumerate_),
has: None, has: None,
hasOwn: Some(hasOwn), hasOwn: Some(hasOwn),
get: Some(get), get: Some(get),
set: None, set: None,
keys: ptr::null(), keys: None,
iterate: None, iterate: None,
call: None, call: None,
@ -4532,6 +4532,7 @@ class CGBindingRoot(CGThing):
'dom::bindings::proxyhandler::{_obj_toString, defineProperty_}', 'dom::bindings::proxyhandler::{_obj_toString, defineProperty_}',
'dom::bindings::proxyhandler::{FillPropertyDescriptor, GetExpandoObject}', 'dom::bindings::proxyhandler::{FillPropertyDescriptor, GetExpandoObject}',
'dom::bindings::proxyhandler::{delete_, getPropertyDescriptor}', 'dom::bindings::proxyhandler::{delete_, getPropertyDescriptor}',
'dom::bindings::proxyhandler::{getOwnPropertyNames_, enumerate_}',
'dom::bindings::str::ByteString', 'dom::bindings::str::ByteString',
'page::JSPageInfo', 'page::JSPageInfo',
'libc', 'libc',

View file

@ -16,6 +16,7 @@ use js::glue::GetProxyExtra;
use js::glue::{GetObjectProto, GetObjectParent, SetProxyExtra, GetProxyHandler}; use js::glue::{GetObjectProto, GetObjectParent, SetProxyExtra, GetProxyHandler};
use js::glue::InvokeGetOwnPropertyDescriptor; use js::glue::InvokeGetOwnPropertyDescriptor;
use js::glue::RUST_js_GetErrorMessage; use js::glue::RUST_js_GetErrorMessage;
use js::glue::AutoIdVector;
use js::{JSPROP_GETTER, JSPROP_ENUMERATE, JSPROP_READONLY, JSRESOLVE_QUALIFIED}; use js::{JSPROP_GETTER, JSPROP_ENUMERATE, JSPROP_READONLY, JSRESOLVE_QUALIFIED};
use libc; use libc;
@ -130,3 +131,14 @@ pub fn FillPropertyDescriptor(desc: &mut JSPropertyDescriptor, obj: *mut JSObjec
desc.setter = None; desc.setter = None;
desc.shortid = 0; desc.shortid = 0;
} }
pub unsafe extern fn getOwnPropertyNames_(_cx: *mut JSContext,
_obj: *mut JSObject,
_v: *mut AutoIdVector) -> bool {
true
}
pub unsafe extern fn enumerate_(_cx: *mut JSContext, _obj: *mut JSObject,
_v: *mut AutoIdVector) -> bool {
true
}

View file

@ -84,15 +84,15 @@ static PROXY_HANDLER: ProxyTraps = ProxyTraps {
getPropertyDescriptor: None, getPropertyDescriptor: None,
getOwnPropertyDescriptor: None, getOwnPropertyDescriptor: None,
defineProperty: None, defineProperty: None,
getOwnPropertyNames: 0 as *const u8, getOwnPropertyNames: None,
delete_: None, delete_: None,
enumerate: 0 as *const u8, enumerate: None,
has: None, has: None,
hasOwn: None, hasOwn: None,
get: None, get: None,
set: None, set: None,
keys: 0 as *const u8, keys: None,
iterate: None, iterate: None,
call: None, call: None,

View file

@ -412,7 +412,7 @@ dependencies = [
[[package]] [[package]]
name = "js" name = "js"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/servo/rust-mozjs#e04e7307a3e52f46bc9ba3d5682188285110bc67" source = "git+https://github.com/servo/rust-mozjs#2d86d6fb7ece49ff2f469c391e15e13f2b02af42"
dependencies = [ dependencies = [
"mozjs-sys 0.0.0 (git+https://github.com/servo/mozjs)", "mozjs-sys 0.0.0 (git+https://github.com/servo/mozjs)",
] ]

2
ports/cef/Cargo.lock generated
View file

@ -380,7 +380,7 @@ dependencies = [
[[package]] [[package]]
name = "js" name = "js"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/servo/rust-mozjs#e04e7307a3e52f46bc9ba3d5682188285110bc67" source = "git+https://github.com/servo/rust-mozjs#2d86d6fb7ece49ff2f469c391e15e13f2b02af42"
dependencies = [ dependencies = [
"mozjs-sys 0.0.0 (git+https://github.com/servo/mozjs)", "mozjs-sys 0.0.0 (git+https://github.com/servo/mozjs)",
] ]

2
ports/gonk/Cargo.lock generated
View file

@ -334,7 +334,7 @@ dependencies = [
[[package]] [[package]]
name = "js" name = "js"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/servo/rust-mozjs#e04e7307a3e52f46bc9ba3d5682188285110bc67" source = "git+https://github.com/servo/rust-mozjs#2d86d6fb7ece49ff2f469c391e15e13f2b02af42"
dependencies = [ dependencies = [
"mozjs-sys 0.0.0 (git+https://github.com/servo/mozjs)", "mozjs-sys 0.0.0 (git+https://github.com/servo/mozjs)",
] ]

View file

@ -1,3 +1,8 @@
[Document-getElementsByTagName.html] [Document-getElementsByTagName.html]
type: testharness type: testharness
expected: CRASH [Shouldn\'t be able to set unsigned properties on a HTMLCollection (strict mode)]
expected: FAIL
[hasOwnProperty, getOwnPropertyDescriptor, getOwnPropertyNames]
expected: FAIL

View file

@ -1,3 +1,5 @@
[Element-children.html] [Element-children.html]
type: testharness type: testharness
expected: CRASH [HTMLCollection edge cases 1]
expected: FAIL

View file

@ -1,3 +1,8 @@
[Element-getElementsByTagName.html] [Element-getElementsByTagName.html]
type: testharness type: testharness
expected: CRASH [Shouldn\'t be able to set unsigned properties on a HTMLCollection (strict mode)]
expected: FAIL
[hasOwnProperty, getOwnPropertyDescriptor, getOwnPropertyNames]
expected: FAIL

View file

@ -1,3 +1,11 @@
[document.forms.html] [document.forms.html]
type: testharness type: testharness
expected: CRASH [document.forms]
expected: FAIL
[document.forms iteration]
expected: FAIL
[document.forms getOwnPropertyNames]
expected: FAIL

View file

@ -1,3 +1,8 @@
[dataset-enumeration.html] [dataset-enumeration.html]
type: testharness type: testharness
expected: CRASH [A dataset should be enumeratable.]
expected: FAIL
[Only attributes who qualify as dataset properties should be enumeratable in the dataset.]
expected: FAIL

View file

@ -1,3 +1,5 @@
[dataset-get.html] [dataset-get.html]
type: testharness type: testharness
expected: CRASH [Getting element.dataset[\'toString\'\] should return the value of element.getAttribute(\'data-to-string\')\']
expected: FAIL