2019-12-01 [12:01:31.0000] PiersW, gsnedders: Yeah, I'm always happy to talk about wpt and to visit Cambridge :) [12:02:34.0000] we're not the hardest audience, really. 2019-12-02 [23:29:33.0000] domfarolino: then I don't get why you're looking at the initiator for same-origin checks? [23:30:50.0000] jochen__: A request's referrer string and initiator (origin) can be cross-origin. And the definition of same-origin compares a request's URL with the initiator origin [23:31:19.0000] jochen__: (But chrome's impl compares a request's URL with the referrer string origin) [23:32:31.0000] but why would we care about the initiator? [23:32:45.0000] maybe the same-origin definition is not fitting the intend ? [23:34:51.0000] jochen__: I was just trying to align chrome's impl with the definition of same-origin (found in referrer-policy spec). It compares a request's origin with the current URL, and in implementation-land, I believe that is the same as comparing initiator (origin) and URL [23:36:46.0000] I think we can either change chrome's implementation to match the spec, or change the spec's definition of same-origin to compare instead of [23:38:02.0000] we should do the latter [23:39:39.0000] OK; feel free to mention that on the thread too. Just want to make sure there isn't any harm in doing that (privacy-wise maybe) [23:39:45.0000] cc yhirano [23:42:20.0000] does feel a little inconsistent that one spec's definition of a same-origin request is kinda different from others though. Maybe that's ok [23:47:57.0000] Domenic: FYI https://github.com/mdn/browser-compat-data/issues/5214 is about updating BCD to distinguish between legacy Edge and Blink-based Edge [23:49:59.0000] as I commented there, I think it would make the most sense to just create a new top-level "Edge (Blink-based)" browser in BCD, and add the new data under that (which is relatively simple because it can basically just all be copied from the existing Chrome data) [23:58:44.0000] domfarolino, jochen__: commented at https://github.com/w3c/webappsec-referrer-policy/issues/123 [05:11:17.0000] jgraham, gsnedders: you're welcome to come up whenever. We're an easy 15 minute walk from the station. I'd try to avoid a Wednesday as some people tend to work from home that day, but that could change if necessary. Probably best to DM? [05:17:09.0000] PiersW: what's your email, and I'll drop you a line later? [05:20:13.0000] piers⊙ec [06:32:28.0000] zcorpan, at 2019-05-31 11:29 UTC, MikeSmith said: when you have some time, I wanted to ask you about test cases [06:32:42.0000] MikeSmith: here now [06:34:00.0000] I noticed another html parser interop difference :-| [06:34:50.0000] :/ [06:36:43.0000] "If the parser was created as part of the HTML fragment parsing algorithm, then act as described in the "any other start tag" entry below. (fragment case)" [08:02:35.0000] Domenic: any concerns exposing MIMEParams as a ctor in https://bmeck.github.io/node-proposal-mime-api/ , seems like it should accept a round-trip able string is all? [08:04:26.0000] also unclear on how to handle URL percent encoding staring at the parser it doesn't have any flags so would decoding prior to piping through it be the right place? that would mean encoded `=` acts a bit odd though [09:29:45.0000] bradleymeck: I'm not sure that it's great to add the concept of "parameter string" separate from "serialized MIME type" [09:30:32.0000] Like right now there is no concept for what `foo=bar;baz=qux` is separate from `x/y;foo=bar;baz=qux`. And introducing a new concept with its own parser, serializer, etc. seems potentially problematic. [09:30:36.0000] it makes the API slightly more convenient since non-callable classes are not really a thing in, and URL params also exposes a string ctor [09:31:03.0000] part of the reason here is there appears to be a problem with URL percent encoding and MIME param parsing as well [09:31:22.0000] I think a constructor can exist without being overloaded to also take a string [09:31:24.0000] you likely want to flag decoding the params as it shouldn't happen before parsing the params due to encoding the = [09:31:27.0000] It should just behave like the Map() constructor. [09:31:37.0000] I don't think URL encoding should be involved here at all [09:31:45.0000] Just prohibit characters not in the list [09:32:19.0000] I'm a bit confused as URL encoding is quite intertwined with MIME params when you deal with data: [09:32:24.0000] i.e. parameter names must be HTTP token code points and parameter values must be HTTP quoted-string code points [09:32:29.0000] the list of prohibited characters doesn't really work [09:32:30.0000] data: is separate [09:32:43.0000] If you don't agree with the spec's prohibitions then you have more fundamental problems [09:32:47.0000] it is not as parsing URL percent encoding is involed in data MIME parsing [09:33:02.0000] its part of data, it isn't really about agreement [09:33:22.0000] the parser seems fine but gets all wonky and doesn't make sense when put inside a URL [09:33:23.0000] That isn't how the data: URL parser works. First it URL parses. Then it MIME type parses pieces of it. Only the first part involves URL encoding. [09:34:40.0000] so you are saying `text/plain;foo${encodeURIComponent('=')}bar${encodeURIComponent(',')}baz,` should have a body of `baz,` not ``? [09:35:08.0000] Is that a MIME type or a data URL? [09:35:50.0000] ah, prepend `data:` to that, so `data:text/plain;foo${encodeURIComponent('=')}bar${encodeURIComponent(',')}baz,` [09:35:58.0000] The answers are different in each case [09:36:50.0000] Well, I guess they are not, in both cases the URLs are not decoded [09:36:55.0000] https://jsdom.github.io/whatwg-url/#url=ZGF0YTp0ZXh0L3BsYWluO2ZvbyUzRGJhciUyQ2Jheiw=&base=YWJvdXQ6Ymxhbms= [09:37:05.0000] i'm trying to figure out an API that is usable for both, thats all. i don't really want to propose changes anywhere but the specs seem confusing here [09:38:28.0000] The MIME type string is `text/plain;foo%3Dbar%2Cbaz` which parses as just `text/plain` since the parameter named `foo%3Dbar%2Cbaz` gets thrown out [09:38:43.0000] the data: RFC pointed out using percent encoding for values outside of http quoted-string ranges so it just adds to this confusion a bit for me [09:38:57.0000] https://runkit.com/domenicdenicola/5de54c2c2340d00019ec9b51 [09:39:01.0000] Ignore the RFCs [09:40:17.0000] Use the reference implementations, at https://jsdom.github.io/whatwg-url/ and https://npm.runkit.com/whatwg-mimetype [09:40:27.0000] So e.g. your example data: URL is at https://jsdom.github.io/whatwg-url/#url=ZGF0YTp0ZXh0L3BsYWluO2ZvbyUzRGJhciUyQ2Jheiw=&base=YWJvdXQ6Ymxhbms= [09:40:49.0000] As you can see it has a path component of `text/plain;foo%3Dbar%2Cbaz,` [09:40:52.0000] Domenic: there appears to be issues with that ref impl though [09:40:53.0000] https://runkit.com/bmeck/5de54c621ede90001abf065e [09:41:06.0000] What's the issue? [09:41:08.0000] i've tried going step by step through the mimesniff spec [09:41:38.0000] That result looks correct to me [09:41:51.0000] it doesn't seem to deal with percent encoding anywhere that i can tell [09:41:57.0000] Correct [09:41:59.0000] like percent encoding is ignored for that part of the url [09:42:02.0000] Correct [09:42:06.0000] That is the correct behavior [09:42:13.0000] You seem to have been confused by some obsoleted RFCs [09:42:26.0000] and the current mimesniff / data url processor [09:42:30.0000] not just the RFCs [09:42:41.0000] the RFCs got brought up after the issue on fetch opened [09:42:54.0000] OK. Then where are you getting the idea that URL encoding should be involved? [09:44:29.0000] https://fetch.spec.whatwg.org/#data-urls , it takes a URL and serializes it , the URL would have already decoded stuff to my understanding, and re-encoding gets funky/wrong with some stuff [09:45:12.0000] bbiab [09:45:33.0000] The URL does not "already have decoded stuff" [09:45:46.0000] As seen from https://jsdom.github.io/whatwg-url/#url=ZGF0YTp0ZXh0L3BsYWluO2ZvbyUzRGJhciUyQ2Jheixmb28lM0RiYXIlMkNiYXo=&base=YWJvdXQ6Ymxhbms= [09:46:08.0000] I'll be back later too, getting lunch [10:02:58.0000] Domenic: then i'm just more confused as to how a URL is there if it isn't parsed/decoded already [10:04:59.0000] The URL parser does very little percent decoding itself (only for hosts and dots in paths really, iirc) [10:05:41.0000] A processor for a particular scheme could do more decoding, and the data: one does, but not for the MIME type [10:09:19.0000] i'm fine with either direction but feel some uneasiness with the tone of ignoring other places (e.g. the RFCs) that i often see here [10:11:51.0000] So the problem with some RFCs is that they aren't maintained and nobody wants to align with them. That's mainly why there's alternatives now, that are maintained (mostly). [10:12:37.0000] (Well, "nobody" is something like "nobody big enough that they need to interoperate with web content in the wild".) [10:14:30.0000] bradleymeck: as for your API sketch, if a MIME's mime is a MIME type, that'll also hold the parameters [10:14:42.0000] bradleymeck: also, I'd call the main class MIMEType [10:15:29.0000] bradleymeck: and there should be an essence getter on it [10:15:37.0000] annevk: yes, but if you expose an API for the params like URLSearchParams does it causes a separate object API [10:17:15.0000] This might lead to all kinds of issues though depending on how folks use these [10:19:43.0000] annevk: can you clarify/has this been discussed regarding URLSearchParams somewhere that I can read? [12:51:31.0000] annevk: Domenic: https://domspec.herokuapp.com/ has MDN annotations added to the DOM spec [12:52:24.0000] I’m still working on the patch for Bikeshed, but as far as the output goes, that’s what the patch will generate [12:52:48.0000] e.g., look around https://domspec.herokuapp.com/#dom-event-stoppropagation [12:52:50.0000] That's pretty sweet!! [12:55:22.0000] :) [12:57:24.0000] I’ll try to get Bikeshed PR raised for it this morning (I’ll otherwise be out all day from 10am to the evening my time) [13:15:10.0000] Oh dang, thanks MikeSmith! I wanted to get to it but between vacation and some higher-prio thing I haven't been able to! [13:15:28.0000] Hey TabAtkins! [13:15:45.0000] no worries — I had meant to get to it long before now [13:17:21.0000] TabAtkins: anyway, after I get the PR raised, you can make lots of time to review it :) [13:17:28.0000] yeah def [13:18:43.0000] if you have a good setup for doing profiling of Bikeshed, among the things I hope you can look at is the performance [13:19:11.0000] on my machine it increases the build time for the DOM spec from 15 seconds to 30 seconds.. [13:20:19.0000] I guess there is probably some costly thing I’m naively doing, or else maybe just general slowness of lxml, I dunno [13:20:54.0000] anyway, it will be nice if it’ll be possible to get that time reduced [13:23:50.0000] I wonder if anyone here happens to know current state of Safari's disagreement about how Page Visibility API works? – https://bugs.webkit.org/show_bug.cgi?id=116769 [13:24:00.0000] ( https://bugs.webkit.org/show_bug.cgi?id=151234 ) [13:40:48.0000] Yeah, I've got some good profiling scripts set up that I can run over the stuff. [13:41:12.0000] (The `bikeshed profile` command, tho it depends on some things installed that aren't immediately obvious.) [13:41:43.0000] More than likely it's something like you running selectors inside a loop or something. [13:44:19.0000] TabAtkins: yeah there are couple places that I suspect but I haven’t had time to look at yet 2019-12-03 [00:30:21.0000] annevk: Hey! npm@ asked me to ping you regarding https://github.com/whatwg/fetch/pull/955. Could you take another look? [06:36:32.0000] yoav: I should yes. I’m wondering if some of the actual timings should move as well as otherwise it remains a weird monkey patch [06:38:08.0000] annevk: without digging into specifics, the answer is probably yes, but I'd prefer if we could move things piece by piece [06:39:26.0000] I plan to rebase RT on Fetch early next year, but don't want to block npm@'s work on that [06:43:34.0000] yoav: yeah fair, I should be able to get to this tomorrow at the latest. Been out for a bit. [06:43:57.0000] Thank you! :) [07:30:35.0000] What is the ordering of authors on W3C specs? I looked a couple in webappsec and figured it was alphabetical by last name, then I looked at https://www.w3.org/TR/mediaqueries-4/ and seems otherwise [07:32:03.0000] I suspect it is at the whim of whoever last touched the file [07:32:28.0000] 👍 [09:06:02.0000] Former editors there looks to be in order of appearance [10:48:30.0000] annevk: did you want to land the user activation PR, or shall I pull it in? I believe all your comments were addressed. [11:23:41.0000] PiersW: are there any plans to open-source Flow? [11:49:20.0000] domfarolino: Not really. Need to pay the developers as we don't have a big corporation backing us. [11:50:03.0000] Gotcha 2019-12-04 [17:31:26.0000] The "79" version number in Edge means it’s based on Chromium 79, right? [17:32:02.0000] So can we assume that Microsoft plans to keep Edge version numbering in sync with Chrome version numbering? [17:33:00.0000] Or have Microsoft explicitly said anywhere that’s how they will be doing the version numbering? [20:52:32.0000] https://textslashplain.com/2019/08/08/livin-on-the-edge-dude-wheres-my-fix-redux/ comes close to stating that they intend to keep them in sync, but not quite [21:01:33.0000] Domenic: OK, thanks [21:04:46.0000] heh, may takeaway from reading that write-up is: To be unambiguous, Chrome and all Blink/Chromium-based browsers should just use the last part of the version number.. [21:04:56.0000] the part that is now 3983 [21:05:22.0000] so, Edge 3983 [21:05:28.0000] that’d be fun [02:51:02.0000] is there anything in any devtools that will give me the x and y coordinates of a the current position under the cursor? [03:10:15.0000] yes [03:10:17.0000] in Firefox [03:10:24.0000] ondras: how? [03:10:29.0000] devtools [03:10:31.0000] settings [03:10:38.0000] "toolbox buttons" [03:10:44.0000] "measure a portion of the page" [03:11:19.0000] /me tries it now [03:13:09.0000] ondras: perfect! [03:13:15.0000] exactly what I was looking for [03:13:19.0000] thanks much! [03:14:08.0000] np :) [07:37:25.0000] Domenic: long-term do you think tightening up the dfn for “intersects the viewport” would entail doing some sort of CSS box computation like Intersection Observer does for other things? [07:38:10.0000] domfarolino: maybe, it kind of depends on what that reviewer is asking for. Even IntersectionObserver just says something like "two boxes intersect" which is not significantly different from the existing definition for video. [07:41:17.0000] Gotcha [07:45:56.0000] Domenic: Also you’re right about the implementer interest for imagesrcset/imagesizes (sorry about that). Would filing a standards position issue have been the better approach? [07:46:33.0000] domfarolino: yeah probably; sometimes pinging works but standards-position is more likely to work. [08:06:56.0000] Oh geez I read your comment in my email, not realizing it was made _on_ the standards-positions issue. I see... 2019-12-05 [20:59:14.0000] annevk: Do you have any opinions on the last comment of https://github.com/whatwg/fetch/issues/966? [00:17:04.0000] yhirano: it seems fine to me, I wonder if we really need 2, but I guess theoretically it could be an attack vector so maybe that's good; I kinda prefer requiring h2 over that, but can live with provided there's solid test coverage [00:22:39.0000] annevk: Thanks. I'm not fully sure about the need for the new header too, but I think the new header is less confusing than requiring h2. [00:26:45.0000] yhirano: who suggested the new header? Security team? [00:27:33.0000] yhirano: are we effectively looking at two new headers or do we only want the preflight response to advertize it, similar to Access-Contor-Allow-Credentials? [00:27:46.0000] yhirano: Access-Control-Allow-Streams: true? [00:28:28.0000] annevk: none. I thought some participants wanted to restrict the feature for H2, which seemed unfortunate to me. [00:29:04.0000] annevk: If everyone agrees that the secure context restriction is enough, I'm happy to retract the new header. [00:31:07.0000] annevk: I'm fine with both (having one header on response, or having headers on both req and res). Maybe only on response is enough? [00:35:03.0000] yhirano: so the main reason to restrict to h2 is to avoid imposing new impl requirements on browsers with regards to chunked encoding [00:35:32.0000] yhirano: might be sunk cost for Chrome, but not sure that's the case for all involved, I thought it wasn't for Firefox [00:36:48.0000] yhirano: I hadn't considered that sending chunked encoding itself to a different origin is in effect a new attack vector, but given the required CORS preflight I'm kinda okay with not requiring an additional opt-in for that, especially as it's a normal HTTP request in pretty much all respects, except for not listing Content-Length [00:39:59.0000] annevk: Does @ddragana know Firefox's status for chunked encoding? [00:44:09.0000] yhirano: she would know for sure, yes, I can ask again [01:06:32.0000] annevk: Thank you. I'll add a comment on the thread. [01:06:46.0000] yhirano: so [01:07:02.0000] yhirano: we don't have it, but adding it is doable [01:07:10.0000] yhirano: secure contexts is a must though [01:07:30.0000] annevk: My understanding is: [01:07:41.0000] annevk: secure context is a must-have [01:08:30.0000] annevk: requiring h2 may be good for some user agents from implementation cost PoV, but at least one web dev expressed a concern from usability PoV [01:08:52.0000] annevk: adding a new header may be good from security PoV [01:09:12.0000] /me nods [01:09:38.0000] Though, I'm okay with saying that the existing CORS preflight is sufficient here [03:55:22.0000] littledan: heya, who would be best to ask questions about WebAssembly.Module? [03:55:46.0000] annevk: I can answer some, also Ms2ger and Luke [03:56:47.0000] littledan: I don't really understand how it's similar to SharedArrayBuffer, since it always copies the input bytes [03:57:06.0000] littledan: and it doesn't even accept SharedArrayBuffer as an argument currently [03:57:27.0000] yeah... I wasn't around when they made that decision. I believe it was so that it can be processed asynchronously, but I don't know why they didn't detach it instead [03:57:59.0000] I don't see why it couldn't accept a SAB, but I also don't understand the use case. I thought we were adding SAB support on a case-by-case basis when we were confident? [03:58:20.0000] the copy is created eagerly and then the compilation may happen in the background [03:58:35.0000] annevk: Are there any issues with the wording of the copy? [03:58:39.0000] littledan: maybe since they don't actually want to recompile? [03:58:57.0000] well, yeah, if it were a live, changing thing and expected to reflect that, that'd be pretty unworkable... [03:59:09.0000] littledan: the specification is clear, I'm trying to understand the space in light of the changes we're making around SharedArrayBuffer serialization [03:59:17.0000] do you have a reference for that? [04:00:20.0000] littledan: no, in a discussion with lth that came up, that maybe folks don't want to compile again and therefore don't want to allow messaging these things out of a process [04:00:58.0000] oh, there was a separate thing about serializing modules [04:01:09.0000] but some folks were saying they *would* want to recompile [04:01:17.0000] okay [04:01:47.0000] (Your understanding about allowing SharedArrayBuffer is correct btw, we'll gradually sprinkle [AllowShared] all over the place.) [04:02:08.0000] serializing modules is supported, see https://webassembly.github.io/spec/web-api/index.html#serialization [04:02:20.0000] not to storage, though (although that was originally planned) [04:02:34.0000] modules are much nicer than SAB here since the code can't mutate. Also, they've already had an async compile step [04:03:09.0000] I guess the real question is, should serializing these modules only work when serializing SAB works? [04:03:11.0000] I'm not sure what implementations do, whether they actually recompile or not. My memory was that, in the beginning, more folks than I expected were actually just serializing the Wasm bytecode [04:04:09.0000] I'll email you and Luke as a start if that's okay. [04:04:18.0000] hmm, I can imagine the reason for this restriction, yes [04:04:39.0000] if one origin's process is totally hosed, then you might not trust it to compile things [04:04:59.0000] OTOH, the browser could just decide to fall back to sharing the bytecode when going across sites [04:05:22.0000] this would make it more of a performance cliff than a security hole [04:05:50.0000] (Ms2ger would be a good person to cc in any email) [04:05:57.0000] Going across processes will always be a cliff of sorts I suspect (unless we make everything slower) [04:05:59.0000] Okay [04:06:13.0000] I'll copy Ms2ger on all my emails from now [04:06:15.0000] on [04:06:16.0000] yeah, this makes sense. I suspect there's no restriction needed here [04:06:19.0000] \o/ [04:11:57.0000] littledan: Ms2ger: ah, I think a thing I was missing is https://github.com/WebAssembly/threads/blob/master/proposals/threads/Overview.md#javascript-api-changes [04:12:27.0000] littledan: Ms2ger: that would certainly be a type of WebAssembly.Module type that needs similar restrictions [04:13:05.0000] isn't this implicit in WebIDL? [04:13:29.0000] err sorry I misread [04:14:09.0000] I don't see why we need this sort of option for WebAssembly.Module [04:14:33.0000] it's a bit backwards: Memory actually *creates* a SAB. Whereas Module's constructor consumes one [04:15:00.0000] Oh wait, that's WebAssembly.Memory [04:15:01.0000] I think we can just rely on WebIDL to check that no SAB is passed in, and then the result is always copied and sharable [04:15:15.0000] Can WebAssembly.Memory be serialized? [04:15:15.0000] (and this is the current specified semantics IIRC) [04:15:38.0000] Well currently it's restricted to be shared within an agent cluster [04:15:53.0000] And cannot be serialized to disk despite mostly being bytes [04:17:00.0000] right, we had a whole debate about serializing WebAssembly.Module to storage. IMO it only makes sense if people will actually store the compilation output, but this has all sorts of cases where it gets invalidated. Better to just store the bytecode and have good caching [04:17:23.0000] (it's a high-level, unreliable API, but IndexedDB support would've been as well, given all the cases where it would disappear) [04:17:52.0000] also it seemed like some engines were just going to store the bytecode anyway, when you serialize WebAssembly.Module, which defeats the whole purpose [04:19:39.0000] Here's the spec for serializing WebAssembly.Memory. It does what you'd probably expect https://github.com/WebAssembly/threads/blob/master/document/web-api/index.bs#L146 [04:20:18.0000] (looks like I wrote that) [04:22:38.0000] littledan: I see, so, you can create Memory from any kind of BufferSource, but you can only serialize if that BufferSource was SAB [04:22:54.0000] littledan: and then when you serialize, all SAB serialization restrictions automatically apply [04:23:57.0000] you can create a Module from any BufferSource, but the Memory constructor allocates the underlying ArrayBuffer [04:25:05.0000] when you use the "shared" option for Memory, it creates an SAB internally (which you can easily access), and that is subject to those serialization restrictions [04:25:18.0000] thanks for this review, btw [04:25:52.0000] littledan: okay, so you create Memory and based on options it either creates AB or SAB (I might not call the internal slot BufferSource in that case) [04:26:29.0000] I guess what WebAssembly.Module does doesn't matter so much then, indeed [04:27:10.0000] As by itself it's not an attack vector and the process isolation seems to be driven by non-security reasons [05:18:06.0000] annevk: Yeah, that's how I see it [05:20:06.0000] Cool, I'm glad this is layered even better than I expected and I think I mostly misunderstood WebAssembly.Module since I didn't know about the plans around WebAssembly.Memory [07:59:05.0000] nox: I'm looking at what's remaining of your script insertion work [07:59:43.0000] annevk: Remaining? [07:59:49.0000] Parts landed? :O [08:00:05.0000] nox: I think I have a slightly better handle on what I want out of it so maybe I can try to drive it to a conclusion [08:00:15.0000] nox: and also get Apple to weigh in [08:00:20.0000] annevk: Nice. Sorry for dropping the ball. [08:00:52.0000] nox: I really appreciate all the work you put into it thus far, looking over it again it seems we were extremely close [08:01:00.0000] or are, really [08:01:11.0000] Thanks! [08:44:45.0000] nox: so yeah, now I'm at what kind of mutation records should normalize() generate [08:44:49.0000] nox: meh [08:45:04.0000] but, progress [08:49:52.0000] Maybe it's not quite that bad [08:54:39.0000] annevk: Famous last words. :P [08:58:42.0000] annevk: Took a day off to go protest against pension system reform today, so I'll look at your PR tomorrow. :) [08:59:01.0000] nox: 👍🏻 [09:30:36.0000] annevk / Domenic: by my reading, the `crossorigin` attribute for `