| 08:01 | <annevk-cloud> | Literal check may be better there, btw |
| 08:01 | <annevk-cloud> | Especially if we do that for script |
| 08:39 | <zcorpan> | jgraham: not being able to use {{host}} etc in tests directly is a bit annoying. would it be possible to enable it with __dir__ or something? |
| 09:38 | <darobin> | annevk-cloud: do you know what the cases are, if any, in which it isn't possible to convert a string to punycode? |
| 09:38 | <darobin> | looking at it it would seem to happily munge anything |
| 09:40 | <darobin> | I ask because HTML says "Constraint validation: While the user interface is representing input that the user agent cannot convert to punycode, the control is suffering from bad input." (for email inputs) |
| 09:41 | <darobin> | but deniak has been having trouble writing a test for that :) |
| 09:47 | <Ms2ger> | So, when is an object element rendered as a replaced element? |
| 10:58 | <jgraham> | zcorpan: Yeah. Not sure how to solve that best |
| 11:10 | <annevk-cloud> | darobin: not sure if punycode can fail, but ToASCII can |
| 11:22 | <zcorpan> | jgraham: would it be bad to have sub enabled for all .html files? |
| 11:25 | <jgraham> | zcorpan: Yeah, I think so. I strongly suspect it makes things much slower |
| 11:44 | <jgraham> | zcorpan: We could make some hack like a file extension to indicate that substitutions should be applied |
| 11:45 | <jgraham> | like foo.sub.html |
| 11:46 | <zcorpan> | wfm |
| 13:17 | <annevk> | Hixie: elsewhere you do use :not(.classname) fwiw |
| 14:12 | <annevk> | smaug____: yo, could you maybe comment on your preference with regards to GC of Notification objects in https://github.com/whatwg/notifications/issues/9 ? |
| 14:12 | <annevk> | I wonder what we've done so far in such scenarios |
| 14:14 | <smaug____> | github |
| 14:14 | <smaug____> | uh |
| 14:14 | <smaug____> | looking... |
| 14:14 | <smaug____> | (while eating lunch ) |
| 14:19 | <smaug____> | annevk: is there really any other option than returning always new notification |
| 14:19 | <annevk> | smaug____: Notification objects could be tied to the lifetime of the global |
| 14:20 | <smaug____> | so over timer there can be tons of them... |
| 14:20 | <smaug____> | say an email app |
| 14:21 | <annevk> | smaug____: well, notifications that are closed can be collected |
| 14:21 | <smaug____> | sure |
| 14:21 | <smaug____> | what was the reason to add .get() |
| 14:22 | <annevk> | smaug____: if you close your email page and then open it again later while notifications are still in the notification center |
| 14:23 | <annevk> | smaug____: or if you open your email page again in another window and you want to know about existing notifications |
| 14:23 | <smaug____> | ah, right |
| 14:24 | <smaug____> | but it is getOrCreate |
| 14:24 | <smaug____> | currently |
| 14:26 | <annevk> | well, it gets notifications, either as existing Notification objects, or as newly created ones if the global didn't have any representation for them yet |
| 14:26 | <annevk> | it doesn't create new notifications, just new Notification objects |
| 14:26 | <smaug____> | could we call get() something else and always create a new Notification for each notifications |
| 14:28 | <annevk> | getCopies() |
| 14:28 | <annevk> | getClones() |
| 14:28 | <smaug____> | since it is a bit odd if (new Notification({})) != Notification.get({}),<add_random_promise_stuff_here>; |
| 14:28 | <smaug____> | yeah, either one |
| 14:28 | <smaug____> | perhaps Clones |
| 14:29 | <annevk> | mkay |
| 14:29 | <annevk> | I guess I also need to clarify that GC should not happen if we have event listeners attached? |
| 14:29 | <annevk> | At least for particular events |
| 14:29 | <smaug____> | right |
| 14:29 | <annevk> | Something similar to http://xhr.spec.whatwg.org/#garbage-collection |
| 14:30 | <smaug____> | WebSocket has something similar too |
| 14:30 | <annevk> | Mkay, we'll go with this I guess |
| 14:33 | <annevk> | smaug____: so the annoying thing with always new is the event listeners I think |
| 14:34 | <annevk> | smaug____: you don't want to add them all over |
| 14:34 | <smaug____> | well, if you don't want to add new ones, you keep ref to the original Notification or something |
| 14:35 | <annevk> | smaug____: sure you would, but now you got a copy of that one so you need to make some kind of crappy comparison between the two |
| 14:35 | <Ms2ger> | .isEqualNotification |
| 14:36 | <annevk> | Ms2ger: right :/ |
| 14:36 | <annevk> | That's mostly why my design tried to preserve === but I guess once you add an <iframe> or a worker you're already in trouble |
| 14:40 | <mathiasbynens> | smaug____: just wanted to say i loved your performance in the hobbit 2 |
| 14:40 | <smaug____> | I was pretty good |
| 14:44 | <smaug____> | .equals() is a bit annoying |
| 14:45 | <smaug____> | but works |
| 14:46 | <annevk> | oh my |
| 14:48 | <annevk> | bah Ms2ger, now I found some buggy wording in isEqualNode |
| 14:49 | annevk | remembers TabAtkins mentioning he fixed Selectors |
| 14:49 | <Ms2ger> | annevk, the recursive call? |
| 14:50 | <annevk> | Ms2ger: yeah, both it not being in terms of an abstract algorithm and the way it is invoked |
| 14:51 | <Ms2ger> | Clearly I should have caught that :) |
| 14:51 | <annevk> | Ms2ger: I also never really tested this method so now I'm wondering what it does for <input>.value and a <script> that has run versus one that hasn't and such |
| 14:52 | <Ms2ger> | Mm |
| 14:52 | <Ms2ger> | I think nothing special |
| 14:52 | <Ms2ger> | But that's without leaving my sense of logic at the door |
| 14:54 | <annevk> | .value is ignored :-) |
| 14:54 | <annevk> | But yeah, I guess I'll rewrite this in terms of a concept-node-equals |
| 14:54 | <Ms2ger> | Oh right, the domparsing review |
| 14:55 | <Ms2ger> | Thanks zcorpan |
| 14:55 | <Ms2ger> | annevk, mm, I pretty much did that in servo too :) |
| 14:56 | Ms2ger | had a good laugh at the compatibility section on https://businessportal.alcatel-lucent.com/ |
| 14:58 | <annevk> | Ms2ger: what about all this purported upstream Servo specification review then?! |
| 14:59 | <Ms2ger> | I didn't read well enough :) |
| 15:55 | <TabAtkins> | annevk: http://dev.w3.org/csswg/selectors/#data-model Just using the DOM as the Selectors element tree in HTML. |
| 15:56 | <annevk> | TabAtkins: the whole "in HTML" thing doesn't make much sense to me |
| 15:56 | <annevk> | TabAtkins: by the team you get to Selectors, there's no HTML |
| 15:56 | <annevk> | time* |
| 15:56 | <TabAtkins> | Yes there is. That's the host document. |
| 15:56 | <annevk> | HTML is syntax, DOM is representation |
| 15:57 | <TabAtkins> | Oh, I see. So something more like - in documents represented by a DOM? |
| 15:57 | <annevk> | What if I created the whole thing through createDocument() and createElement() and then did matching? |
| 15:57 | <annevk> | Yeah |
| 15:58 | <TabAtkins> | annevk: Except wouldn't that suggest that Selectors should never mention HTML in any way? |
| 15:58 | <annevk> | TabAtkins: well that is kind of my opinion |
| 15:59 | <annevk> | TabAtkins: you could talk about HTML elements |
| 15:59 | <TabAtkins> | But some of that's completely wrong. The DOM doesn't give the table pseudos any meaning. |
| 15:59 | <TabAtkins> | Ah, okay. |
| 15:59 | <annevk> | TabAtkins: but you also happily match against elements that are not HTML elements |
| 15:59 | <TabAtkins> | Yeah. |
| 15:59 | <TabAtkins> | All right, I'm satisfied. |
| 16:00 | <annevk> | The way the table pseudos get meaning is because certain elements have additional flags, such as whether those pseudos match :-) |
| 16:00 | <TabAtkins> | I wonder how I should handle XML here. Invoke Infoset? Or just lean on DOM? |
| 16:00 | <annevk> | DOM |
| 16:01 | <annevk> | At least as far as browsers are concerned DOM is the model we use and operate on. Other players can easily map DOM to their own model. That seems easiest |
| 16:20 | <dglazkov> | good morning, Whatwg! |
| 16:25 | <annevk> | smaug____: any thoughts on https://www.w3.org/Bugs/Public/show_bug.cgi?id=23268 ? |
| 16:26 | <smaug____> | mtg |
| 16:27 | <annevk> | smaug____: sounds like a good reason to give it a thought |
| 16:28 | <smaug____> | ha |
| 16:37 | <annevk> | W3C is now using CORS as example for security propaganda? http://www.w3.org/blog/2014/02/strengthen-web-security-on-the-day-we-fight-back/ |
| 16:45 | <Domenic_> | hehehe |
| 16:46 | <jgraham> | You have to love campaigns about global issues that assume all internet users are from the USA |
| 16:46 | <marcosc> | :) |
| 16:47 | <marcosc> | I wonder who here works for the NSA :) |
| 16:48 | <marcosc> | "We do not believe any of W3C’s Recommendations were weakened through interference"... it says nothing about WHATWG specs, which no doubt have been meddled with. My money is on MikeSmith as a double agent. |
| 16:49 | <qrwteyrutiyoup> | lol :) |
| 16:53 | <foolip> | Ms2ger: ping? |
| 16:54 | <foolip> | Ms2ger: ok if I do both the things you asked in https://critic.hoppipolla.co.uk/r/767 on separate branches? there's lots of things to fix here but I'd like to keep it to one topic per branch as much as possible... |
| 16:55 | <annevk> | jgraham: I got excited there for a minute, thought you were talking about global object issues |
| 16:56 | <Ms2ger> | foolip, if it happens, sure :) |
| 16:56 | <jgraham> | annevk: I thought we didn't have global objects, just realms :p |
| 16:57 | <foolip> | Ms2ger: it will |
| 16:57 | <SimonSapin> | annevk for Protector of the Realm? |
| 16:57 | <Ms2ger> | Thanks :) |
| 16:58 | <Ms2ger> | I thought he didn't stand for re-election? |
| 17:02 | <odinho> | Hmm. They must've meant CSP. |
| 17:04 | <gsnedders> | Can we make a rule that all initalisms must be universally unique? |
| 17:05 | <SimonSapin> | haha |
| 17:06 | <gsnedders> | I keep thinking Communicating Sequential Processes. Which are quite different to the Content Security Policy. |
| 17:06 | <SimonSapin> | "There aren't enough small numbers to meet the many demands made of them." |
| 17:07 | <jgraham> | I keep thinking Continuation Passing Style, so I'm not sure that uniqueness is all it's cracked up to be |
| 17:07 | <gsnedders> | But that's CPS, not CSP! |
| 17:10 | <jgraham> | Hence uniqueness not being all it's cracked up to be |
| 17:29 | <TabAtkins> | I kinda like that moment in the conversation when you realize the person you're talking to has absolutely no clue what they're talking about. |
| 17:30 | <jgraham> | Like the inverse of http://xkcd.com/451/ ? |
| 17:30 | <TabAtkins> | In this case, it was some rando saying that with Blink dropping Regions, he might as well go native. |
| 17:30 | <TabAtkins> | He citied iOS Regions (they have something *similar* to Regions, but much less complex), then pointed to a web page as an example. |
| 17:31 | <TabAtkins> | Talking about how pretty it was in Safari. I was confused, so I pressed him on how it was native. |
| 17:31 | <TabAtkins> | He responded that he'd just develop apps wrapped around a webview. |
| 17:31 | <TabAtkins> | /headdesk |
| 17:32 | <TabAtkins> | (If he's targetting iOS, Blink doesn't matter anyway, because it doesn't even *exist* on the platform. iOS Chrome is just a wrapper around Safari.) |
| 17:32 | <TabAtkins> | jgraham: If it had been in person, the conversation would have been over in a minute or two. |
| 18:09 | <GPHemsley> | CPS = Child Protective Services; Crown Prosecution Service |
| 18:11 | <Ms2ger> | foolip, got more? :) |
| 18:46 | <TabAtkins> | Anyone in here got Chrome Beta or newer, on Mac or Windows? Mind seeing if this looks messed up? http://software.hixie.ch/utilities/js/live-dom-viewer/?saved=2805 |
| 18:47 | <TabAtkins> | Anyone in here got Chrome Beta or newer, on Mac or Windows? Mind seeing if this looks messed up? http://software.hixie.ch/utilities/js/live-dom-viewer/?saved=2805 |
| 18:48 | <amtiskaw> | Looks OK to me in Canary on Windows |
| 18:48 | <TabAtkins> | Okay, might be just a Linux issue then. |
| 18:50 | <TabAtkins> | amtiskaw: Just to make sure - you're seeing three distinct character on each line? The characters aren't jumbled up and overlapping each other? |
| 18:51 | <amtiskaw> | TabAtkins: Yep, all distinct. Rendering matches Firefox Nightly almost exactly, as far as I can see. |
| 18:51 | <TabAtkins> | Thanks! |
| 21:51 | <Domenic_> | How do you use :has to emulate `a !b ~ c`? |
| 21:51 | <Domenic_> | TabAtkins ^ |
| 21:52 | <TabAtkins> | Domenic_: That's almost exactly the same selector we have in the poll. |
| 21:52 | <TabAtkins> | a b:has(~ c) |
| 21:53 | <Domenic_> | Yeah I guess it makes sense. It's a bit weird because I only think of elements as "having" their children |
| 21:53 | <TabAtkins> | They also "have" siblings. |
| 21:54 | <Domenic_> | wfm |
| 21:56 | <Hixie> | a b:matches(# ~ c) { } |
| 21:57 | <Hixie> | the real question is how do you do b:matches(a #):matches(b #) with ! |
| 21:57 | <Hixie> | or b:matches(# a):matches(# b) { } |
| 22:04 | <Domenic_> | Can `p:has(a) ~ .legal { display: block }` be translated to using `!`? |
| 22:57 | <TabAtkins> | Domenic_: :matches(!p a) ~ .legal |
| 22:57 | <TabAtkins> | Hixie: That's a <b> with both <a> and <b> ancestors? |
| 22:58 | <TabAtkins> | :matches(a b, b b) |
| 22:58 | <Hixie> | right |
| 22:58 | <Hixie> | yeah, commas can get you some of the way, but they don't scale well |
| 23:00 | <Hixie> | :matches(!p a) ~ .legal is kinda ugly (why would the p be in the :matches?). p:matches(!* a) ~ .legal is basically the same as p:matches(# a) ~ .legal which is what i proposed years ago |
| 23:00 | <TabAtkins> | p:matches(!* a) doesn't match anything. |
| 23:00 | <Hixie> | why not? |
| 23:00 | <TabAtkins> | The subject of the :matches() selector is the thing the :matches() pseudo-class is attached to. |
| 23:01 | <TabAtkins> | p:matches(a) is nonsense. |
| 23:01 | <Hixie> | p:matches(# a) and p:matches(a) are completely different. |
| 23:02 | <TabAtkins> | Only if you're using a different definition of :matches() than the spec has. |
| 23:02 | <Hixie> | (and in my original proposal, p:matches(a) would match any <p> in a document with an <a>) |
| 23:02 | <Hixie> | (which i still think makes way more sense) |
| 23:02 | <Hixie> | how is :matches(!p a) not equivalent to p:matches(!* a) ? |
| 23:03 | <TabAtkins> | In "A:matches(B C)", the C part of the selector refers to the same element as the A part. |
| 23:03 | <TabAtkins> | The subject of the :matches() selector arguments is A. |
| 23:05 | <Hixie> | sure |
| 23:05 | <Hixie> | and in A:matches(!B C), the subject of the argument is the B, which is the same element as the A |
| 23:06 | <Hixie> | and in the original proposal, A:matches(# C), the # is the subject of the argument, which is the same elmeent as the A |
| 23:06 | <TabAtkins> | Oh, right. Yes, you're right. |
| 23:06 | <TabAtkins> | *:matches(!p a) is identical to p:matches(!* a) |
| 23:07 | <Hixie> | that's why the original proposal for :matches and :has had two separate pseudo-classes |
| 23:07 | <Hixie> | because in :matches(), the condition was just "there is an element that matches this", without the # it wasn't linked to the element on which the pseudo was found |
| 23:07 | <Hixie> | :has() was then :matches() with an implied "#" at the start of the selector argument |
| 23:08 | <Hixie> | ("!" is net inferior since it is a subset of the expressiveness, without actually limiting what can be said, it just makes it more verbose, as far as i can tell) |