- From: <nobody@w3.org>
- Date: Wed, 29 Jul 2015 16:04:48 +0000
- To: public-script-coord@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=29004 Bug ID: 29004 Summary: FrozenArray only provides shallow immutability Product: WebAppsWG Version: unspecified Hardware: All OS: All Status: NEW Severity: normal Priority: P2 Component: WebIDL Assignee: cam@mcc.id.au Reporter: johnme@google.com QA Contact: public-webapps-bugzilla@w3.org CC: annevk@annevk.nl, bzbarsky@mit.edu, d@domenic.me, jonas@sicking.cc, mike@w3.org, public-script-coord@w3.org Target Milestone: --- Bug 23682 introduced FrozenArray using Object.freeze as a "fixed length array of unmodifiable values" (https://heycam.github.io/webidl/#idl-frozen-array). But Object.freeze only provides shallow immutability: the values are not writeable, but if the values are objects they can still be mutated. It might be useful to have a deeper concept of immutability in WebIDL, e.g.: A) Perhaps FrozenArray should non-recursively call Object.freeze on each of its non-primitive values? B) Or perhaps you should be able to declare: readonly attribute frozen Array<frozen Foo> foos; For example, in https://github.com/whatwg/notifications/pull/48 I'm adding action buttons to notifications with the following WebIDL: partial dictionary NotificationOptions { sequence<NotificationAction> actions = []; }; dictionary NotificationAction { required DOMString action; required DOMString title; }; and would like the author to be able to read back the values they set using something like: partial interface Notification { readonly attribute FrozenArray<NotificationAction> actions; }; But currently authors would be able to mutate the NotificationActions (or specifically, the JS objects that WebIDL converts dictionaries to), and this may lead to confusion, for example authors might incorrectly expect that mutating the titles would update the button strings of currently showing or soon to be shown notifications. It would also be inconsistent with all the existing attributes on Notification which are immutable. See also related discussion at https://github.com/w3c/screen-orientation/issues/13 -- You are receiving this mail because: You are on the CC list for the bug.
Received on Wednesday, 29 July 2015 16:04:51 UTC