This seems like a worthwhile change and I do support it but is it possible to make this fix behind a build flag or make it self-contained such that we can revert easily if needed?
While I do agree with you that the compatibility risk is probably small, I'd like to make sure we have an option of being able to revert the change or disabling the fix if we did find a compatibility issue later. On Wed, Apr 17, 2013 at 11:32 AM, Christophe Dumez - SISA < ch.du...@partner.samsung.com> wrote: > Hi, > > According to the Web IDL specification [1] (still valid in the latest > Editor Draft [2]), global constructors should have the following attributes: > { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true } > > Quoting from the specification: > """ > > For every interface <http://dev.w3.org/2006/webapi/WebIDL/#dfn-interface> > that: > > - is a callback > interface<http://dev.w3.org/2006/webapi/WebIDL/#dfn-callback-interface> > that has constants<http://dev.w3.org/2006/webapi/WebIDL/#dfn-constant> > declared on it, or > - is a non-callback > interface<http://dev.w3.org/2006/webapi/WebIDL/#dfn-interface> > that is not declared with the > [NoInterfaceObject]<http://dev.w3.org/2006/webapi/WebIDL/#NoInterfaceObject> > extended > attribute<http://dev.w3.org/2006/webapi/WebIDL/#dfn-extended-attribute> > , > > a corresponding property must exist on the ECMAScript global object. The > name of the property is the > identifier<http://dev.w3.org/2006/webapi/WebIDL/#dfn-identifier> > of the interface, and its value is an object called theinterface object. > > The property has the attributes { [[Writable]]: true, [[Enumerable]]: > false, [[Configurable]]: true }. The characteristics of an interface > object are described in section > 4.4.1<http://dev.w3.org/2006/webapi/WebIDL/#interface-object> > below. > > """ > > Currently, global constructors have the following attributes in WebKit, > which is not according to spec: > { [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: false } > > This is causing some W3C compliance tests to fail, such as this one [3]. > > Behavior of other browsers: > - Firefox follows the specification > - Blink does not follow the specification > - IE9 follows partly the spec: > * global constructors are not enumerable (according to spec) > * global constructors are not deletable (not according to spec) > > I don't think it is likely web sites rely on those global constructors > being enumerable considering that they are not enumerable in both IE9 and > Firefox. Making them deletable seems low risk to me as well. > > I uploaded a patch proposal to bugzilla [4] to make WebKit follow this > part of the spec. I would appreciate feedback from the rest of the > community as this is a "web-exposed" behavior change. > > Kr, > Christophe DUMEZ > > [1] http://www.w3.org/TR/2012/CR-WebIDL-20120419/#es-interfaces > [2] http://dev.w3.org/2006/webapi/WebIDL/#es-interfaces > [3] > http://w3c-test.org/webapps/ProgressEvents/tests/submissions/Ms2ger/interface.html(2 > last tests) > [4] https://bugs.webkit.org/show_bug.cgi?id=110573 > > > _______________________________________________ > webkit-dev mailing list > webkit-dev@lists.webkit.org > https://lists.webkit.org/mailman/listinfo/webkit-dev > >
_______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-dev