| 04:25 | <jpdevries> | I have a question about if something has been, or perhaps would be, considered for the Notifications API. I think the implicit accessibility provided by such an API makes it an appealing way for web apps to display notifications for when async actions have succedded or failed without having to go through making an HTML element accessible themselves. Thing is, I just realized that Nofications don't seem to display when users are in "Do Not Dist |
| 04:25 | <jpdevries> | but my question is this. Would it make sense for the Notifications API to support some sort of "assertive" option that notifies them anyways? I understand this could be abused, but I think there may be ways to circuvment that (it only works if hte notification was dispatched from something like a "click" event) |
| 04:47 | <annevk> | jpdevries: in that case could you not just display something in the app? |
| 04:49 | <jpdevries> | Ya certainly, but I think of the Notifications API as being nice for this as it comes with implicit accessibility. |
| 04:59 | <jpdevries> | but maybe i'm just being lazy ;) |
| 05:03 | <annevk> | Notifications are never going to be a guarantee |
| 05:04 | <annevk> | I personally have most of m disabled |
| 05:05 | <jpdevries> | that's good to know. for some reason, i expected a notification from an interface i'm interacting with to be more than prominent than like, a news notification. but i see now it makes sense they wouldn't be guaranteed |
| 07:26 | <jochen__> | annevk: ! |
| 07:26 | <jochen__> | annevk: please don't go away from the suborigin discussion |
| 07:29 | <annevk> | jochen__: I have the feeling my input is not getting duly considered, if that makes sense |
| 07:29 | <annevk> | jochen__: or maybe my questions can only be addressed by mkwst? |
| 07:30 | <annevk> | jochen__: there's a lot of activity on the minutia, but high-level design questions just linger |
| 07:31 | <jochen__> | annevk: I just took this work over from jww, so I'm still ramping up |
| 07:31 | <annevk> | jochen__: one question I've had since the start for instance is how this would deal with permissions and nobody has really given me a concrete answer thus far |
| 07:32 | <annevk> | jochen__: say I grant example.com the ability to do notifications, does example.com/suborigin1 get them too? If not, how does it ask for permissions without confusing the user? |
| 07:33 | <jochen__> | annevk: from my point of view, I'd like to hide the fact that suborigins are a thing from users, so I'd grant all suborigins the permission if the origin has it |
| 07:34 | <annevk> | jochen__: and a suborigin would ask on behalf of the origin too? |
| 07:34 | <jochen__> | correct |
| 07:34 | <annevk> | jochen__: I think that model makes sense, but mkwst and jww gave different answers at times |
| 07:35 | <jochen__> | that's possible :) |
| 07:35 | <jochen__> | so, how can we make sure that esp. the platform affecting / security model changes are understood? |
| 07:36 | <jochen__> | we've scheduled an update for the next WebAppSec phonecall, and I wanted to sync with devd before |
| 07:36 | <annevk> | I think a good first step is to file "Suborigin integration" issues against all standards that are affected |
| 07:36 | <jochen__> | maybe it makes sense for you to join the sync as well? |
| 07:36 | <annevk> | So more people know this is a thing and can try to think through the implications |
| 07:36 | <jochen__> | good point |
| 07:37 | <jochen__> | I expect that that's HTML for postMessage / MessageEvent & window.origin & origin definition |
| 07:37 | <jochen__> | is CORS handled as part of fetch now? |
| 07:39 | <annevk> | jochen__: yes, CORS is in Fetch |
| 07:40 | <annevk> | jochen__: I'd rather not join a call, happy to study things async |
| 07:41 | <annevk> | jochen__: I'd expect issues against HTML, Fetch, Cookies (no idea where that is tracked though, private mkwst repo?), and maybe URL |
| 07:41 | <jochen__> | yeah, for cookies, the idea is to mark a browsing context in a suborigin as cookie-averse |
| 07:41 | <jochen__> | that one seems straight forward |
| 07:41 | <jochen__> | permissions would also be part of HTML? |
| 07:42 | <annevk> | jochen__: what about same-origin cookies? |
| 07:42 | <annevk> | jochen__: permissions is https://w3c.github.io/permissions/ |
| 07:42 | <annevk> | jochen__: presumably you'd want same-suborigin cookies for the same reason we introduced same-origin cookies |
| 07:43 | <jochen__> | annevk: the main problem is that on the first request, the browser doesn't know which suborigin to expect |
| 07:43 | <annevk> | jochen__: although maybe that isn't possible since the suborigin is not known at the time of request |
| 07:43 | <annevk> | heh |
| 07:43 | <jochen__> | annevk: so we could either send all cookies (but that's potentially a large list) or none and rerequest the URL after the suborigin header was recevied (but that's slow) |
| 07:44 | <jochen__> | annevk: so I think we'll just not have suborigin specific cookies, and document.cookies will not return any cookies for js |
| 07:44 | <annevk> | jochen__: if https://wicg.github.io/origin-policy/ is a thing we could make it known ahead of time in theory |
| 07:44 | <jochen__> | true |
| 07:44 | <jochen__> | my feeling is that we might be able to punt that until there are actually sites that would need that |
| 07:45 | <jochen__> | it seems that the cases we have so far would work with monkey patching document.cookie to store stuff in localStorage |
| 07:46 | <annevk> | and cookies set by the server would still be transmitted since we don't know about suborigins at time of request |
| 07:46 | <jochen__> | right |
| 07:46 | <jochen__> | all other storage things, however, would be per suborigin |
| 07:47 | <jochen__> | e.g. IDB, localStorage, web database |
| 07:48 | <annevk> | Ah, I missed IDB in the list above of needing integration |
| 07:48 | <annevk> | Maybe https://storage.spec.whatwg.org/ needs to take this into account somehow too |
| 07:49 | <annevk> | Even if you get the persistent permission for an entire origin, applications might want to persist on a per-suborigin basis |
| 07:51 | <annevk> | jochen__: I think part of the problem is that a lot of the motivation is upgrading legacy apps, but not moving them to a subdomain; so it's unclear if we're just adding a lot of complexity to the platform for legacy apps, or if there's also forward looking reasons for all this |
| 07:51 | <jochen__> | it's not just about legacy apps |
| 07:52 | <jochen__> | one reason that folks don't want to move stuff to subdomains is that they don't want to prompt users N times for the same permission |
| 07:52 | <jochen__> | but it's a fair point |
| 07:52 | <annevk> | dglazkov: if you enable comments on https://docs.google.com/document/d/18qpNBY3Xm2svzBSAgOJk_Kkb_iRJXCsZQO4Oa3wv3n4/edit I might correct some typos |
| 07:53 | <annevk> | jochen__: ah permissions, of course; I guess that at least provides sufficient motivation to make this work well and solve all the edge cases too |
| 07:56 | <jochen__> | I started a discussion on public-webappsec about introducing a concept of site affiliation |
| 07:56 | <jochen__> | maybe via origin policy |
| 07:56 | <jochen__> | that would be another option to share permissions with multiple sites |
| 07:57 | <jochen__> | the downside is that we didn't ask the user whether to grant a permission for the current origin and all affiliated sites |
| 07:57 | <annevk> | I unsubscribed from public-webappsec since it had too many announcement emails |
| 07:58 | <jochen__> | so I don't think we could just pass on permissions without re-prompting, and the prompt would probably look odd (including a potentially long list of domains), and what should we do if the list of affiliated sites changes |
| 07:59 | <annevk> | In principle a top-level site can already share permissions with anyone it embeds without telling the user |
| 07:59 | <annevk> | But only for the duration of that visit |
| 08:00 | <annevk> | Yeah, not sure I have any good suggestions there, UX for that would be really tough |
| 08:00 | <annevk> | Permissions UX is already impossibly hard to get right |
| 08:01 | <jochen__> | so anyways |
| 08:01 | <jochen__> | I've noted filing issues on my todo list |
| 08:01 | <jochen__> | might not happen this week, as I'm at a conference |
| 08:02 | <annevk> | Thanks, and enjoy the conf |
| 08:40 | <zcorpan> | nox: I'm here now |
| 08:40 | <nox> | zcorpan: I took a decision myself. :) |
| 08:41 | <nox> | zcorpan: I am currently splitting the tests in unitless-length.html, |
| 08:41 | <nox> | zcorpan: to test per property and per quirky value, |
| 08:41 | <nox> | instead of grouping all properties in a single quirky value test. |
| 08:41 | <zcorpan> | nox: (╯°□°)╯︵ ┻━┻ |
| 08:41 | <nox> | You don't like that? :( |
| 08:41 | <zcorpan> | nox: just kidding :-) |
| 08:41 | <nox> | Ah. :) |
| 08:42 | <zcorpan> | sounds good |
| 08:42 | <nox> | zcorpan: Surprisingly, |
| 08:43 | <nox> | zcorpan: with the quirk in Servo, I expected unrelated tests to pass, |
| 08:43 | <nox> | tests that would have been using the quirk syntax by mistake, |
| 08:43 | <nox> | turns out they were not, and I should not expect the worst of wpt. :P |
| 08:43 | <nox> | there were not* |
| 08:43 | <nox> | Too many rebases break my English. |
| 08:44 | <zcorpan> | hehe, well good then that there are tests specifically for unitless |
| 08:46 | <nox> | zcorpan: Yep, Servo all passes them, except for some top/bottom failures specific to macOS, unrelated to the quirk itself. |
| 08:46 | <zcorpan> | nox: so for {input:"-\\31 "}, the test expects it to not be applied, no? |
| 08:58 | <nox> | zcorpan: Btw, https://github.com/servo/servo/pull/16609/commits/b60049cbfc2f38aa4d2294a98a61d720df807d63 |
| 08:58 | <nox> | zcorpan: Yes, these don't parse. |
| 09:27 | <Emil> | Hi |
| 09:31 | <annevk> | Emil: heya |
| 09:32 | <zcorpan> | nox: 👍 |
| 10:09 | <nox> | zcorpan: Can you confirm that /html/semantics/interactive-elements/the-dialog-element/centering.html is totally unrelated to that quirk? |
| 10:12 | <zcorpan> | nox: yes. that doesn't use unitless values and doesn't use quirks mode |
| 10:18 | <nox> | zcorpan: Thanks. |
| 11:45 | <smaug> | zcorpan: how is https://drafts.csswg.org/cssom-view/#dom-mouseevent-offsetx supposed to work if event is re-dispatched |
| 11:52 | <annevk> | smaug: basically that needs to be defined as part of the MouseEvent definition and dispatch itself |
| 11:52 | <annevk> | smaug: the current approach doesn't really work |
| 11:52 | <smaug> | not necessarily |
| 11:52 | <smaug> | sure |
| 11:52 | <smaug> | but the second dispatch could also just keep using pageX/Y |
| 11:55 | <smaug> | zcorpan: looks like blink doesn't follow the pageX/Y behavior |
| 12:25 | <zcorpan> | smaug: hmm. IIRC there's an open bug about the check for the dispatch flag being bogus |
| 12:26 | <smaug> | I filed couple of bugs |
| 12:28 | <zcorpan> | smaug: ok. i don't have this paged in right now and don't have a particular opinion about how it should work (other than it should be web compatible and interoperable) |
| 12:28 | <smaug> | the testcase didn't work in Edge, so don't know yet what it does |
| 12:37 | <nox> | zcorpan: I have a question. |
| 12:37 | <nox> | zcorpan: Would unitless-length.html still work if it used position:absolute? |
| 12:37 | <nox> | Trying to understand why I have intermittent failures in Servo and how to limit them. |
| 12:40 | <zcorpan> | nox: yeah i think absolute would work as well. everything still passes in chromium with that change |
| 12:40 | <nox> | zcorpan: That being said, |
| 12:40 | <nox> | I have intermittents in the color quirk test too, so... |
| 12:58 | <annevk> | Domenic: you awake? |
| 12:58 | <Domenic> | annevk: reading email in bed, but yeah |
| 12:59 | <annevk> | Domenic: do we want to test the various views? |
| 12:59 | <annevk> | Domenic: it seems we need to generalize testSharingViaIncrementerScript and then update all callsites |
| 13:00 | <annevk> | Domenic: looking at SAB tests |
| 13:01 | <Domenic> | annevk: yeah I got a bit lazy on that... It'd be ideal to test one typed array, DataView, and maybe { nested: { view: [ta] } } |
| 13:01 | <Domenic> | the shared incrementer would probably be the right way to test, yeah. |
| 13:05 | <Emil> | Anyone here experienced with websockets? |
| 13:06 | <annevk> | Domenic: there were a couple of places I was surprised you didn't just pass the view to postMessage() as a way to get some variety, though they didn't seem super easy to change either |
| 13:07 | <annevk> | Domenic: I'll have a look to see how far I get with adding some at least |
| 13:07 | <annevk> | Domenic: I also left a couple of basic questions in the PR |
| 13:07 | <Domenic> | annevk: yeah, getting to them now |
| 13:08 | <Emil> | I'm experiencing an issue where wss.send("perkele".repeat(9)) from a browser works just fine according to the frame spec as outlined in the rfc, but wss.send("perkele".repeat(10)) results in garbage |
| 13:12 | <nox> | zcorpan: Do you see any way to test the quirk without using getComputedStyle? |
| 13:18 | <annevk> | Emil: sounds like you hit a bug of sorts |
| 13:20 | <annevk> | Emil: might be worth checking bufferedAmount but with such small amounts of data there really shouldn't be a problem |
| 13:21 | <nox> | zcorpan: Could we use data: URLs for the iframes contents, instead of using open/write/close? |
| 13:22 | <annevk> | nox: not same-origin |
| 13:22 | <zcorpan> | nox: that would get an opaque origin so the script couldn't getComputedStyle in it. would need postMessage? |
| 13:22 | <nox> | Oh right. |
| 13:22 | <annevk> | could use srcdoc maybe? |
| 13:22 | <nox> | zcorpan: Seems like our issue is that we reflow problems and we should wait for the iframe's load event. |
| 13:22 | <zcorpan> | srcdoc is always standards mode |
| 13:22 | <nox> | zcorpan: Do you mind if I patch the tests to do this? |
| 13:23 | <zcorpan> | nox: to do what? |
| 13:23 | <zcorpan> | oh wait for onload |
| 13:23 | <nox> | zcorpan: Run the tests in q.contentWindow.onload or something. |
| 13:24 | <zcorpan> | SGTM |
| 13:24 | <zcorpan> | could add a separate test for calling getComputedStyle during page load, if that's buggy? |
| 13:25 | <Emil> | annevk: my buffer is 4k in size |
| 13:26 | <Emil> | which means it shouldn't break at that :/ |
| 13:27 | <zcorpan> | Emil: clearly the issue is you're swearing repeatedly in the message :-P |
| 13:28 | <Emil> | zcorpan: hehe |
| 13:28 | <Emil> | if only :/ |
| 13:29 | <annevk> | Emil: I meant webSocketInstance.bufferedAmount, if that wasn't clear |
| 13:29 | <annevk> | Emil: does it happen in all browsers? |
| 13:30 | <Emil> | yeah |
| 13:31 | <Emil> | meaining I'm doing something wrong |
| 13:31 | <zcorpan> | Emil: so perkele * 9 is 63. perkele * 10 is 70, which means it won't fit in a "small" frame, and will instead use extended payload length |
| 13:31 | <zcorpan> | Emil: does the server implementation support such frames? |
| 13:31 | <Emil> | zcorpan: but isn't the limit 125 bytes? |
| 13:32 | <Emil> | and anycase, yeah, I have extended payload length support |
| 13:32 | <zcorpan> | Emil: huh yeah. I thought it was 64 or something. ok |
| 13:34 | <Emil> | Is there a situation in which the ws frames don't adhere to the 2 byte header, 0/2/8 bytes extended payload, 4 bytes mask, payload-data |
| 13:34 | <Emil> | from browser to server |
| 13:34 | <nox> | zcorpan: https://github.com/servo/servo/pull/16618#issuecomment-297409757 Hah! |
| 13:34 | <nox> | No need to change the test, just ping the right person on IRC. :P |
| 13:35 | <nox> | (The link was supposed to be to a PR, not a comment in it.) |
| 13:35 | <zcorpan> | Emil: messages could be fragmented into multiple frames, but i think shouldn't happen for such short messages |
| 13:36 | <Emil> | zcorpan: but they still follow the frame format |
| 13:36 | <zcorpan> | yeah |
| 13:36 | <Emil> | right? |
| 13:36 | <Emil> | And because I am only reading frames |
| 13:36 | <Emil> | that shouldn't be an issue |
| 13:38 | <zcorpan> | Emil: do you know what goes over the wire? (I guess easier to debug without TLS) |
| 13:39 | <Emil> | zcorpan: hm? |
| 13:39 | <Emil> | I am capturing the raw data in C |
| 13:40 | <Emil> | nginx is stripping the TLS off |
| 13:40 | <zcorpan> | Emil: ok. so what data do you get? |
| 13:40 | <Emil> | here's a raw dump https://emil.fi/jako/koodi/ws_dump_2017-04-26_15:56:14_+0300_4 |
| 13:41 | <Emil> | that's the data received through the socket without the HTTP handshake |
| 13:41 | <Emil> | I can add the HTTP handshake, too, if required |
| 13:44 | <annevk> | Domenic: I'm probably not going to get to generalizing the tests today after all :/ |
| 13:50 | <Emil> | zcorpan: Any success? |
| 13:53 | <zcorpan> | Emil: I don't have a websocket implementation at hand to run it through... I started comparing the bits with the spec's framing but that isn't very efficient ^_^ |
| 13:53 | <zcorpan> | Emil: the first byte looks OK right? |
| 13:54 | <Emil> | zcorpan: I get just fine data with a message like: 2017-04-26 16:54:05.617 +0300 perkele |
| 13:54 | <Emil> | or perkele repeated 9 times |
| 13:54 | <Emil> | but perkele repeated 10 times and it breaks :D |
| 13:55 | <Emil> | hmm, I'll write a ws decoder |
| 13:55 | <Emil> | for files |
| 13:56 | <zcorpan> | very curious. dooes browser's devtools help? (opera 12 had reasonable error messages in the console, but i guess they only help if the client receives something unexpected) |
| 13:59 | <Emil> | No, they don't show the actual raw data |
| 13:59 | <Emil> | just payload |
| 14:30 | <zcorpan> | ok |
| 16:43 | <Emil> | hehe |
| 16:43 | <Emil> | shame on me |
| 16:43 | <Emil> | next time have the right god damn masks you smarty pants |
| 17:14 | <annevk> | Domenic: you okay with me reintroducing the BroadcastChannel test I wrote? |
| 17:14 | <annevk> | Domenic: I'll look into abstracting for multiple views tomorrow |
| 17:14 | <annevk> | Domenic: and update the corresponding shared memory blog post |
| 17:14 | <annevk> | Domenic: anything else? |
| 17:28 | <Domenic> | annevk: I haven't looked at the Broadcast channel spec fix yet but I assume you got it right there. That does sound like all we need. Maybe I'll rebase and do a last review of the remaining PR. |
| 17:29 | <annevk> | Domenic: the remaining PR is already rebased and was already reviewed I think |
| 17:30 | <annevk> | Domenic: but we don't have the various view tests |
| 17:30 | <annevk> | Domenic: which should be doable, just some abstraction work and making sure everything still runs after the changes have been made |
| 17:30 | <Domenic> | annevk: I meant the spec PR |
| 17:30 | <annevk> | Domenic: yes, I did too |
| 17:30 | <Domenic> | Ah ok |
| 17:31 | <Domenic> | Note you can test in Chrome by flipping an extra flag in about:flags |
| 17:31 | <annevk> | Ah okay |
| 18:20 | <aklein> | Domenic: have you been in contact with Constellation, jonco, Edge folks about <script type=module> spec issues? |
| 18:21 | <Domenic> | aklein: you mean the bugfixes around errors and such? Not really, sorry to say. |
| 18:21 | <aklein> | Domenic: makes me a little uneasy |
| 18:22 | <Domenic> | aklein: my view was that we were working out all the bugs, nothing controversial, and it'd be nicer to present them with a "hey we fixed all the bugs and have tests" instead of keeping them incrementally updated. But maybe more communication would be good. |
| 18:23 | <aklein> | Domenic: that seems fine too |
| 18:23 | <aklein> | I don't think most of the issues so far are controversial |
| 18:23 | <aklein> | I'm mostly curious whether any of them even noticed any of this |
| 23:01 | <zewt> | jesus, firefox just installed an update automatically even though I have that turned off |
| 23:02 | <zewt> | there's a name for programs that install remote code on your computer without permission, and it's not "browser" |