- From: Ojan Vafai <ojan@chromium.org>
- Date: Tue, 13 Mar 2012 13:38:22 -0700
- To: John Gregg <johnnyg@google.com>
- Cc: Jon Lee <jonlee@apple.com>, "Edward O'Connor" <eoconnor@apple.com>, Anne van Kesteren <annevk@opera.com>, James Graham <jgraham@opera.com>, Maciej Stachowiak <mjs@apple.com>, public-web-notification@w3.org
- Message-ID: <CANMdWTtuyjmUinyopLkYAdLJ9ySH19Q_TfmSst+EDycc56Bpjw@mail.gmail.com>
Why do we use events here at all? Can we just make them regular callbacks that take the Notification as their first argument? Events seem like overkill since these aren't actually part of the DOM (e.g. there's no meaningful capture/bubble phase). On Tue, Mar 13, 2012 at 1:26 PM, John Gregg <johnnyg@google.com> wrote: > > > On Tue, Mar 13, 2012 at 1:21 PM, Jon Lee <jonlee@apple.com> wrote: > >> >> On Mar 13, 2012, at 10:51 AM, Edward O'Connor <eoconnor@apple.com> wrote: >> >> > Jon Lee wrote: >> > >> >> On Mar 13, 2012, at 1:44 AM, Anne van Kesteren wrote: >> >> >> >>> On Tue, 13 Mar 2012 01:32:18 +0100, Jon Lee <jonlee@apple.com> wrote: >> >>>> So by having the event listeners as part of the options dictionary, >> >>>> would it make sense, then, to remove the assignable attributes? >> >>>> Therefore, the only way to modify the listeners is through >> >>>> add/removeEventListener()? >> >>> >> >>> If we make the constructor queue a task, you could still assign event >> >>> listeners in the same task that created the constructor. >> >> I don't quite understand what this means. >> > >> > What Anne means is, if the constructor doesn't directly show but instead >> > queues a task to show, the task that called the constructor will run to >> > completion before the show task happens. So listeners attached with >> > addEventListener will work. For instance, >> > >> > var n = new Notification("title", "body"); >> > n.addEventListener("show", function(whatever) { blah; }); >> > >> > Both of these lines of code happen in one task, and showing the >> > notification happens in another task (after this run of the event loop >> > completes). >> >> I see; I didn't understand the notion of task. Ojan's original proposal >> included "onclick". Anne, are you arguing that we shouldn't include the >> event listeners in the options, and only allow them to be set after the >> constructor? >> >> Do others agree with this? Or is the fact that showing is a queued task >> somehow implied already elsewhere in the spec? I'm just beginning to >> familiarize myself with spec-ese terms. > > > Yes, it should be the case that show queues a task. That would allow you > to either set the listeners in the constructor or after the constructor in > the current task. > > I had trouble with that way of thinking too, which is why I was convinced > a separate show() method was better for the purpose of setting event > listeners. I still think it's more natural to pass them in the constructor > so that the author doesn't really have to think about tasks while > programming, but Notification should support the common EventTarget > interface as well. > >
Received on Tuesday, 13 March 2012 20:39:55 UTC