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)