mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Implement dummy getOwnPropertyNames and enumerate traps.
This commit is contained in:
parent
57c520d8cf
commit
919f2217f0
12 changed files with 55 additions and 15 deletions
|
@ -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',
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
||||||
|
|
|
@ -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,
|
||||||
|
|
2
components/servo/Cargo.lock
generated
2
components/servo/Cargo.lock
generated
|
@ -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
2
ports/cef/Cargo.lock
generated
|
@ -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
2
ports/gonk/Cargo.lock
generated
|
@ -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)",
|
||||||
]
|
]
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
[Element-children.html]
|
[Element-children.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: CRASH
|
[HTMLCollection edge cases 1]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue