| 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 ;) |