diff options
author | yvt <i@yvt.jp> | 2021-07-17 15:26:00 +0900 |
---|---|---|
committer | yvt <i@yvt.jp> | 2021-07-17 15:26:15 +0900 |
commit | a6b2f75656bd286af6e3eedf0cdf80dd6df03b5b (patch) | |
tree | 88b95e79b98ca8df916932004c7bc5893aa0dc45 /components/script/dom/bindings | |
parent | 75242d6c4c008e2ef971028ca3e7982464676135 (diff) | |
download | servo-a6b2f75656bd286af6e3eedf0cdf80dd6df03b5b.tar.gz servo-a6b2f75656bd286af6e3eedf0cdf80dd6df03b5b.zip |
feat(script): implement `getOwnEnumerablePropertyKeys` for `Location`
Fixes the following assertion from `tests/wpt/web-platform-tests/html/
browsers/origin/cross-origin-objects/cross-origin-objects.html`:
assert_equals(Object.keys(win.location).length, 0,
"Object.keys() gives the right answer for cross-origin Location");
Diffstat (limited to 'components/script/dom/bindings')
-rw-r--r-- | components/script/dom/bindings/codegen/CodegenRust.py | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index f76be4619f0..28c3281fc54 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -3559,7 +3559,8 @@ class CGDefineProxyHandler(CGAbstractMethod): customSet = 'Some(set)' getOwnEnumerablePropertyKeys = "own_property_keys" - if self.descriptor.interface.getExtendedAttribute("LegacyUnenumerableNamedProperties"): + if self.descriptor.interface.getExtendedAttribute("LegacyUnenumerableNamedProperties") or \ + self.descriptor.isMaybeCrossOriginObject(): getOwnEnumerablePropertyKeys = "getOwnEnumerablePropertyKeys" args = { @@ -5726,7 +5727,8 @@ class CGDOMJSProxyHandler_ownPropertyKeys(CGAbstractExternMethod): class CGDOMJSProxyHandler_getOwnEnumerablePropertyKeys(CGAbstractExternMethod): def __init__(self, descriptor): assert (descriptor.operations["IndexedGetter"] - and descriptor.interface.getExtendedAttribute("LegacyUnenumerableNamedProperties")) + and descriptor.interface.getExtendedAttribute("LegacyUnenumerableNamedProperties") + or descriptor.isMaybeCrossOriginObject()) args = [Argument('*mut JSContext', 'cx'), Argument('RawHandleObject', 'proxy'), Argument('RawMutableHandleIdVector', 'props')] @@ -6671,7 +6673,8 @@ class CGDescriptor(CGThing): cgThings.append(CGProxyUnwrap(descriptor)) cgThings.append(CGDOMJSProxyHandlerDOMClass(descriptor)) cgThings.append(CGDOMJSProxyHandler_ownPropertyKeys(descriptor)) - if descriptor.interface.getExtendedAttribute("LegacyUnenumerableNamedProperties"): + if descriptor.interface.getExtendedAttribute("LegacyUnenumerableNamedProperties") or \ + descriptor.isMaybeCrossOriginObject(): cgThings.append(CGDOMJSProxyHandler_getOwnEnumerablePropertyKeys(descriptor)) cgThings.append(CGDOMJSProxyHandler_getOwnPropertyDescriptor(descriptor)) cgThings.append(CGDOMJSProxyHandler_className(descriptor)) |