From c76524e63bee4c00f7b3be26c021e314526f8b3a Mon Sep 17 00:00:00 2001 From: Akash Pateria Date: Tue, 1 Oct 2024 17:34:35 -0700 Subject: [PATCH] Fix panic in webstorage/symbol-props.window.js (#33108) Issue: https://github.com/servo/servo/issues/32987 Signed-off-by: Akash Pateria --- .../script/dom/bindings/codegen/CodegenRust.py | 16 ++++++++++++++++ .../meta/webstorage/symbol-props.window.js.ini | 6 +++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 78e9588877e..86dafdddd29 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -5563,6 +5563,22 @@ class CGProxyNamedDeleter(CGProxyNamedOperation): def __init__(self, descriptor): CGProxySpecialOperation.__init__(self, descriptor, 'NamedDeleter') + def define(self): + # Our first argument is the id we're getting. + argName = self.arguments[0].identifier.name + return ("if !id.is_symbol() {\n" + f' let {argName} = match jsid_to_string(*cx, Handle::from_raw(id)) {{\n' + " Some(val) => val,\n" + " None => {\n" + " throw_type_error(*cx, \"Not a string-convertible JSID\");\n" + " return false;\n" + " }\n" + " };\n" + " let this = UnwrapProxy(proxy);\n" + " let this = &*this;\n" + f" {CGProxySpecialOperation.define(self)}" + "}\n") + class CGProxyUnwrap(CGAbstractMethod): def __init__(self, descriptor): diff --git a/tests/wpt/meta/webstorage/symbol-props.window.js.ini b/tests/wpt/meta/webstorage/symbol-props.window.js.ini index 5b87ea15f62..bc20460625b 100644 --- a/tests/wpt/meta/webstorage/symbol-props.window.js.ini +++ b/tests/wpt/meta/webstorage/symbol-props.window.js.ini @@ -1,2 +1,6 @@ [symbol-props.window.html] - expected: CRASH + [localStorage: defineProperty not configurable] + expected: FAIL + + [sessionStorage: defineProperty not configurable] + expected: FAIL