2018-09-01 [19:53:40.0000] annevk: did there used to be a concept-request-context? [20:18:59.0000] Ah, seems that it was the old request-destination [08:47:36.0000] Would you people be against patching tests which use named properties on Window (e.g. the getter that relies on id and name content attributes) so they explicitly call getElementById etc? [08:47:50.0000] We have various tests failing in Servo because of that, the tests ultimately time out and that takes time. [08:53:59.0000] nox: yeah, I’d rather not have that effect blame and potential coverage [08:54:43.0000] annevk: I'm not sure if that's a yes or a no, and even if you reply with yes or no my question was formulated in such a convoluted way I'm not sure you are against me making the changes or not. :P [08:56:39.0000] nox: against change [08:56:50.0000] annevk: Ok fair enough. [08:57:26.0000] annevk: Unrelated, can I mark http://w3c-test.org/css/css-transitions/transitions-animatable-properties-01.html as timeout=long? [08:57:58.0000] It times out in Servo, which is no good reason to do it, but it seems to time out elsewhere too (just tried on Safari and Firefox). [08:58:40.0000] (The indentation is so wild in that file hah.) [09:03:50.0000] annevk: https://github.com/servo/servo/blob/master/tests/wpt/web-platform-tests/css/css-values/support/vh_not_refreshing_on_chrome_iframe.html#L81-L89 What about this kind of test, where it uses both the named getter *and* getElementById for the same element? [09:06:40.0000] I’d rather not have unneeded changes; the timeout one sounds reasonable though [09:06:46.0000] annevk: Ack. 2018-09-03 [10:52:22.0000] Hm.. today I learned that sessionStorage is limited to a single tab. I've always treated it like a best-practice alternative to session cookies that are only needed within JS, and strongly preferring it over localStorage due to lack of TTL and due to iteration/lazy-garage collection being very I/O expensive on mobile. [10:52:34.0000] But it looks like I got it all wrong. [13:45:49.0000] do any browsers implement queueMicrotask [13:51:51.0000] I don't even see it in mdn [13:59:25.0000] devsnek: https://crbug.com/864900 if you wanna be updated [14:00:05.0000] TimothyGu: is there any precedence for moving an api from whatwg to ecma262 [14:01:03.0000] devsnek: I don't think so though TypedArray was initially standardized through Khronos IIRC. In this case it wouldn't make too much sense to keep the name as "microtask" isn't defined in ECMA-262 [14:01:18.0000] we can rename job to microtask ez [14:02:00.0000] ...good luck [14:03:01.0000] lel [14:03:29.0000] in the big picture, it does seem like something 262 is missing out on [14:04:54.0000] devsnek: what are you gonna do with ScriptJob if you rename Job to microtask [14:05:05.0000] ScriptMicrotask [14:05:18.0000] ScriptTask [14:05:20.0000] but what is a microtask if there isn't the concept of a task [14:05:26.0000] in 262 [14:05:48.0000] leave the name bikeshedding to the committee 2018-09-04 [18:51:45.0000] 262 is not a good place for event loop APIs. The current job infrastructure is terribly broken due to lack of desire to engage with realistic execution environments like the browser and node. The committee is specifically uninterested in getting this right. [18:52:00.0000] queueMicrotask is in Chrome and Safari masters, I believe [19:00:14.0000] Hmm maybe stalled in Chrome :-/ [19:10:36.0000] i think i'm going to pr it to node then [19:50:13.0000] Domenic: wait that PR to fix jobs is stalled in committee? [19:59:49.0000] i really want that pr to land [19:59:58.0000] i have this stupid RunJobs thing sitting around in engine262 but i don't use it [20:34:56.0000] annevk: well, it was when i first pushed it; haven't tried recently [01:03:01.0000] is there a way for Web content to see what file name the browser parsed out of a Content-Disposition header? [03:49:00.0000] hsivonen: not seeing anything in https://html.spec.whatwg.org/multipage/links.html#downloading-resources:as-a-download-2 at least that would cause it to be exposed somehow [04:38:45.0000] annevk: So I was looking at Window's getters, [04:38:55.0000] annevk: did the indexed one become prose somewhere outside the IDL definition? [04:55:29.0000] nox: it's part of WindowProxy per impl feedback from Fx and maybe others [04:55:43.0000] Ok! [04:56:14.0000] nox: this was changed whenever we defined WindowProxy properly, which I think is quite a while ago now [05:01:19.0000] Yeah, certainly years [05:40:15.0000] ugh [06:40:49.0000] Oh, they back. [08:11:11.0000] We may need to stay +r forever? :-/ [08:13:56.0000] That's requiring registered accounts? I think that's okay [08:14:10.0000] I've done something similar for #content on Mozilla IRC [08:16:03.0000] It definitely feels less friendly. We'd need to update https://whatwg.org/irc at least. I didn't register for a long time, and then only because I wanted to get Domenic-with-no-underscores. [08:25:38.0000] https://github.com/whatwg/meta/issues/108 [08:52:07.0000] I thought Freenode now requires registered accounts for all channels [08:54:16.0000] recently when I restarted botie and tried to rejoin, I got a message from Freenode saying the nick needed to be registered [09:42:29.0000] MikeSmith: it has at a few times temporarily when the spam has been at its worst 2018-09-05 [23:34:49.0000] MikeSmith: thanks [06:35:54.0000] annevk: I wonder if it would be possible to spec a test interface that WPT could use to verify things like "protected worker" blocking GC-triggered shutdown of a worker [06:36:08.0000] since we make it so hard to observe its difficult to construct a test with just the public APIs [06:54:12.0000] wanderview: wouldn't that just test that interface? seems to me that kind of test should be outside wpt [06:55:12.0000] zcorpan: well, when we add new things to the "protected worker" case, the test interface would not change... so we could in fact test that the new conditions are being met [06:55:19.0000] but yes, it depends on the infrastructure being correct [08:26:18.0000] wanderview: in theory that should be possible at least, but depends on webdriver integration and interest in making it happen [08:26:43.0000] As you already concluded 😊 [08:29:45.0000] it just seems if we care about making GC not-observable, we should have a way of writing tests to verify that [08:46:58.0000] It doesn't depend on WebDriver [08:47:04.0000] Or at least doesn't have to [08:47:49.0000] Some specs like WebUSB define testing interfaces which are DOM APIs only exposed when a test configuration is active [08:48:12.0000] WebDriver support has a considerable advantage in that it allows developers of webapps to perform the same kind of testing [10:09:44.0000] Domenic: why can't lock names start with a hyphen [12:07:34.0000] devsnek: is this about web locks? I dunno, jsbell is the person to ask there [12:08:08.0000] Domenic: kk [12:08:21.0000] also i'm working on asyncIterator on ReadableStream [12:08:29.0000] gonna just open a new pr [12:09:42.0000] Oh awesome, ok, thanks good sir. 2018-09-06 [18:19:12.0000] annevk: is https://github.com/web-platform-tests/wpt/blob/master/xhr/open-url-multi-window-4.htm a legit test? The referenced pull request was closed without being merged, no browser other than Safari passes it, and it times out (like Firefox) when I fix https://crbug.com/879620 [18:21:09.0000] In particular I don't think the test for `error` event is kosher, as discard a Document aborts the document, and should only fire `abort` event [18:24:55.0000] (by "it" times out, I mean Chrome times out when I fix the linked bug, which is what Firefox currently does) [20:15:17.0000] TimothyGu: some xhr tests are really old and could prolly use a fresh look [20:16:09.0000] TimothyGu: I can take look later [20:16:21.0000] annevk: that'd be appreciated, thanks [20:29:30.0000] annevk: the main issue here seems to be that in Chrome and Firefox, XMLHttpRequest objects in an inactive document go "dead" and will not fire any events, period. not sure if that behavior is spec'd anywhere though [20:41:26.0000] TimothyGu: xhr does spec a fully active check iirc [20:41:54.0000] TimothyGu: the weird thing is that we don’t have it for similar APIs [20:41:54.0000] annevk: it's only in open() though [20:42:07.0000] True [20:42:20.0000] from the impl side it looks like it should really be in fetch [20:42:34.0000] (by impl I mean Blink and probably WebKit and Gecko) [20:43:33.0000] And what does the caller get? Network error? [20:43:50.0000] probably? [20:44:16.0000] Given that’s async it could change over time too [20:44:21.0000] either that or an aborted request [20:44:47.0000] But I guess we terminate fetches when docs go inactive [20:45:13.0000] Fetch groups are still poorly specced unfortunately [20:45:28.0000] :( [20:45:41.0000] have you looked at the test yet? [20:45:57.0000] it's sort-of blocking my work on Chromium making the abort event async [20:46:27.0000] Stuck with my phone and a baby; I cannot take a good look for another couple hours [20:46:39.0000] I guess I can peek at the source [20:46:49.0000] ah. it's not too terribly huge [20:47:15.0000] the resources/init.htm file just calls top.init() when loaded, nothing spectacular [20:48:17.0000] anyway I'll sleep soon and won't get to this until tomorrow, so feel free to take your time. [20:48:57.0000] TimothyGu: so this depends on unspecced stuff [20:49:21.0000] TimothyGu: how exactly canceling a fetch group looks [20:50:18.0000] TimothyGu: if error events this would make sense, but dunno what would be best and what compat allows for [20:50:40.0000] s/looks/functions/ [20:51:57.0000] So Safari is the only one that does error events, per wpt.fyi (Edge result is missing though). A reasonable guess is that they only implemented that in order to fix this specific test. [20:54:24.0000] Yeah [20:55:28.0000] I guess the question is, when a doc goes inactive, how do all fetchy things behave today and does that match what we think is good [20:56:21.0000] Not firing events seems weird, but if you want to stop running code in a closed tab makes sense [20:57:46.0000] bz would probably be a person to talk to. And also this has implication on salvageability too [20:59:23.0000] Yeah [21:00:16.0000] anyway, for the purpose of implementing the abort event timing correctly in Chrome, I'll just change the expectation to time out instead of failing [21:17:32.0000] sgtm [21:31:04.0000] annevk: yt? [21:36:27.0000] smaug____: yt? [23:33:33.0000] smaug____: ping? [23:45:17.0000] rniwa: am now [23:45:34.0000] If this is about web components, I haven't gotten around to looking at the latest there yet [23:45:51.0000] annevk: i have: https://github.com/whatwg/dom/issues/685 [23:46:07.0000] annevk: I just wanna know if the current spec's wording is intentional [23:46:12.0000] annevk: or it's just an oversight [23:47:37.0000] annevk: I have a completely unrelated question about "submit" event though [23:48:04.0000] annevk: does HTML or DOM spec have any text about how "submit" is stopped propagation at the first form element it encounters? [23:48:09.0000] I couldn't find any normative text [23:48:13.0000] That looks like it might be an oversight, I'll investigate [23:48:52.0000] rniwa: you're looking for https://github.com/whatwg/html/issues/3599 [23:49:38.0000] annevk: cool [23:51:47.0000] annevk: I did some investigation about that event.composedPath() seem to indicate Blink, Gecko, & WebKit all seem to simply stop the propagation instead of shrinking the event path [23:51:53.0000] annevk: it's crazy.. [23:54:32.0000] rniwa: the amount of changes I had to make to the event dispatch algorithm over the years to account for weird stuff browsers implemented is rather staggering [23:54:49.0000] annevk: ya, truly mind boggling. [00:00:30.0000] annevk: it looks like we're also missing a special case of disabled form controls [00:00:44.0000] annevk: as far as I can tell, Gecko stop the propagation of all events on disabled form controls... [00:01:25.0000] rniwa: I always assumed disabled form controls was some hit testing special case, but I never truly investigated... [00:01:43.0000] annevk: hit testing is working [00:01:49.0000] annevk: Gecko stops propagation [00:02:03.0000] Okay, we really need more people to define all this legacy shit [00:02:06.0000] annevk: WebKit & Blink simply ignores the event; doesn't call event listeners but let the event pass through to ancestors LOL [00:02:22.0000] o_O [00:05:29.0000] annevk: https://gist.github.com/rniwa/bf0f1411d6b811fcb605e796498740f3 [00:05:32.0000] annevk: Gecko outputs nothing [00:05:57.0000] annevk: WebKit & Blink says [00:05:57.0000] click on div [00:05:57.0000] test on button [00:05:57.0000] test on div [00:07:39.0000] Well that's no fun, so much special behavior [00:07:53.0000] annevk: yeah, this is isane... [00:07:59.0000] annevk: I bet some websites rely on it though... [00:08:23.0000] I like what Gecko does I guess, just return early if the target has some flag set [00:09:02.0000] annevk: i guess we'd have to check what it does if an event propagates to a disabled form controls [00:09:09.0000] Although wait, that's not what it does, it goes through ancestors first [00:09:34.0000] Yeah, it seems that if there's something on the path with a flag set, it returns early [00:09:41.0000] annevk: you mean like capturing? [00:10:18.0000] rniwa: I mean that in your example you dispatch on which is a child of a disabled element, so the path is span -> disabled element (ignoring other ancestors) [00:10:59.0000] annevk: i guess I should add event listeners to span [00:11:20.0000] ooh, yes [00:11:28.0000] annevk: ok, so it dispatches to span! [00:11:31.0000] annevk: but then it stops [00:12:00.0000] I guess that's similar to the
scenario? But it doesn't care about the event name here [00:12:21.0000] annevk: Blink & WebKit cares about event being a mouse event [00:12:23.0000] annevk: but Gecko doesn't [00:14:03.0000] annevk: okay, so capturing also only happens on span [00:14:45.0000] annevk: I think Gecko's behavior makes most sense here. it's truncating the composed path to 1. [00:15:05.0000] for some definition of "makes sense" [00:15:19.0000] Ah okay, I was about to say that I don't understand how that would work, but if the path is very short I guess it does [00:15:30.0000] so maybe 1. restrict this behavior to mouse event & then truncate the event path at the first disabled form control [00:15:36.0000] might be good [00:15:41.0000] That would argue for changing "get the parent" somehow [00:15:46.0000] ya [00:15:56.0000] So form controls can have their own "get the parent" that sometimes returns null [00:16:11.0000] No wait, that doesn't work [00:16:34.0000] HTMLElement would need its own "get the parent" that special cases form controls [00:16:40.0000] oh no :( [00:17:03.0000] annevk: maybe modifying the dispatching algorithm in DOM is better. [00:17:06.0000] Hmm, actually, probably Element, if we mix namespaces [00:17:11.0000] Yeah [00:17:25.0000] annevk: scattering these quirks throughout different specs make it really hard to find out these edge cases [00:23:29.0000] annevk: my goodness. https://github.com/whatwg/html/issues/3599 goes through all elements during the capturing phase [00:23:48.0000] annevk: so these two quirks have completely distinct behaviors :( [00:23:57.0000] even within each browser! [00:29:44.0000] Good times [00:30:00.0000] rniwa: did you file an issue for the disabled control event path quirk? [00:30:30.0000] rniwa: I agree that it makes some sense to not spread out quirks too much btw, but if they can be defined in terms of a generic mechanism that could be nice, but it seems that get the parent is not it [00:31:16.0000] rniwa: we could also make the generic "get the parent" check for a [[Nope]] internal slot [00:31:55.0000] annevk: it's https://github.com/whatwg/html/issues/2368 [00:32:32.0000] annevk: I think I'm a bit worried about implementing Gecko's behavior given how permissive WebKit & Blink are. [00:32:56.0000] annevk: not firing event listeners sound crazy may not be the end of the world given we'd have to add some quirk somewhere [00:33:14.0000] annevk: i was hoping to get away by truncating/shrinking event path for both cases but it seems like we can't due to capturing phase [00:33:48.0000] Okay, I don't care too much what we end up doing; I guess I'll wait and see what smaug____ says [00:33:51.0000] annevk: at that point, maybe we should go with whatever gets us compat with least effect [01:22:28.0000] /me looks up [01:22:59.0000] something about disabled form elements [01:23:33.0000] blink was changing and planning to change the behavior recently [01:27:58.0000] oh, about the issue I filed [05:52:56.0000] Hmm, I'm getting "The requested URL returned error: 400 Bad Request" from Bikeshed again [13:51:07.0000] annevk: is there a way for me to file bugs on bugzilla.mozilla.org without being given the default template? [15:36:15.0000] TimothyGu: you need to add &format=__default__ to the query params for the enter-bug URL [15:36:23.0000] https://bugzilla.mozilla.org/enter_bug.cgi?product=Core&format=__default__ [15:36:33.0000] ahh [15:36:37.0000] how interesting [15:36:54.0000] heh yeah “interesting” is a good word for it 2018-09-07 [19:56:09.0000] I guess whatwg/meta should link that [01:07:53.0000] smaug____: https://github.com/whatwg/dom/issues/685#issuecomment-419353747 [02:20:04.0000] annevk: how is legacy-pre-activation behavior related to clearTargetsTuple? [02:20:19.0000] I don't understand the discussion on the pr [02:20:42.0000] smaug____: I changed where eventPhase is initialized [02:21:17.0000] smaug____: rniwa pointed out you can observe eventPhase at that point through legacy-pre-activiation behavior and that it differs between browsers [02:23:08.0000] hmm, they dispatch change event at wrong time? [02:34:04.0000] smaug____: re https://github.com/whatwg/dom/issues/685#issuecomment-419376808 the proposal is to always call capture listeners before bubble listeners, not just on hosts [02:36:59.0000] smaug____: and no, they dispatch it at the same time, compare output of https://software.hixie.ch/utilities/js/live-dom-viewer/saved/6198 [11:34:42.0000] Domenic: finally finished this: https://github.com/whatwg/streams/pull/954 [11:34:48.0000] well not "finished" but... [11:35:02.0000] devsnek: sweet, I will look at it very soon [11:43:12.0000] ...interesting http://software.hixie.ch/utilities/js/live-dom-viewer/saved/6203 [11:47:39.0000] i often use https://astexplorer.net/ [11:47:51.0000] it even has webidl [11:48:14.0000] no browser does anything sane with that test [11:56:17.0000] devsnek: why did getIterator() disappear [11:56:46.0000] Oh what it's still on reader [11:56:51.0000] huh [11:56:59.0000] Wait no it's gone [11:57:03.0000] I was looking at the wrong tab [11:57:13.0000] do we still want the alias [11:57:24.0000] Yeah I think so [12:03:20.0000] Domenic: thanks for the quick review 👍 [12:03:43.0000] I try... I often fail, but this time I succeeded. [12:19:56.0000] Domenic: how do i unwrap the close promise [12:25:06.0000] the behaviour i think we want is `return ReadableStreamReaderGenericCancel(reader, value).then(ReadableStreamCreateReadResult)` but i don't know how to write that in spec [12:30:10.0000] devsnek: "Return the result of transforming ! ReadableStreamReaderGenericCancel(reader, value) by a fulfillment handler that returns ! ReadableStreamCreateReadResult(value, true, true)" [12:30:21.0000] prose ftw [12:30:23.0000] thanks [12:30:33.0000] "transforming" has a promises-guide pseudo-definition [12:31:08.0000] it would be cool if stuff like that was somehow linked [12:31:12.0000] like with the locks api earlier [12:31:36.0000] It is [12:31:39.0000] transforming [12:46:02.0000] is "The rules for parsing tokens in foreign content" not an insertion mode? [13:07:41.0000] annevk, smaug____: I used to think event dispatching part of the spec was pretty clean.... not anymore :( [13:08:01.0000] it is very complicated [13:08:02.0000] annevk, smaug____: all sorts of craziness lurks in there. it's just not well spec'ed... [13:08:05.0000] thanks to shadow DOM [13:08:22.0000] it is reasonable well spec'ed but just hard to read [13:08:35.0000] smaug____: yeah... at least we don't have multiple-generations of shadow tree craze anymore [13:08:47.0000] yeah, that was super complicated [13:09:23.0000] smaug____: yeah, when each host has multiple generations of shadow roots with distribution happening in each [13:09:26.0000] smaug____: with shadow element [13:09:30.0000] smaug____: and then those things are nested [13:09:45.0000] smaug____: all bets are off as to comprehending what the heck is happening to an event being dispatched 2018-09-08 [20:48:43.0000] rniwa: https://github.com/whatwg/dom/issues/685#issuecomment-419551665 is untrue [20:49:16.0000] rniwa: the proposed behavior flips the listener invocation order for my example [20:50:16.0000] rniwa: the capture listener would be invoked first; smaug____ was indicating Gecko already has this behavior sometimes [20:51:13.0000] rniwa: i.e., even without shadow trees there would be a subtle change, but we need to make it as otherwise we expose shadow trees [22:07:32.0000] annevk: which example? [23:01:16.0000] rniwa: https://github.com/whatwg/dom/issues/685#issuecomment-419355034 [23:02:00.0000] annevk: yeah don't have a different behavior between Gecko vs WebKit/Blink, right? [23:02:06.0000] that* don't [23:02:39.0000] ugh... that* doesn't* [23:02:54.0000] rniwa: per smaug____ for there would be a difference [23:03:04.0000] annevk: I don't think so [23:03:17.0000] rniwa: and with the PR there would be a difference [23:03:29.0000] annevk: how? [23:03:44.0000] rniwa: capture listeners run first [23:03:52.0000] annevk: yeah but that has always been the case [23:04:17.0000] No, for target the listeners would run in register order [23:04:29.0000] annevk: the only difference here is that capturing event listeners on the target that exists within a shadow tree gets invoked AFTER all capturing event listeners on ancestors of a shadow host were invoked [23:04:38.0000] So bubble if registered first would run first [23:04:48.0000] annevk: right but only within shadow trees [23:05:17.0000] rniwa: the PR affects the normal case too, no? [23:05:22.0000] annevk: i don't think so [23:05:36.0000] annevk: i'm pretty certain it wouldn't [23:05:42.0000] annevk: what happens is that in the world without a shadow tree [23:06:01.0000] annevk: the target's capturing event listener is the last thing we invoke in the capturing phase [23:06:32.0000] annevk: what breaks down in shadow DOM is that there could be multiple even targets on which event listeners are invoked with AT_TARGET [23:06:57.0000] annevk: as long as there is a single target, this odd capturing event listener ordering won't be happening [23:07:37.0000] annevk: it's true that capturing event listeners within UA shadow trees are happening after capturing event listeners of ancestors of those UA shadow hosts but I doubt any UA is exposing that kind of detail to the user land [23:07:53.0000] annevk: since most of events fired within a shadow tree aren't even exposed to the user land [23:08:38.0000] I think we are still talking past each other [23:08:53.0000] ya [23:09:14.0000] If a target has first a non-capture listener added and then a capture listener [23:09:28.0000] annevk: could you post an example in which event listeners will be invoked in different orders before/after your change / on Gecko vs. WebKit/Blink [23:09:42.0000] The invocation order today is non-capture, then capture [23:09:57.0000] Per PR it is capture, then non-capture [23:10:09.0000] annevk: oh I see. [23:10:23.0000] In Gecko it depends on the target element type [23:10:29.0000] annevk: you're saying that on the target element, we'd invoke event listeners in the order they were registered [23:10:41.0000] Today, yes [23:10:46.0000] annevk: as opposed to in the capturing then bubbling [23:10:52.0000] Yes [23:11:08.0000] annevk: yeah, i'm a lot less concerned about that. [23:11:13.0000] Ok [23:11:18.0000] Good [23:11:25.0000] annevk: what's concerning is the event listeners on different elements getting invoked in different orders [23:11:43.0000] annevk: that's a lot likely to cause havocs in scripts that rely on particular ordering for stopping propagation, etc... [23:12:04.0000] Yeah, I agree there is real risk for WebKit/Chromium here [23:12:19.0000] I hope the experiment works out [23:14:30.0000] annevk: ya, i hope so too because what we have today is nuts [23:17:59.0000] annevk: so apparently ea.com and a bunch of other EA properties are using Polymer & web components in real [23:18:02.0000] smaug____: ^ [08:31:12.0000] oh my word, what is this?? https://tools.ietf.org/html/rfc2396.html#section-3.3 [08:31:32.0000] allowing parameters within each segment of a URL path?? [08:33:43.0000] wait, what ever are parameters [08:33:48.0000] *even [10:18:22.0000] The "newer" URI syntax still allows those, but only references them obliquely; they're not reified in the grammar itself. [10:18:38.0000] https://tools.ietf.org/html/rfc3986#section-3.3 [12:34:39.0000] this

doesn't get a foster parent http://software.hixie.ch/utilities/js/live-dom-viewer/saved/6210 2018-09-09 [16:27:50.0000] methinks the Python urllib needs some expert attention 2018-09-11 [21:29:23.0000] annevk: Under the "setter" section of https://html.spec.whatwg.org/multipage/webappapis.html#event-handler-idl-attributes, what type is the "given value" in the case elem.onclick = function(e) {...}...I imagine it is a callback object, not a raw uncompiled handler? [21:56:24.0000] annevk: I believe it is, I'm just trying to find out when an event handler's value will ever be created as an internal raw uncompiled handler. That seems to be in the attribute change steps, but I expected to see these steps being called from the parser or something [22:05:26.0000] domfarolino: setAttribute [22:12:24.0000] annevk: Hm, that's for when call from script right? How about when no script is running, and the browser is just parsing I kinda expect something like DOM's set-attribute and set-an-attribute-value to be called at some point? [22:18:54.0000] domfarolino: that will do so per the parser [22:19:06.0000] domfarolino: might not all be linked up [22:24:22.0000] annevk: Ok thanks [22:29:46.0000] annevk: One more (unrelated to event handlers) question: in https://html.spec.whatwg.org/multipage/semantics.html#interactions-of-styling-and-scripting, we have a list of conditions that, if met, make a style sheet one that "blocks scripts". [22:30:17.0000] annevk: I'd expect after a script-blocking style sheet is obtained, one of those conditions would definitely not hold, so that we can effectively decrement the number of script-blocking ss's. Is that what the purpose of the `style sheet ready` flag is? [22:31:19.0000] Dunno offhand [22:31:38.0000] Can check in ~2h [22:32:24.0000] annevk: Regardless, it seems that if those conditions are used to determine whether a style sheet is script-blocking, it's hard to distinguish a style sheet that has successfully loaded, and thus is no longer script-blocking, from one that is. [22:32:32.0000] Sure sure no worries, sorry to ping so early [22:42:25.0000] Hmm yeah, maybe; Emilio also mentioned (somewhat related) that matching the environment requires layout for iframes and such and is therefore more fuzzy than one might expect [23:48:21.0000] annevk: I'll add a comment to https://github.com/whatwg/html/pull/3544 in the morning about maybe explicitly making a style sheet non-script-blocking after it has been obtained. Yeah it would be nice to have "matching" defined (is it?) somewhere...that's a good point. Should we file an issue to harden that? [23:49:54.0000] Oh, wait it is defined whoops. But yeah if that's more fuzzy than expected it might be nice to clean that up? Not sure how to though [00:09:51.0000] Yeah, not sure either [04:43:11.0000] https://discourse.wicg.io/ <-- why was I not aware of this awesome place [08:51:46.0000] Domenic: Oh sorry, didn't see your latest comment on https://github.com/whatwg/html/issues/3610 before posting mine :) [08:58:38.0000] (Question in my comment may help me write a test under https://github.com/web-platform-tests/wpt/tree/master/html/semantics/document-metadata/interactions-of-styling-and-scripting testing that script-blocking style sheets have their events fired before script execution) [09:01:42.0000] :disconnect chat.freenode.net [09:07:21.0000] domfarolino: it seems it isn’t really defined when that flag gets set [09:07:56.0000] domfarolino: I’d expect it to be set as part of the task dispatching the load event [09:08:43.0000] (Forgot to look at it earlier, sorry) [09:10:31.0000] annevk: Agreed, I think it could be (potentially renamed to "style sheet resolved" and) and used in https://html.spec.whatwg.org/multipage/semantics.html#obtaining-a-resource-from-a-link-element:critical-subresources to remove the given resource from the set of script-blocking resources [09:11:18.0000] domfarolino: reason to rename? [09:11:58.0000] "style sheet ready" very much indicates that it obtained successfully (IMO). I think it'd be nice to be more general, since even resources that were failed to obtain are at least no longer script-blocking [09:12:35.0000] domfarolino: ah, prefer “done” then due to promises [09:12:43.0000] +1 [09:14:04.0000] annevk: Also if you happen to have an answer for https://github.com/whatwg/html/issues/3610#issuecomment-420322487 that would help me file a chrome bug :) [09:21:07.0000] If we make the setting of the “style sheet ready/done” flag part of the task that gets fired, then of course script execution will be blocked on both obtaining the resource _and_ firing the event. But since it isn’t entirely clear (to me) when a resource becomes non-script-blocking, I can’t tell if the ordering of the fired event and script script execution is well-specified (though IMO it should be) [09:21:41.0000] domfarolino: it depends on specifying that flag [09:22:06.0000] domfarolino: so once that is done it’ll be the first option [09:23:21.0000] thank you very much! [09:57:08.0000] anyone know how to get hard line wrapping to work well in Sublime Text? [10:17:35.0000] zcorpan: You mean automatically inserting a hard line break when it auto-wraps at some column? [10:32:59.0000] That would be nice, or just a keyboard shortcut to wrap the selection would be ok as well. The built-in one seems kinda broken; it doesn't collapse the indentation to a single space and it preserves existing newlines [10:33:52.0000] hard wrap in TextWrangler/BBEdit worked better [10:41:35.0000] zcorpan: for HTML I always copy and paste text through https://output.jsbin.com/maferi . Should work on turning that logic into a Sublime plugin. [10:52:49.0000] Domenic: thanks. I'll try making a plugin some day [16:43:32.0000] is there something that has replaced https://wiki.whatwg.org/wiki/sanitization_rules ? [16:45:55.0000] alternatively, known-good html sanitizers that follows the spec for how to parse html [16:46:54.0000] I think the canonical answer is https://github.com/cure53/DOMPurify [16:51:52.0000] thanks 2018-09-12 [17:23:13.0000] would it make sense for the Web Locks API to be incorporated into the HTML spec, or is it better for it to be managed as a separate spec? [17:23:17.0000] https://wicg.github.io/web-locks/ [17:24:05.0000] it doesn’t do any monkey patching of algorithms in HTML or DOM [19:37:28.0000] I was wondering about storage.spec.whatwg.org [19:37:34.0000] Its own spec might be fine though [09:40:11.0000] why is that when I do Object.getOwnPropertyNames(Window) I get essentially next to nothing [09:40:48.0000] compared to Object.getOwnPropertyNames(window) [09:41:53.0000] in browsers, where do all those properties of the window instance originally come from [09:42:03.0000] MikeSmith: Are the properties on Window.prototype? [09:42:22.0000] /me doesn't remember enough webidl to answer this question [09:42:24.0000] no [09:42:48.0000] at least there not there if you inspect Window.prototype in devtools [09:43:19.0000] so if they are not from Window.prototype where are they from [09:44:10.0000] I guess it’s just that the Window/window case is some kind of very special case? [12:43:13.0000] MikeSmith: it is [12:45:38.0000] MikeSmith: they are on the instance, but you also can never really get there due to WindowProxy (in a worker you can though); named properties are on the prototype chain though and likely EventTarget [15:05:37.0000] annevk: I see [15:06:39.0000] so for MDN, this makes me wonder how the properties should rightly be documented [15:08:29.0000] e.g., I would think the title of https://developer.mozilla.org/en-US/docs/Web/API/Window/closed should rightly be window.closed instead of Window.closed [15:10:04.0000] and MDN should make it more clear that window is the special global object [15:12:01.0000] but since MDN article paths seem to be case-insensitive, https://developer.mozilla.org/en-US/docs/Web/API/window and https://developer.mozilla.org/en-US/docs/Web/API/Window are the same article 2018-09-13 [17:03:29.0000] Yeah, it's a good point that the prototype mechanism is not in use for Window and a couple other things (e.g. Location's properties) [17:03:48.0000] You could still do something like "Window's close() method" or "Window: close() method" [17:04:14.0000] But it would indeed be a bit different, as its every instance of Window having its own individual close() method, not Window.prototype sharing it between all of them [18:43:53.0000] Domenic: yeah as far as documenting it, it doesn’t fit neatly with other documentation [18:45:05.0000] but maybe the difference is not something that matters in practice to developers, so not worth bending over backwards in the documentation to be very precise about it [18:46:22.0000] I guess writing good documentation for web-platform features can be as difficult as writing good specs for them [20:48:21.0000] Not possible to get multiple instances though [20:54:54.0000] right [20:56:52.0000] You can get multiple instances... e.g. iframe.contentWindow [20:57:09.0000] (Yes, it's a WindowProxy, but it transparently passes through Window properties in the same-origin case.) [21:02:52.0000] so that’s a nice concrete case to look at the MDN docs for [21:03:08.0000] https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/contentWindow [21:03:46.0000] > This attribute is read-only, but its properties can be manipulated like the global Window object. [21:06:50.0000] that seems to kind of assume the reader already knows that iframe elements have a separate Window instance [21:07:39.0000] which is not really clearly stated even in https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe [21:08:28.0000] but I guess you learn that quickly if you ever try to actually do anything with an iframe from code [01:05:31.0000] rniwa: if capture listeners, then bubble listeners is not web-compatible, I think if we want to avoid detection of shadow trees, we'd need to keep the current spec [01:05:53.0000] rniwa: really appreciate that detailed write-up on your composedPath() patch btw [01:07:07.0000] annevk: yeah, we'd see. [01:08:40.0000] annevk: haha, the algorithm is so clever i would have filed a patent if it weren't for a spec'ed text. [01:08:54.0000] annevk: but once you see it, you can't unsee it. it's so simple! [01:09:38.0000] rniwa: yeah, just need to translate it to spec text now [01:16:53.0000] annevk: I do have a webkit patch for the event listener now: https://bugs.webkit.org/show_bug.cgi?id=174288 [01:16:57.0000] annevk: so we'll see how it goes. [01:17:27.0000] thanks, hoping for the best [01:18:05.0000] rniwa: did you consider combining the composedPath() thing with the bit you need to hide window.event from shadow trees? [01:18:17.0000] rniwa: e.g., depth +2 for closed and +1 for open shadow trees [01:18:59.0000] anyway, prolly keeping them as separate bits in the spec [01:19:22.0000] annevk: oh, we could do that but it's probably cleaner as two separate things [01:20:55.0000] Yeah, I got too excited there [05:50:45.0000] Making a patch for that was still rather involved [09:03:51.0000] annevk: Any idea who should I talk to at Moz about interest in https://wicg.github.io/background-fetch/? [09:22:36.0000] MikeSmith: annevk: did we have a plan for the "impacts documentation" label? E.g. are we supposed to ping some MDN folks, or are they watching the label, or...? [09:22:42.0000] About to merge https://github.com/whatwg/html/pull/3829 [09:24:12.0000] JakeA: I'm gonna nominate mdaly and asuth (both @mozilla.com) [09:24:20.0000] JakeA: you can copy me I suppose [09:24:39.0000] Domenic: https://github.com/whatwg/meta/pull/89 [09:24:39.0000] Ta! [09:25:12.0000] annevk: OK, so nothing for us to do necessarily [09:25:32.0000] Domenic: no, I guess it remains to be seen if it's helping [09:35:16.0000] Domenic: I watch that label at least, and I can let other people on #mdn know about specific PRs like https://github.com/whatwg/html/pull/3829 [09:38:35.0000] Awesome, ok. [09:43:03.0000] MikeSmith: should we have a bot to report issues for mdn when the label is added? [09:43:27.0000] zcorpan: that would be good yeah [10:59:09.0000] devsnek: what are your plans for the async iterable streams PR? [10:59:26.0000] Domenic: do whatever those comments say [10:59:34.0000] :) [10:59:38.0000] Thoughts on implementation/tests? [10:59:52.0000] oh yeah that too lol [11:00:05.0000] i can bang out an impl but i'm absolutely terrible at tests [11:00:15.0000] They're not too bad I promise [11:00:27.0000] And they help a lot with all these edge cases people are pointing out [11:00:34.0000] /me wakes up [11:00:39.0000] anyone want help with tests? [11:01:05.0000] Haha. This would be for https://github.com/whatwg/streams/pull/954 [11:01:27.0000] i'm gonna get to it again this weekend so eh you can go back to sleep :P [11:02:13.0000] Domenic: should i add Streams for 2019? [11:02:56.0000] zcorpan: probably not, I think we've got a decent handle on things, just sussing out whether devsnek's up for extending his first-time contribution past the spec into tests as well, or whether the editors should help :) [11:03:11.0000] okie [11:03:34.0000] i can write some basic tests, i'm just really bad at imagining how people will misuse things [11:04:28.0000] I think I'm not terrible at that, would be happy to help whip up a list of interesting cases to test [11:04:29.0000] Maybe we can work out a test plan together on the issue [11:04:31.0000] Yeah [11:04:51.0000] what if people just never made bugs [11:06:39.0000] https://i.imgflip.com/wu987.jpg [11:13:36.0000] I'm not too familiar with testing JS stuff, but https://github.com/tc39/test262/search?q=asynciterator&unscoped_q=asynciterator might be a good start to look at. I've also asked my colleagues who have written tests for async iterators to chime in [11:14:07.0000] thx [11:33:24.0000] Alrighty, I made https://github.com/whatwg/streams/pull/954#issuecomment-421107013 , we'll see what people say [11:36:10.0000] Domenic: you're too pro [12:15:59.0000] Domenic: why isn't streams a tc39 spec btw? [12:18:21.0000] zcorpan: tc39's working mode is not very compatible with streams. Ask me more offline :) [14:31:13.0000] Domenic: about the “impacts documentation” label, sheppy points out there’s no way to subscribe to github labels (so can’t get notifications that are filtered to just that label) [14:32:10.0000] I guess that’s part of the reaason we have teams for some other cases where we want to make sure specific set of people get notified [14:32:46.0000] so maybe we should add a “documentation” team? [14:53:06.0000] +1, sounds good to me [15:00:19.0000] Domenic: thanks 2018-09-14 [18:10:16.0000] MikeSmith: I think we could also unblock the MDN work by temporarily reverting to URL segments instead of titles. Then the blocker is "just" review bandwidth. [18:13:49.0000] Domenic: good point, yeah [18:14:28.0000] and that’s a relatively easy revert, so I can do it right now and push it soonish [18:17:07.0000] Great. I *hope* to make time to review tomorrow in that case, but this week has been really crammed, so I can't promise. [18:20:58.0000] no worries, since it’s just an enhancement change and lack of it’s not blocking anybody else’s work [18:21:36.0000] and I should say thanks much for the review you’ve done so far ー I really appreciate it [20:54:02.0000] Domenic: OK, wattsi code switched back to using the URL segment, and output pushed to https://arcane-cove-57093.herokuapp.com/ [22:18:27.0000] annevk: https://github.com/whatwg/html/pull/3656 Also changes the default classic worker credentials mode correct? [22:19:07.0000] I believe it does, just didn't see it mentioned in the thread [22:43:50.0000] annevk: Nope it doesn't nvm [00:38:46.0000] annevk: about https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation [00:38:53.0000] > https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation [00:38:55.0000] oofs [00:39:01.0000] > The WorkerLocation interface doesn't inherit any property, but implements properties defined in the URLUtilsReadOnly interface. [00:39:10.0000] is the above true? [00:40:10.0000] if so I don’t see where it’s specified that it inherits properties defined in URLUtilsReadOnly [00:41:18.0000] https://html.spec.whatwg.org/multipage/workers.html#worker-locations doesn’t state anything about that [00:42:07.0000] oh, or is it because WorkerGlobalScope inherits? [00:48:59.0000] MikeSmith, that used to be true, but not anymore [00:49:10.0000] ah [00:49:14.0000] Does URLUtilsReadOnly even exist anymore? [00:49:32.0000] hmm, no [00:49:45.0000] I see that it actually does not exist anymore [00:53:56.0000] Well there we are :) [00:57:13.0000] Ms2ger: btw I’m curious what the WPT interface test for the Window object does, as far as checking the IDL from the spec [00:57:48.0000] Can you elaborate? :) [00:58:57.0000] /me looks at https://web-platform-tests.live/html/browsers/the-window-object/window-prototype-chain.html [00:59:54.0000] Ms2ger: I mean in that the properties aren’t exposed from the prototype the way they are for other IDL interfaces/objects [01:01:35.0000] yesterday Domenic and annevk clarified for me a bit about how it works, but I still don’t understand how we could test what was described to me [01:01:38.0000] MikeSmith, there's branches like this one: https://github.com/web-platform-tests/wpt/blob/8a062c149e4581de0cd92cb51f316247e9514e5d/resources/idlharness.js#L2117 [01:02:22.0000] /me looks [01:02:36.0000] aha [01:02:43.0000] OK, that makes sense [01:03:12.0000] MikeSmith: you can only observe it through WindowProxy [01:04:14.0000] MikeSmith: so I guess you can study how that behaves (it's well defined) [01:04:39.0000] MikeSmith: and if you then study the behavior for global objects in IDL you should have an idea how "window" works [01:04:50.0000] (and how to poke at it) [01:05:03.0000] annevk: OK [01:05:29.0000] MikeSmith: that leaves some complicated cases still, e.g., https://github.com/whatwg/html/issues/3997 [01:05:33.0000] annevk: OK yeah I started to understand that from what you had pointed out yesterday. Was mostly left wondering how WPT idlharness handled it [01:05:48.0000] /me looks at https://github.com/whatwg/html/issues/3997 [01:06:00.0000] MikeSmith: ah okay, I'm not sure about idlharness unfortunately [01:06:11.0000] god this stuff is so messy [01:06:21.0000] e.g., teh https://github.com/whatwg/html/issues/3997 things [01:06:26.0000] *thing [01:06:32.0000] uhuh [01:07:27.0000] folks must have been really worried about their job 20 years ago, but then they moved on and left us with their job security/technical debt [01:07:32.0000] I can’t imagine any other runtime comes close to this in terms of complications like this, and quirks [01:07:38.0000] hahah [01:07:51.0000] I hear Windows is pretty bad [01:08:15.0000] ah yeah maybe only that is anywehre close to being in the same class [01:10:11.0000] but I guess with development of most other runtimes, after the people who dumped all the bad designed stuff in there have moved on, the others who come in after can still (with enough time ane work) rip it out and replace it with something better [01:10:21.0000] and break some legacy APIs I guess [01:11:25.0000] I suppose that’s what it comes downto, other runtimes developers have the luxury of being able to break backward compat [01:15:16.0000] but what’s also depressing to think about it is that, rightly, all the web platform’s messiness should be clearly documented, along with being specced [01:15:45.0000] and there is nobody who gets up in the morning looking forward to writing good documentation for that kind of stuff [01:15:58.0000] Anne does! [01:16:03.0000] hahah [01:16:09.0000] Or I choose to believe that [01:16:17.0000] thank heavens we got Anne [01:16:43.0000] maybe we can talk Anne into writing docs along with speccing everything [01:17:14.0000] but short of that, at least reviewing [01:17:51.0000] Do we really need these intricacies documented outside the spec, though? [01:17:58.0000] /me would be fine with "here be dragons" [01:18:02.0000] I dunno [01:18:11.0000] yeah maybe so [01:18:34.0000] Might be worth putting a stack of motivating examples in the spec, if we don't have them yet [01:19:01.0000] well partly that’s what we have MDN for [01:19:26.0000] I personally don’t think loading the spec itself down with yet more non-normative stuff is the optimal solution [01:20:29.0000] but the particular problem that concerns me right now is that after we add MDN annotations to the spec, readers following the links in the annotations and reading the MDN content are going to expect that it clarifies their understanding [01:20:46.0000] and the vast majority of cases, the MDN docs do that, quite well [01:21:25.0000] but the existing MDN docs for these cases like Window are a different matter [05:45:38.0000] MikeSmith: by way of contrast, I'm in favour of adding non-normative text to the spec if it helps people who don't already know the area intimately be able to read it [06:35:30.0000] https://heycam.github.io/webidl/#idl-dictionaries - The identifier is the key name of the key–value pair. If the Type is an identifier followed by ?, then the identifier must identify an interface, enumeration, callback function or typedef. If the dictionary member type is an identifier not followed by ?, then the identifier must identify any one of those definitions or a dictionary. [06:35:45.0000] I keep reading this, but I have no idea what it means :D [06:36:02.0000] Can anyone help? What does ? mean in a dictionary? [06:43:43.0000] JakeA: if you use a ? you can't use a dictionary type [06:45:53.0000] zcorpan: As in a dictionary within a dictionary? What's the benefit of ? then, other than asserting the type isn't a dictionary? [06:46:20.0000] right [06:46:25.0000] the ? means that null is allowed [06:46:34.0000] Riiiiight! [06:46:38.0000] but you can't use nullable together with a dictionary [06:47:08.0000] since dictionaries are implicitly present if you say null [06:47:18.0000] I think it'd have taken me a few months of reading that paragraph over and over again to figure that out [06:47:39.0000] Thanks for clearing that up [06:47:54.0000] happy to help. I'll send you the bill :-P [06:47:59.0000] \o/ [07:20:31.0000] annevk: TabAtkins: any remaining concerns about "htmlsvg-global/nonce" for https://github.com/whatwg/html/pull/4032 ? Would like to merge if not. [07:21:07.0000] Domenic: I'm pushing a nit [07:21:19.0000] Nah go for it [07:21:22.0000] (autowrapping tooling would be really nice) [07:22:01.0000] /me grumbles something about soft wrapping being better [07:22:40.0000] 3... 2... 1... [07:22:51.0000] (that's my countdown for TabAtkins telling us how semantic wrapping is better.) [07:23:40.0000] :bursts in, gasping and out of breath: [07:23:59.0000] (spaces) [07:24:07.0000] (oh nooooo) [07:24:24.0000] :somehow bursts in a second time: [07:24:32.0000] 🍿 [07:34:51.0000] (rgb is the best way to specify colors) [07:36:58.0000] /me papayawhips astearns [07:46:21.0000] astearns: #rgb only of course, no one needs #rrggbb. [07:51:19.0000] zcorpan: do we have tests for a fieldset with multiple legend elements where the first legend element is floated or positioned? [07:51:30.0000] zcorpan: no need for a pointer, just curious [07:52:50.0000] annevk: yes. also with dynamically changing the style [07:53:02.0000] zcorpan: good times were had I'm sure [07:53:24.0000] I didn't find any bugs with that test actually [07:53:31.0000] surprisingly [08:29:27.0000] If we make

    support type="", should it also support start=""? /cc TabAtkins [08:29:43.0000] Firefox apparently supports the content attribute but not the IDL attribute [08:29:49.0000] annevk: Is the total reach of changing default classic script fetch options in https://github.com/whatwg/html/pull/3656 just making imports from classic workers be same-origin credentials, or is that inaccurate [08:30:22.0000] Meh, no opinion [08:30:44.0000] Start comes with value on the li, of course [08:31:25.0000] domfarolino: it shouldn't affect class workers as they were same-origin bound anyway [08:31:31.0000] classic workers* [08:33:26.0000] domfarolino: this is mainly about