{"action":"created","issue":{"url":"https://api.github.com/repos/w3c/webcomponents/issues/186","repository_url":"https://api.github.com/repos/w3c/webcomponents","labels_url":"https://api.github.com/repos/w3c/webcomponents/issues/186/labels{/name}","comments_url":"https://api.github.com/repos/w3c/webcomponents/issues/186/comments","events_url":"https://api.github.com/repos/w3c/webcomponents/issues/186/events","html_url":"https://github.com/w3c/webcomponents/issues/186","id":93212868,"number":186,"title":"Integrate callback invocation with IDL","user":{"login":"hayatoito","id":160288,"avatar_url":"https://avatars.githubusercontent.com/u/160288?v=3","gravatar_id":"","url":"https://api.github.com/users/hayatoito","html_url":"https://github.com/hayatoito","followers_url":"https://api.github.com/users/hayatoito/followers","following_url":"https://api.github.com/users/hayatoito/following{/other_user}","gists_url":"https://api.github.com/users/hayatoito/gists{/gist_id}","starred_url":"https://api.github.com/users/hayatoito/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hayatoito/subscriptions","organizations_url":"https://api.github.com/users/hayatoito/orgs","repos_url":"https://api.github.com/users/hayatoito/repos","events_url":"https://api.github.com/users/hayatoito/events{/privacy}","received_events_url":"https://api.github.com/users/hayatoito/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/w3c/webcomponents/labels/custom-elements","name":"custom-elements","color":"5319e7"},{"url":"https://api.github.com/repos/w3c/webcomponents/labels/v1","name":"v1","color":"e11d21"}],"state":"open","locked":false,"assignee":{"login":"domenic","id":617481,"avatar_url":"https://avatars.githubusercontent.com/u/617481?v=3","gravatar_id":"","url":"https://api.github.com/users/domenic","html_url":"https://github.com/domenic","followers_url":"https://api.github.com/users/domenic/followers","following_url":"https://api.github.com/users/domenic/following{/other_user}","gists_url":"https://api.github.com/users/domenic/gists{/gist_id}","starred_url":"https://api.github.com/users/domenic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/domenic/subscriptions","organizations_url":"https://api.github.com/users/domenic/orgs","repos_url":"https://api.github.com/users/domenic/repos","events_url":"https://api.github.com/users/domenic/events{/privacy}","received_events_url":"https://api.github.com/users/domenic/received_events","type":"User","site_admin":false},"milestone":null,"comments":3,"created_at":"2015-07-06T07:38:07Z","updated_at":"2016-04-05T04:59:53Z","closed_at":null,"body":"Title: [Custom]: make callbacks more explicit (bugzilla: 24579)\n\nMigrated from: https://www.w3.org/Bugs/Public/show_bug.cgi?id=24579\n\n----\ncomment: 0\ncomment_url: https://www.w3.org/Bugs/Public/show_bug.cgi?id=24579#c0\n*Anne* wrote on 2014-02-07 11:00:05 +0000.\n\n\"Any time a script calls a method, reads or sets a property that is implemented by the user agent, the following actions must occur: \"\n\nThis needs to become part of the actual algorithms such as innerHTML, cloneNode(), etc. The easiest way to do that is tying it to IDL I think just as is done in the Chrome implementation.\n\nI recommend working with heycam on doing that per my outline in http://lists.w3.org/Archives/Public/public-webapps/2014JanMar/0142.html as that makes it much more explicit when everything happens relative to each other.\n\n----\n\ncomment: 1\ncomment_url: https://www.w3.org/Bugs/Public/show_bug.cgi?id=24579#c1\n*Anne* wrote on 2014-02-07 11:01:53 +0000.\n\nNote that we also need this mechanism for callbacks implemented by the user agent. E.g. when adoption happens we want to queue a callback that runs before the method that caused the adoption to return and mangles prototypes.\n\n----\n\ncomment: 2\ncomment_url: https://www.w3.org/Bugs/Public/show_bug.cgi?id=24579#c2\n*Dimitri Glazkov* wrote on 2014-05-09 20:32:46 +0000.\n\nI was just reading up on extended attributes: http://heycam.github.io/webidl/#idl-extended-attributes.\n\nA simple ExtendedAttributeNoArgs thingy should suffice in this case -- something like [InvokesCustomElementCallbacks] or [ProcessesCustomElementCallbacks] or [ElementCallbackBarrier]?\n\nHeycam, should I just write this down in custom elements spec, or should it be part of Web IDL spec, like ES-specific attributes: http://heycam.github.io/webidl/#es-extended-attributes?\n\n----\n\ncomment: 3\ncomment_url: https://www.w3.org/Bugs/Public/show_bug.cgi?id=24579#c3\n*Dimitri Glazkov* wrote on 2014-10-27 17:34:02 +0000.\n\n*** Bug 27179 has been marked as a duplicate of this bug. ***\n\n----\n\ncomment: 4\ncomment_url: https://www.w3.org/Bugs/Public/show_bug.cgi?id=24579#c4\n*Anne* wrote on 2014-10-27 17:42:42 +0000.\n\n(Currently Web IDL offers no way for other specifications to define extended attributes.)"},"comment":{"url":"https://api.github.com/repos/w3c/webcomponents/issues/comments/205644440","html_url":"https://github.com/w3c/webcomponents/issues/186#issuecomment-205644440","issue_url":"https://api.github.com/repos/w3c/webcomponents/issues/186","id":205644440,"user":{"login":"annevk","id":1544111,"avatar_url":"https://avatars.githubusercontent.com/u/1544111?v=3","gravatar_id":"","url":"https://api.github.com/users/annevk","html_url":"https://github.com/annevk","followers_url":"https://api.github.com/users/annevk/followers","following_url":"https://api.github.com/users/annevk/following{/other_user}","gists_url":"https://api.github.com/users/annevk/gists{/gist_id}","starred_url":"https://api.github.com/users/annevk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/annevk/subscriptions","organizations_url":"https://api.github.com/users/annevk/orgs","repos_url":"https://api.github.com/users/annevk/repos","events_url":"https://api.github.com/users/annevk/events{/privacy}","received_events_url":"https://api.github.com/users/annevk/received_events","type":"User","site_admin":false},"created_at":"2016-04-05T04:59:53Z","updated_at":"2016-04-05T04:59:53Z","body":"> Aren't these supposed to fire on editing operations? The extended attribute doesn't take care of those cases, does it? How would we do it?\r\n\r\nPresumably these operations are (will be, more likely, if ever) defined as running these as part of some kind of task. So perhaps the microtask checkpoint also needs to run element callbacks if they haven't been run yet?\r\n\r\nAs for the rest, IDL needs to be changed to account for this. Whether we enumerate the places for which it matters or leave that up to implementations is less important, but it seems that if everyone needs to do that work anyway, it might help if we did it for everyone."}}