00:01 | <TabAtkins> | bga_: We (subset of Chrome team working on this stuff) want something very similar to that. |
00:04 | <bga_> | i need time to implement it |
00:35 | <bga_> | lol http://www.firefoxwithbing.com/ |
01:20 | <Hixie> | anne: need your input on http://www.w3.org/Bugs/Public/show_bug.cgi?id=14284 |
07:39 | <bitgod> | hello? |
09:53 | <zcorpan> | http://doctype.com/figure-used-background-images |
09:53 | <annevk> | ah, Mike must be traveling |
09:54 | <annevk> | I guess I should write a weekly |
09:54 | <annevk> | hmm |
09:59 | <annevk> | hsivonen, what did you implement for http://www.w3.org/Bugs/Public/show_bug.cgi?id=14284 ? |
09:59 | <annevk> | hsivonen, I don't really mind either way |
09:59 | <annevk> | hsivonen, it seems sicking feels somewhat strongly for lots of sniffing though he has no figures to back that up... |
10:00 | <annevk> | hsivonen, I would personally be fine with the simple rules or GTFO |
10:01 | <erlehmann> | hahaha |
10:01 | <erlehmann> | tha attribute styling stuff is COMEDY GOLD |
10:04 | <annevk> | erlehmann: ? |
10:06 | <hsivonen> | annevk: I implemented the following: |
10:06 | <erlehmann> | annevk, Jukka K. Korpela <jkorpela⊙ctf> suggested using <div type="nav"> instead of <nav> for IE compatibility. |
10:06 | <erlehmann> | and then simon pieters was like “<div type="nav"> is not stylable in IE6 because it doesn't support |
10:06 | <erlehmann> | attribute selectors.” |
10:06 | <erlehmann> | i pooped a little. |
10:06 | <hsivonen> | text/html in non-default, non-document modes works like an unknown type |
10:07 | <hsivonen> | annevk: in the default and document modes, for text/html first honor HTTP, failing that BOM, failing that <meta> within the first 1024 bytes |
10:08 | <hsivonen> | annevk: if we have to look for <meta>, stall output until the parser has seen the <meta> or received 1024 bytes |
10:08 | <hsivonen> | if the parser sees 1024 bytes without a <meta> (and without BOM or HTTP-level charset), use UTF-8 |
10:08 | <hsivonen> | annevk: HOWEVER |
10:08 | <hsivonen> | annevk: doing this breaks our mochitests |
10:09 | <hsivonen> | annevk: specifically, we have something that tests redirects and tries to read the resource body of a redirect response |
10:09 | <hsivonen> | which is marked text/html without an explicit charset |
10:09 | <hsivonen> | annevk: so this stuff may not be entirely done yet |
10:10 | <hsivonen> | annevk: I've been pondering the idea of not stalling as long as the data before the <meta> is in the printable ASCII range |
10:11 | <hsivonen> | annevk: not stalling responseText that is |
10:11 | <annevk> | ow |
10:11 | <annevk> | that sounds tricky |
10:11 | <roc> | hsivonen: are you just worried about the test, or are you worried that the same pattern is likely to show up in real life? |
10:11 | <hsivonen> | annevk: I'll analyze the situation and see if it's reasonable to try to change the test |
10:12 | <hsivonen> | roc: so far, only a test |
10:15 | <annevk> | hsivonen: did you consider completely disabling the <meta> thing? |
10:16 | <annevk> | hsivonen: Hixie: I updated the bug saying we're waiting for implementation experience from Gecko |
10:17 | <annevk> | the CSS WG decided to not change vm/vw |
10:17 | <annevk> | grmbl |
10:26 | <hsivonen> | annevk: I considered it briefly after Hixie suggested it, but disabling <meta> altogether would mean deviating even more from what sicking wanted and I'm in principle uncomfortable with not supporting all conforming documents |
10:33 | <annevk> | http://www.w3.org/html/wg/wiki/ChangeProposals/av_param o_O |
10:34 | <annevk> | insanity is prevailing it seems |
10:34 | <annevk> | hsivonen: fair enough, sounds good to me generally |
10:39 | <boblet> | annevk: quick q about HTML5 diffs doc. It mentions absent elements "are not in HTML5". I thought they were obsolete (not for author use) but still covered by HTML5 (=in the spec with guidance for implementors) |
10:39 | <boblet> | it’s re: https://github.com/html5doctor/diveintohtml5/issues/1 |
10:40 | <roc> | who's behind av_param? |
10:41 | <annevk> | Glenn Adams |
10:41 | <annevk> | he contracts for some unnamed entity I believe |
10:41 | <roc> | Samsung |
10:42 | <annevk> | yeah, but also an unnamed entity |
10:42 | <boblet> | for me using obsolete elements in HTML5 doesn’t break the doc, just the validation. maybe I need to read defn of obsolete… |
10:42 | <roc> | he was involved in a large furore on the wwww-font list |
10:43 | <annevk> | and apparently co-chair of the Timed Text WG at some point |
10:43 | <annevk> | boblet, you should tell the guy that HTML4 is obsolete |
10:44 | <boblet> | annevk: you’re not helping :p |
10:44 | <boblet> | purist vs pragmatist, fight! ;) |
10:44 | <annevk> | boblet: just saying how it is |
10:45 | <annevk> | boblet: anyway html5-diff is written towards authors primarily |
10:45 | <annevk> | boblet: as they seem to find it most useful, and for authors, the elements are absent |
10:45 | <boblet> | annevk: for me Mark’s sentence is correct, but from an author perspective (if there are obsolete elems/attribs) maybe not so much huh |
10:48 | <annevk> | you should not read books like you read specs man |
10:49 | <annevk> | specs you can read in an anal-retentive way, maybe even should |
10:49 | <annevk> | books not so much |
10:49 | <annevk> | I would link to a blog entry where Mark explains this, but it's no longer up :( |
10:51 | <boblet> | annevk: agree. can u give me a rough title or keywords re: Mark's article? might check archive |
10:52 | <annevk> | boblet: ietf, cat pictures, w3c |
10:53 | <annevk> | boblet: maybe specs or standards |
10:54 | <boblet> | annevk: thanks as always yo |
11:15 | <karlcow> | annevk: http://web.archive.org/web/20110514114618/http://diveintomark.org/archives/2004/08/16/specs ? |
11:21 | <annevk> | no |
11:23 | <akamike> | Amusing to read though |
11:25 | <annevk> | he has written many great posts |
11:34 | <hsivonen> | I wonder how much YouTube's autocaptioning has been tested with different accents. it fails pretty hard with a typical Finnish accent (when speaking English that is) |
11:36 | <zcorpan> | i tried it on a presentation timj held. it pretty much failed |
11:37 | <hsivonen> | zcorpan: the WebGL developer? |
11:37 | <zcorpan> | yes |
11:37 | <hsivonen> | zcorpan: is he from Finland (his English sounded more like spoken by a Finn that like spoken by a Swede) |
11:38 | <zcorpan> | no |
11:41 | <annevk> | pointer? |
11:42 | <zcorpan> | http://www.youtube.com/watch?v=BnVy_uCk_es |
11:43 | <hsivonen> | annevk: http://www.youtube.com/watch?v=K6QjOjgwuWk particularly between 1:00 and 1:20 shows the speech recognition failing pretty hard |
11:46 | <zcorpan> | it transcribed "firefox" correctly but "chrome" became "croats" |
11:46 | <zcorpan> | (4:30) |
11:48 | <zcorpan> | "fragment shaders" -> "pregnant shakers" :) |
11:52 | <boblet> | annevk: “There are no exceptions to Postel’s Law”? http://web.archive.org/web/20110514120305/http://diveintomark.org/archives/2004/01/08/postels-law |
11:53 | <hsivonen> | it's nice that Mark didn't request archive.org to hide his writings |
11:54 | <hsivonen> | btw, did I miss something that I should have mentioned in http://lists.w3.org/Archives/Public/public-html-data-tf/2011Oct/0266.html ? |
12:00 | <annevk> | boblet: good find |
12:00 | <annevk> | zcorpan: haha |
12:03 | <hsivonen> | I wonder if anyone has fed yesterday's Nokia Lumia 800 announcement to a text to speech engine to see how often the said "800" in a way that sounded like "Android" |
12:03 | <hsivonen> | doh. speech to text |
12:07 | <annevk> | hsivonen: looks accurate |
12:07 | <annevk> | hsivonen: blog post worthy |
12:09 | <hsivonen> | annevk: ok. thanks. I might copy and paste it to my blog later. |
12:13 | <hsivonen> | sigh. so we have a separate parsing algorithm for WebVTT but make it treat Form Feed as white space for consistency. FAIL. :-( |
12:18 | <hsivonen> | whoa. a thread about "Signed XHTML". XML tech rathole warning! |
12:19 | <annevk> | hsivonen, we can remove the FF handling |
12:19 | <annevk> | hsivonen: should we? |
12:19 | <hsivonen> | annevk: my gut says we should |
12:19 | <hsivonen> | space, tab, cr and lf is the One True set of space characters |
12:20 | <annevk> | what does CSS have? |
12:20 | <annevk> | and why does HTML have FF? |
12:20 | <hsivonen> | HTML has FF due to beliefs about legacy |
12:21 | <hsivonen> | dunno how real the need to have FF in HTML is |
12:22 | <hsivonen> | CSS has FF. :-( |
12:22 | <annevk> | seems better to just keep FF around then |
12:22 | <hsivonen> | :-( |
12:23 | <annevk> | it's not very sad, it just means it's 5 true whitespace characters instead of 4 |
12:27 | <hsivonen> | I failed to resist replying to the signature thread |
12:55 | <zcorpan> | annevk: FF after signature would be inconsistent with cache manifests |
13:02 | <annevk> | maybe we should update those too then |
13:21 | <annevk> | http://www.firefoxwithbing.com/ is all kinds of odd, but it also makes sense I suppose |
13:36 | <hsivonen> | annevk: odd how? |
13:40 | <annevk> | Microsoft promoting the usage of a non-Microsoft browser in order to more successfully compete in the search market |
14:06 | <erlehmann> | annevk, bing even uses webm ;) |
14:06 | <erlehmann> | btw, do you know a good minimalistic contentEditable editor? |
14:54 | <hsivonen> | erlehmann: where does Bing use WebM? or did I misunderstand the smiley? |
14:56 | <hsivonen> | annevk: does Microsoft promote the firefoxwithbing.com site somewhere to users who aren't already seeking to download Firefox? |
14:56 | <erlehmann> | hsivonen, here? http://www.bing.com/?scope=web&setmkt=en-US&setlang=match&FORM=W5WA&uid=879B42B5 |
14:57 | <hsivonen> | erlehmann: cool |
14:59 | <miketaylr> | unless you're using Opera, then you get a static image |
14:59 | <miketaylr> | yay |
15:02 | <AryehGregor> | MS was never against WebM, they just don't want to ship the codecs. |
15:02 | <AryehGregor> | For liability reasons. |
15:03 | <AryehGregor> | Shipping an encoder or decoder is presumably a lot more likely to expose you to liability than providing a file. |
15:04 | <AryehGregor> | I guess patents are likely to cover the encoding or decoding process, not the file format itself. |
15:06 | <erlehmann> | AryehGregor, that is what they want you to believe. |
15:06 | <AryehGregor> | Plus, your liability for distributing one file has got to be more limited than your liability for distributing a codec that lets users view zillions of files. |
15:06 | <AryehGregor> | erlehmann, I've seen nothing to indicate that Microsoft is anything but honest in its reasons for non-support of WebM. |
15:07 | <erlehmann> | AryehGregor, non-support of vorbis? |
15:07 | <AryehGregor> | Everything they've said and done accords with their explanation that they're only concerned about patent liability. |
15:07 | <AryehGregor> | . . . Vorbis I don't know. I haven't seen any statements by them on that. |
15:07 | <AryehGregor> | People seem to not talk about the audio part much, mostly video. |
15:08 | <erlehmann> | i am interested in audio. i sometimes do podcasts. |
15:08 | <erlehmann> | also, streaming vorbis (well, anything in ogg) is easy. |
15:08 | <gsnedders> | AryehGregor: They already ship VP8. |
15:08 | <gsnedders> | AryehGregor: In Skype. |
15:08 | <AryehGregor> | gsnedders, typical. One hand doesn't know what the other is doing . . . |
15:08 | <erlehmann> | http://en.wikipedia.org/wiki/Microsoft_PlaysForSure#Criticisms |
15:08 | <AryehGregor> | Like how they argued fiercely against OTF embedding while Silverlight supported it. |
15:08 | <gsnedders> | AryehGregor: They only officially owned Skype a few days ago |
15:09 | <erlehmann> | >The license prohibited makers of portable devices compatible with Windows Media Player from using non-Microsoft audio encoding formats. |
15:09 | <gsnedders> | AryehGregor: But the risk is now their's |
15:09 | <AryehGregor> | Oh, so MPEG LA's patent search has come up with something. I didn't notice that when it happened. |
15:09 | <AryehGregor> | gsnedders, oh, well, that's different. |
15:09 | <AryehGregor> | That does change things, though. |
15:09 | <gsnedders> | AryehGregor: Different, yes, but the liability is their's. |
15:09 | <gsnedders> | AryehGregor: And it's only really the liaibility that matters. |
15:10 | <AryehGregor> | Yes. |
15:10 | <erlehmann> | AryehGregor, i have one question. if a vendor has already paid or is part of the patent consortium, what is to fear, legally, by including free codecs? |
15:10 | <jgraham> | AryehGregor: |
15:10 | <AryehGregor> | Of course, they might decide to phase out VP8 from Skype. But if they don't, it seems hard to understand why they wouldn't allow WebM in IE too. |
15:10 | <gsnedders> | AryehGregor: MPEG LA's H.264 portfolio is meant to be about 20% bogus, but the cost of going through and proving prior art for all of them is considered more costly than paying the fee |
15:11 | <gsnedders> | AryehGregor: the number of units sdhipped would have an affect on any fine. IE ships more units than Skype. |
15:11 | <AryehGregor> | erlehmann, the MPEG LA has separate patent pools for different formats. If you're paying into the H.264 patent pool, that doesn't mean you get licenses to VP8 patents, even from the same parties. |
15:11 | <gsnedders> | *shipped |
15:11 | <gsnedders> | *effect |
15:11 | <AryehGregor> | gsnedders, damages, I think, not fine. But that's true. |
15:11 | <erlehmann> | AryehGregor, to obstruct the web as a platform, of course. in before do not assume malice. |
15:11 | <gsnedders> | AryehGregor: What legally it is is rather non-important here :P |
15:12 | <annevk> | Since the initial argument Microsoft bought Skype |
15:12 | <AryehGregor> | erlehmann, I think there's decent evidence here of non-malice. |
15:12 | <AryehGregor> | Such as, they support WebM if you install the codec, which they don't do for any other format. |
15:12 | <AryehGregor> | And they publicly pledged that they'll support it if Google agrees to indemnify them. |
15:12 | <erlehmann> | they don't? isn't directShow like quicktime, supporting everything installed? |
15:12 | <gsnedders> | erlehmann: They whitelist it. |
15:13 | <AryehGregor> | Right. |
15:13 | <gsnedders> | erlehmann: To stop things like WMV from being used with video. |
15:13 | <erlehmann> | gsnedders, did not know that. |
15:13 | <AryehGregor> | Because a lot of codecs are dodgy and they don't want them exposed to the web. |
15:13 | <gsnedders> | erlehmann: The only video codecs they allow are H.264 and WebM. |
15:14 | <erlehmann> | how unfortunate for theora (hey, my laptop is from 2007). |
15:14 | <AryehGregor> | My prediction: MPEG LA announces a patent pool. Google either buys out the patents, or declares they're blatantly invalid/inapplicable and offers to indemnify Microsoft and Apple against them, or changes VP8 to avoid them. |
15:14 | <erlehmann> | wellr, i am a behaviourist. actions speak louder than words, particularly regarding software. |
15:14 | <AryehGregor> | Microsoft and Apple will then support WebM. |
15:14 | <AryehGregor> | But I'm speculating here. |
15:15 | <gsnedders> | AryehGregor: That wouldn't make Opera/Mozilla/any other browser vendor happy. |
15:15 | <AryehGregor> | Which part? |
15:15 | <gsnedders> | Especially anyone wanting to move into the browser market, as they'd have a alrger risk than anyone else. |
15:15 | <erlehmann> | AryehGregor, even more so than microsoft, apple is not a friend of open formats when there is a position to hold. |
15:15 | <gsnedders> | AryehGregor: indemification |
15:16 | <erlehmann> | gsnedders is a very clever person. |
15:16 | <gsnedders> | erlehmann: I am? Okay. :D |
15:17 | <AryehGregor> | gsnedders, I'm guessing they'd either offer indemnification to Mozilla too, or only offer the indemnification secretly and require Microsoft/Apple to not admit to it, only say "Hey, Google convinced us to support it". |
15:17 | <AryehGregor> | I doubt they'd care about Opera. |
15:17 | <AryehGregor> | Opera will be forced to support it regardless if everyone else does. |
15:17 | <gsnedders> | AryehGregor: Then why both having us as one of the initial impls at WebM's original announcement? |
15:17 | <AryehGregor> | They want to have everyone possible. |
15:18 | <AryehGregor> | They also had, like, Grab Networks. |
15:18 | <AryehGregor> | I have no idea what that even is. |
15:18 | <AryehGregor> | . . . Actually, I don't see Opera here. |
15:18 | <AryehGregor> | Oh, I see. |
15:18 | <gsnedders> | AryehGregor: Håkon was there |
15:18 | <AryehGregor> | Opera gets called out in the start with Mozilla/Opera/Google Chrome/Adobe. |
15:19 | <AryehGregor> | Well, whatever. |
15:19 | <gsnedders> | At Google I/O. |
15:19 | <gsnedders> | AryehGregor: Also, if they care about mobile, not caring about us would be silly. |
15:19 | <AryehGregor> | That's very different from offering a potentially large sum of money to fight legal battles for you. |
15:19 | <AryehGregor> | http://www.mpegla.com/main/pid/vp8/default.aspx |
15:19 | <AryehGregor> | Feh, no details. |
15:19 | <AryehGregor> | Oh well. |
15:19 | <gsnedders> | We could just go down the road of not wanting to run the risk and just support H.264 on mobile. |
15:22 | <AryehGregor> | If MS and Apple support WebM, then congrats, you'd no longer be web-compatible. |
15:24 | <erlehmann> | AryehGregor, you are speculating. I bet two mozarella cheeseburgers with fried egg that in 6 months, neither Apple nor Microsoft will deliver a desktop or moible web browser supporting any of the following: Ogg. Vorbis, Theora, Matroska, VP8. |
15:24 | <AryehGregor> | erlehmann, I doubt this will take anywhere close to as short as six months. There are lawyers involved. |
15:24 | <AryehGregor> | I'd guess more like within three years. |
15:25 | <erlehmann> | 18 Months. |
15:25 | <erlehmann> | And four mozarella cheeseburgers. |
15:25 | <AryehGregor> | Eighteen months is possible, but I wouldn't bet on it. |
15:25 | <erlehmann> | See? |
15:25 | <AryehGregor> | I'd bet a modest sum on three years. |
15:25 | <AryehGregor> | Not cheeseburgers, though, they aren't kosher. In fact, I'm not even allowed to have any benefit from them. If you gave me one I'd have to throw it out. |
15:25 | <erlehmann> | Wat. |
15:26 | <AryehGregor> | Yus. |
15:26 | <erlehmann> | they don't mix milk and patties! |
15:26 | <erlehmann> | it is a fat blob of fried mozarella instead of meat. |
15:26 | <erlehmann> | in fact, i might just go out and get one. |
15:26 | <erlehmann> | now. |
15:26 | <erlehmann> | ha. |
15:27 | <erlehmann> | or write on some part of my blog engine. |
15:27 | <erlehmann> | hmm. |
15:27 | <AryehGregor> | Oh, that does sound appetizing. |
15:30 | <jgraham> | Fried mozarella? |
15:31 | <jgraham> | That sounds like a bad idea... |
15:32 | <AryehGregor> | It sounds extremely unhealthful, which makes it right up my alley. |
15:38 | <jgraham> | I was more concerned with the logistics of frying mozarella. It should melt! |
15:38 | <jgraham> | Also, this is the worst network I have ever been on |
15:39 | <annevk> | Is that the Avatar hotel? |
15:39 | <wilhelm> | I've seen worse. But yes, this high speed broadband really isn't. |
15:39 | <jgraham> | No, Hotel Zico |
15:39 | <jgraham> | I have like 50% packet loss |
15:40 | <annevk> | How is the weather? |
15:40 | <wilhelm> | 12-20° and no clouds. |
15:46 | <annevk> | not too bad |
15:52 | <annevk> | do you need to update ESTA each time you go to the US? |
15:52 | <annevk> | I guess I better do it just in case |
16:40 | <dglazkov> | good morning, Whatwg! |
16:42 | <annevk> | good afternoon, dglazkov! |
16:44 | <dglazkov> | I just realized that the Whatwg cabal is slowly converging upon the San Francisco Bay Area |
16:45 | <annevk> | terrorists with the intent of slowing down development of the web would do good striking next week |
16:45 | <dglazkov> | one can easily visualize the map with red arrows punching through the georgraphy, WW2 style |
16:45 | <annevk> | hehe |
16:58 | <bfrohs> | Is there any chance of the label element receiving :valid, :invalid, :required capabilities in CSS? Use cases: 1) Adding an asterisk or other symbol after the text in a label that uses the for attribute. 2) Targeting elements that come after a label with an input child (<p>Label <label><input></label> <small>Text</small></p>) |
17:00 | <bfrohs> | 3) Formatting the text in a label accordingly (e.g. different color or weight) |
17:04 | timeless | wants to see that map |
17:05 | <annevk> | bfrohs, I think the idea is to have a selector that allows selecting the associated label |
17:06 | <dglazkov> | timeless, jgraham should do it. He's already arrived, barely has any Internets -- perfect time for doodling. |
17:07 | <bfrohs> | annevk, that would be ideal. I guess I was just thinking that it would fall under the "can't have parent selectors" argument and would be easier to just set it on the label when setting it on the input. |
17:09 | <timeless> | heh |
17:28 | <TabAtkins> | bfrohs: "?label /for/ :invalid" |
17:29 | TabAtkins | likes combining together multiple crazy selectors. |
17:30 | <hober> | TabAtkins majored in crazy selector combinatorics |
17:30 | <TabAtkins> | Well, it was a minor with honors. |
17:30 | <hober> | ahh, fair enough |
17:31 | <bfrohs> | TabAtkins: Yeah, that's the general idea. Those are just hypothetical though, right? Not used in any browser? |
17:31 | <TabAtkins> | bfrohs: They exist only in spec right now. No implementations yet. |
17:32 | <bfrohs> | TabAtkins: Have a link to said spec? So you guys can spend time on improving everything even more, instead of looking things up for me? ;) |
17:32 | <TabAtkins> | http://dev.w3.org/csswg/selectors4 |
17:32 | <bfrohs> | Thank ya much :) |
17:33 | <TabAtkins> | Specifically http://dev.w3.org/csswg/selectors4/#subject and http://dev.w3.org/csswg/selectors4/#idref-combinators |
17:36 | <TabAtkins> | jgraham: You've never had a fried cheesestick before? |
17:37 | <bfrohs> | TabAtkins: http://dev.w3.org/csswg/selectors4/#subject -- Paragraph 3: "with or without the dollar sign" - should be "with or without the question mark", shouldn't it? |
17:37 | <jgraham> | TabAtkins: My arteries are clogging just thinking about it |
17:37 | <TabAtkins> | bfrohs: Yes, it was originally a dollar sign until we made fantasai change it. |
17:38 | <TabAtkins> | jgraham: Go to any low-budget italian place in america. |
17:38 | <TabAtkins> | Or a fair. |
17:38 | <bfrohs> | TabAtkins: Saving dollar sign for vars, perhaps? :) |
17:39 | <TabAtkins> | bfrohs: We *were*, but now we're shifting gears to a different design. |
17:52 | <zcorpan> | so uh, where's the webm video on bing's front page? |
17:53 | <hsivonen> | zcorpan: in Firefox--not in Opera :-( |
17:55 | <zcorpan> | i don't see it in firefox either |
17:59 | <hsivonen> | zcorpan: do you see a woodpecker on the front page? |
17:59 | <hsivonen> | zcorpan: do you have an en-US version of Firefox? |
18:00 | <hsivonen> | zcorpan: having you chosen United States as your Bing locale? |
18:00 | <hsivonen> | s/having/have/ |
18:02 | <hsivonen> | it seems you need to choose United States to see a woodpecker |
18:02 | <hsivonen> | and then Opera gets a still woodpecker and Firefox gets a video of a woodpecker |
18:03 | <zewt> | it's pining for the fjords |
18:07 | <zcorpan> | hsivonen: needed to change the bing locale to US |
18:07 | <zcorpan> | hsivonen: i can mask as firefox in opera to get the video |
18:12 | <zcorpan> | hmm the bing home page used a lot of cpu for me (in both firefox and opera) |
18:25 | <bfrohs> | TabAtkins: Just realized that the code you gave me ("?label /for/ :invalid") won't work for use case #2: Targeting elements that come after a label with an input child (<p>Label <label><input></label> <small>Text</small></p>) |
18:26 | <TabAtkins> | bfrohs: Correct. This is why I don't like the subject indicator very much. It would be better to use :has(). |
18:26 | <TabAtkins> | bfrohs: "label:has( :scope /for/ :invalid ) + small |
18:26 | <TabAtkins> | Alternately, use Hierarchies to get the same functionality (this is silly, though): |
18:26 | <zcorpan> | can:has(cheezeburger) |
18:27 | <TabAtkins> | "?label /for/ :invalid { & + small { <properties go here> } } |
18:27 | <bfrohs> | But won't both :has and nesting with subject specified lead to parent relationships that vendors have said no to for years due to performance issues? |
18:28 | <TabAtkins> | The subject indicator all by itself leads to those problems. |
18:28 | <TabAtkins> | But yes. We're trying to push on it to see if they're usable in practice these days. |
18:28 | <bfrohs> | Well, to an extent, but it isn't in a loop |
18:29 | <bfrohs> | Once you add nesting (and force them to use the subject, rather than the normal hierarchy), or add :has(), it will have a loop that will cause *more* of an issue. |
18:29 | <bfrohs> | I think that's been the main reason behind it (but only one deep isn't as bad). |
18:30 | <bfrohs> | Whereas if :invalid and all of that was also available to label, this could be avoided |
18:30 | <bfrohs> | I think it would be an easier idea for vendors to accept, but I could be wrong. |
18:32 | <mbatle_> | anybody knows if any browser is implementing mediagroup property in media elements ? |
19:01 | <AryehGregor> | jgraham, proposed testharness patch for review: http://pastebin.com/1MLYd24H |
19:02 | <AryehGregor> | Currently the specs say RangeException shouldn't exist, and there are new exception types added to DOMException that browsers don't implement yet, so the preexisting code was incorrect. |
19:03 | <AryehGregor> | E.g., if INVALID_NODE_TYPE_ERR is supported on DOMException, then assert_throws("INVALID_NODE_TYPE_ERR", ...) will expect that, but if it's not, it will expect a RangeException. |
19:04 | <AryehGregor> | This means that Gecko incorrectly passes many tests in http://w3c-test.org/webapps/DOMCore/tests/submissions/Ms2ger/Range-selectNode.html that WebKit fails, because WebKit implements the new INVALID_NODE_TYPE_ERR. |
19:04 | <hsivonen> | I probably should have saved a pre-HTML5 parser WebKit-based browser somewhere... |
19:04 | <AryehGregor> | Why? |
19:05 | <hsivonen> | I wonder if Android has an outdated WebKit |
19:05 | <hsivonen> | AryehGregor: for testing |
19:05 | <AryehGregor> | Why would you want to test browsers that have rapidly become so obscure? |
19:06 | <AryehGregor> | Chrome that old is massively irrelevant, and Safari/other WebKit that old must have tiny market share by now. |
19:06 | <hsivonen> | AryehGregor: to figure out if we changed something in HTML5 |
19:07 | <hsivonen> | turns out that WebKit in Android 3.1 is too fresh. (I'm surprised. The Android stock browser has a reputation of being behind the times.) |
19:08 | <AryehGregor> | Is othermaciej on vacation or something? I haven't seen him say anything for a long time now. |
19:08 | <AryehGregor> | Oh, he talked yesterday. |
19:08 | <AryehGregor> | Okay, so he still exists. |
19:12 | <smaug____> | hsivonen: are you still trying to test document.close() handling |
19:13 | <smaug____> | hsivonen: and sorry, I was offline for some time. What was the reason to append EOF and not insert it? |
19:14 | <hsivonen> | smaug____: I'm testing my reimplementation of the buffer queue management at this point. I think the code I have for document.close() doesn't need more testing today |
19:14 | <hsivonen> | smaug____: the reason for appending is that you can do: |
19:14 | <hsivonen> | doc.open(); |
19:14 | <hsivonen> | doc.write("<script src=whatever.js></script>); |
19:14 | <hsivonen> | doc.write("something else"); |
19:15 | <hsivonen> | doc.close(); |
19:15 | <hsivonen> | and have "something else" appear in the document |
19:16 | <smaug____> | well, I would assume doc.write("<script src=whatever.js></script>); would insert something to stream and keep the stream "open" until the script is executed. After that "Something else" would be inserted |
19:16 | <smaug____> | and then doc.close |
19:16 | <smaug____> | since that is the order of insertion |
19:17 | <hsivonen> | smaug____: okay, better example: assume the doc.write("something else"); statement is in whatever.js instead |
19:18 | <smaug____> | and ? |
19:18 | <smaug____> | that would insert "something else". |
19:18 | <hsivonen> | smaug____: in that case, document.write("something else"); executes after document.close();, but you still want "something else" to appear in the document |
19:19 | <smaug____> | right |
19:19 | <smaug____> | but that document.write() would insert something to be before the EOF |
19:19 | <hsivonen> | smaug____: yes |
19:20 | <smaug____> | so that would work just fine |
19:20 | <hsivonen> | smaug____: oh, you meant why document.close() appends when called from a nested script |
19:20 | <smaug____> | well, in any case |
19:20 | <hsivonen> | smaug____: I'm going to go with "that's the way document.close() works" |
19:20 | <smaug____> | why it doesn't insert EOF but appends |
19:21 | <smaug____> | hsivonen: ok |
19:22 | <smaug____> | hsivonen: do you know if this behavior was actually defined based on how browsers behave |
19:22 | <hsivonen> | smaug____: I don't recall anymore |
19:22 | <smaug____> | k |
19:22 | <hsivonen> | let's see what my clashtest does in Firefox 3.5 |
19:23 | <smaug____> | would be interesting to know what IE6-8 do |
19:23 | <hsivonen> | smaug____: HTML5 specs old Firefox-style document.write() |
19:23 | <hsivonen> | IE8 was different |
19:23 | <smaug____> | hsivonen: but this is about document.close, not document.write ;) |
19:25 | <hsivonen> | AryehGregor: see this is what old browsers are kept around for |
19:26 | <hsivonen> | smaug____: IE8 hangs |
19:26 | <hsivonen> | w00t. I have discovered two ways to hang IE8 today |
19:26 | <hsivonen> | smaug____: Firefox 3.5 behaves like HTML5 says |
19:30 | <smaug____> | that doesn't mean I like what the spec defines |
19:30 | <hsivonen> | smaug____: would it be possible to define document.write and document.close in a likeable way? |
19:31 | <smaug____> | document.close could insert EOF |
19:31 | <smaug____> | not append |
19:31 | <smaug____> | but, again, I'm not very familiar with parsing, so perhaps there is some reason for the current behavior |
19:31 | <hsivonen> | smaug____: I'd rather rock the boat based on aesthetics and stick to something that's known to be successful on the Web |
19:32 | <smaug____> | it is strange that some data can be inserted to document after document.close() |
19:32 | <smaug____> | hsivonen: yeah, I guess I don't care too much |
19:32 | <hsivonen> | I'd rather *not* rock the boat |
19:33 | <hsivonen> | smaug____: the possibility of calling document.write() on a document.open()ed doc from scripts that are neither the one that called open() nor scripts that are in the open()ed doc bothers me more |
19:33 | <hsivonen> | smaug____: particularly that those other scripts can run from nested event loops |
19:35 | <AryehGregor> | TabAtkins, does something define how to determine the actual value for numeric markers? E.g., saying what number to display if you have <ol><li style=display:none>abc<li>def</ol>, or style=list-style:none, or whatever? |
19:36 | <AryehGregor> | It seems changing the display causes it to be skipped, at least in Gecko and WebKit, but I didn't see that in a glance at the spec. |
19:40 | <hober> | AryehGregor: yes, that's in the lists module; let me try to find the spot |
19:41 | <TabAtkins_> | AryehGregor: Yes, 2.1 defines that. |
19:41 | <hober> | AryehGregor: http://dev.w3.org/csswg/css3-lists/#declaring-a-list-item |
19:42 | <hober> | AryehGregor: "To declare a list item, the 'display' property must be set to 'list-item' or 'inline-list-item' (defined later in this section). This, in addition to generating a ::marker pseudo-element and enabling the properties described below for that element, causes that element to increment the list item counter 'list-item'." |
19:42 | <AryehGregor> | Ah, I see. |
19:42 | <AryehGregor> | Thanks. |
19:42 | AryehGregor | was looking at the TR -- of course -- but it says the same thing |
19:45 | <TabAtkins_> | AryehGregor: I intend to work on fixing 'display', such that the special behavior of "list-item" can be triggered independently of the layout. |
19:46 | <AryehGregor> | Yes, that would be awesome. |
19:46 | <TabAtkins_> | Since "list-item" is really just "block with magic" |
19:46 | <AryehGregor> | Things like inline-block really need to die. |
19:47 | <hober> | well, display-inside and display-outside need to happen |
19:47 | <TabAtkins_> | Yup. |
19:47 | <AryehGregor> | While we're talking about CSS, can someone explain to me why there's an extra line break after the steps with comments here in Gecko but not WebKit? http://dvcs.w3.org/hg/editing/raw-file/tip/editing.html#methods-to-query-and-execute-commands |
19:48 | <AryehGregor> | Like after steps 3 and 4 at the top there. |
19:48 | <AryehGregor> | I remember I tried to figure it out once before and gave up. |
19:49 | <TabAtkins_> | AryehGregor: It's because the exact treatment of the (currently implicit) ::marker is undefined. |
19:49 | <AryehGregor> | Oh. |
19:49 | <AryehGregor> | Great. |
19:50 | <TabAtkins_> | Firefox treats it as an inline element, which creates a linebox, and forces the block (<div> element) below it. |
19:50 | <TabAtkins_> | (The behavior now defined in Lists matches Chrome here. More propertly, it's almost exactly IE's behavior, which is the sanest of anyone.) |
19:51 | <AryehGregor> | I can't seem to easily come up with a minimal test-case, though. |
19:51 | <TabAtkins_> | I came up with plenty during testing. One sec. |
19:51 | <AryehGregor> | Also, IIRC, IE displayed them like Gecko. |
19:53 | <jgraham> | Hmm, I wonder what the lowest-hanging fruit is in terms of untested stuff in HTML5 |
19:54 | <jgraham> | And by "untested" I mean "wihout a test in the offical repo" |
19:56 | <AryehGregor> | jgraham, good grief, practically nothing is tested. Just start at page one. |
19:56 | <jgraham> | AryehGregor: Yeah, I know :) |
19:57 | <jgraham> | I just want something that is both stupidly simple and useful |
19:57 | <jgraham> | It is the "simple" part that is difficult |
19:57 | <jgraham> | "useful" can be determined by sticking a pin in the spec at random and assuming there are no tests |
19:59 | <TabAtkins_> | Hm, I'm having trouble reducing a testcase too. >_< |
20:00 | <TabAtkins_> | Oh man, Firefox has a native inspector now! |
20:00 | <TabAtkins_> | It's not very good yet, but still. |
20:01 | <gsnedders> | jgraham: Do you mean simple as in to test the whole feature? |
20:01 | <AryehGregor> | It's had one for a while. |
20:02 | <AryehGregor> | jgraham, I don't know why you use the word "assume" there. |
20:04 | <smaug____> | strange that in Gecko and Presto <a> can be used in place of <area>. Don't know about old IEs |
20:05 | <jgraham> | gsnedders: Not really |
20:06 | <jgraham> | Alhough if that was possible it would be double plus good |
20:06 | <smaug____> | oh, cvs commit says this is because of HTML4 ... |
20:07 | <smaug____> | or no |
20:08 | <timeless> | smaug____: i presume you're going to tpac? |
20:09 | <smaug____> | I'm not |
20:10 | <timeless> | aww |
20:10 | <jgraham> | timeless: No need to assume; http://www.w3.org/2002/09/wbs/35125/TPAC2011/registrants |
20:11 | <AryehGregor> | TabAtkins_, okay, so sometimes refreshing the exact same document repeatedly in Gecko will change whether the effect occurs. |
20:11 | <timeless> | jgraham: i don't suppose there's a ?groupby=sponsor |
20:12 | <jgraham> | timeless: Not that I know of |
20:12 | <AryehGregor> | TabAtkins_, I strongly suspect that in the case of my page, it's a timing issue, because the floated buttons are created by script. |
20:12 | <smaug____> | oh, Gecko and Presto do actually work per HTML4 spec |
20:12 | <timeless> | > Virginie GALINDO <virginie.galindo⊙gc> () : attending Thursday, Friday |
20:12 | <timeless> | is interesting, how did that person end up w/o content in ()? |
20:12 | <AryehGregor> | If they're created fast enough, it seems to be fine. |
20:12 | <smaug____> | I wonder how support for <a> got removed from HTML spec |
20:13 | <AryehGregor> | Including if they're in the original DOM. |
20:15 | <timeless> | AryehGregor: hey, i'm looking for someone @google who can pass along a bug report about gmm |
20:15 | <AryehGregor> | timeless, I'm not @google. |
20:15 | <AryehGregor> | In any meaningful sense, other than that they give me money occasionally. |
20:15 | <timeless> | i'm open to suggestions :) |
20:16 | <timeless> | oh, TabAtkins ? |
20:16 | timeless | pokes |
20:18 | <AryehGregor> | TabAtkins_, got it! http://software.hixie.ch/utilities/js/live-dom-viewer/saved/1237 |
20:19 | <AryehGregor> | It seems like it reserves space for the thing and then doesn't reflow properly when it moves. |
20:22 | <AryehGregor> | That's why it was so hard to track down. |
20:22 | <smaug____> | Hixie: do you remember the reason why HTML spec removes coords and shape from <a> element, and also removes support for <a> inside <map> ? |
20:22 | <wilhelm> | Agenda for the testing meeting tomorrow: http://lists.w3.org/Archives/Public/public-test-infra/2011OctDec/0014.html |
20:26 | <AryehGregor> | Ooh. Now it doesn't reproduce properly anymore. |
20:26 | <AryehGregor> | Of course. |
20:27 | <AryehGregor> | . . . |
20:27 | AryehGregor | doesn't know what to do now |
20:27 | <AryehGregor> | It repros consistently in Live DOM Viewer, but not in a data URL. |
20:28 | <Hixie> | smaug____: only firefox implemented it |
20:28 | <smaug____> | also Opera |
20:29 | <Hixie> | and nobody used it |
20:29 | <smaug____> | that is possible |
20:29 | <smaug____> | I'm trying to decide whether to remove support for it |
20:29 | <Hixie> | i vote yes :-) |
20:30 | <AryehGregor> | Oooh, I think I see. |
20:30 | <smaug____> | but it was basically random removal based on that IE didn't support it |
20:30 | <AryehGregor> | It must be something to do with margins. |
20:30 | <smaug____> | but yeah, I think it should be ok to remove it |
20:30 | <Hixie> | smaug____: it's not a compelling feature, very few people use it, and the feature it's a part of (image maps) is itself not a compelling feature |
20:30 | <Hixie> | smaug____: but it has a non-trivial level of complexity |
20:30 | <AryehGregor> | Well, it should still not be dependent on how the DOM was created. |
20:30 | <Hixie> | smaug____: so imho it's a good candidate for removal |
20:31 | <Hixie> | smaug____: we don't get many :-( |
20:31 | <smaug____> | yup |
20:31 | <smaug____> | I think I'll add a warning that the feature is deprecated |
20:31 | <smaug____> | and remove it later |
20:31 | <Hixie> | seems reasonable |
20:31 | <Hixie> | does mozilla have any way of instrumenting how often a warning triggers? |
20:32 | <smaug____> | I could add a telemetry probe |
20:32 | <smaug____> | but telemetry is opt-in |
20:32 | <smaug____> | ofc |
20:32 | <Hixie> | btw when i was doing research on this i found it was used extremely rarely in image maps, but that a number of authoring tools would put the attributes on <a> with their default values |
20:32 | <Hixie> | so you might see an elevated number of <a shape="rect" coords=""> elements despite them not being part of actual image maps |
20:33 | <smaug____> | right |
20:33 | <Hixie> | which is to say, if you do set up telemetry, i'd make sure to distinguish <a>s actually used in image maps from those just with those attributes for no good reaosn |
20:34 | <Hixie> | hsivonen: yt? |
20:34 | <Hixie> | hsivonen: re defining the term "xhtml document", an alternative is for me to drop all usage of the term. Would that be acceptable, or do you prefer a definition? |
20:35 | <Hixie> | hsivonen: if the latter, do you want it to refer to the byte stream, or to the DOM structure? |
20:40 | <Hixie> | annevk: i think we may have to seriously consider renaming the terms "html document" and "xml document" so that they don't get confused with references to text/html documents and text/html documents. |
20:43 | <AryehGregor> | Okay, can other people reproduce my minimal test-case here with various Firefox versions, or am I just insane? https://bugzilla.mozilla.org/show_bug.cgi?id=697793 |
20:44 | <AryehGregor> | annevk, does anything still throw a WRONG_DOCUMENT_ERR, or should it be marked historical? |
20:47 | <AryehGregor> | annevk, filed a bug: http://www.w3.org/Bugs/Public/show_bug.cgi?id=14576 |
21:01 | <smaug____> | AryehGregor: Gecko seems to use that still in Range code |
21:01 | <AryehGregor> | smaug____, the spec says it shouldn't, though, AFAIK. Where does it use it? |
21:01 | <AryehGregor> | Generally we prefer to silently adopt the node. |
21:01 | <AryehGregor> | It's friendlier. |
21:02 | <smaug____> | AryehGregor: http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-range-ispointinrange |
21:02 | <smaug____> | "WrongDocumentError" |
21:02 | <AryehGregor> | Aha. |
21:02 | <AryehGregor> | I was searching for the wrong string. |
21:02 | <AryehGregor> | Duh. |
21:02 | <AryehGregor> | Thanks. |
21:02 | <smaug____> | and that is, IMO, a valid use case |
21:03 | <AryehGregor> | It actually seems friendlier to just return false in that case, IMO. |
21:03 | <AryehGregor> | But it's reasonable, yeah. |
21:03 | <AryehGregor> | (I mean, if it's in a different tree, it's not in the range, right?) |
21:05 | <smaug____> | but it is not quite outside the range either |
21:05 | <smaug____> | it is just invalid state for the parameter or something |
21:06 | <smaug____> | so a case when throwing is ok |
21:06 | <smaug____> | though, I guess specs aren't consistent |
21:06 | <smaug____> | node.contains() doesn't throw |
21:06 | <AryehGregor> | If I were writing it from scratch, I'd return false. Seems less surprising. But it's okay as-is, if that's what browsers do. |
21:07 | <AryehGregor> | I didn't write or test that method, so I dunno. |
21:09 | <hsivonen> | Hixie: I think it's good to have a definion for an XHTML document, because we've spent years saying that HTML5 has an XML flavor called XHTML5 |
21:09 | <AryehGregor> | smaug____, data:text/html,<!doctype html><script>try {document.createRange().isPointInRange(document.createElement("a"), 0); throw "No exception"} catch(e) {alert(e)}</script> alerts "No exception" for me in both Gecko and WebKit. |
21:09 | <Hixie> | hsivonen: see the bug, i checked in some changes |
21:15 | <smaug____> | AryehGregor: oh, indeed |
21:15 | <smaug____> | AryehGregor: but comparePoints throws in Gecko |
21:16 | <AryehGregor> | That makes sense. |
21:16 | <AryehGregor> | There's no sensible return value for that case. |
21:19 | <AryehGregor> | Oh, I think I found an infinite loop in my spec. |
21:19 | <TabAtkins_> | AryehGregor: I suspect it's a stale painting bug, then. |
21:19 | <AryehGregor> | Yippee! |
21:19 | <Hixie> | don't you hate that |
21:22 | <annevk> | Hixie, we could have a "HTMLness flag" |
21:22 | <Hixie> | yeah |
21:22 | <annevk> | Hixie, because that's essentially what it comes down to anyway |
21:22 | <Hixie> | though frankly i'm a little scared of changing this |
21:23 | <Hixie> | because it would mean going through the whole spec changing zillions of little sentences |
21:23 | <annevk> | for the DOM it's relatively straightforward |
21:23 | <Hixie> | and would surely lead to mistakes |
21:23 | <annevk> | I'm willing to review the result |
21:23 | <Hixie> | maybe one day |
21:23 | <annevk> | k |
21:27 | <annevk> | TabAtkins, /for/ does not cover all <label> scenarios |
21:28 | <annevk> | TabAtkins, I guess the other one is covered by ?label input but it's annoying that you have to spell it out like that |
21:29 | <Hixie> | wtf is ?label |
21:35 | <AryehGregor> | Hmm. |
21:37 | <TabAtkins_> | Hixie: ? is the "subject indicator", which changes the subject of a selector. |
21:37 | <AryehGregor> | What should commands like insertOrderedList do if the editing host is an inline element? |
21:37 | <TabAtkins_> | annevk: I agree. |
21:37 | <AryehGregor> | Insert a list anyway, or refuse to do anything, or what? |
21:37 | <Hixie> | TabAtkins_: aw man, i thought we'd done away with the idea of selecting anything but the end of the selector years ago |
21:37 | <Hixie> | TabAtkins_: how did that make a comeback? |
21:38 | <AryehGregor> | Gecko seems to refuse to do anything, even if it would make sense to do something. WebKit seems to just eat the editing host. |
21:39 | <TabAtkins_> | Hixie: It's a persistent author request. |
21:39 | <AryehGregor> | Opera behaves somewhat sensibly, for once. |
21:39 | <AryehGregor> | TabAtkins_, I thought it will kill perf. |
21:39 | <Hixie> | TabAtkins_: doesn't :matches() take care of it? |
21:39 | <AryehGregor> | ?foo bar = ancestor selector. |
21:39 | <TabAtkins_> | AryehGregor: That's the fear. We're pushing to see if we can get around that, or at least make it "good enough". |
21:39 | <Hixie> | or :has()? |
21:39 | <TabAtkins_> | Hixie: ? is equivalent to :has(), if you limit :has() to the end of the selector. |
21:39 | <TabAtkins_> | (I prefer :has().) |
21:40 | <AryehGregor> | TabAtkins_, how is it even conceptually possible to support ?foo bar without killing perf? |
21:40 | <Hixie> | TabAtkins_: so why '?" |
21:40 | <TabAtkins_> | AryehGregor: Shrug. Browsers be crazy. |
21:40 | <Hixie> | wow i got confused with punctuation there |
21:40 | <Hixie> | let me try that again |
21:40 | <Hixie> | TabAtkins_: so why "?"? |
21:40 | <TabAtkins_> | Hixie: Because fantasai prefers that, and she's the Selectors editor. |
21:40 | <Hixie> | aah |
21:40 | <Hixie> | well that makes sense |
21:40 | <Hixie> | ok |
21:41 | AryehGregor | would prefer a :thingie(), to avoid more cryptic punctuation in CSS |
21:41 | <AryehGregor> | What does :has() do? |
21:41 | <TabAtkins_> | AryehGregor: Matches an element if it has something. |
21:41 | <AryehGregor> | Meaning? |
21:41 | <AryehGregor> | Like a descendant or something? |
21:41 | <TabAtkins_> | So, to match a label that has an invalid input, do "label:has( :scope /for/ :invalid )" |
21:41 | <Hixie> | :has() is like :matches() except that the selector is assumed to start with a simple selector that selects the element on which the pseudo is |
21:41 | <AryehGregor> | That sounds like it would suffer from the same horrible perf issues. |
21:41 | <AryehGregor> | What's wrong with :for()? |
21:42 | <AryehGregor> | Could we keep syntax simple here? |
21:42 | <Hixie> | and yes, :matches, :has, and ? are all horrible for perf |
21:42 | <Hixie> | i'm surprised browsers are ok with any of them |
21:42 | <TabAtkins_> | AryehGregor: :for() only goes one way. |
21:42 | <TabAtkins_> | Hixie: Nobody's implemented one yet. ^_^ |
21:42 | <AryehGregor> | I doubt anyone will, based on past statements. |
21:42 | <TabAtkins_> | AryehGregor: In general, /foo/ is a reference combinator, following the idref named in the combinator. |
21:42 | <AryehGregor> | Except perhaps for querySelector(). |
21:43 | <TabAtkins_> | We don't yet have an established syntax for functional combinators. |
21:43 | <TabAtkins_> | Though perhaps we should invent one. |
21:44 | <annevk> | the /idref/ thing is crazy though, because it also works for elements that do not have a predefined relationship |
21:47 | <Hixie> | annevk: no different from how [foo~=bar] also works for attributes that don't exist or don't take a space-separated list |
21:52 | <hsivonen> | I see "This might be overkill." in the commit message for "palpable content". No kidding. |
21:52 | hsivonen | mumbles about the time when Opera ignored empty paragraphs thanks to HTML4 |
21:53 | <Hixie> | heh |
21:53 | <Hixie> | at least this text clearly only applies to conformance checkers, or even not those but to linters. |
21:58 | <ojan> | Hixie: webkit and gecko have implemented :matches, but as :any |
21:58 | <ojan> | Hixie: why is :matches bad for perf? |
21:59 | <TabAtkins_> | ojan: Hixie's talking about something else that happens to have the same name. |
21:59 | <ojan> | oh |
21:59 | <Hixie> | ojan: what does :any() do? |
21:59 | <ojan> | um...ok |
21:59 | <TabAtkins_> | ojan: His old proposal, basically identical to :has(), was called :matches(). |
21:59 | <TabAtkins_> | Hixie: :any() takes a list of selectors, and matches any of them. |
21:59 | <ojan> | TabAtkins_: oh, that's totally different |
21:59 | <ojan> | nm |
21:59 | <TabAtkins_> | Hixie: It can be thought of as a selector macro. |
21:59 | <Hixie> | simple selectors, or selector chains? |
22:00 | <Hixie> | as in, are combinators involved? |
22:00 | <ojan> | Hixie: it's currently specced as "a sequence of simple selectors" i believe |
22:00 | <TabAtkins_> | Hixie: ":any(ul,ol) :any(ul,ol) {}" is equal to "ul ul, ul ol, ol ul, ol ol". |
22:00 | <ojan> | Hixie: currently no |
22:00 | <Hixie> | ah ok |
22:00 | <Hixie> | so basically just an "or" |
22:00 | <ojan> | Hixie: yeah |
22:00 | <TabAtkins_> | Hixie: Yeah, no combinators. List of compound selectors. |
22:00 | <TabAtkins_> | Using the current Selectors4 terminology. |
22:00 | <ojan> | even with combinators it would still just be an "or" no? |
22:00 | <annevk> | Hixie, true enough, not sure how much sense that made |
22:00 | <ojan> | any(div > span, #foo) |
22:00 | <TabAtkins_> | ojan: It's less clear what's going on if combinators are involved, unless you define it basically as a macro. |
22:01 | <ojan> | TabAtkins_: i don't see what's unclear about it |
22:01 | <TabAtkins_> | (I think it *should* be defined that way.) |
22:01 | <ojan> | TabAtkins_: I guess I only see one way to define it |
22:02 | <ojan> | TabAtkins_: conceptually, when seeing if a element matches the selector, you evaluate each selector in the list and it matches if any of them do. |
22:02 | <ojan> | TabAtkins_: what am i missing? |
22:02 | <TabAtkins_> | ojan: Another way to define it is to match an element to any of the selectors within. It's somewhat less clear what that means if you have complex selectors. |
22:03 | <ojan> | TabAtkins_: i don't understand the difference |
22:03 | <TabAtkins_> | ojan: You *can't* just say "does the element match 'div span' or 'p' in ':any(div span, p)'?". |
22:03 | <TabAtkins_> | "foo :any(bar baz, qux)" is equivalent to "foo bar baz, foo qux", not "foo bar baz, foo qux, bar foo baz". |
22:04 | <TabAtkins_> | There's an ordering constraint in there. |
22:04 | <Hixie> | wow that's confusing |
22:04 | <ojan> | TabAtkins_: yes, i don't see how that's controversial |
22:04 | <ojan> | or confusing |
22:04 | <ojan> | it seems to me like the obvious meaning |
22:04 | <ojan> | Hixie: which one is confusing? |
22:04 | <TabAtkins_> | ojan: If you define it as just "does the element match any of the arguments?", it's unclear which of those interpretations you want. |
22:05 | <TabAtkins_> | I think it's obvious, yes, but you have to define it properly. |
22:05 | <Hixie> | ojan: that :any(...).a > :any(...).b might match a situation where .a and .b are not parent and child respectively |
22:05 | <TabAtkins_> | Hixie: No, you misunderstand. |
22:05 | <ojan> | TabAtkins_: sure, but if you define it the obvious way, what is the perf problem? |
22:06 | <ojan> | Hixie: i don't see how |
22:06 | <TabAtkins_> | Hixie: In ".a :any(.b .c, .d)", if you go with the 'simple' interpretation of "does the element match any selector, when evaluated globally?", the following are equivalent: |
22:06 | <TabAtkins_> | .a .b .c, .b .a .c, .a.b .c, .a .d |
22:07 | <TabAtkins_> | Because the unrestricted "does it match?" question loses the constraints you want. |
22:07 | <Hixie> | TabAtkins_: so what does :any(q r, s).a > :any(w x, y).b expand to? |
22:07 | <TabAtkins_> | In the *proper* way of doing it, or the sillier way I just talked about? |
22:07 | <ojan> | TabAtkins_: lets just talk the proper way |
22:08 | <ojan> | TabAtkins_: the silly way is clearly crazy |
22:08 | <Hixie> | TabAtkins_: whatever you think is the right way |
22:08 | <TabAtkins_> | In the proper way, it's "q r.a > w x.b, q r.a > y.b, s.a > w x.b, s.a > y.b". |
22:08 | <Hixie> | ok so like i said, it means :any(...).a > :any(...).b might match a situation where .a and .b are not parent and child respectively |
22:08 | <TabAtkins_> | Huh? |
22:08 | <TabAtkins_> | How did you get that? |
22:09 | <Hixie> | it can match in a situation where <r class=a> is the grandparent of <x class=b> |
22:09 | <TabAtkins_> | Oh, yes. |
22:09 | <TabAtkins_> | If you allow complex selectors, not just compound. |
22:10 | <ojan> | Hixie: oh i see...meh. i don't see the problem with that. |
22:10 | <ojan> | Hixie: it's a contrived example that you wouldn't really hit in the real world |
22:10 | <Hixie> | on what do you base that? |
22:10 | <TabAtkins_> | Hixie: Right now, though, we restrict it to taking compound selectors. |
22:11 | <ojan> | Hixie: let me rephrase.... |
22:11 | <TabAtkins_> | So the .a and .b elements will always have a parent-child relationship. |
22:11 | <ojan> | Hixie: what TabAtkins_ said...there is always a parent-child relationship there... |
22:11 | <Hixie> | come gain? |
22:11 | <ojan> | Hixie: which, if you were to write it without :any would have the same problem |
22:11 | <TabAtkins_> | ojan: No, Hixie's right given the higher-powered version of :any |
22:12 | <Hixie> | now i'm really confused :-P |
22:12 | <ojan> | Maybe i'm not understanding.... |
22:12 | <TabAtkins_> | ojan: It's just that, in the current spec, we have a lower-powered version that doesn't have the problem. |
22:12 | <Hixie> | but we may be talking at cross-purposes |
22:12 | <ojan> | we need a DOM for this example |
22:12 | <TabAtkins_> | "problem" |
22:12 | <Hixie> | anyway |
22:12 | <ojan> | TabAtkins_: i get that the current version doesn't have the issue |
22:12 | Hixie | goes back to picketing for his original :matches(), despite the perf isues |
22:12 | <ojan> | in either case, there's no perf issue if we allow combinators |
22:12 | <ojan> | it's just a question of whether the semantics are confusing |
22:13 | <TabAtkins_> | Hixie: You really need to stop calling it "matches". It confuses everyone else. ^_^ |
22:13 | <TabAtkins_> | ojan: Yes, that's right. |
22:13 | <ojan> | =TabAtkins_ |
22:13 | <ojan> | :matches is way overloaded now |
22:13 | <Hixie> | TabAtkins_: hey, dude, i made it up first. :-P |
22:13 | <TabAtkins_> | Hixie: Too bad! |
22:13 | <Hixie> | TabAtkins_: plus, :matches() is _exactly_ what it does |
22:13 | <ojan> | I still would like to see the selectors4 spec s/matches/any/ |
22:13 | <Hixie> | TabAtkins_: the other one should be renamed :or() |
22:13 | <AryehGregor> | Can anyone else reproduce this? http://code.google.com/p/chromium/issues/detail?id=101791 |
22:14 | <ojan> | I'd be fine with :or or :any |
22:14 | <TabAtkins_> | Hixie: :or() is confusing, because we're used to "or" coming *between* options, rather than being the name of a function that precedes the options. |
22:14 | <TabAtkins_> | ojan: Agreed that :any() is better. |
22:14 | <Hixie> | :any() wfm too |
22:14 | <ojan> | Hixie: you have a pointer to your :matches proposal? |
22:14 | <ojan> | i saw it ages ago, but i don't remember how it worked now |
22:14 | <TabAtkins_> | AryehGregor: wfm (no sad tab) |
22:15 | <AryehGregor> | TabAtkins_, what version/platform? |
22:15 | annevk | also thought renaming it to :matches was weird |
22:15 | <TabAtkins_> | ojan: Linux 64bit, Chrome 15 beta. |
22:15 | <TabAtkins_> | I mean AryehGregor in that last line. |
22:15 | <AryehGregor> | It's a regression. |
22:15 | <Hixie> | ojan: not off-hand, it'll be in www-style around 2002 or so. But in principle, :matches(...) takes a selector that must be matched by the eelement on which the pseudo is given |
22:15 | <AryehGregor> | Only started in Chrome 16, I think. |
22:15 | <AryehGregor> | It used to work for me too. |
22:15 | <TabAtkins_> | Ah, kk. Let me upgrade. |
22:16 | <Hixie> | ojan: so p:matches(.a .b) is equivalent to .a p.b |
22:16 | <AryehGregor> | Thanks. |
22:16 | <Hixie> | ojan: but p:matches(.a .b):matches(.x .b) is equivalent to saying that the p.b element must have as ancestor both a .x and a .a, though it doesn't matter if they're the same or if not which is the deeper ancestor |
22:17 | <ojan> | Hixie: why is this better? |
22:17 | <Hixie> | ojan: (the only other aspect is that you can use "#" in the :matches() selector to say where the pseudo's element is to match, as in p:matches(a # b) is equivalent to "a p b") |
22:17 | <Hixie> | ojan: better than what? |
22:17 | <ojan> | than :any |
22:17 | <TabAtkins_> | ojan: Don't try and compare it to the Selectors4 :matches. They're not the same thing. |
22:17 | <Hixie> | ojan: :any and :matches are unrelated |
22:18 | <TabAtkins_> | Completely different function. |
22:18 | <ojan> | oh...so they're not mutually exclusive |
22:18 | <ojan> | i see |
22:18 | <ojan> | what's the use-case for Hixie's :matches? |
22:18 | <TabAtkins_> | ojan: The same use-case as :has() or the subject indicator. |
22:18 | <Hixie> | ojan: (:any() would complement :matches() quite well in fact) |
22:18 | <Hixie> | ojan: :has() is basically :matches() but always starting with the # |
22:18 | <Hixie> | ojan: as in :has(foo) is equivalent to :matches(# foo) |
22:19 | <ojan> | i see |
22:19 | <Hixie> | ojan: :matches() basically solves almost all the limitations of selectors in one simple (and performance-impacting) swoop. |
22:19 | <Hixie> | well, not all the limitations |
22:19 | <Hixie> | it doesn't help with grouping |
22:19 | <Hixie> | but all the limitations of being able to reference ancestors, descendants, etc |
22:19 | <ojan> | oh i see...because it gives one syntactic way of doing all the things we're adding extra stuff for (e.g. parent combinators) |
22:20 | <Hixie> | yeah |
22:20 | <ojan> | makes sense to me |
22:20 | <ojan> | and it gives one thing to tell web devs not to ever use because it's crazy slow |
22:20 | <Hixie> | yeah |
22:20 | <ojan> | instead of a dozen tthings |
22:20 | <ojan> | i buy it |
22:20 | <Hixie> | mind you, it really does make it _crazy_ slow |
22:21 | <ojan> | i expect it does in degenerate cases |
22:21 | <ojan> | but i haven't really thoguht it through |
22:21 | <AryehGregor> | This is why I'm so much more interested in filing bugs against Gecko than any other piece of software I know about: https://bugzilla.mozilla.org/show_bug.cgi?id=697793 |
22:21 | <Hixie> | :matches(# .foo) -- matches every element that has a .foo descendant. imagine a 5mb doc like the html spec. |
22:21 | <Hixie> | for every element, you have to crawl the entire subtree |
22:21 | <AryehGregor> | It should be fine for querySelector(), right? |
22:22 | <Hixie> | AryehGregor: well it'd still be slow, but it wouldn't have to happen every time the mouse moved, at least |
22:22 | <AryehGregor> | I mean, it might be slow, but authors have the tools to notice that. |
22:22 | <Hixie> | (:focus:matches(# :hover) *shudder*) |
22:22 | <ojan> | Hixie: ok...you've sold me. :matches makes sense to add and what's currently :matches should really be :any. |
22:22 | <Hixie> | sweet |
22:22 | <Hixie> | i wasn't even trying to sell you :-) |
22:23 | <AryehGregor> | Allowing such a thing in actual CSS files sounds like a seriously bad idea. |
22:23 | <ojan> | AryehGregor: we should either allow none of them, or add something generic like :matches |
22:23 | <annevk> | Hixie, cache manifests don't seem to allow for FF, maybe it should simply be banned from text/vtt? |
22:23 | <ojan> | AryehGregor: what we seem to be doing currently is adding a bunch of one-offs |
22:23 | <Hixie> | AryehGregor: it's certainly better than $ or ? or < or :has(), so if we're adding any of those, we should just do :matches(), imho |
22:24 | <ojan> | =Hixie |
22:24 | <Hixie> | annevk: *shrug* |
22:24 | <ojan> | I'd also be OK with not adding any of them. |
22:24 | <annevk> | Y U NO CARE |
22:25 | <ojan> | annevk: will you be in town for TPAC? |
22:25 | <Hixie> | bbiab, meeting |
22:25 | <hober> | ojan: annevk: there will be beers involved (re: tpac) |
22:26 | <ojan> | it'll be nice to meet everyone in person |
22:28 | <annevk> | I'm coming on Sunday |
22:28 | <annevk> | and yes, I'm looking forward to meeting everyone too :) |
22:29 | <ojan> | annevk: are you staying in SF or the south bay while you're here? |
22:29 | <annevk> | and beers :) |
22:29 | <annevk> | I'm staying in Santa Clara but might go to SF in the weekend |
22:30 | <annevk> | after not sure yet, leaving the ninth |
22:30 | <ojan> | annevk: k. i'll probably only be at tpac monday and tuesday, but i live/work in SF. |
22:31 | <annevk> | ah, in the Google SF office? |
22:31 | <ojan> | annevk: yeah |
22:31 | <annevk> | cool |
22:31 | <ojan> | annevk: you're welcome to come for lunch here one day |
22:31 | <annevk> | might take you up on that :) |
22:31 | <wycats> | Hixie: hey... I was wondering why the new validation events don't bubble |
22:32 | <wycats> | there's an open thread on the jQuery Standards list about it :) |
22:32 | <ojan> | annevk: a lot of the chromium folk who work on webkit work in SF |
22:33 | <ojan> | annevk: we should chat in person about the various dom creation proposals |
22:33 | <wycats> | ojan: what do you think about the Element constructor proposal? |
22:33 | <ojan> | wycats: which one? |
22:34 | <wycats> | I guess the one that takes an object of attributes and children? |
22:34 | <ojan> | wycats: there are things i really like about it and things i like less... |
22:34 | <ojan> | wycats: well...there are multiple such proposals... |
22:35 | <annevk> | ojan, yeah that'd be nice |
22:35 | <ojan> | wycats: the one i really like is the one annevk suggested with the funky json/array syntax |
22:35 | <ojan> | wycats: the thing i really like about that is that in theory, you can construct DOMs much faster than you could if you needed to parse HTML |
22:35 | <wycats> | ojan: I like it too |
22:35 | <ojan> | wycats: on the other hand, it's not terribly readable |
22:36 | <wycats> | ojan: the fact that new DivElement straight up doesn't work today is pretty broken |
22:36 | <wycats> | ojan: I was thinking that allowing a tagName as first param might make it more readable |
22:36 | <wycats> | new Element("div", { id: "zomg" }) |
22:36 | <ojan> | i've slowly come to believe that the quasis approach may be the best |
22:36 | <ojan> | wycats: yeah, it's hard to come up with a syntax that works better than what annevk suggested |
22:37 | <wycats> | ojan: I think the only thing I could improve over annevk would be allowing new Element instead of new FooElement |
22:37 | <ojan> | wycats: because i think it's important we maintain that passing just a string can get you a text node |
22:37 | <wycats> | ah interesting |
22:37 | <wycats> | even to new Element |
22:37 | <wycats> | I guess the problem is that new Element wouldn't return a direct instance of Element |
22:37 | <ojan> | maybe not...but then what do you for the children case |
22:37 | <wycats> | you would want new Element("div") to return a DivElement |
22:38 | <ojan> | new Element(tagName, attributes, children...) |
22:38 | <wycats> | new Element("div", { id: "foo" }, [ new Element("span"), "some text" ]) |
22:38 | <ojan> | Needing to repeat "new Element" when constructing the children is too bloated IMO |
22:38 | <ojan> | it's less readable and just too much typing |
22:38 | <wycats> | ojan: you could allow a hash, I guess? |
22:38 | <ojan> | remember the thing we're competing with is innerHTML here |
22:39 | <wycats> | new Element("div", { id: "foo" }, [ { span: { id: "hi", children: ["string", { em: ["some text"] }] } } ]) |
22:39 | <ojan> | if i could have my cake and eat it too, right now I'd want to see us implement *both* annevk's array-based proposal and quasis with a native "html" function. |
22:39 | <ojan> | they're not actually mutually exclusive in any way |
22:40 | <TabAtkins_> | ojan: Yes, both are complementary for different things. |
22:40 | <ojan> | and actually meet different use-cases, althought there is certainly overlap |
22:40 | <ojan> | and annevk's array-based proposal is really straightforward to spec and implement, so it doesn't really present a burden on browser vendors |
22:41 | <ojan> | annevk: i liked the E4H proposal at first, but people have convinced me that quasis are a better solution...we can chat about it in person next week |
22:42 | <wycats> | ojan: the most useful thing for jQuery would be the ability to do fragment.innerHTML = "<tr><td>hi</td></tr>" |
22:42 | <wycats> | essentially have a way to make HTML nodes where the root nodes don't care about their context |
22:43 | <wycats> | we jump through major hoops in jQuery to make $("<tr><td>hi</td></tr>").appendTo("table") work |
22:43 | <ojan> | wycats: yeah...i agree it's totally balls |
22:43 | <ojan> | wycats: but all of these proposals address that use-case fine |
22:43 | <wycats> | ojan: not really |
22:43 | <wycats> | because the jQuery API is "gimme string" |
22:43 | <wycats> | not "gimme some structure" |
22:44 | <wycats> | I see the new APIs as competing with document.createElement more than innerHTML tbh |
22:44 | <kennyluck> | Is there any problem if browsers ignore media type of a manifest? I think this was probably discussed to death but I would be grateful if someone reminds me again. |
22:44 | <ojan> | wycats: but if you implement $("<tr><td>hi</td></tr>") in terms of the new API, it should just work, no? |
22:44 | <wycats> | how do we do that? |
22:45 | <wycats> | parse the HTML manually? |
22:45 | <ojan> | hm...i guess you're right...this doesn't help jquery at all. |
22:46 | <wycats> | "[ |
22:46 | <wycats> | :p |
22:47 | <ojan> | wycats: i think it's an orthogonal issue...erik arvidsson made a proposal recently to whatwg@ make createContextualFragment do what you want if the range is in a detached context |
22:47 | <wycats> | ojan: nice |
22:47 | <ojan> | wycats: i'm still pro that as the solution to your problem |
22:47 | <wycats> | ojan: do you know what the subject line is? |
22:47 | <wycats> | ojan: I think right now that case throws an error |
22:48 | <ojan> | wycats: yeah, so it's probably backwards compatible to change it... |
22:48 | <ojan> | wycats: "createContextualFragment in detached contexts" |
22:48 | <wycats> | ojan: I'll go +1 |
22:48 | <wycats> | it would save a ton of work in jQuery |
22:48 | <wycats> | I was able to make jQuery a lot faster in the case of $("table").append("<tr><td>...</td></tr>") |
22:49 | <wycats> | because I have a context for a contextual fragment in that case |
22:58 | <hober> | Hixie: thanks for the Emacs examples in r6773 :) |