| 00:16 | <Domenic> | TabAtkins: what is <css> |
| 00:20 | <TabAtkins> | Domenic: A shorthand for <span class="css">, for when we want to mark up something to look like a keyword but not actually link to anything (because there's no such definition, or too many, or what have you). |
| 00:47 | <wanderview> | annevk: JakeA: if a controlled document is in the bfcache, do we need to fire fetch events for it when the user hits the back button to return to the page? or basically not because network is not normally done there |
| 00:48 | <wanderview> | just a random thought I had this evening (I need a hobby) |
| 00:58 | <danbeam> | TabAtkins: well, I'd expect it to find the first element in the DocumentFragment |
| 00:58 | <danbeam> | TabAtkins: not the fragment itself |
| 01:00 | <TabAtkins> | danbeam: Those aren't document roots. But I defined a :top-level pseudo to do what you're thinking |
| 01:03 | <danbeam> | TabAtkins: the only reason I need :root or :top-level or whatever is that I'm trying to do piercing from a root to find everything with a certain attribute name (across shadow DOMs) |
| 01:03 | <danbeam> | currently that entails .querySelector(':root /deep/ [attr]') |
| 01:04 | <danbeam> | i'd prefer just... /deep/ [attr] |
| 01:04 | <danbeam> | but that throws |
| 01:04 | <danbeam> | is there a better way to accomplish a query through all shadow roots? |
| 01:04 | <danbeam> | that includes top-level elements? |
| 01:11 | <danbeam> | fwiw: [attr], ::shadow [attr] might work |
| 05:28 | <MikeSmith> | annevk: the test deployment of the TLS-enabled www.w3.org site is already helping to catch some bugs in the gecko CSP upgrade-insecure-requests implementation https://bugzilla.mozilla.org/show_bug.cgi?id=1183563#c7 |
| 05:38 | <annevk> | MikeSmith++ |
| 05:39 | <annevk> | MikeSmith: oh my god, our redirect code is sooo bad |
| 05:40 | <annevk> | wanderview: bfcache is not specified to that level of detail (and e.g. Chrome doesn't implement it) |
| 05:40 | <annevk> | danbeam: /deep/ is dead |
| 05:43 | <kochi> | annevk: /deep/ and ::shadow are still allowed for querySelector. |
| 05:43 | <annevk> | ah true |
| 05:43 | <annevk> | well, I'm not sure if everyone agreed to that, but yeah |
| 05:43 | <kochi> | I easily forget which one is static profile and which is dynamic profile |
| 05:46 | <kochi> | Hmm, http://dev.w3.org/csswg/selectors/ , selectors you can write in CSS stylesheets are 'dynamic' profile, while what you can write for querySelector() is 'static' profile. |
| 05:46 | <kochi> | So /deep/ and ::shadow are likely to remain in 'static' profile. |
| 05:46 | <annevk> | They should've just called "dynamic" "live", which is what the rest of the world calls it |
| 05:46 | <annevk> | Perhaps it didn't go to Last Call yet... |
| 05:48 | <kochi> | Maybe I'm the only one, but I feel calling selectors in CSS stylesheet file 'dynamic' quite weird, because such CSS stylesheet file is quite static :) |
| 05:49 | <kochi> | They are just matched against dynamic things (DOM). |
| 05:51 | <MikeSmith> | annevk: yeah I guess that gecko bug exposes an underlying problem that's not specific just to upgrade-insecure-requests |
| 05:51 | <annevk> | kochi: well, they're continuously matched, whereas querySelector() is matched once |
| 05:52 | <annevk> | MikeSmith: yeah, flawed architecture |
| 05:52 | <annevk> | MikeSmith: seems Tanvi is aware of it though so maybe it'll get fixed some day |
| 05:53 | <MikeSmith> | annevk: cool, they should give me a bonus in my bug-reporting royalty check for that |
| 05:55 | <kochi> | annevk: that exlanation is very understandable |
| 06:02 | <TabAtkins> | annevk: Mind switching Compat over to gh-pages? http://www.xanthir.com/b4Zz0 for an easy guide. |
| 06:02 | <JakeA> | wanderview: annevk: if the bfcache impl is effectively keeping the page in memory, I wouldn't expect it to fire a fetch event on back/forward |
| 06:02 | <TabAtkins> | That way we can look at the spec from github too. |
| 06:02 | <annevk> | TabAtkins: it should sync automatically to https://compat.spec.whatwg.org/ |
| 06:02 | <annevk> | automatically* |
| 06:03 | <TabAtkins> | danbeam: You want "[attr], * /deep/ [attr]". |
| 06:03 | <TabAtkins> | annevk: Okay, then please link that from the readme. ^_^ |
| 06:04 | <annevk> | TabAtkins: you can't look at the link at the top of the repo? :p |
| 06:05 | <TabAtkins> | Who looks there? |
| 06:05 | <annevk> | I hope you're happy |
| 06:08 | <TabAtkins> | Thank you :-* |
| 06:24 | <annevk> | TabAtkins: at some point we need to work this through too: https://github.com/w3c/resource-timing/issues/27#issuecomment-122189039 |
| 06:24 | <annevk> | TabAtkins: but I guess HTML first... |
| 06:24 | <annevk> | CSS and SVG have some tricky corner cases when it comes to Fetch, though I think most of the infrastructure is in place |
| 07:13 | <MikeSmith> | TabAtkins: (if you're still awake & around) I've been asked to do a 30-minute presentation about CSS for a webdev/designer audience, on any specific topic I'd like. At a CSS conference where all ~6-8 or so other speakers are actual web devs/designers who unlike me actually do a lot of day-to-day work using CSS. So if I have to do it I'd like to talk something no other speakers are likely to be covering a |
| 07:14 | <MikeSmith> | nd that will be new to the audience. |
| 07:14 | <MikeSmith> | TabAtkins: so, given all that, any suggestions? |
| 07:14 | <MikeSmith> | "The Dark Side of CSS" |
| 07:18 | <MikeSmith> | one thing more near and dear for me is that I think we need to make a new CSS Checker (aka validator) to replace the current Java-based bailing-wire-and-duct-tape one |
| 07:18 | <MikeSmith> | and write it in Javascript, using your parser/tokenizer as a start, to run under node.js |
| 07:19 | <MikeSmith> | so maybe I could use the opportunity to see if I can get anybody else interested in collaborating on that |
| 07:20 | <Ms2ger> | Ew, js |
| 07:21 | <Ms2ger> | There's a good Rust CSS parser ;) |
| 07:29 | <MikeSmith> | oh hey |
| 07:29 | <MikeSmith> | that would be more fun actually |
| 07:31 | <MikeSmith> | Ms2ger: did SimonSapin write that? |
| 07:31 | <Ms2ger> | Yup |
| 07:31 | <MikeSmith> | yeah |
| 07:31 | <MikeSmith> | perusing https://github.com/servo/rust-cssparser/commits/master |
| 07:33 | <MikeSmith> | this would be a great way for me to learn rust and make something actually useful when doing it |
| 07:33 | <SimonSapin> | MikeSmith: feel free to file issues or ping me about this |
| 07:33 | <MikeSmith> | SimonSapin: will do |
| 07:34 | <MikeSmith> | (btw y'all really want to have a TR link in the description of that repo? "Rust implementation of CSS Syntax Level 3 http://www.w3.org/TR/css-syntax-3/" |
| 07:35 | <SimonSapin> | good point |
| 07:35 | <MikeSmith> | http://drafts.csswg.org/css-syntax/ I guess |
| 07:36 | <MikeSmith> | SimonSapin and TabAtkins btw please consider to stop using http://dev.w3.org/ URLs in CSS drafts |
| 07:36 | <MikeSmith> | and just use http://drafts.csswg.org/ URLs instead |
| 07:37 | <SimonSapin> | I was gonna say I wish we could pick one. Could it be a redirect? |
| 07:37 | <MikeSmith> | SimonSapin: redirect? why not just use http://drafts.csswg.org/css-syntax/ ? |
| 07:38 | <SimonSapin> | MikeSmith: I mean, could http://dev.w3.org/csswg/ redirect to https://drafts.csswg.org/ rather than proxy? |
| 07:38 | <MikeSmith> | all http://dev.w3.org/csswg URLs are rewrites; reverse-proxying or whatever Apache calls it |
| 07:38 | <SimonSapin> | make it HTTP 301’s |
| 07:38 | <MikeSmith> | SimonSapin: it could yeah |
| 07:38 | <MikeSmith> | I should make it do that |
| 07:39 | <SimonSapin> | that will make people use the new URL |
| 07:39 | <MikeSmith> | yeah |
| 07:39 | <SimonSapin> | I tend to navigate to whatever is in my browser history, and copy/paste whatever is in the URL bar |
| 07:39 | <MikeSmith> | yup |
| 07:39 | <MikeSmith> | I will tell plinss I'm going to change it to a 301 |
| 07:40 | <SimonSapin> | make it HTTPS, while you’re at it :) |
| 07:40 | <MikeSmith> | at this point it's just an additional point of possible failure that adds nothing except having w3.org in the URL |
| 07:41 | <MikeSmith> | I think that dev.w3.org server isn't on the list of servers that the W3C systems team is working on moving to https |
| 07:41 | <SimonSapin> | I mean redirect to https:// |
| 07:42 | <MikeSmith> | ah yeah |
| 07:42 | <MikeSmith> | sure |
| 07:43 | <MikeSmith> | SimonSapin: so the servo rust parser fully conforms to the current CSS syntax spec? |
| 07:43 | <SimonSapin> | it might not be completely up to date |
| 07:44 | <Ms2ger> | Variables? |
| 07:44 | <MikeSmith> | Ms2ger: you mean it doesn't support CSS Variables yet? |
| 07:45 | <Ms2ger> | I don't know |
| 07:45 | MikeSmith | tries to remember if/where CSS Variables have been implemented |
| 07:45 | <Ms2ger> | Is there any parser work required for them? |
| 07:46 | <MikeSmith> | good question |
| 07:46 | MikeSmith | looks around for a CSS-parser implementor to ask |
| 07:47 | <MikeSmith> | y'all know of any other rust-based tools anybody's made for providing the server-side backend of Web app? |
| 07:48 | <MikeSmith> | or some kind of existing rust-based http server |
| 07:49 | <SimonSapin> | MikeSmith: rust-cssparser is property agnostic, you need to write parsing code for every property you want to support. It implements the Syntax spec and nothing else. |
| 07:49 | <Ms2ger> | hyper/iron |
| 07:49 | MikeSmith | finds https://github.com/chris-morgan/rust-http |
| 07:49 | <Ms2ger> | rust-http is abandoned |
| 07:49 | <MikeSmith> | ah OK |
| 07:49 | <SimonSapin> | MikeSmith: try https://github.com/iron/iron |
| 07:49 | MikeSmith | looks |
| 07:50 | <MikeSmith> | SimonSapin: ok (about "property agnostic, you need to write parsing code for every property you want to support" |
| 08:07 | <kochi> | Is "CSS Custom Properties" a new name for "CSS Variables"? |
| 08:18 | <MikeSmith> | kochi: /me doesn't know |
| 08:20 | <MikeSmith> | SimonSapin: can rust-cssparser in its current form be feasibly made error-reporting? |
| 08:20 | <SimonSapin> | kochi: yes |
| 08:20 | <kochi> | SimonSapin: thx, I thought it was once abondoned ;) |
| 08:55 | <MikeSmith> | SimonSapin: you saw my question earlier? |
| 08:55 | <MikeSmith> | about error reporting? |
| 09:25 | <annevk> | MikeSmith++ for redirecting dev.w3.org |
| 09:54 | <annevk> | miketaylr: https://twitter.com/compatstandard should perhaps link to the spec? |
| 09:54 | <annevk> | miketaylr: although I guess there isn't much of a spec yet |
| 10:28 | smaug____ | wonders if dglazkov ended up with the current Custom elements design because running ctors sync was just too hard |
| 10:28 | <annevk> | smaug____: part of the problem was that constructors were not a thing |
| 10:29 | <annevk> | smaug____: but yes, I think the "invoke callbacks a little later" stems from the invariants breaking trouble |
| 10:48 | <annevk> | JakeA: you around? |
| 10:48 | <JakeA> | annevk: yep! |
| 10:48 | <annevk> | JakeA: in step 2.2 of https://fetch.spec.whatwg.org/#http-fetch why do we disallow a CORS response to a client request? |
| 10:50 | <JakeA> | annevk: wanderview asked me this recently & I couldn't remember. It may have been a precaution, but I don't see what it prevents as you could just make a manual response with the same content |
| 10:52 | <annevk> | JakeA: I want to change that line to 'if request is a navigation request and response is "opaque"' |
| 10:52 | <annevk> | JakeA: although I think that might be covered already by 'request's mode is not "no-cors" and response's type is "opaque".' I'm not entirely sure, since HTML hasn't been updated yet |
| 10:53 | <annevk> | (I think a navigation request, by definition, is always with mode "same-origin") |
| 10:54 | <JakeA> | agreed. I don't think we'd need to single out 'navigation', even if we did we'd want to ensure other client requests don't get opaque content |
| 10:56 | <annevk> | JakeA: well I know for a fact that workers are always "same-origin" |
| 10:56 | <annevk> | JakeA: and client is navigation + workers |
| 10:57 | <JakeA> | annevk: could it be an "assert" in the spec? (until HTML specifies same-origin for navigations) |
| 10:58 | <annevk> | JakeA: I could make it a note for now, I don't really have formal asserts anywhere |
| 10:59 | <JakeA> | A note would be good enough |
| 11:04 | <annevk> | JakeA: ta |
| 11:10 | <annevk> | JakeA: wanderview: https://github.com/whatwg/fetch/commit/1612905aae06fdb912779b308d71bfc13422833f |
| 11:11 | <JakeA> | annevk: lgtm |
| 11:12 | <annevk> | JakeA: how is cancelation going? |
| 11:13 | <annevk> | JakeA: the only new tricky thing I can think of there is being able to cancel "no-cors" stuff and thereby perhaps being able to extract data somehow |
| 11:14 | <JakeA> | annevk: Haven't looked at it for a couple of weeks (holiday, then this week), but I was approaching a prototype. Going to stab at it on the flight |
| 11:14 | <JakeA> | The plan is to make Promise cancelable, but only by the creator |
| 11:14 | <JakeA> | and have CancelablePromise which is cancelable by outsiders |
| 11:14 | <annevk> | And you're refcounting? |
| 11:15 | <JakeA> | CancelablePromise would have the refcounting |
| 11:15 | <annevk> | What would fetch() use? |
| 11:15 | <JakeA> | the tough bit, which is still todo, is how to handle promises resolved with promises |
| 11:15 | <JakeA> | fetch() would use CancelablePromise |
| 11:15 | <JakeA> | (or you could opt into it) |
| 11:16 | <JakeA> | fetch(url, {cancelable: true}) perhaps - although I'd rather it was default |
| 11:16 | <annevk> | I see, perhaps the solution for "no-cors" is simply that you can't cancel it |
| 11:16 | <annevk> | That would certainly be the least leaky |
| 11:18 | <annevk> | Although even for CORS that'd mean you could only cancel it once you have seen the headers and followed the redirects... |
| 11:18 | <JakeA> | annevk: I was talking to David Benjamin & Ryan Sleevi about it briefly yesterday, they weren't too bothered about it. |
| 11:18 | <annevk> | Hmm okay |
| 11:19 | <JakeA> | It's not the final say, but we couldn't think of something that'd leak with a partial body |
| 11:20 | <annevk> | I'm mostly worried about stuff like `p { content: "Secrets!" } p { content: "no secrets" }` |
| 11:20 | <annevk> | and similar things in script |
| 11:21 | <JakeA> | Script is running in the context of the page, so you're only shooting yourself in the foot |
| 11:22 | <annevk> | Yeah, seems hard to extract data from a script, though we do make exceptions opaque and don't expose comments and such |
| 11:22 | <annevk> | Attackers are pretty clever and manage to exploit all kinds of things nobody thought of |
| 11:23 | <JakeA> | I didn't know about the exception thing. Are you saying if a no-cors script throws, window.onerror doesn't get a full picture of it? |
| 11:23 | <annevk> | correct |
| 11:23 | <JakeA> | TIL |
| 11:23 | <annevk> | <script> does not check MIME types, so you'd be able to load all kinds of resources and extract data from the exception that way |
| 11:24 | <JakeA> | True, certainly for parse errors |
| 11:24 | <annevk> | JakeA: if you have time: https://github.com/whatwg/fetch/issues/67 |
| 11:47 | <SimonSapin> | MikeSmith: at the moment rust-cssparser ignore what the Syntax spec calls "parse errors". But with some work that could be added |
| 11:58 | <MikeSmith> | SimonSapin: ok |
| 12:00 | <MikeSmith> | SimonSapin: I see the code for BadURL etc, and it wouldn't be much work to add some error-reporting for those which could optionally be switched on by consuming apps that want error reporting |
| 12:02 | <SimonSapin> | MikeSmith: Yes, each of Bad*, and after the parser Close* tokens is a parse error, but they don’t represent all parse errors |
| 12:03 | <SimonSapin> | I have to double check if the spec ever emits more than one parse error per token. If not, the tokenizer could yield something like (Token, Option<ParseError>) rather than just Token |
| 12:07 | <MikeSmith> | SimonSapin: OK |
| 12:09 | <MikeSmith> | annevk: square brackets in URL query part or path must be percent-encoded, right? |
| 12:27 | <Ms2ger> | TabAtkins, hey, could you have a look at https://github.com/Reviewable/Reviewable/issues/127 ? |
| 12:45 | <annevk> | MikeSmith: something around that changed recently |
| 12:46 | <annevk> | MikeSmith: I think they must be encoded, but are not by the parser if they aren't |
| 12:47 | <MikeSmith> | annevk: ok |
| 13:47 | <TabAtkins> | MikeSmith: Variables are impl'd in Firefox and about to be turned on in Chrome. An earlier (and prefixed >_<) syntax of them is in WebKit. |
| 13:47 | <annevk> | MikeSmith: spam https://www.w3.org/Bugs/Public/show_bug.cgi?id=27162#c2 |
| 13:50 | <TabAtkins> | Ms2ger or MikeSmith: A Syntax-supporting browser doesn't need to do anything special to support Custom Properties. The actual style system implementation generally does, because it's not used to storing raw tokens or pasting them into other properties at computed-value-time, but at the parsing level they're nothing special. |
| 14:00 | <miketaylr> | annevk: cool, will add the link |
| 14:00 | <miketaylr> | (and fix the commit thing today hopefully) |
| 14:01 | <MikeSmith> | TabAtkins: ok, thanks |
| 14:02 | <miketaylr> | oh wait, it looks like it already tweeted. |
| 14:05 | <Ms2ger> | "Google is not affiliated with the contents of Chromium Code Reviews or its owners." |
| 14:05 | <MikeSmith> | annevk: somebody else already disabled that bug-spammer's account |
| 14:07 | <TabAtkins> | Ms2ger: Correct, we're not, Chromium is an open-source project that happens to be mostly worked on by Googlers. |
| 14:12 | <MikeSmith> | everybody wants to be like, "Hey *I'm* not the one who made this code-review tool with a really bad UI and user experience." |
| 14:12 | <TabAtkins> | It really is the worst. |
| 14:13 | <MikeSmith> | yeah I feel genuinely sorry for people who have to use it every day |
| 14:14 | <MikeSmith> | but then pretty much all code-review tools that browser projects use are pretty bad as far as the UI and UX |
| 14:15 | <MikeSmith> | but that one looks like to was designed by somebody at Oracle, or SAP |
| 14:24 | <Domenic> | You can switch to the new UI, it feels less horrible |
| 14:25 | <TabAtkins> | Domenic: How?!? |
| 14:26 | <Domenic> | TabAtkins: settings, uncheck use legacy UI |
| 14:26 | <annevk> | miketaylr: I didn't touch anything related to Twitter, but when I changed the README it did tweet indeed |
| 14:36 | <Domenic> | yesss it's coming full circle https://twitter.com/feross/status/621960735401193472 |
| 14:37 | <Ms2ger> | So the not "deprecated ui" is just "wait forever until everything's loaded client-side"? |
| 14:38 | <Domenic> | I think there's a reason it's not on by default. |
| 14:39 | <MikeSmith> | choose your poison |
| 14:42 | <MikeSmith> | I think tools that people in product-development orgs develop and foist on one another are subconsciously some form of complex passive-aggressive way to try to punish each other |
| 14:49 | <jgraham> | MikeSmith: It's not like there are all these great commercial review tool products available |
| 14:49 | <jgraham> | The actual state of the nation seems to be "everything sucks in different ways" |
| 14:50 | <MikeSmith> | jgraham: true, I guess there's not a big market out there for it with people who have lots of high expectations for it in terms of usability |
| 14:51 | <TabAtkins> | It's Better Than Command Line® |
| 14:51 | <jgraham> | Well, I think to a certain extent that's untrue |
| 14:53 | <jgraham> | People want a specific kind of usability which isn't necessarily the same as for some random content consuming app |
| 14:53 | <wanderview> | annevk: is this something that will be fixed in the fetch spec or does it need to go in the other specs? "The underlying assumption here is that all client requests use mode "same-origin", which is currently not explicitly stated for navigation requests." |
| 14:53 | <jgraham> | It has to have all the reequired features to make them productive and not get in the way of their prefered workflow |
| 14:53 | <annevk> | wanderview: needs to be fixed in HTML |
| 14:53 | <annevk> | wanderview: specifically its navigate algorithm |
| 14:54 | wanderview | doubts we set event.request.type correctly |
| 14:54 | <annevk> | wanderview: you mean context? |
| 14:55 | <wanderview> | annevk: sorry... RequestMode |
| 14:55 | <wanderview> | I'll have to look at what we do... we seem to set no-cors correctly for cross origin stuff... just wondering if we set same-origin in the right places |
| 14:58 | <smaug____> | MikeSmith: designing a good code review tool seems to be very very hard, because people have their own habits for reviewing code |
| 14:58 | <smaug____> | one tool may not fit to all |
| 15:20 | <wanderview> | annevk: do you really think get-with-bodies is worth it if you're never going to get the right caching semantics anyway? might as well just require post to be used |
| 15:21 | <annevk> | wanderview: it didn't seem to be about caching so much |
| 15:21 | <wanderview> | annevk: one of the whole complaints about post was that it broke caching, though |
| 15:22 | <wanderview> | the other complaint about post is that "its not theoretically pure to the REST concept"... which I don't really rate as a concern |
| 15:24 | <annevk> | wanderview: I think the main point is that HTTP allows it while we don't |
| 15:24 | <annevk> | wanderview: at least for me |
| 15:25 | <annevk> | wanderview: that seems worth sorting out a definitive answer to at some point, but likely not this year |
| 15:25 | <annevk> | (but others are welcome to prioritize differently of course and sort it out) |
| 15:26 | <wanderview> | annevk: does it really allow GET bodies? the spec he linked to says "A payload within a GET request message has no defined semantics; sending a payload body on a GET request might cause some existing implementations to reject the request." |
| 15:27 | <annevk> | wanderview: none of that says it's disallowed |
| 15:27 | <annevk> | wanderview: would have to be a quite literal statement or grammar production |
| 15:28 | <annevk> | "no defined semantics" means nothing, since some protocol on top of HTTP might give it semantics |
| 15:28 | <wanderview> | ok... I just don't see the advantage of using GET over POST if you're not getting caching semantics anyway |
| 15:29 | <wanderview> | anyway, I have to run to meet someone for lunch... later |
| 19:18 | <danbeam> | TabAtkins: * /deep/ [attr] doesn't work if the first level of elements has [attr] |
| 20:19 | <TabAtkins> | danbeam: That's why I said `[attr], * /deep/ [attr]`. (It's unfortunate we don't have the ability to do "self and combinator".) |