06:19
<zcorpan>
Hmm, found a bug with the redirect script. Clicking Table of Contents redirects to indices.html#index
07:27
<tobie>
Can anyone enlighten me on the difference between these two things: https://gist.github.com/tobie/13840ae7dd7dae00ab498f5d55c82ca9?
07:29
<tobie>
What's the benefit of using a mixin over a partial in such cases?
07:30
<tobie>
What elements should editors consider when deciding between one or the other?
07:31
<annevk>
tobie: that should be a partial, but html-build is being annoying
07:31
<tobie>
annevk: Oh!
07:32
<tobie>
annevk: That was my impression too. Will add a note to this effect in mixins.
07:32
<annevk>
tobie: I might even just put it straight on Window actually when I have some time, it's all in the same spec anyway
07:32
<tobie>
I've seen that pattern elsewhere recently, hence the question
07:33
<tobie>
annevk: eg: https://gist.github.com/tobie/999f7d5bcc3a7767f75945ad683162bb
07:35
<annevk>
tobie: that's different
07:35
<annevk>
tobie: that's a mixin
07:36
<annevk>
tobie: that could use partial interface WindowOrWorkerGlobalScope though
07:36
<tobie>
yeah
07:36
<annevk>
tobie: for WindowOrWorkerGlobalScope we'll need partial mixins, not sure if you already identified that
07:37
<tobie>
annevk: yes.
07:44
<zcorpan>
annevk: https://github.com/whatwg/wattsi/issues/37 still applies?
07:46
<annevk>
zcorpan: oh maybe
07:46
<annevk>
zcorpan: yeah it does
07:46
<annevk>
zcorpan: when we made html.spec.whatwg.org cgi free we didn't fix wattsi
07:46
<annevk>
zcorpan: Domenic probably knows what to do
07:47
<zcorpan>
ok, I assigned the issue to him
07:48
<annevk>
I disabled the webhook for now
09:28
<tobie>
Interfaces vs mixins vs namespaces: https://user-images.githubusercontent.com/3392/29916512-4f6a5b98-8e3f-11e7-923d-6c465c6c2352.jpg
09:30
<annevk>
looks reasonable
09:55
<tobie>
good
10:05
<annevk>
JakeA: btw, can you make changes to https://github.com/whatwg/fetch/pull/523 as new commits?
10:05
<annevk>
JakeA: we can just squash & merge when landing
10:06
<JakeA>
annevk: ok. I was squashing as I went along because it was easier to deal with rebase conflicts. I've been trying to keep up with master
10:06
<JakeA>
but we can leave that until merge time
10:10
<annevk>
JakeA: I think it's fair to squash after a round of reviews, but for new feedback having separate commits makes it easy to see if the feedback got addressed
10:11
<JakeA>
annevk: gotcha
12:52
<TimothyGu>
question: is there any history behind "Please leave your sense of logic at the door, thanks!"? sounds like an inside joke or something that I havent' been able to figure out
12:54
<nox>
TimothyGu: The Web grew organically,
12:54
<gsnedders>
TimothyGu: much of the web platform being totally nonsensical and undesigned
12:54
<nox>
and sometimes make no sense.
12:54
<nox>
makes*
12:54
<TimothyGu>
ah okay, that
12:55
<gsnedders>
(it's been in the topic for idk how long, over a decade I'm pretty sure, back when most work in here was on HTML and trying to reverse engineer browser behaviour)
12:55
<TimothyGu>
thanks people
12:56
<Ms2ger>
Dates back to 2006 at least: https://krijnhoetmer.nl/irc-logs/whatwg/20061201
12:57
<gsnedders>
pretty sure it was here when I joined a month or two before that
12:57
<Ms2ger>
What were you then, ten years old?
12:57
<gsnedders>
something like that
12:59
<TimothyGu>
hm
12:59
<TimothyGu>
is Hixie not active in whatwg anymore?
13:00
<Ms2ger>
Hasn't been for a few years now, I think
13:00
<TimothyGu>
ok..
13:01
<TimothyGu>
i'm just looking over the irc channel stats lol
13:03
<gsnedders>
AFAIK he works on Flutter nowadays
13:12
<gsnedders>
so I'm calling Promise.resolve(promise) but promise.then seemingly never gets called? have I misudnerstood something?
13:14
<gsnedders>
like, even Promise.resolve(pending_promise).then(function(){alert(1);}); doesn't do anything
13:18
<wanderview>
Domenic: did I see you comment on a github issue about xhr not triggering an error event if the window is closed?
13:22
<Ms2ger>
(Two years, apparently)
13:25
<jgraham>
More than that I thought
13:25
<jgraham>
But maybe
13:25
<gsnedders>
nah, seems about right
13:25
<wanderview>
JakeA: do you know about my question above regarding XHR and window close? ^^^
13:25
<Ms2ger>
That's what the git history claims
13:26
<Ms2ger>
But I guess he was starting to disappear for a while before that
13:26
<gsnedders>
a long while before that
13:26
<wanderview>
JakeA: we have a bug about FF rejecting fetch() promises when the window is navigated, but apparently chrome doesn't reject in that case... wondering if chrome is following some xhr behavior, etc? https://bugzilla.mozilla.org/show_bug.cgi?id=1280189
13:26
<wanderview>
might be relevant for the abort spec PR
13:28
<gsnedders>
more completely, Promise.resolve(new Promise(function(){})).then(function(){console.log(1);}); returns a still pending promise
13:28
<gsnedders>
which isn't what I understood Promise.resolve to do with a promise as an argument?
13:28
<Ms2ger>
Doesn't it wait for microtasks?
13:29
<gsnedders>
it should still eventually resolve, then, though?
13:30
<JakeA>
wanderview: hmm, I'm not sure what the correct behaviour is here, but I agree we should spec it. I guess Firefox is performing https://fetch.spec.whatwg.org/#concept-fetch-group-terminate
13:34
<wanderview>
JakeA: not sure what the spec says, but it seems we may avoid doing the XHR event on navigation because we check to see if the window is still the current, active one: http://searchfox.org/mozilla-central/source/dom/xhr/XMLHttpRequestMainThread.cpp#1389
13:34
<wanderview>
promise rejection probably doesn't do that
13:35
<wanderview>
maybe we shouldn't reject a promise on an inactive window?
13:35
<benjamingr_>
As a user I would not expect a rejection here - I would expect cancellation flow
13:35
<benjamingr_>
I would expect it to behave exactly like aborting with an AbortController
13:35
<JakeA>
That would be an AbortError rejection
13:36
<wanderview>
which currently gets converted to a NetworkError by fetch API, right?
13:36
<JakeA>
If it goes through a service worker, yeah
13:36
<wanderview>
hmm
13:37
<wanderview>
right, I guess my glitch test showed AbortError
13:37
<wanderview>
for some reason I thought fetch() always rejected with NetworkError
13:37
<JakeA>
Nah, almost always TypeError
13:37
<JakeA>
but now AbortError :D
13:38
<JakeA>
(if it's an abort)
13:38
wanderview
is getting himself confused.
13:38
<benjamingr_>
I gave a short talk on why fetch is cool after people complained about the API not being as nice as axios for some stuff - I used `AbortController` as if it has been there forever and no one called my bluff :D
13:38
<JakeA>
But if something else aborts the connection, like the browser, should that show up as an abort?
13:38
<JakeA>
Because the dev didn't abort it, the browser did
13:39
<wanderview>
JakeA: in my glitch test I seem to get TypeError
13:39
<benjamingr_>
I think so, I also think that's what XHR does
13:39
<benjamingr_>
(in terms of showing to the user)
13:39
<JakeA>
As in, if the server aborts, that *doesn't* show up as an abort error
13:39
<JakeA>
that's just a connection failure
13:39
<benjamingr_>
If the server aborts that's different because the server closed the socket and not the client
13:39
<wanderview>
well, I mean... I just tried loading my glitch test and navigated away while it was running... saw a TypeError displayed briefly before the next page appeared
13:40
<JakeA>
But if the browser cuts you off, is that "Ahh yes, this is just an abort", or "wtf I was cut off"?
13:40
<wanderview>
I kind of think it should be an AbortError
13:40
<wanderview>
but I dunno
13:41
<benjamingr_>
If the browser cuts you off for navigation, I'd expect "Ahh yes, this is just an abort" but not if the server aborts it.
13:41
<benjamingr_>
The reason is that if I have my own single page app - this is the behavior I'd expect navigation to have
13:41
<JakeA>
benjamingr_: what if the user cuts you off by hittin the X in their browser?
13:49
<benjamingr_>
That's still an abort
13:50
<JakeA>
Ok, cheers!
13:50
<benjamingr_>
I'm just going off my intuition here - none of what I'm saying is backed up by anything other than my feeling about what I'd expect, by the way :D
13:57
<JakeA>
yeah, I'm still trying to figure it out
15:00
<wanderview>
JakeA: riddle me this... outer fetch() is intercepted, FetchEvent is dispatched on worker thread, outer fetch() is aborted while FetchEvent is being processed... what should happen?
15:00
<wanderview>
should the outer fetch() reject with AbortError immediately? or should it wait for the FetchEvent in some way?
15:01
<JakeA>
wanderview: immediate abort
15:02
<JakeA>
wanderview: the worker is like the network at this point. It may or may not abort, it may abort after some time, but as far as the page is concerned, it's aborted
15:02
<wanderview>
JakeA: what about a respondWith() called after that? does it silently just eat the response or does it reject or something?
15:03
<wanderview>
does it keep the SW alive?
15:03
<JakeA>
wanderview: silent I think. It may not keep the sw alive, but waitUntil should. fetchEvent.request.signal will have signalled abort
15:11
<wanderview>
JakeA: in theory we could let respondWith() still keep the SW alive and trust that the FetchEvent.request.signal would abort that promise in most cases
15:11
<JakeA>
wanderview: true, I'm fine with that
16:28
<Domenic>
annevk: with the new scripts wattsi should be updated each time, in theory
16:43
<annevk>
Domenic: cool, so I can remove the Webhook completely then
16:44
<Domenic>
ah, yep
16:44
<annevk>
done
16:45
<tobie>
currently, NoInterfaceObject interfaces have an interface prototype object. Do we need to keep something similar for mixins (for web compat reasons) or can we basically treat mixins as a purely IDL construct (similarly to partials)?
16:51
<tobie>
Answering my own question: "If the interface is used solely as a supplemental interface, then there will be no way to access its interface prototype object, since no object will have the interface prototype object as its internal [[Prototype]] property value. In such cases, it is an acceptable optimization for this object not to exist."
17:11
<tobie>
Mmm, it seems https://heycam.github.io/webidl/#es-constants says nothing about constants defined on consequential interfaces. It that by design or is that a mistake?
17:12
<tobie>
(For comparison, https://heycam.github.io/webidl/#es-attributes is explicit about this: "For each exposed attribute of the interface, whether it was declared on the interface itself or one of its consequential interfaces, […]"
17:13
<tobie>
Domenic: ^
17:15
<Domenic>
tobie: seems like an oversight, although maybe the intent was you can't declare constants on our current way of doing mixins
17:15
<tobie>
Domenic: some do declare constants (e.g. in WebGL)
17:15
<Domenic>
I see
17:15
<tobie>
Domenic: seems like an oversight, as operations is also missing this
17:16
<Domenic>
I mean maybe it's just a redundant clause
17:16
<tobie>
(again answering my own questions, I might be getting tired)
17:16
<tobie>
possibly. Would be good to be consistent.
17:16
<tobie>
Or better to move to a more imperative style.
17:55
<Domenic>
+1 imperative, as always
18:33
<gsnedders>
what are objects that define their own [[get]], [[set]], etc. called nowadays?
18:34
<gsnedders>
(or, rather, objects from WebIDL that do this)
18:58
<tobie>
gsnedders: https://heycam.github.io/webidl/#es-legacy-platform-objects ?
19:45
<gsnedders>
tobie: I guess I was thinking more something along the lines of what the ES spec used to call "host objects". Is there any term still defined in ES for such things?
19:58
<jsbell>
gsnedders: "exotic objects"
19:59
<jsbell>
semantics may not be identical, tho
19:59
<annevk>
Not quite the same, but new system has no place for host objects
19:59
<annevk>
All objects need to conform to the MOP
20:01
<tobie>
oh, yes, exotic objects. Defined here: https://tc39.github.io/ecma262/#sec-exotic-object
20:04
<tobie>
I need to distinguish "mixins included by interface A" from "mixins included by interface A and by inherited interfaces of A"
20:05
<tobie>
what can I call these knowing that the latter one is the one most commonly used across the spec? (Corresponds to the former "Consequential interfaces of A")
20:06
<TabAtkins>
"own interfaces"?
20:07
<tobie>
TabAtkins: "own mixins" would be for the former, right?
20:07
<TabAtkins>
yeah
20:07
<tobie>
TabAtkins: and you'd call the latter just "mixins of"
20:07
<TabAtkins>
yup
20:08
<tobie>
This is a lot more straightforward than consequential interfaces. I'm not sure it's acceptable.
20:09
<tobie>
WebIDL needs to be obscure and complicated, dammit!
20:09
<tobie>
That's super helpful, TabAtkins. Thanks.
20:12
<TabAtkins>
^_^
20:26
<gsnedders>
jsbell: ahhh, thx
20:26
<gsnedders>
annevk: yeah, I knew they'd been changed as part of the rename
22:39
<tobie>
Do callback interfaces support maplike and setlike declarations? The spec isn't clear about this.
23:02
<TabAtkins>
They shouldn't? They're just a legacy feature around callback functions.
23:02
<Domenic>
^ that