00:02
<jyasskin>
TabAtkins: I wonder if Bikeshed should automatically insert an "X depends on the Infra Standard" statement into specs it builds. Or have an easy way to produce that statement, since nearly all specs will do so.
00:02
<TabAtkins>
jyasskin: Reffing a term from Infra will insert it into the Index.
00:02
<TabAtkins>
And I think the biblio?
00:03
<jyasskin>
Yeah, but https://infra.spec.whatwg.org/#usage says to add one more sentence. Maybe that's unnecessary though given the references.
00:07
<Domenic>
The idea is that if you insert that sentence then all of https://infra.spec.whatwg.org/#conventions applies
00:08
<Domenic>
So then you don't need your own conformance section for example
02:11
<gsnedders>
UTF-16 pages need either a BOM or an HTTP header to work, right? Or have the undefined heuristics conclude they're UTF-16?
02:11
<Domenic>
<meta charset> seems like it'd work, and it's a more-or-less defined heuristic?
02:12
<gsnedders>
<meta charset> only works for ASCII-superset encodings
02:12
<gsnedders>
the undefined heuristic I meant is the "The user agent may attempt to autodetect the character encoding from applying frequency analysis or other algorithms to the data stream."
02:15
<gsnedders>
Domenic: for one, it'll never find the sequence of ASCII bytes "<meta"!
02:15
<gsnedders>
(well, I suppose it could, but that'd be something weird in UTF-16 :))
02:18
<Domenic>
Ah I see
02:19
<Domenic>
There's also <?xml sniffing but bz didn't want to specify what WebKit/Blink did last time I proposed it and didn't have any ideas for something better to specify. https://github.com/whatwg/html/pull/1752
02:25
<gsnedders>
Oh. Yeah. That.
02:45
<MikeSmith>
mkwst: can’t make this stuff up http://stackoverflow.com/questions/41818474/how-to-link-to-a-css-stylesheet-uploaded-on-a-ftp-server
02:45
<MikeSmith>
(from just today)
05:58
<annevk>
gsnedders: I think there is a default, utf-16 maps to utf-16le or be on the web
05:59
<annevk>
gsnedders: oh declare at all, hmm, yes, in theory, but there is still sniffing here and there
06:50
<rniwa>
annevk, Domenic: where are we adding type=module tests?
06:55
<annevk>
rniwa: I don't know about an agreed upon location
06:55
<annevk>
rniwa: http://w3c-test.org/html/semantics/scripting-1/the-script-element/ would make some sense to me (should at least have a forward pointer if not there)
06:55
<rniwa>
annevk: alright, i'm just add it to html/semantics/scripting-1/the-script-element
06:56
<rniwa>
annevk: ya
07:23
<annevk>
Domenic: Alex is not responding to my questions on the URL issues so I don't know
07:24
<annevk>
Domenic: I guess we have to wait for Alex
07:25
<slightlyoff>
Sorry, what'd I miss?
07:29
<annevk>
slightlyoff: heh, Christensen, not Russell
07:29
<annevk>
slightlyoff: different company too
07:35
<annevk>
rniwa: if you could have a quick look at https://github.com/w3c/web-platform-tests/pull/4541 that'd be great
07:37
<rniwa>
annevk: oh, lots of dup'ed code!
07:38
<annevk>
rniwa: okay, so then we should indeed ask him to rewrite
07:38
<rniwa>
annevk: yeah, it's really silly to duplicate the code to create a test tree for example
07:38
<rniwa>
annevk: that should be clearly shared
07:38
<rniwa>
annevk: i think duplicating assertions is okay
07:39
<rniwa>
annevk: because we don't want expected results to be the result of running some algorithm LOL
07:39
<annevk>
rniwa: add a quick comment?
07:39
<rniwa>
annevk: 'cause then we have to be testing that algorithm
07:39
<rniwa>
annevk: did
07:39
<annevk>
ta
07:40
<annevk>
I do write those sometimes, but the algorithms are somewhat straightforward
07:52
<annevk>
mathiasbynens: could you review https://github.com/whatwg/meta/issues/7#issuecomment-274599778 pretty please?
07:52
<annevk>
mathiasbynens: somehow I think you know all about .gitattributes
07:52
<rniwa>
annevk, Domenic: presumably nomodule should also prevent loading, right?
07:52
<annevk>
rniwa: yeah, there wouldn't be much point in fetching
07:53
<rniwa>
annevk: which part of https://github.com/whatwg/html/pull/2261/files says that?
07:53
<annevk>
rniwa: I guess you can test by setting a cookie and fetching it via some other means and see if the cook is set?
07:53
annevk
looks
07:53
<rniwa>
annevk: well, I can just check load events
07:55
<annevk>
rniwa: the paragraph at the end that's together with a note modifies "prepare a script" in a place before script fetching happens
07:56
<annevk>
rniwa: so if those conditions are met, no fetching would happen
07:56
<rniwa>
annevk: ah, okay
08:48
<mkwst>
MikeSmith: FWIW, I think it's a use-case worth breaking.
08:49
<mkwst>
annevk: I'm planning on sending you some patches to Fetch. I'm not sure how to write tests for either, since WPT doesn't seem to support either FTP or basic auth.
08:49
<mkwst>
But, you know, I'll work something out.
08:50
<annevk>
mkwst: basic auth you can implement right? there might already be some python scripts that do so
08:50
<annevk>
mkwst: FTP is indeed a rather interesting proposition, best to loop jgraham and gsnedders in on that one
08:51
<mkwst>
Yes, I'm sure I can work that out, I just didn't find anything that implemented it for me (nor is the automation part clear).
08:51
<annevk>
mkwst: did you look in the XMLHttpRequest dir as well?
08:51
<mkwst>
annevk: I did, in #testing. They said ¯\_(ツ)_/¯
08:51
<annevk>
good times
08:52
<annevk>
mkwst: I guess we can just use ftp://example.com/ and make sure the failure is reasonably fast? nearly as fast as rejecting ftp://test:test/ for instance?
08:53
<annevk>
mkwst: little icky of course to rely on timing, but...
08:53
<mkwst>
Point to a real FTP server?
08:54
<mkwst>
If we point to a server that doesn't exist, then the failure mode for the current behavior (network error) is the same as the success mode for the new behavior (network error).
08:54
<mkwst>
It just takes longer.
08:54
<mkwst>
Pointing to a real FTP server is icky. And Blink's test environment actually blocks the bots from making external connections, so.
08:55
<rniwa>
annevk, Domenic: https://github.com/w3c/web-platform-tests/pull/4611
08:55
<Ms2ger>
Same for Gecko
08:57
<annevk>
mkwst: yeah, so if a real server isn't an option, than doing a timing "attack" is a way to go, but icky
08:57
<mkwst>
Ok. *shrug* I'll play with it a bit to see what might make sense.
09:04
<annevk>
rniwa: cool, I'll let Domenic review those since he's more familiar with it
09:09
<rniwa>
annevk: ok
09:31
<mkwst>
Amusingly, it doesn't look like Blink's test server supports FTP either.
09:32
<annevk>
mkwst: that's a good security reason for removal
09:32
<MikeSmith>
mkwst: Yeah agreed about breaking that ftp use case
09:32
<annevk>
mkwst: complete removal, even
09:34
<mkwst>
annevk: Indeed.
09:36
<nox>
annevk: I'm currently looking at https://github.com/whatwg/html/issues/1698,
09:36
<nox>
annevk: does WebKit even prompt to unload, unload and abort the current document?
09:41
<annevk>
nox: sorry, no bandwidth for lifecycle questions
09:41
<nox>
Heh ok. :)
09:41
<annevk>
nox: my recommendation is to write many many tests covering all aspects and then figure out what everyone can agree on to move forward with
09:46
<annevk>
mkwst: btw, the other thing we need for the PRs is some positive noise from other vendors
09:46
<mkwst>
Yup. I'll poke folks.
09:46
<annevk>
mkwst: ta
09:58
<smaug>
https://fetch.spec.whatwg.org/#concept-bodyinit-extract
09:58
<smaug>
BufferSource part
09:59
<smaug>
apparently browsers do use "application/octet-stream" in some cases
10:02
<smaug>
at least with sendBeacond
10:02
<smaug>
Beacon
10:04
<annevk>
smaug: o_O
10:04
<annevk>
smaug: sendBeacon() should really not do more than HTML <form>
10:04
<annevk>
smaug: it violates the same-origin policy otherwise
10:04
<annevk>
smaug: since it doesn't use CORS at all apparently
10:07
<annevk>
smaug: that was fixed in https://github.com/w3c/beacon/commit/8a6fbdca25115aa5a66c32cfc37d4882384b3398 by Ilya
10:08
<annevk>
(not the greatest model, but I suppose it works)
10:09
<smaug>
annevk: it is just that baku is making some cleanups to BodyInit handling and we noticed that currently Gecko does use "application/octet-stream", and so does Blink
10:09
<smaug>
so it is unclear whether following the spec will break something
10:10
<annevk>
smaug: a Blob with an empty type defaults to that or some such?
10:10
<annevk>
smaug: does that result in a CORS preflight?
10:10
<smaug>
don't know about Blob
10:10
<smaug>
this is about ArrayBuffer/ArrayBufferView
10:11
smaug
tests Blob
10:11
<annevk>
smaug: okay, if that happens without preflight it would be a security issue
10:11
<annevk>
smaug: although maybe enshrined if both Chrome and Gecko do it :/
10:13
<smaug>
Blob sends no contentType
10:14
smaug
tries some cross-origin case
10:16
<smaug>
cross-origin arraybuffer* works the same way
10:31
<annevk>
I'm somewhat annoyed we let sendBeacon() happen, it didn't work out well
10:31
<annevk>
much churn and low adoption
10:31
<annevk>
and potentially some new holes (I believe Chrome still hasn't fixed some)
12:25
<tobie>
annevk: any idea why function objects exist (https://heycam.github.io/webidl/#dfn-function-object) and what makes them different from functions?
12:27
<annevk>
tobie: not really
12:27
<tobie>
annevk: darn.
12:27
<tobie>
Domenic: ^
12:28
<tobie>
annevk: thanks.
12:31
<nox>
tobie: Isn't it just what ES itself call these?
12:32
<tobie>
nox: maybe? In which case it wouldn't make any sense to define them in the WebIDL spec again.
12:33
<tobie>
nox: I'm actually trying to fix a bug you filed early last year
12:33
<annevk>
tobie: well, IDL duplicates a number of things so you have both an IDL concept thing and an ECMAScript thing, but I'm not sure if this is one of those
12:33
<nox>
tobie: About callback interfaces with an interface object?
12:33
<tobie>
annevk: it shouldn't be, it's in the bindings.
12:34
<nox>
tobie, annevk: https://tc39.github.io/ecma262/#sec-ecmascript-function-objects
12:35
<tobie>
nox: https://github.com/heycam/webidl/issues/78
12:35
<nox>
tobie: Can't believe I guessed that right. :P
12:36
<tobie>
nox: that's a sign you don't file enough bugs against WebIDL :P
12:36
<nox>
Mozlando meeting omg, I wasn't even working for Mozilla back then.
12:38
<tobie>
Oh, neat, irccloud just added how long ago someone was active in the nick autocomplete.
12:40
<tobie>
nox: I'm trying to parse the last 2 paragraphs of https://heycam.github.io/webidl/#interface-object
12:41
<nox>
tobie: What about them?
12:41
<tobie>
sorry, last three.
12:42
<tobie>
nox: non-callback interfaces are function objects
12:43
<nox>
tobie: Yes.
12:43
<nox>
tobie: The ticket you linked is about callback interface objects.
12:43
<tobie>
nox: yes, that's right below
12:44
<tobie>
nox: The internal [[Prototype]] property of an interface object for a callback interface must be the Function.prototype object.
12:44
<nox>
tobie: I think that's new,
12:44
<nox>
and that that was done for my ticket,
12:44
<tobie>
nox: which makes it a function, no?
12:44
<nox>
but my ticket was left open or something.
12:44
<tobie>
nox: but then the note says: Remember that interface objects for callback interfaces only exist if they have constants declared on them; when they do exist, they are not function objects.
12:45
<nox>
Mmh.
12:45
<tobie>
My feeling exactly.
12:45
<tobie>
Also: typeof NodeFilter => "function" in FF & Chrome
12:47
<nox>
tobie: https://github.com/heycam/webidl/commit/6b0eb63d6cba3ff1f90f4ef3e733749ff51751a0
12:48
<tobie>
alright, so I guess we just need to cleanup some of the surrounding notes.
12:48
<tobie>
nox: thanks
13:03
<annevk>
JakeA: should we prepare anything for later today? I'm thinking just saying hi and listening to what folks have to say
13:04
<JakeA>
annevk: I wasn't going to do much more than make sure the thread's in my head
13:05
<JakeA>
annevk: As far as I can tell it's "people who absolutely think the fetch should be externally abortable, else it's a no better than XHR" -vs- "people who think the fetch should only be internally abortable, else it's no better than XHR"
13:05
<JakeA>
Both groups are strongly opinionated, and people are doing to be disappointed with whatever outcome
13:09
<annevk>
JakeA: I'm not sure what those two variants would mean
13:09
<annevk>
JakeA: that's something I'm afraid of, that we don't have enough common language on this subject for people to understand each other
13:10
<JakeA>
annevk: if I pass you the result of fetch(url), should you be able to control its priority & abort it, or do only I get to do that, because I started the fetch?
13:10
<JakeA>
That seems to be one of the fundamental disagreements
13:11
<annevk>
JakeA: okay, that's clear
13:13
<ondras>
what improvement over XHR do I get with a tool that is not externally abortable?
13:17
<annevk>
ondras: you can still hand someone the "internal" abortion tool
13:17
<ondras>
ah
13:17
<ondras>
so just a terminology
13:18
<ondras>
or, well, you do not exactly pass the fetch around
13:18
<ondras>
and the result of fetch() is just a promise
13:19
<ondras>
so there really is no surface for a truly external abortion, imho
13:19
<annevk>
ondras: we could subclass the promise
13:20
<ondras>
would a subclassed promise be externally abortable? sounds very inconsistent with the existing promise resolution policy
13:22
<annevk>
There's no reason it couldn't be
13:30
<ondras>
annevk: consistency reason? offering fulfill/reject only to the creator, but abort to consumer?
13:32
<JakeA>
ondras: that's the argument. Although I don't know if it's all that bad that fetch promises are different
13:32
<JakeA>
I mean, once you've got the request, the consumer can consume it
13:32
<JakeA>
and that's seen by other consumers
13:40
<tobie>
Do we have cases where there is a NamedConstructor but no Constructor?
13:41
<tobie>
Mmm. nm.
13:42
<Ms2ger>
Yes
13:42
<Ms2ger>
All three of them
13:42
<ondras>
JakeA: I am not sure I follow the example/argument with "consumer consumering stuff seen by other consumers"
13:46
<JakeA>
ondras: const p = fetch(url); p.then(r => r.json()); p.then(r => r.json()); The second .json call will fail
13:52
<annevk>
JakeA: do you know what https://github.com/whatwg/fetch/issues/447#issuecomment-273633060 is proposing?
13:52
<annevk>
JakeA: looking at bluebird there's no external cancel/abort API as far as I can see
13:52
<tobie>
Ms2ger: ta
13:52
<annevk>
JakeA: or am I missing something?
13:53
<annevk>
JakeA: I am, http://bluebirdjs.com/docs/api/cancel.html
13:53
<annevk>
JakeA: okay, so Netflix folks would prefer some form of subclassing, jan-ivar and others are leaning more towards controller/observer patterns
13:54
<annevk>
JakeA: I'm personally on the fence
13:55
<JakeA>
annevk: Yep, and both groups are absolutely certain they're right :D
13:56
<tobie>
Can someone running Edge tell me what the result of running NodeFilter.prototype; is?
13:56
<tobie>
Pretty please.
13:57
<JakeA>
annevk: I'm on the fence too. Separating the controller & observer makes sense as you can pass on the observer without giving control. Eg, the service worker should only get the observer.
13:57
<annevk>
tobie: undefined in Edge 13
13:57
<tobie>
annevk: ty
13:57
<ondras>
JakeA: aha, interesting. I would say that both .json() calls shall return the same value.
13:58
<ondras>
but I obviously never tried doing so
13:58
<tobie>
annevk: so only chromium is weird.
13:58
<JakeA>
ondras: that means the value has to be buffered forever, which is a problem if the response is a 1gb video
13:58
<JakeA>
ondras: https://jakearchibald.com/2014/reading-responses/
13:59
<annevk>
tobie: also undefined in Edge 14
14:00
<annevk>
JakeA: do you know Tim O'Ryan btw? I never heard back from them?
14:01
<JakeA>
annevk: I don't :(
14:03
<ondras>
JakeA: okay, I see. but still, the part of the fetch transation whose state is modified by the consumer is the response. And you do not want to abort the response, but the request, right?
14:03
<tobie>
foolip: I'm cleaning up the WebIDL spec for NodeFilter.
14:03
<JakeA>
ondras: correct
14:04
<tobie>
foolip: realized Chromium still has a weird prototype defined on it.
14:04
<tobie>
foolip: all the other browsers have none defined.
14:05
<tobie>
foolip: do you want me to file a bug against this?
14:06
<tobie>
foolip: or is https://bugs.chromium.org/p/chromium/issues/detail?id=591919 where you're tracking it.
14:06
<annevk>
tobie: we also want to turn these into "legacy interface callback" at some point I think
14:07
<tobie>
annevk: yes, I've built that into my PR.
14:07
<annevk>
tobie: will you file downstream issues/PRs too?
14:08
<tobie>
annevk: oh, you want a syntax change too.
14:09
<annevk>
tobie: kinda, but calling it out as legacy is a good first step
14:09
<annevk>
tobie: not having it in the syntax still encourages copy-and-pasting unfortunately
14:11
<tobie>
annevk: how any callback interfaces do we have which don't have constants?
14:11
<annevk>
tobie: the goal is to turn IDL into something where when you ignore things prefixed with legacy, it's likely you'll do the right thing
14:11
<annevk>
tobie: number of callback interfaces - 1
14:11
<annevk>
(I don't really know)
14:12
<tobie>
annevk: OK, I was just wondering if there were going out too at some point, but it appears not, right?
14:13
<annevk>
tobie: I'm not sure what you mean?
14:14
<tobie>
annevk: the only ones we want deprecated are the NodeFilter kind.
14:14
<tobie>
annevk: correct?
14:14
<annevk>
tobie: no all of them
14:14
<tobie>
annevk: oh really?
14:14
<annevk>
tobie: future is plain callbacks or promises
14:15
<tobie>
annevk: good thing I asked. I was assuming otherwise.
14:27
<wanderview>
annevk: I now face the most difficult of challenges... getting google hangouts to work on my machine
14:27
<annevk>
wanderview: oh my, I hope my setup actually works
14:28
<wanderview>
annevk: I can use my laptop which works... but no matter how many times I try to install the plugin on my windows machine it never recognizes
14:28
<annevk>
wanderview: I do remember hitting some issue the last time around, will be a short meeting for me if that happens again
14:28
<Ms2ger>
Don't we have webrtc now?
14:29
<annevk>
Actually, I think my phone is guaranteed to work if there are no network issues, so I should be somewhat good
14:29
<annevk>
Ms2ger: always the troll
14:38
<gsnedders>
anyone happen to know what int type Opera/Presto used for CSS percentages?
14:45
<wanderview>
annevk: is there a document describing the current proposals on the table for the meeting?
14:46
<wanderview>
so I can refresh my memory before joining the call
14:51
<annevk>
wanderview: https://github.com/whatwg/fetch/issues/447
14:51
<botie>
well, https://github.com/whatwg/fetch/issues/447 is already long again
14:51
<wanderview>
annevk: yea... I was hoping for a summary of "latest best ideas"... but its ok
14:51
<wanderview>
I guess JakeA's final posts kind of do that
14:52
<annevk>
wanderview: yeah, I think all ideas floated so far apart from tokens are still possible
14:53
<JakeA>
I'll update the post after the meeting
14:53
<annevk>
let's see if Hangouts works on my laptop
15:57
<JakeA>
annevk: thanks for organising that
15:59
<annevk>
JakeA: thanks for writing the summary :-)
18:09
<annevk>
JakeA: just listened to HTTP 203, guess the meeting was timely considering your Q1 goals
18:12
<JakeA>
annevk: we're recording another on Thursday so will be able to talk about the results
19:36
<annevk>
Domenic: https://github.com/whatwg/dom is back to 99.9% HTML \o/
19:48
<Domenic>
Haha nice
19:48
<Domenic>
Oh shoot I forgot to read this channel this morning
19:50
<tobie>
Domenic: the interface object rabbit hole took me to https://github.com/heycam/webidl/issues/281
19:50
<tobie>
Domenic: Thoughts as to how to fix that?
19:50
<Domenic>
Hold your horses I'm only up to 4am
19:50
<Domenic>
;)
19:54
<Domenic>
tobie: I guess just don't add things to an interface prototype object if there is no interface prototype object?
19:55
<tobie>
Domenic: yeah. Let me rephrase that. Rewriting the interface objects using a more modern style
19:55
<tobie>
Domenic: I was wondering whether I should include setting the constants in them
19:55
<Domenic>
Ah!
19:56
<Domenic>
That sounds great, although, it seems important to be sure that the "spec code" for setting constants is a "function" that you call twice, one for interface and once for interface prototype object (if applicable)
19:56
<Domenic>
https://heycam.github.io/webidl/#es-constants
19:57
<Domenic>
"The location of the property is determined as follows:"
19:57
<Domenic>
I wonder if the two complicated cases even exist on the platform
19:57
<Domenic>
I think for now maybe just preserve them
19:57
<Domenic>
But as a follow-up consider removing them from the spec and adding restrictions (e.g., constants cannot be used on [Global]s or consequential interfaces of [Global]s) to prohibit them
19:59
<Domenic>
Constants are also legacy IMO
19:59
<annevk>
Yup
19:59
<annevk>
String enums
19:59
<annevk>
ftw
20:00
<tobie>
Do we *not* have any on [Global]s or consequential interfaces of [Global] at this point?
20:01
<wanderview>
JakeA: annevk: this github issue makes me sad... maybe we should have an easier way for sites to pre-cache requests so they can be safely used for navigations (redirects causing issue here) https://github.com/GoogleChrome/sw-precache/issues/220
20:02
<annevk>
tobie: EventTarget
20:03
<annevk>
tobie: oh no, hmm
20:03
<annevk>
tobie: there's a chance globals might not have constants
20:12
<tobie>
Domenic: so I had some further questions, but they required me to show you the legacy callback interface object creation algorithm, but I just borked my stash, so that'll have to wait.
20:12
<Domenic>
:(
20:18
<tobie>
Domenic: fixed.
20:18
<tobie>
Domenic: https://gist.github.com/tobie/54473a62c7f6984c3ada862e8cb68c96
20:19
<Domenic>
tobie: looks excellent
20:21
<tobie>
Domenic: so should "create a legacy callback interface object" also set the constants?
20:22
<Domenic>
tobie: yes, in theory. But doing that in a way that factors out constant-creation so all places that create constants use it seems a little tricky. I would do what you have as a first PR.
20:22
<tobie>
Domenic: cool
20:22
<Domenic>
It's not too tricky, but there's no reason to couple it.
20:22
<tobie>
yeah, it's the coupling I wasn't to sure about.
20:22
<tobie>
There's already a lot going here.
20:23
<Domenic>
annevk: tests for https://github.com/whatwg/url/pull/216 are coming at some point I assume?
20:25
<annevk>
Domenic: hmm I think I wrote tests already
20:26
<annevk>
Domenic: maybe I forgot to create a PR, there's a commit linked from the issue
20:26
annevk
looks
20:27
<annevk>
yup, fixed
20:29
<Domenic>
Hmm whatwg-url already passes them, let's see what the deal is
21:11
<tobie>
Domenic, annevk: what's the best practice for setting variables in algorithm to the result of if..else clauses?
21:12
<Domenic>
Meh, there are lots of options, kind of depends on how long hte computation process is
21:12
<Domenic>
Lemme create a gist
21:12
<tobie>
if: 3 steps otherwise: 1 step
21:13
<tobie>
Domenic: should it go in infra?
21:13
<Domenic>
Not sure...
21:13
<Domenic>
What is the 1 step?
21:15
<Domenic>
Here are the most obvious patterns https://gist.github.com/domenic/b621f2c538ddd1b1dc288ce7a56032e5
21:16
<tobie>
Oh, you do it nicely like that, making sure to define the variable first. Cool.
21:16
<tobie>
Thanks
22:34
<tobie>
Domenic: if feels weird that no [[HasInstance]] is defined for named constructors
22:35
<tobie>
Domenic: am I missing something?
22:36
<tobie>
Domenic: I'm getting both `new Image() instanceof HTMLImageElement` and `new Image() instanceof Image` return `true` in FF and Chrome.
22:36
<tobie>
Domenic: is that because of some kind of UA magic?
22:42
<tobie>
Domenic: filed https://github.com/heycam/webidl/issues/282
22:52
<jsbell>
Just don't try `document createElement('img') instanceof Image`
22:58
<tobie>
jsbell: document createElement('img') instanceof HTMLImageElement is just as bad.
22:59
<tobie>
jsbell: oh no, it isn't
22:59
<tobie>
jsbell: that's mind boggling.
23:01
<tobie>
Domenic: sorry. :-/