diff options
12 files changed, 55 insertions, 15 deletions
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', diff --git a/components/script/dom/bindings/proxyhandler.rs b/components/script/dom/bindings/proxyhandler.rs index bbfb7118b76..0d77ff63cdd 100644 --- a/components/script/dom/bindings/proxyhandler.rs +++ b/components/script/dom/bindings/proxyhandler.rs @@ -16,6 +16,7 @@ use js::glue::GetProxyExtra; use js::glue::{GetObjectProto, GetObjectParent, SetProxyExtra, GetProxyHandler}; use js::glue::InvokeGetOwnPropertyDescriptor; use js::glue::RUST_js_GetErrorMessage; +use js::glue::AutoIdVector; use js::{JSPROP_GETTER, JSPROP_ENUMERATE, JSPROP_READONLY, JSRESOLVE_QUALIFIED}; use libc; @@ -130,3 +131,14 @@ pub fn FillPropertyDescriptor(desc: &mut JSPropertyDescriptor, obj: *mut JSObjec desc.setter = None; 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 +} diff --git a/components/script/dom/browsercontext.rs b/components/script/dom/browsercontext.rs index 3391da89fea..ed987f3a687 100644 --- a/components/script/dom/browsercontext.rs +++ b/components/script/dom/browsercontext.rs @@ -84,15 +84,15 @@ static PROXY_HANDLER: ProxyTraps = ProxyTraps { getPropertyDescriptor: None, getOwnPropertyDescriptor: None, defineProperty: None, - getOwnPropertyNames: 0 as *const u8, + getOwnPropertyNames: None, delete_: None, - enumerate: 0 as *const u8, + enumerate: None, has: None, hasOwn: None, get: None, set: None, - keys: 0 as *const u8, + keys: None, iterate: None, call: None, diff --git a/components/servo/Cargo.lock b/components/servo/Cargo.lock index b5831595e21..e8d3e054878 100644 --- a/components/servo/Cargo.lock +++ b/components/servo/Cargo.lock @@ -412,7 +412,7 @@ dependencies = [ [[package]] name = "js" version = "0.1.0" -source = "git+https://github.com/servo/rust-mozjs#e04e7307a3e52f46bc9ba3d5682188285110bc67" +source = "git+https://github.com/servo/rust-mozjs#2d86d6fb7ece49ff2f469c391e15e13f2b02af42" dependencies = [ "mozjs-sys 0.0.0 (git+https://github.com/servo/mozjs)", ] diff --git a/ports/cef/Cargo.lock b/ports/cef/Cargo.lock index 094429f5fc6..6ce8d45851c 100644 --- a/ports/cef/Cargo.lock +++ b/ports/cef/Cargo.lock @@ -380,7 +380,7 @@ dependencies = [ [[package]] name = "js" version = "0.1.0" -source = "git+https://github.com/servo/rust-mozjs#e04e7307a3e52f46bc9ba3d5682188285110bc67" +source = "git+https://github.com/servo/rust-mozjs#2d86d6fb7ece49ff2f469c391e15e13f2b02af42" dependencies = [ "mozjs-sys 0.0.0 (git+https://github.com/servo/mozjs)", ] diff --git a/ports/gonk/Cargo.lock b/ports/gonk/Cargo.lock index ef041bfc22d..1cb190136c8 100644 --- a/ports/gonk/Cargo.lock +++ b/ports/gonk/Cargo.lock @@ -334,7 +334,7 @@ dependencies = [ [[package]] name = "js" version = "0.1.0" -source = "git+https://github.com/servo/rust-mozjs#e04e7307a3e52f46bc9ba3d5682188285110bc67" +source = "git+https://github.com/servo/rust-mozjs#2d86d6fb7ece49ff2f469c391e15e13f2b02af42" dependencies = [ "mozjs-sys 0.0.0 (git+https://github.com/servo/mozjs)", ] diff --git a/tests/wpt/metadata/dom/nodes/Document-getElementsByTagName.html.ini b/tests/wpt/metadata/dom/nodes/Document-getElementsByTagName.html.ini index 292b75271e0..5b48891daad 100644 --- a/tests/wpt/metadata/dom/nodes/Document-getElementsByTagName.html.ini +++ b/tests/wpt/metadata/dom/nodes/Document-getElementsByTagName.html.ini @@ -1,3 +1,8 @@ [Document-getElementsByTagName.html] type: testharness - expected: CRASH + [Shouldn\'t be able to set unsigned properties on a HTMLCollection (strict mode)] + expected: FAIL + + [hasOwnProperty, getOwnPropertyDescriptor, getOwnPropertyNames] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/nodes/Element-children.html.ini b/tests/wpt/metadata/dom/nodes/Element-children.html.ini index 3a571e8e438..5cab09c0321 100644 --- a/tests/wpt/metadata/dom/nodes/Element-children.html.ini +++ b/tests/wpt/metadata/dom/nodes/Element-children.html.ini @@ -1,3 +1,5 @@ [Element-children.html] type: testharness - expected: CRASH + [HTMLCollection edge cases 1] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/nodes/Element-getElementsByTagName.html.ini b/tests/wpt/metadata/dom/nodes/Element-getElementsByTagName.html.ini index d1240410583..b5154c2e985 100644 --- a/tests/wpt/metadata/dom/nodes/Element-getElementsByTagName.html.ini +++ b/tests/wpt/metadata/dom/nodes/Element-getElementsByTagName.html.ini @@ -1,3 +1,8 @@ [Element-getElementsByTagName.html] type: testharness - expected: CRASH + [Shouldn\'t be able to set unsigned properties on a HTMLCollection (strict mode)] + expected: FAIL + + [hasOwnProperty, getOwnPropertyDescriptor, getOwnPropertyNames] + expected: FAIL + diff --git a/tests/wpt/metadata/html/dom/documents/dom-tree-accessors/document.forms.html.ini b/tests/wpt/metadata/html/dom/documents/dom-tree-accessors/document.forms.html.ini index 1d1cad91e2e..e91f95fe3df 100644 --- a/tests/wpt/metadata/html/dom/documents/dom-tree-accessors/document.forms.html.ini +++ b/tests/wpt/metadata/html/dom/documents/dom-tree-accessors/document.forms.html.ini @@ -1,3 +1,11 @@ [document.forms.html] type: testharness - expected: CRASH + [document.forms] + expected: FAIL + + [document.forms iteration] + expected: FAIL + + [document.forms getOwnPropertyNames] + expected: FAIL + diff --git a/tests/wpt/metadata/html/dom/elements/global-attributes/dataset-enumeration.html.ini b/tests/wpt/metadata/html/dom/elements/global-attributes/dataset-enumeration.html.ini index 4dd8405e31c..7b228c9e6ea 100644 --- a/tests/wpt/metadata/html/dom/elements/global-attributes/dataset-enumeration.html.ini +++ b/tests/wpt/metadata/html/dom/elements/global-attributes/dataset-enumeration.html.ini @@ -1,3 +1,8 @@ [dataset-enumeration.html] 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 + diff --git a/tests/wpt/metadata/html/dom/elements/global-attributes/dataset-get.html.ini b/tests/wpt/metadata/html/dom/elements/global-attributes/dataset-get.html.ini index f6649ae7398..8294873d2ff 100644 --- a/tests/wpt/metadata/html/dom/elements/global-attributes/dataset-get.html.ini +++ b/tests/wpt/metadata/html/dom/elements/global-attributes/dataset-get.html.ini @@ -1,3 +1,5 @@ [dataset-get.html] type: testharness - expected: CRASH + [Getting element.dataset[\'toString\'\] should return the value of element.getAttribute(\'data-to-string\')\'] + expected: FAIL + |