- From: Ms2ger <notifications@github.com>
- Date: Wed, 30 Jan 2019 03:38:00 -0800
- To: heycam/webidl <webidl@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <heycam/webidl/issues/630/458913289@github.com>
I confused myself again; it looks like WebKit is following the spec in all cases I tested. Results: | Test | Spec | Gecko | Chrome | WebKit | |-|-|-|-|-| | no \[OB], *O* = *Receiver* | named setter | proto.\[[Set]]() | proto.\[[Set]]() | named setter | | no \[OB], *O* ≠ *Receiver* | proto.\[[Set]]() | proto.\[[Set]]() | proto.\[[Set]]() | proto.\[[Set]]() | | \[OB], *O* = *Receiver* | named setter | named setter | named setter | named setter | | \[OB], *O* ≠ *Receiver* | proto.\[[Set]]() | named setter | proto.\[[Set]]() | proto.\[[Set]]() | <details> <summary>Tests</summary> # no \[OB], *O* = *Receiver* ```html <!DOCTYPE html> <script> sessionStorage.clear() var a = new Proxy(Object.getPrototypeOf(sessionStorage), { set(...args) { w(args); return false; }, }); Object.setPrototypeOf(sessionStorage, a); sessionStorage.x = "foo"; w(sessionStorage.x) </script> ``` ``` C log: object "[object Storage],x,foo,[object Storage]" (4 props: 0="[object Storage]", 1="x", 2="foo", 3="[object Storage]") log: undefined G log: object "[object StoragePrototype],x,foo,[object Storage]" (4 props: 0="[object StoragePrototype]", 1="x", 2="foo", 3="[object Storage]") log: undefined W log: foo ``` # no \[OB], *O* ≠ *Receiver* ```html <!DOCTYPE html> <script> sessionStorage.clear() var a = new Proxy(Object.getPrototypeOf(sessionStorage), { set(...args) { w(args); return false; }, }); Object.setPrototypeOf(sessionStorage, a); Object.create(sessionStorage).x = "foo"; w(sessionStorage.x) </script> ``` ``` C log: object "[object Storage],x,foo,[object Storage]" (4 props: 0="[object Storage]", 1="x", 2="foo", 3="[object Storage]") log: undefined G log: object "[object StoragePrototype],x,foo,[object Object]" (4 props: 0="[object StoragePrototype]", 1="x", 2="foo", 3="[object Object]") log: undefined W log: object "[object Object],x,foo,[object Object]" (4 props: 0="[object Object]", 1="x", 2="foo", 3="[object Object]") log: undefined ``` # \[OB], *O* = *Receiver* ```html <!DOCTYPE html> <script> var ds = document.documentElement.dataset; var a = new Proxy(Object.getPrototypeOf(ds), { set(...args) { w(args); return false; }, }); Object.setPrototypeOf(ds, a); ds.x = "foo"; w(ds.x) </script> ``` ``` C log: foo G log: foo W log: foo ``` # \[OB], *O* ≠ *Receiver* ```html <!DOCTYPE html> <script> var ds = document.documentElement.dataset; var a = new Proxy(Object.getPrototypeOf(ds), { set(...args) { w(args); return false; }, }); Object.setPrototypeOf(ds, a); Object.create(ds).x = "foo"; w(ds.x) </script> ``` ``` C log: object "[object DOMStringMap],x,foo,[object DOMStringMap]" (4 props: 0="[object DOMStringMap]", 1="x", 2="foo", 3="[object DOMStringMap]") log: undefined G log: foo W log: object "[object DOMStringMapPrototype],x,foo,[object Object]" (4 props: 0="[object DOMStringMapPrototype]", 1="x", 2="foo", 3="[object Object]") log: undefined ``` </details> -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/heycam/webidl/issues/630#issuecomment-458913289
Received on Wednesday, 30 January 2019 11:38:22 UTC