mirror of
https://github.com/servo/servo.git
synced 2025-06-08 00:23:30 +00:00
refactor(script): squash CGDOMJSProxyHandler_set
The implementation in `crate::dom::bindings::proxyhandler:: maybe_cross_origin_set_rawcx` is now directly assigned to `ProxyTraps:: set`.
This commit is contained in:
parent
66a4ea0727
commit
c28e98ec40
2 changed files with 49 additions and 51 deletions
|
@ -3556,7 +3556,11 @@ class CGDefineProxyHandler(CGAbstractMethod):
|
|||
|
||||
customSet = 'None'
|
||||
if self.descriptor.isMaybeCrossOriginObject():
|
||||
customSet = 'Some(set)'
|
||||
# `maybe_cross_origin_set_rawcx` doesn't support legacy platform objects'
|
||||
# `[[Set]]` (https://heycam.github.io/webidl/#legacy-platform-object-set) (yet).
|
||||
assert not self.descriptor.operations['IndexedGetter']
|
||||
assert not self.descriptor.operations['NamedGetter']
|
||||
customSet = 'Some(proxyhandler::maybe_cross_origin_set_rawcx)'
|
||||
|
||||
getOwnEnumerablePropertyKeys = "own_property_keys"
|
||||
if self.descriptor.interface.getExtendedAttribute("LegacyUnenumerableNamedProperties") or \
|
||||
|
@ -5958,55 +5962,6 @@ return true;""" % (maybeCrossOriginGet, getIndexedOrExpando, getNamed)
|
|||
return CGGeneric(self.getBody())
|
||||
|
||||
|
||||
class CGDOMJSProxyHandler_set(CGAbstractExternMethod):
|
||||
def __init__(self, descriptor):
|
||||
args = [Argument('*mut JSContext', 'cx'), Argument('RawHandleObject', 'proxy'),
|
||||
Argument('RawHandleId', 'id'), Argument('RawHandleValue', 'v'),
|
||||
Argument('RawHandleValue', 'receiver'),
|
||||
Argument('*mut ObjectOpResult', 'opresult')]
|
||||
CGAbstractExternMethod.__init__(self, descriptor, "set", "bool", args)
|
||||
self.descriptor = descriptor
|
||||
|
||||
def getBody(self):
|
||||
descriptor = self.descriptor
|
||||
|
||||
# `CGDOMJSProxyHandler_set` doesn't support legacy platform objects'
|
||||
# `[[Set]]` (https://heycam.github.io/webidl/#legacy-platform-object-set) yet.
|
||||
#
|
||||
assert descriptor.isMaybeCrossOriginObject()
|
||||
assert not descriptor.operations['IndexedGetter']
|
||||
assert not descriptor.operations['NamedGetter']
|
||||
|
||||
maybeCrossOriginSet = dedent(
|
||||
"""
|
||||
if !proxyhandler::is_platform_object_same_origin(cx, proxy) {
|
||||
return proxyhandler::cross_origin_set(cx, proxy, id, v, receiver, opresult);
|
||||
}
|
||||
|
||||
// Safe to enter the Realm of proxy now.
|
||||
let _ac = JSAutoRealm::new(*cx, proxy.get());
|
||||
""")
|
||||
|
||||
return dedent(
|
||||
"""
|
||||
let cx = SafeJSContext::from_ptr(cx);
|
||||
%(maybeCrossOriginSet)s
|
||||
|
||||
// OrdinarySet
|
||||
// <https://tc39.es/ecma262/#sec-ordinaryset>
|
||||
rooted!(in(*cx) let mut own_desc = PropertyDescriptor::default());
|
||||
if !getOwnPropertyDescriptor(*cx, proxy, id, own_desc.handle_mut().into()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
js::jsapi::SetPropertyIgnoringNamedGetter(
|
||||
*cx, proxy, id, v, receiver, own_desc.handle().into(), opresult)
|
||||
""") % {"maybeCrossOriginSet": maybeCrossOriginSet}
|
||||
|
||||
def definition_body(self):
|
||||
return CGGeneric(self.getBody())
|
||||
|
||||
|
||||
class CGDOMJSProxyHandler_getPrototype(CGAbstractExternMethod):
|
||||
def __init__(self, descriptor):
|
||||
args = [Argument('*mut JSContext', 'cx'), Argument('RawHandleObject', 'proxy'),
|
||||
|
@ -6693,7 +6648,6 @@ class CGDescriptor(CGThing):
|
|||
|
||||
if descriptor.isMaybeCrossOriginObject():
|
||||
cgThings.append(CGDOMJSProxyHandler_getPrototype(descriptor))
|
||||
cgThings.append(CGDOMJSProxyHandler_set(descriptor))
|
||||
|
||||
# cgThings.append(CGDOMJSProxyHandler(descriptor))
|
||||
# cgThings.append(CGIsMethod(descriptor))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue