aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings/codegen
diff options
context:
space:
mode:
authoryvt <i@yvt.jp>2021-07-17 15:26:00 +0900
committeryvt <i@yvt.jp>2021-07-17 15:26:15 +0900
commita6b2f75656bd286af6e3eedf0cdf80dd6df03b5b (patch)
tree88b95e79b98ca8df916932004c7bc5893aa0dc45 /components/script/dom/bindings/codegen
parent75242d6c4c008e2ef971028ca3e7982464676135 (diff)
downloadservo-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/codegen')
-rw-r--r--components/script/dom/bindings/codegen/CodegenRust.py9
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))