diff options
author | Shinichi Morimoto <shnmorimoto@gmail.com> | 2020-03-28 20:17:16 +0900 |
---|---|---|
committer | Shinichi Morimoto <shnmorimoto@gmail.com> | 2020-03-28 20:18:30 +0900 |
commit | 80b2a87be718d81032a14bc96d94bb37318c31d8 (patch) | |
tree | f429e379d18cdff168722f2037f817c14644dec8 /components/script/dom/bindings/codegen | |
parent | 7d66871a9f3c9224f3ecf37ec2c66dd410db648c (diff) | |
download | servo-80b2a87be718d81032a14bc96d94bb37318c31d8.tar.gz servo-80b2a87be718d81032a14bc96d94bb37318c31d8.zip |
fixed #25281
Diffstat (limited to 'components/script/dom/bindings/codegen')
-rw-r--r-- | components/script/dom/bindings/codegen/CodegenRust.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 8f0281be802..3191a7acc4d 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -2968,12 +2968,19 @@ class CGCollectJSONAttributesMethod(CGAbstractMethod): def definition_body(self): ret = '' interface = self.descriptor.interface + for m in interface.members: if m.isAttr() and not m.isStatic() and m.type.isJSONType(): name = m.identifier.name + conditions = MemberCondition(None, None, m.exposureSet) + ret_conditions = 'vec![' + ",".join(conditions) + "]" ret += fill( """ - rooted!(in(cx) let mut temp = UndefinedValue()); + let conditions = ${conditions}; + if !conditions.iter().any(|c| c.is_satisfied(SafeJSContext::from_ptr(cx), HandleObject::from_raw(obj), HandleObject::from_raw(obj))) { + return false; + } + rooted!(in(cx) let mut temp = UndefinedValue()); if !get_${name}(cx, obj, this, JSJitGetterCallArgs { _base: temp.handle_mut().into() }) { return false; } @@ -2983,7 +2990,7 @@ class CGCollectJSONAttributesMethod(CGAbstractMethod): return false; } """, - name=name, nameAsArray=str_to_const_array(name)) + name=name, nameAsArray=str_to_const_array(name), conditions=ret_conditions) ret += 'return true;\n' return CGGeneric(ret) |