07:15
<annevk>
nox: should always be 1:1
07:20
<nox>
annevk: I mean null vs empty value.
07:21
<annevk>
nox: oh sorry
07:21
<annevk>
nox: I'm not sure
07:21
<annevk>
nox: maybe that would be nice, dunno
07:22
<annevk>
nox: seems like it might be tricky to represent it being the empty string then
07:33
<nox>
annevk: Is there actually any difference in how the two are handled or serialised?
07:33
<annevk>
nox: yeah, the difference is whether you see a ? in the URL
07:35
<nox>
Oh.
08:02
<zcorpan>
hello whatwg
08:03
<MikeSmith>
hola zcorpan
08:05
<Ms2ger>
Morning
13:48
<annevk>
Domenic: formatting in https://streams.spec.whatwg.org/#get-viewed-array-buffer seems wrong
14:52
<wanderview>
JakeA: previously you were telling me you thought e.respondWith() should not timeout the SW like waitUntil() does
14:53
<wanderview>
JakeA: what about if the script does e.respondWith(new Promise())... a promise that never resolves... how does chrome handle that?
14:58
<wanderview>
JakeA: of course, now I'm trying to remember why we wanted long running respondWith() anyway
15:46
<annevk>
Domenic: so the approach for Location seems to be to just define an object and override all the internal methods somehow
15:47
<Domenic>
annevk: that seems totally legit. It's an exotic object.
15:47
<Domenic>
annevk: would be implemented with a Proxy in self-hosted land
15:47
<annevk>
Domenic: however, is there some way to use the default behavior for an internal method from the overriding variant?
15:48
<Domenic>
annevk: yes, let me see if I can find some prose that does that.
15:48
<annevk>
Domenic: e.g. [[Delete]] does the ordinary [[Delete]] behavior for "same-origin", but simply throws otherwise
15:49
<Domenic>
annevk: well maybe there is an OrdinaryDelete etc.... here is how Array delegates to OrdinaryDefineOwnProperty: https://tc39.github.io/ecma262/#sec-array-exotic-objects-defineownproperty-p-desc
15:50
<Domenic>
annevk: it doesn't look like everything is factored to allow this though
15:50
<Domenic>
which is something we could in theory pull request to ES for
15:50
<annevk>
okay
15:50
<annevk>
that would make sense perhaps
15:51
<Domenic>
But it also seems legit to say something like "return the result of applying the [[GetOwnProperty]]() method for ordinary objects to O" or something
15:52
<annevk>
If "same-origin", then TODOOrdinaryDelete(this, P).
15:52
<annevk>
Hmm yeah, was wondering about that
15:52
<Domenic>
I'll open an issue
15:52
<Domenic>
Maybe Allen will have advice
15:52
<Domenic>
Or maybe he'll be like "yeah we should have factored them all out"
15:57
<annevk>
So next is the own properties... W should probably have a heading per thing. "set href" etc. However, maybe they shouldn't really be properties but just behave as such from the outside?
15:57
<Domenic>
Hmm, if you are redefining [[Set]]/[[Get]] then yeah, your object isn't going to have properties really
15:57
<annevk>
Especially with the "A Caller-Appropriate Cross-Origin Representation of a Method, Getter, or Setter" stuff defining properties directly seems kind of pointless since their behavior needs to be wrapped
15:58
<Domenic>
Yeah I think each of your internal method definitions is going to have some sort of lookup.
15:58
<Domenic>
If P is "href", return X. If P is "origin", return Y.
15:59
<Domenic>
Maybe use a table or a <ul class="switch"> or whatever
16:01
<Domenic>
annevk: an alternate idea approach for all this is that if there happens to be a real underlying object (or several), you can dispatch to it
16:02
<Domenic>
annevk: so "If flag X is set, throw. Otherwise, return SetPrototypeOf(targetObj, V)"
16:04
<annevk>
[[SetPrototypeOf]] always happens to throw
16:04
<annevk>
but yeah
16:04
<annevk>
that might be a tad more readable
16:06
<JakeA>
wanderview: I think respondWith should time out like regular requests do (unless there's a good reason to do something different?)
16:06
<wanderview>
JakeA: you mean timeout the network request, not the service worker lifetime timeout, right?
16:17
<Domenic>
annevk: yeah actually now that I think about it, you'll almost certainly need a few targetObjs to implement the caller-appropriate cross-origin representation thing.
16:17
<Domenic>
Otherwise you'll need some place to store the getter/setter function objects
16:17
<annevk>
Domenic: well yeah, my plan for that was to have a WeakMap
16:17
<Domenic>
Seems better to have a caller-appropriate cross-origin target object
16:17
<Domenic>
right
16:18
<annevk>
Domenic: I guess it could be an object on the other side of the WeakMap rather than a function...
16:18
<Domenic>
i guess i am just saying that the distinction between a WeakMap mapping callers to { hrefSet, hrefGet, originSet, originGet, ... } and a WeakMap mapping callers to CrossOriginLocation-esque objects is not big
16:19
<Domenic>
whichever is more convenient to spec I guess
16:19
<annevk>
In the hrefSet scenario those would simply be internal slots, right?
16:20
<Domenic>
internal slots of what?
16:20
<annevk>
of the Location object
16:20
<annevk>
and then when [[Get]] happens it would try to pull them out of the weakmap and if that fails wrap them and put them in the weakmap and then return them
16:21
<Domenic>
I still don't understand what internal slots you are talking about
16:21
<annevk>
Domenic: to describe Location.protocol et al
16:21
<Domenic>
annevk: can you give these slots a name and what object they live on please?
16:22
<annevk>
Domenic: I'm talking about the behavior of e.g. the protocol getter/setter, where that has to live
16:22
<Domenic>
annevk: so you need one getter/setter per caller right?
16:23
<Domenic>
(for some definition of "caller")
16:23
<annevk>
Domenic: per tuple of sorts, right
16:23
<annevk>
Domenic: though for cross-origin there's really only two: set href / replace
16:24
<Domenic>
So I see two possibilities: 1. let wm = this@[[AccessorWeakMap]]; 2. if wm has caller, let accessors = get caller from wm and return accessors.[[Get]]; 3. otherwise, create accessors, store, return.
16:24
<Domenic>
or
16:25
<Domenic>
1. let wm = this@[[RepresentationWeakMap]]; 2. if wm has caller, let obj = get caller from wm; 3. otherwise, let obj = new CrossOriginLocationRepresentation, and store it in wm; 4. return Get(obj, "origin")
16:26
<Domenic>
I tend to think the latter will work better
16:27
<Domenic>
If you go with the former though it probably won't be bad, just maybe a little messy, and we could refactor it into the latter if indeed it ends up isomorphic
16:30
<annevk>
Domenic: so since for Location it's only "href" and "replace" that are magical cross-origin, perhaps actually defining own properties and having some special behavior cross-origin with the WeakMap would be even simpler
16:31
<Domenic>
annevk: you can't define own properties once you've taken over the definition of [[Get]]/[[Set]]/[[DefineOwnProperty]]/et al.
16:31
<annevk>
Domenic: and "href" and "replace" and the cross-origin variants of them would simply invoke an abstract operation
16:31
<Domenic>
In other words proxies cannot have own properties
16:31
<annevk>
Domenic: oh, they cannot defer?
16:31
<annevk>
Domenic: okay
16:31
<Domenic>
They can defer to a different target object
16:31
<annevk>
Domenic: in that case defining a LocationBackend seems sensible
16:31
<Domenic>
And they can use the ordinary behavior
16:31
<Domenic>
Hmm actually
16:32
<Domenic>
How does Array length work
16:32
<Domenic>
I might be wrong
16:32
<Domenic>
Array length is defined like https://tc39.github.io/ecma262/#sec-properties-of-array-instances-length
16:32
<Ms2ger>
It doesn't
16:33
<Domenic>
Ah and then DefineOwnProperty handles that specially https://tc39.github.io/ecma262/#sec-array-exotic-objects-defineownproperty-p-desc
16:33
<Domenic>
So annevk I think your strategy is also valid
16:34
<Domenic>
But you'll need to have [[Get]]/etc. say "if P is not href or replace, do the ordinary thing"
16:36
<annevk>
Domenic: yeah, I was just thinking that; if you can defer to the ordinary thing, this should also work
18:32
<jsx>
Is XHR standardization now done at WHATWG completely (as opposed to at W3C)?
18:46
<Domenic>
jsx: yes. See https://wiki.whatwg.org/wiki/Fork_tracking
18:47
<Domenic>
We should probably add HTML there hrm
18:48
<jsx>
Ok, thanks.
18:50
<jsx>
"Confusion Persists"
18:55
<Domenic>
Why does the wiki always recaptcha me...
18:58
<gsnedders>
In case anyone going to Japan knows: http://travel.stackexchange.com/questions/57622/ana-domestic-carry-on-allowance-can-i-take-a-laptop-bag-as-well-as-a-rucksack
20:17
<annevk>
Domenic: made you an admin on the wiki, hope that helps
20:17
<annevk>
Domenic: if not, ping GPHemsley
20:51
<caitp>
regardless of whether or not it's possible to get rid of a vendor prefixed name for something at a specific point in time, what is the point in validating its existence in a spec document?
21:02
<Domenic>
What is the point of speccing any feature that web pages are using?
21:27
<jamesr>
what is the normative reference for one hand clapping?
21:35
<Dashiva>
One hand clapping is just an example, it has no normative status
21:43
<jgraham>
One hand clapping doesn't sound very informative
22:14
<MikeSmith>
gsnedders: in practice, you can carry both a laptop bag and rucksack on domestic flights in Japan. I don't know what the documented rules but if the rules say you can only have one bag, I can say that they are certainly not strict about enforcing that.
22:15
<MikeSmith>
gsnedders: and even in the case if they were to question you about it, it would not be confrontational/rude/matter-of-fact thing like what would happen in the US or some parts of Europe.
22:16
<MikeSmith>
gsnedders: If you just be human (nice) and ask nicely and treat other people like fellow humans here, it goes a long way. And people generally bend over backwards to be accomodating.
22:19
<MikeSmith>
gsnedders: and there is a saying in Japanese busines, お客様は神様です ("The customer is God.") which is not a joke, really. People in service jobs in Japan take that very seriously and take doing their jobs the right way (that is, actually helping people) very seriously no matter how menial anyone else might judge their jobs to be.
22:21
<MikeSmith>
gsnedders: in short, plan to take your rucksack and laptop bag on, and if there's any problem, plan for success at working with the airline staff to get it worked out without any drama
22:24
<MikeSmith>
caitp: documenting it so that all browser-engine implementors (current and future) are working from the same set of information, and there are no ambiguities, no undocumented lore that only those already in the know are aware of
23:33
<smaug____>
annevk: ping
23:33
<smaug____>
or perhaps JakeA
23:38
<MikeSmith>
smaug____: I reckon both are afk/asleep at this point (and you may be the only person here who keeps even weirder hours than me)
23:40
<smaug____>
hey, it isn't even 3am
23:40
smaug____
doesn't know where JakeA lives
23:44
<jgraham>
Speaking of weird hours I guess I should be asleep
23:44
<jgraham>
JakeA is in the UK I think
23:45
<boogyman>
that's where he resides, but he was in the US last week i believe.
23:45
<jgraham>
So who knows what state his body clock could be in
23:45
<jgraham>
Probably best to spam him once an hour ;)