00:29 | <MikeSmith> | Hixie: fwiw, I'd vote for dropping the term "xhtml document" altogether |
00:34 | <MikeSmith> | Hixie: if you need an alternative, consider "document in the XHTML syntax" |
00:35 | <MikeSmith> | or "conforming document in the XHTML syntax" or "document conforming to the XHTML syntax" |
00:52 | <Hixie> | hober: gotta represent! |
00:52 | <Hixie> | MikeSmith: i think hsivonen convinced me we should give the term lip service |
00:59 | <MikeSmith> | Hixie: OK |
01:05 | <Hixie> | i just looked up "complicated" in the thesaurus to find a better word to use somewhere in the spec and wow, that's just a long list of words to describe HTML |
01:05 | <paul_irish> | :D |
01:05 | <MikeSmith> | byzantine? |
01:05 | <MikeSmith> | baroque? |
01:06 | <Hixie> | intricate... bewildering... perplexing... labrynthine... tortuous... |
01:06 | <Hixie> | tricky... knotty... thorny... tangled... |
01:06 | <MikeSmith> | intertwingly |
01:08 | <Hixie> | in other news |
01:08 | <Hixie> | turns out i'd never specced how input.width and input.height actually worked |
01:08 | <Hixie> | they were hyperlinked to a section that described a bunch of other width and height IDL attributes, but didn't list <input> |
01:08 | <Hixie> | so, oops |
01:09 | <Hixie> | how the blazes am i supposed to test http://www.w3.org/Bugs/Public/show_bug.cgi?id=14526 |
01:17 | <jgraham> | Hixie: That's what you get for using the word "just" before "build one" :p |
01:18 | <Hixie> | :-) |
01:20 | <jgraham> | But, uh, doesn't OSX use NFD for filenames? So test what browsers on OSX do with a filename that could contain a decomposed character, maybe? |
01:36 | <Hixie> | http://damowmow.com/playground/demos/filename-upload/ leads me to be even more confused |
01:37 | <Hixie> | some used 0xCC 0x88 and some used 0xC3 0xBC |
01:38 | <Hixie> | oh sorry |
01:38 | <Hixie> | some used u 0xCC 0x88 and some used 0xC3 0xBC. that makes more sense. |
01:55 | <jarek> | Hi |
01:55 | <jarek> | the DOM3 spec has following line: |
01:55 | <jarek> | "Authors should use the KeyboardEvent.char and KeyboardEvent.key attributes instead of the charCode and keyCode attributes, respectively." |
01:56 | <jarek> | is this really what developers should do currently? KeyboardEvent.char and KeyboardEvent.key does not seem to be supported by latest version of Chrome |
01:56 | <jarek> | s/does/do |
01:56 | <jgraham> | DOM3 events? |
01:56 | <jarek> | yeah |
01:57 | <jgraham> | That spec is not noted for being useful |
01:57 | <zewt> | did you cut out the "... if they don't want anything to work" part |
01:58 | <jarek> | uhm... let me check :) |
01:58 | <jgraham> | jarek: Anyway, you are all good per RFC2119 |
01:59 | <jarek> | yeah, it says something between those lines... |
02:00 | <jarek> | I was worried because it called keyCode and charCode as legacy |
02:06 | <jamesr_> | dom3 events can't really call anything else legacy |
02:06 | <jarek> | jamesr_: http://www.w3.org/TR/DOM-Level-3-Events/#legacy-key-attributes |
02:12 | <jgraham> | Seeriously, I wouldn't expect DOM3 events to be accurate |
02:15 | <jamesr_> | jarek, what i meant is that dom3 events is so old and incorrect you should ignore it |
02:15 | <jgraham> | d3e isn't old |
02:15 | <jamesr_> | jarek, what i meant is that dom3 events is so old and incorrect you should ignore it |
02:15 | <jamesr_> | sorry, mistaken |
02:15 | <jamesr_> | jgraham, well it has many old parts |
02:16 | <jamesr_> | some parts are newly edited |
02:16 | <jgraham> | Yes |
02:16 | <jamesr_> | many important parts are not |
02:16 | <jamesr_> | and it's a total mystery to me why anyone bothers editing it |
02:17 | <jarek> | is there any other specification that would describe keyboard events? |
02:17 | <jarek> | afair there was something on touch events |
02:18 | <jarek> | but that's different story |
02:19 | <jarek> | http://www.w3.org/TR/touch-events/ |
02:20 | <jarek> | ^ why it is not part of DOM3 events? |
02:20 | <jarek> | is it going to be merged in the future? |
02:39 | <wycats> | Hixie: above I asked why the new form validation events don't bubble |
03:04 | <kennyluck> | (ask again) 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. |
03:16 | <Hixie> | wycats: in case the form control is in a form that isn't the form it's associated with |
03:16 | <Hixie> | kennyluck: well it would violate the HTTP spec... |
03:16 | <wycats> | Hixie: it basically breaks event delegation though |
03:16 | <wycats> | event delegation is a pretty standard way to build apps |
03:20 | <Hixie> | event delegation? |
03:24 | <wycats> | Hixie: it's common for people to register for events in entire regions of the page |
03:24 | <wycats> | and use event.target to identify where the event came from |
03:24 | <wycats> | this has two positive effects |
03:24 | <wycats> | 1) no need to register handlers for all elements you are interested in (performance) |
03:25 | <wycats> | 2) ability to dynamically generate markup without having to worry about also binding events |
03:25 | <wycats> | http://api.jquery.com/delegate/ jQuery provides widely-used facilities for this |
03:25 | <Hixie> | sure |
03:25 | <Hixie> | you can still do that |
03:25 | <Hixie> | just register a capture listener on whatever element you want to do it on |
03:27 | <wycats> | Hixie: almost no existing delegation facilities use capture |
03:27 | <wycats> | and further, capture has the reverse intended effect |
03:28 | <wycats> | namely, it bubbles backwards from the expected direction |
03:29 | <Hixie> | if all you want to do is delegate, it doesn't matter what direction it goes in |
03:33 | <wycats> | Hixie: it matters if you want to avoid conflicting with event handlers that some other code may have registered |
03:33 | <Hixie> | i don't really understand the use case here |
03:33 | <Hixie> | but you can always work around it by adding a capture handler on the root that refires the event as a bubbling event :-) |
03:36 | <wycats> | refiring isn't particularly reliable, especially with events with native handling |
03:36 | <wycats> | Hixie: trust me when I say "events that don't bubble are broken to most developers" |
03:36 | <wycats> | https://groups.google.com/forum/#!topic/jquery-standards/SKdrgth7igY |
03:41 | <kennyluck> | Hixie, can you elaborate on this a little bit? (re. it would violate the HTTP spec) Is that a strong reason given how many times "willful violation" appears in the spec? |
05:04 | <Hixie> | wycats: i don't see why refiring wouldn't work if you really needed it |
05:04 | <Hixie> | wycats: bubbling would be broken too, for this particular feature |
05:04 | <Hixie> | wycats: if there are specific uses cases you want me to look at, though, that might show that i am wrong, which would be useful |
05:04 | <Hixie> | wycats: it's hard to discuss in the abstract |
05:05 | <Hixie> | kennyluck: the wilful violations are all because i had no choice, e.g. because the other spec contradicts reality |
05:49 | <roc> | I have an interesting spec philosophy question |
05:51 | <heycam> | choice of font? |
05:51 | <roc> | yeah right |
05:51 | <roc> | I have an API that lets a Worker generate data for a MediaStream. This is done by periodically firing an event at the Worker to fetch more data. Suppose the MediaStream isn't connected to anything and is eventually GCed. |
05:52 | <roc> | Should I keep firing events at the Worker to preserve the non-observability of GC? |
05:52 | <roc> | (Which means, of course, keeping the Worker alive) |
05:52 | <heycam> | hmm, well are you required to fire the event at any particular rate? |
05:52 | <heycam> | can the worker tell that the worker should have fired an event by a particular time? |
05:53 | <roc> | not really |
05:53 | <roc> | but I think it'd be reasonable to expect the event to fire *eventually* |
05:54 | <heycam> | yeah. is it just theoretical observability that you're worried about? or practical web compat problems due to different gc strategies? |
05:54 | <jgraham> | I don't understand what events would be fired once the stream wasn't connected to anything |
05:54 | <roc> | conceptually the stream keeps playing, but no-one's listening |
05:55 | <roc> | I haven't thought about Web compat problems |
05:55 | <heycam> | i know: kill the worker, then it won't know a thing ;) |
05:55 | <roc> | I have written a test that accidentally broke because the stream got GCed and my worker stopped getting called, and I was waiting for it to get through a certain amount of work |
05:55 | <zewt> | fwiw you could get the same effect (logically) without workers complicating the question, if you were firing progress events on a stream and the same thing happened |
05:55 | <jgraham> | Can't you make that explicit? |
05:56 | <roc> | make what explicit? |
05:56 | <zewt> | (on an abstract stream--not talking about any particular API, not sure if there are any that fit) |
05:57 | <roc> | one possibility I just thought of is that I could try making MediaStreams that aren't connected to anything block |
05:58 | <roc> | then if a MediaStream gets GCed, it must have been blocked, in which case it's correct to stop firing processmedia events at the worker |
05:58 | <zewt> | i don't know that API, but that seems better than requesting info and throwing it away if nobody's connected to it; that just seems wasteful |
06:00 | <roc> | but that means if you want a ProcessedMediaStream whose worker just analyzes input samples and doesn't produce anything, you'll need to nevertheless connect it to a dummy muted audio element :-( |
06:00 | <zewt> | from an I/O-pin-based API perspective that's not too horrible |
06:02 | <jgraham> | roc: That sounds OK to me. Conceptually having no low if there is no sink sounds reasonable |
06:02 | <jgraham> | *flow |
06:02 | <roc> | hmm ho |
06:03 | <zewt> | out of curiosity, if you start a chain like that, and drop all references to the objects, is there any way to get it back (eg. a "array of currently playing streams" attribute somewhere), or is it effectively leaked and playing forever? |
06:04 | <zewt> | (leaking like that isn't too bad--don't do that--but a little unusual on the platform) |
06:04 | <zewt> | (of course, you can't say "the input element gets GC'd and it stops", since then you're back at square one with exposed GC behavior :) |
06:05 | <roc> | in this API I use media elements for output |
06:06 | <roc> | and media elements already handle this issue |
06:06 | <roc> | basically you can go (new Audio(...)).play(); |
06:06 | <roc> | dropping the reference to the element |
06:06 | <roc> | and it will play until the stream ends |
06:06 | <roc> | and then everything gets cleaned up |
06:06 | <roc> | of course, the stream might not end, but whatever |
06:07 | <roc> | also, if the document becomes "inactive" (which is very carefully defined), the element pauses automatically, and since there's no reference to it there's no way to start it again so again we can clean up |
06:08 | <roc> | jgraham: thanks for the reassurance, I'll probably go that way :-) |
06:16 | <wycats> | Hixie: can you explain the use-case for it not bubbling better? |
06:24 | <Hixie> | wycats: if someone were to use the fact that it bubbled to put a handler on a <form>, that handler would fire even for controls that were children of the form but had a form="" attribute and were thus associated with another form. |
06:25 | <wycats> | them's the breaks with bubbling in general |
06:25 | <wycats> | we could fire a different event on associated forms |
06:25 | <wycats> | invalidform |
06:25 | <Hixie> | or we could just not bubble, since there doesn't seem to be a use case for it :-) |
06:26 | <wycats> | Hixie: it's inconsistent |
06:26 | <wycats> | other events bubble |
06:26 | <Hixie> | not all of them |
06:27 | <wycats> | and look what jQuery does -- it creates bubbling versions of the non-bubbling events |
06:27 | <wycats> | nobody wants non-bubbling events |
06:27 | <Hixie> | clearly not nobody |
06:27 | <Hixie> | maybe jquery's authors don't |
06:27 | <wycats> | web authors don't :) |
06:27 | <Hixie> | some web authors do |
06:27 | <wycats> | which ones? |
06:27 | <Hixie> | me, for one |
06:28 | <wycats> | Hixie: the fact that focus doesn't bubble, for instance, is the source of considerable pain |
06:29 | <Hixie> | and if 'invalid' were to bubble, _that_ would cause pain |
06:29 | <hsivonen> | I wonder what would be the most effective way to get the person implementing HTML parsing in IE take a look at http://hsivonen.iki.fi/test/moz/bug696651-1.html and compare with Gecko/WebKit/Ragnarök |
06:29 | <wycats> | Hixie: in the case where people use form="..."? |
06:29 | <Hixie> | wycats: yup |
06:30 | <Hixie> | wycats: what's the use case for looking at the 'invalid' event anywhere but the control? |
06:30 | <wycats> | Hixie: using the standard event delegation infrastructure that people use for every other event |
06:30 | <Hixie> | hsivonen: is that related to a potential spec change? |
06:30 | <hsivonen> | Hixie: AFAIK, no |
06:30 | <Hixie> | wycats: that's not a use case, that's a bunch of buzzwords. |
06:30 | <Hixie> | hsivonen: thank god. |
06:30 | <Hixie> | hsivonen: that test case looks scary. |
06:30 | <hsivonen> | Hixie: rather, it seems to me IE is failing to follow the spec |
06:30 | <Hixie> | hsivonen: i was worried i might have to understand it. :-P |
06:30 | <wycats> | Hixie: "event delegation" how is that a buzzword? |
06:31 | <wycats> | what you're saying is that people should build their own event delegation specifically for the invalid event |
06:31 | <wycats> | using capture |
06:31 | <wycats> | which isn't available in all browsers, so it would fail on polyfills |
06:31 | <Hixie> | wycats: no, i'm saying that there hasn't been any description of a use case for event delegation for the 'invalid' event on form controls |
06:32 | <wycats> | Hixie: I explained above why people want event delegation - it's to make it easy to dynamically insert markup without having to worry about also binding events |
06:32 | <Hixie> | wycats: that makes no sense for a form control's invalid event |
06:32 | <Hixie> | wycats: the whole point of that event is to do different things for each control |
06:33 | <wycats> | the point of event delegation libraries is to have an event that behaves as-if it was bound directly, but without having to bind it |
06:34 | <wycats> | $(document).delegate("input.something", function() { /* handle invalid events for elements with "something" class here */ }) |
06:35 | <Hixie> | show me a use case for giving multiple controls the same oninvalid handler |
06:35 | <wycats> | one moment please |
06:39 | <wycats> | what, in your mind, is the use case for the invalid event on individual elements |
06:40 | <hsivonen> | maybe I should submit the test I mentioned above to html5lib test suite (in one of the scripted tree builder test files) |
06:43 | <zewt> | Hixie: the "dynamic elements" case doesn't need multiple controls with the same behavior, fwiw |
06:43 | hsivonen | sighs at av_param. |
06:43 | <hsivonen> | looks like I will have to write a counter change proposal if that one is submitted to the WG |
06:43 | <hsivonen> | or was it submitted already? |
06:44 | <zewt> | not very familiar with form validation just yet, but i could easily see the same "invalid data" behavior for eg. multiple phone numbers (work, home, mobile) in the same form ("awooga, bad phone number") |
06:44 | <hsivonen> | Risks: None identified |
06:44 | <wycats> | Hixie: I'm honestly at a loss for how to explain this to you -- do you understand that you may find that you want the same behavior on the case of invalidity in several places on a page? and that you might now want all of the annotated elements to have to be present on that page when you initially register the handlers? |
06:44 | <zewt> | wycats: s/now/not/, presumably :) |
06:44 | <hsivonen> | right. as if I didn't identify a risk in the bug. :-( how hard would it have been to copy and paste it over? |
06:44 | <wycats> | Hixie: keeping in mind that you have access to the target element no matter where the event itself was bound |
06:45 | <hsivonen> | Negative Effects: None identified |
06:45 | <hsivonen> | Conformance Classes Changes: None identified |
06:45 | <hsivonen> | seriously? |
06:47 | <Hixie> | wycats: sorry, was afk |
06:47 | <Hixie> | wycats: pretty much the only use case is displaying very specialised error notifications, e.g. on a field with a complicated pattern, displaying a graphic showing the allowed pattern. |
06:48 | <wycats> | Hixie: you assume CSS will handle all other cases you care about? |
06:48 | <Hixie> | hsivonen: fwiw in the past when a decision has been made that browsers haven't wanted to implement, it's been dealt with quite quickly without much work from vendors |
06:49 | <Hixie> | wycats: no need for CSS even |
06:49 | <wycats> | Hixie: the invalid event allows you to customize the behavior / style of invalid elements - it's only irrelevant if CSS picks up all the remaining slack |
06:50 | <Hixie> | wycats: why would you style anything at all? just let the browser do it |
06:50 | <Hixie> | wycats: styling the error messages is like styling the form controls, it's bad ui |
06:50 | <Hixie> | wycats: just trust the browser to use platform conventions |
06:51 | <wycats> | I'm honestly at a loss; I'll compose an email |
06:51 | <wycats> | and let others chime in |
06:51 | <wycats> | :) |
06:51 | <Hixie> | e-mail and bugs are the only way changes are going to be made anyway :-) |
06:51 | <wycats> | Hixie: yep |
06:51 | <Hixie> | but make sure to give use cases |
06:51 | <Hixie> | that's pretty much all i look at |
06:52 | <Hixie> | (that and what the browsers are doing) |
06:52 | <wycats> | Hixie: I'm seriously baffled that you think that the entire problem of form validation and the related UI is now a solved problem |
06:52 | <wycats> | I would love for that to be true |
06:52 | <Hixie> | why would it not be true? |
06:52 | <Hixie> | (for common controls, that is) |
06:53 | <wycats> | because the semantics of what invalidity actually means can differ |
06:53 | <Hixie> | (obviously for complicated cases there are needs for scripted ui, but that's why we have oninvalid) |
06:53 | <wycats> | and I'll bet dollars to donuts that we didn't hit even close to every case |
06:53 | <Hixie> | can you possibly give a concrete example |
06:53 | <wycats> | Hixie: I will email the list |
06:53 | <Hixie> | make sure to include concrete examples and use cases |
06:53 | <wycats> | Hixie: no problem |
06:54 | <Hixie> | it's _some_ problem, i've been asking for them for over 30 minutes now without luck :-/ |
06:55 | <wycats> | I need to figure out how to articulate what you think are "buzzwords" in a way that you will consider valid |
06:55 | <wycats> | so I will think about it and send an email |
06:56 | <Hixie> | a use case is something like "on this web page i'm writing at http://foobar.example.net/bla/quux.html, you'll notice there's an airline seat chart, and when the user clicks on the seat i fill in an input field, and..." etc |
06:56 | <Hixie> | referencing common development methodologies isn't a use case, however you phrase it |
06:56 | <Hixie> | it needs to be a real-world actual problem |
06:56 | <Hixie> | faced by a specific author and user |
06:58 | <wycats> | is the user allowed to be using popular libraries? |
06:58 | <wycats> | or are they required to be writing everything by hand using the raw DOM API? |
06:59 | <zewt> | use cases do not have to be real-world actual problems; realistic, theoretical uses are also use cases |
06:59 | <Hixie> | you mean the author? the user doesn't use libraries :-) |
06:59 | <zewt> | otherwise you'd never have any use cases for apis that don't exist yet, and you couldn't create any new apis :) |
07:00 | <wycats> | Hixie: yes, the author |
07:00 | <Hixie> | wycats: doesn't matter, doesn't affect the use case |
07:01 | <wycats> | Hixie: so as long as the author can solve their problem without libraries, it's invalid? |
07:01 | <Hixie> | wycats: author = author code + library code |
07:02 | <Hixie> | wycats: (abviously any problem that can be solved with libraries can be solved without libraries) |
07:02 | <wycats> | Hixie: yes that is true mathematically |
07:03 | <Hixie> | wycats: if you mean "is a problem caused by a library a valid problem", the answer is obviously no, since it's far easier to fix the library than every browser |
07:03 | <wycats> | I'm not sure why common development techniques for working with events are irrelevant |
07:03 | <wycats> | Hixie: it's a new event |
07:03 | <wycats> | and it may not be easy to fix libraries, if you're asking them to deviate from their standard practice for one specific event |
07:04 | <wycats> | Hixie: my point is purely that people use bubbling to bind events to elements that don't exist yet, based on some annotation on the element |
07:04 | <wycats> | your point is that the invalid event is largely useless anyway |
07:04 | <Hixie> | honestly i don't see much point in using a library to hook an event, unless it's to work around browser differences |
07:04 | <Hixie> | it's not like dom events is a difficult api to use |
07:04 | <wycats> | Hixie: you're trolling me right? |
07:04 | <Hixie> | no? |
07:05 | <wycats> | Hixie: let's get drinks with Alex Russell and discuss this some time |
07:05 | <Hixie> | if you were talking about indexeddb that would be different |
07:05 | <Hixie> | alex and i have rather different views of how the web should work |
07:05 | <wycats> | Hixie: in your mind, users should type as much as possible and pass as many boolean flags as possible? |
07:05 | <Hixie> | ( and every time we talk about it, he convinces me further that he's wrong :-) ) |
07:05 | <Hixie> | users shouldn't type anything |
07:05 | <wycats> | authors |
07:06 | <Hixie> | not sure what you mean by "boolean flags" here |
07:06 | <wycats> | Ajax sync/async, capture/bubbling phase |
07:06 | <wycats> | APIs have mandatory boolean flags where 99.999% of usage is one or the other |
07:06 | <Hixie> | neither of those requires passing any boolean flags |
07:06 | <Hixie> | as the last argument to addEventListener() is optional |
07:06 | <Hixie> | and XMLHttpRequest defaults to async |
07:07 | <zewt> | wycats: i think you're getting distracted--not having to pass flags to a function isn't why delegation is useful (if that was all it was for, you'd just use a helper function) |
07:08 | <wycats> | zewt: I am in fact getting distracted |
07:10 | <wycats> | zewt: I'm just getting frustrated by the need to provide a use-case for event delegation being useful |
07:11 | <wycats> | I'm going to organize my thoughts and try to apply them clearly to the invalid event |
07:11 | <wycats> | and then send an email |
07:12 | <zewt> | wycats: by the way, there's no reason to frame use cases for delegation in terms of delegation |
07:13 | <zewt> | use cases for delegation are all really use cases for event bubbling, since delegation is just bubbling with some helpers wrapped around it |
07:13 | <zewt> | (so you can strip a layer of abstraction away from what you're talking about by putting that aside) |
07:15 | <wycats> | zewt: event delegation is bubbling that makes use of event.target |
07:15 | <wycats> | no? |
07:15 | <zewt> | yep |
07:15 | <wycats> | zewt: that's what I mean by "event delegation" |
07:15 | <zewt> | i know |
07:15 | <wycats> | I think without the target property, bubbling would in fact not be very useful here |
07:16 | <wycats> | if there is a case for direct binding, there defacto is a case for bubbling + target |
07:16 | <wycats> | but I need to figure out how to clearly explain that |
08:41 | <annevk> | foolip, I keep forgetting that Microdata has no relationship to the rest of the page |
08:42 | <annevk> | I wonder whether I'm the only one |
08:51 | <annevk> | foolip, your Live Microdata has a giant XSS hole |
08:51 | <annevk> | foolip, not sure if that's problematic for your site or not |
08:57 | <annevk> | Argh. DOM Level 3 Events also changes the way dispatchEvent() works from DOM Level 2 Events |
08:57 | <annevk> | And http://w3c-test.org/webapps/DOMEvents/tests/submissions/Microsoft/converted/dispatchEvent.NOT_SUPPORTED_ERR.html tests one of those new silly conditions... |
09:01 | <hsivonen> | annevk: the Microdata API encourages the kind of thinking that Microdata has a relationship to the DOM structure :-/ |
09:03 | <annevk> | So actually Hixie didn't think of it either when he made that new Microdata-inspired Atom example |
09:05 | <hsivonen> | aargh. http://lists.w3.org/Archives/Public/public-rdfa-wg/2011Oct/0051.html |
09:05 | <Hixie> | annevk: which one? |
09:06 | <Hixie> | hsivonen: i'm sure he feels the same way in reverse :-) |
09:07 | <Hixie> | annevk: oh the pubdate thing |
09:07 | <Hixie> | annevk: interesting point |
09:07 | <annevk> | Hixie, http://www.w3.org/Bugs/Public/show_bug.cgi?id=14202 |
09:07 | <annevk> | yeah |
09:07 | <annevk> | foolip spotted it |
09:07 | <annevk> | I had forgotten about it again |
09:08 | <zcorpan> | hsivonen: it makes perfect sense to use RDFa in XML Schema and XSLT |
09:11 | <Hixie> | annevk: i wonder what the use case is for pubdate. is it just a replacement for Atom, for syndication? |
09:12 | <Hixie> | annevk: if so, we can just also tell people to specify a "url" and make sure that the permalink is what is used |
09:12 | <Hixie> | annevk: and then say that syndicators should grab all the items of type Blog or whatever and then find their URLs and look those up and get the <article>s that they point to, or something |
09:14 | <zcorpan> | Hixie: r6773 - you can't bind Esc with accesskey |
09:14 | <Hixie> | not yet, no |
09:14 | <zcorpan> | so the example is confusing because it implies that you can |
09:17 | <annevk> | Hixie, I don't know really; I just thought Microdata might be a nice way to solve this rather niche case but then it turns out I don't understand Microdata... |
09:18 | <Hixie> | zcorpan: can you think of another example that would have a different last symbol in windows and mac that _is_ possible with the first version of this new accesskey? |
09:19 | <zcorpan> | no |
09:19 | <FlorianX> | could someone tell me when the canvas was integrated into html5? Thanks |
09:19 | <Hixie> | 2007? around when safari first came out with it. |
09:20 | <zcorpan> | http://www.whatwg.org/specs/web-apps/2005-09-01/#dynamic |
09:20 | <FlorianX> | Hixie: thank this limited the search in your commits :-) |
09:21 | <FlorianX> | zcorpan: Thanks! |
09:21 | <zcorpan> | 2005 there was no svn |
09:21 | <Hixie> | 2005, wow |
09:21 | <Hixie> | canvas has been in the spec longer than the w3c had existed by the time it decided html was dead |
09:22 | <FlorianX> | ok thanks |
09:22 | <Hixie> | ok i really have to go to bed |
09:22 | <Hixie> | nn |
09:22 | <FlorianX> | gn8 |
10:20 | <Margle> | what's the objective of this channel? |
10:22 | <annevk> | allow people to communicate? |
10:24 | <Margle> | to what end? |
10:26 | <annevk> | creating standards typically |
10:30 | <Margle> | I've reached the beginning? |
10:34 | <abarth> | Margle: its a loop. there is no beginning |
10:37 | <Margle> | and thus: standards immatate time. |
10:37 | <abarth> | well, time is a cube |
10:37 | <Margle> | abarth: and standards are a donut? |
10:45 | <zcorpan> | Margle: no. standards suck |
10:45 | <abarth> | what ever happened to standards suck? |
10:45 | <abarth> | maybe there will be new ones after TPAC? |
10:46 | <Margle> | ok |
10:46 | <Margle> | so… why does everyone come here to talk about stuff that sucks? |
10:47 | <Margle> | can't be just talk about other stuff? |
10:47 | <zcorpan> | seems like it hasn't been active in two years |
10:47 | <annevk> | tried making one with hasather but that really didn't go anywhere |
10:48 | <zcorpan> | you should interview abarth :) |
10:49 | <zcorpan> | "can you explain how web security works in three sentences?" |
10:49 | <abarth> | it doesn't |
10:49 | <abarth> | (sort interview) |
10:49 | <abarth> | short |
10:49 | <annevk> | :) |
11:34 | <hasather> | The classList methods would be more useful if they took a space separated list of class names |
11:36 | <zcorpan> | hasather: file a bug |
11:37 | <hasather> | zcorpan: yea |
11:47 | <karlcow> | http://raven.io/ |
12:30 | <asmodai> | awesome, logos in CSS: http://www.ecsspert.com/twitter.php |
12:30 | <asmodai> | Pity the site references w3schools though :( |
14:30 | <foolip> | nessy, I'm making some tweaks to http://www.w3.org/html/wg/wiki/ChangeProposals/issue-179_no_change |
14:30 | <nessy> | oh, I am still working on it |
14:30 | <nessy> | give me about 10 min |
14:31 | <foolip> | ok, will do |
14:42 | <nessy> | ok, it's still a bit raw, but I am grateful you want to chip in |
14:42 | <nessy> | go for it :-) |
14:49 | <foolip> | ok, I just changed the formatting a bit, it was way too wide for me |
14:59 | <nessy> | ah, oops |
15:02 | <foolip> | nessy, do you know what the appropriate way of entering complaints about the original proposal is? |
15:03 | <foolip> | for example, I want to complain that it doesn't have any implementation details, but under which section of the counter proposal does that belong? |
15:11 | <nessy> | I don't know either |
15:11 | <nessy> | I thought I'd put it under "Details", but that's really for proposing what to enter into the spec |
15:12 | <nessy> | http://dev.w3.org/html5/decision-policy/decision-policy.html#change-proposal <- doesn't really describe what a counter change proposal should include |
15:13 | <nessy> | looking at this http://www.w3.org/html/wg/wiki/ChangeProposals/KeepMicrodata it seems the "Rationale" section needs to contain the details |
15:14 | <nessy> | let's remove the "Details" header then |
15:14 | <nessy> | are you editing? |
15:16 | <foolip> | not right now |
15:16 | <foolip> | I'm done for today I think, but I'm monitoring it and might throw and some stuff if you don't object |
15:17 | <foolip> | uh |
15:17 | <foolip> | throw in, as in add, not throw as in remove :) |
15:18 | <nessy> | sure |
15:18 | <nessy> | I am about to go to bed, so will likely not edit anything in about 15 hours (have to take my son to Basketball in the morning) |
15:21 | <foolip> | have a nice weekend, then :) |
15:23 | <nessy> | thanks :-) you, too |
15:23 | <nessy> | I'll monitor the situation :-) |
15:23 | <nessy> | nn |
15:28 | <zewt> | ... g+ seriously doesn't do rss? what? |
15:56 | <karlcow> | zewt: ... seriously why using g+? what? |
16:03 | <zewt> | ... i'm not? |
16:31 | <bfrohs> | Has there been any suggestions for a relative tabindex based on the current section? For example, a form that you know what order you want each field to be selected, but you don't know the placement on the actual page? |
16:32 | <bfrohs> | Code example: http://bit.ly/vxrjt5 -- obviously with a different attribute or format for doing it relatively instead |
16:37 | <AryehGregor> | I haven't heard such suggestions, but it would make sense. |
16:39 | <bfrohs> | It's been the one thing I never liked about tabindex (and the only reason I almost never use it). Because, quite frankly, websites are built in sections. Back when every page was simple and linear, the tabindex the way it is made sense (to an extent), but with websites nowadays, there needs to at least be an option for relative tabindex. |
16:42 | <bfrohs> | And I believe it may be good enough to simply rely on the outline algorithm, but some may want it to take into account fieldsets and the like as well. |
16:43 | <AryehGregor> | Or have an attribute like accesskeyscope, similar to itemscope and undoscope, which indicates that all descendants' accesskeys are to be interpreted as relative. |
16:52 | <bfrohs> | Well, in a limited way, that could work. But that makes it impossible to mark an item with an absolute tabindex. |
16:53 | <AryehGregor> | Why would you want to mix relative and absolute in the same subtree? We don't have to satisfy all use-cases if that will make things more complicated. |
16:53 | <AryehGregor> | If you want to do fancy stuff, you can always work out absolute tabindexes. |
16:53 | <bfrohs> | Also, if you had two forms, both of which you wanted to have relative tabindexes, but the second form to be accessed first, you would be limited there as well. |
16:53 | <bfrohs> | Oh, just thinking up all use-cases cause my mind is terrible like that. |
16:54 | <bfrohs> | But honestly, for my needs, accesskeyscope would be more than enough |
16:54 | <annevk> | tabindexscope, no? |
16:54 | <bfrohs> | well, yeah, just using the attribute AryehGregor provided |
16:55 | <AryehGregor> | I misspoke, obviously. |
16:56 | <bfrohs> | The only issue with tabindexscope (and piggybacking off of tabindex) is backward compatibility with older browsers. Get two or more forms on the same page using tabindexscope, and it makes it a huge pain to fill out a form using tab. |
16:57 | <bfrohs> | (tab goes to first field in second form, instead of second in first) |
16:57 | <AryehGregor> | True. |
16:58 | <bfrohs> | So, even if everyone was using an updated browser, we would have to wait until every major browser supported it before it could be used (and not piss off a lot of other people). |
16:59 | <bfrohs> | And that's in a perfect world. Can't imagine how it would work in this world ;) |
16:59 | <AryehGregor> | It doesn't seem worth it, really. |
17:02 | <annevk> | especially since keyboards are sort of moving away from being the dominant way to browse the web |
17:02 | <zewt> | ehh |
17:03 | <bfrohs> | Yes, but someday we may talk to our websites. "Next field" for example |
17:03 | <zewt> | the existance of other input methods does not mean it's okay to ignore keyboard accessibility as if keyboards are somehow going away |
17:04 | <zewt> | bfrohs: mobile browsers already use "next field" during form inputs, btw |
17:04 | <annevk> | wow, way to go from does not seem worth it to optimize for to ignore them altogether |
17:04 | <zewt> | ... |
17:05 | <zewt> | you suggested that improvements should not be made to keyboard navigation [because of touchscreens], which is a terrible idea |
17:06 | <zewt> | improvements -> this improvement |
17:07 | <annevk> | this is not an even an improvement to keyboard navigation |
17:07 | <annevk> | it's an improvement to authoring for it, but whatever |
17:07 | <zewt> | same thing, IMO |
17:07 | <bfrohs> | Well, in a way, it is an improvement. Because, right now, people rarely do tabindex on more than one form. |
17:07 | <bfrohs> | If they do it for one at all |
17:08 | <bfrohs> | Example: Facebook has it for their log in form. They don't use it for any other form on their site that I can find. |
17:27 | <annevk> | oh, Apple is "only" charging EUR 700 |
17:30 | <michel_v> | as for touchscreens, tabindex might still be useful to consider when some browsers (Safari on iOS comes to mind) do have "previous field / next field" buttons when filling forms |
17:31 | <zewt> | <zewt> bfrohs: mobile browsers already use "next field" during form inputs, btw <- :) |
17:32 | <michel_v> | oh, sorry. missed that line while reading the backlog |
17:39 | <bfrohs> | With these touchscreen/mobile/keyboard-is-dead arguments, should 'tabindex' be rethought entirely with the knowledge we now have of some of the new technologies that have come out (and will come out)? Because tabindexscope is only to fix the 'documents are no longer basic and linear' problem. Would there be another solution that would be better suited for touchscreens/non-keyboard-based-technologies? |
17:49 | <karlcow> | bfrohs: for inspiration there might be things to check into http://www.w3.org/standards/techs/multimodal#w3c_all |
17:50 | <annevk> | bfrohs, I actually think CSS is probably the better place to put these kind of things |
17:51 | <annevk> | bfrohs, the UI module has nav-index and some similar properties already |
17:51 | <annevk> | bfrohs: if you tie it markup it might not make sense if you apply a different style sheet that reorders some controls |
17:51 | <MikeSmith> | karlcow: I'm not inspired by that page |
17:52 | <karlcow> | :D |
17:52 | karlcow | will inspire MikeSmith in a few days |
17:57 | <karlcow> | http://www.w3.org/wiki/MeetingTaxis#Arrivals |
18:03 | <annevk> | oh interesting |
18:04 | <annevk> | I arrive an hour before you and dom |
18:04 | <Rik`> | btw, have you noted that there is a summer time change those weeks? |
18:06 | <AryehGregor> | jgraham, did you ever review the assert_throws patch I posted here? |
18:06 | <AryehGregor> | (we really need to set up a better patch review system than me pastebinning stuff and pinging you on IRC) |
18:06 | <MikeSmith> | you guys should share a taxi |
18:06 | <MikeSmith> | costed about $100 for a taxi I took last night |
18:06 | <MikeSmith> | which is nuts |
18:06 | <MikeSmith> | they have this thing of charging 150% over what the meter shows |
18:06 | <MikeSmith> | if the trip is farther than 15 miles |
18:06 | <MikeSmith> | btw, on http://platform.html5.org/, should I just change "DOM4" to "DOM"? |
18:06 | <MikeSmith> | and still link to the DOM4 spec of course |
18:07 | <MikeSmith> | annevk: ↑ |
18:08 | <bfrohs> | annevk, nav-index has the same problem as tabindex in that it is absolute. If there was a nav-index-scope, AND counter() could be used as the value for nav-index, then it would be sufficient. |
18:09 | <annevk> | MikeSmith, yeah |
18:11 | <bfrohs> | (where nav-index-scope was 'absolute' (or inherit) by default, with 'absolute' or 'relative' as values) |
18:12 | <MikeSmith> | annevk, OK, done |
18:15 | <karlcow> | annevk: I'm adding you the mail I'm sending to dom |
18:16 | <bfrohs> | Where would be the best place to suggest adding nav-index-scope to css ui? And making sure counter() values can be used for nav-index? |
18:16 | <karlcow> | rha my mail is in French :D |
18:16 | <karlcow> | retranslating in English |
18:22 | <karlcow> | annevk: mail sent. |
18:23 | <annevk> | thanks |
18:24 | <karlcow> | my pleasure |
18:24 | karlcow | is out |
18:25 | <AryehGregor> | annevk, what's the procedure for updating DOM4? Should I just push to both dvcs.w3.org and bitbucket.org? |
18:30 | <annevk> | yeah |
18:30 | <AryehGregor> | Okay. |
18:35 | <AryehGregor> | Should isPointInRange() throw IndexSizeError if the offset is too large or negative, or should it return false? WebKit throws, Gecko returns false. |
18:35 | <AryehGregor> | I'll go with WebKit here, since it's more consistent with other Range APIs, unless anyone has objections. |
18:35 | <AryehGregor> | (the API was never standardized before now, it's not in DOM 2 Range) |
18:36 | <smaug____> | I'd go for false |
18:36 | <AryehGregor> | Why? The other Range APIs all throw IndexSizeError in those cases, right? |
18:36 | <smaug____> | because of the reason you gave yesterday ;) |
18:36 | AryehGregor | reviews the other APIs for inspiration |
18:37 | <smaug____> | but, need to go now |
18:37 | <AryehGregor> | If the point is in a different document, it makes sense to return false. It's a legitimate point that's not in the range. |
18:37 | <AryehGregor> | If the point isn't a valid boundary point at all, the question doesn't even make sense. |
18:37 | <AryehGregor> | It's not clear that false is the right answer. |
18:37 | <AryehGregor> | If I do range.isPointInRange(node, -1) and node is entirely contained within range, is false really the correct answer? |
18:38 | <AryehGregor> | Oh, wait. |
18:38 | <AryehGregor> | Gecko actually returns true in that case . . . |
18:38 | AryehGregor | tests a bit more |
18:39 | <AryehGregor> | For an invalid offset, Gecko seems to return true if the node is entirely contained in the range, like with selectNode. But false if it's not, even if every legitimate boundary point in it is contained, like with selectNodeContents. |
18:39 | <AryehGregor> | Too weird. |
18:39 | <AryehGregor> | I'll go with WebKit. |
18:47 | <erlehmann> | AryehGregor, throwing is more useful than false. |
18:47 | <erlehmann> | from a dev point of view |
18:47 | <AryehGregor> | Agreed. |
18:48 | <erlehmann> | no error console will log false |
18:49 | <erlehmann> | “should asking for the fifth element in a list with four elements return an empty string or crash the program” is actually an interesting question to ask people, even those who have nothing to do with programming. |
18:50 | <erlehmann> | i think it tells me something about their approach to solving problems. |
18:51 | <erlehmann> | my little sister, who is 10 and only recently learned a tiny bit of python was convinced that such a program should crash. |
18:51 | <erlehmann> | because it would help her to fix the program. |
18:51 | <erlehmann> | my mother says it should return empty or null or just something. |
18:51 | <erlehmann> | to not interrupt the flow of things. |
18:57 | <AryehGregor> | What should isPointInRange() do if passed a doctype? WebKit throws InvalidNodeTypeError, while Gecko ignores the offset and returns true or false depending on whether the doctype is in the range or not. |
18:58 | <AryehGregor> | Hmm. |
18:58 | <AryehGregor> | Kind of like with bogus offsets. |
18:58 | <AryehGregor> | I think I'll go with WebKit for consistency. |
18:59 | <AryehGregor> | It seems like if the point isn't a valid boundary point, Gecko just ignores the offset and tests whether the node itself is in the range. |
18:59 | <AryehGregor> | Ooh, WebKit treats the second argument as optional. |
18:59 | AryehGregor | tests that |
19:00 | <AryehGregor> | It just defaults to 0. |
19:00 | <AryehGregor> | I think I won't allow that. |
19:07 | <AryehGregor> | What should a function throw if passed too few arguments, per spec? |
19:07 | <AryehGregor> | I guess that's in WebIDL? |
19:07 | <AryehGregor> | Or shouldn't it? |
19:10 | <AryehGregor> | What is R here? http://dev.w3.org/2006/webapi/WebIDL/#dfn-overload-resolution-algorithm |
19:10 | <AryehGregor> | I don't see it defined. |
19:14 | <jgraham> | AryehGregor: Umm, maybe? |
19:14 | <jgraham> | We need a better review tool for sure |
19:16 | <AryehGregor> | I'd start with *any* review system. |
19:17 | <jgraham> | Yeah :) |
19:17 | <AryehGregor> | Like, attaching patches to Bugzilla. |
19:17 | <AryehGregor> | I'd do that if there were a Bugzilla component. |
19:17 | <jgraham> | I think there is |
19:17 | <jgraham> | I don't know if I get email from it though |
19:17 | <jgraham> | I can probably set it up if not |
19:22 | <AryehGregor> | Where is it? |
19:23 | <jgraham> | I don't know, I never needed to file a bug :p |
19:23 | <jgraham> | Maybe MikeSmith or plh knows |
19:24 | <MikeSmith> | bugzilla component for what? |
19:24 | <MikeSmith> | WebIDL? |
19:24 | <jgraham> | testharness.js |
19:26 | <MikeSmith> | oh |
19:26 | <MikeSmith> | yeah, we have component for it |
19:26 | MikeSmith | finds it |
19:26 | <MikeSmith> | http://www.w3.org/Bugs/Public/enter_bug.cgi?product=Testing&component=testharness.js |
19:30 | <bfrohs> | Where would be the best place to suggest adding nav-index-scope to css ui? And making sure counter() values can be used for nav-index? Anyone? |
19:34 | <AryehGregor> | bfrohs, www-style is for CSS changes. |
19:34 | <AryehGregor> | CC the editor of the relevant spec. |
19:35 | <bfrohs> | AryehGregor, thank ya |
19:36 | <heycam> | AryehGregor, extra arguments are ignored |
19:36 | <heycam> | AryehGregor, and that last line should be "Return candidates" |
19:36 | <heycam> | though I thought I'd already fixed that... |
19:36 | <AryehGregor> | heycam, but passing too few throws a TypeError, if I'm reading right? |
19:37 | <heycam> | AryehGregor, yeah |
19:37 | <AryehGregor> | There's another mention of R a couple lines before, by the way. |
19:37 | <heycam> | oh ok |
19:37 | heycam | notes it down |
19:46 | <AryehGregor> | jgraham, http://www.w3.org/Bugs/Public/show_bug.cgi?id=14589 |
19:46 | <AryehGregor> | You're the assignee, so I assume you got e-mail. |
19:47 | <AryehGregor> | I'll commit the patch if you like, just give me the okay. |
20:19 | <AryehGregor> | Hmm. Can we kill detach()? It seems utterly, absolutely useless. |
20:19 | <AryehGregor> | And it adds a line to every single Range attribute/method. |
20:23 | <Hixie> | how do i create a file on windows with a specific set of bytes as the file name? |
20:23 | <Hixie> | i want to do the equivalent of: |
20:23 | <Hixie> | echo -e '\xE1\xBA\x9B\xCC\xA3\xE2\x84\xAB.txt' | xargs touch |
20:24 | <AryehGregor> | Are Windows filenames sequences of bytes? |
20:24 | <AryehGregor> | They're not UCS-2 or something? |
20:24 | <Hixie> | i can do sequences of unicode characters if there's a way to do that too |
20:25 | <Hixie> | U+1E9B U+0323 U+212B . t x t |
20:25 | <Hixie> | but i don't want, e.g., notepad.exe to be doing any munging of the characters before i save |
20:25 | <Hixie> | so i don't want to use a text box to do it |
20:25 | <Hixie> | if i can avoid it |
20:27 | <Hixie> | (how would i even do it there?) |
20:27 | <hober> | Hixie: you could use emacs |
20:28 | <_bga> | Hixie i recomend you install msys |
20:28 | <Hixie> | msys? |
20:29 | <Hixie> | hober: no emacs (and don't really want to install anything if i can help it) |
20:29 | <_bga> | Hixie http://www.mingw.org/wiki/MSYS |
20:29 | <Hixie> | i wouldn't trust such a system not to futz with the bytes between the shell and the file system |
20:29 | <Hixie> | too many levels of indirection involved |
20:39 | <zewt> | Hixie: filenames on ntfs are stored in UTF-16 (actually, just arbitrary 16-bit characters), so you can't use a "specific set of bytes" |
20:40 | <MikeSmith> | learning about https://wiki.mozilla.org/Auto-tools/Projects/Marionette |
20:51 | <zewt> | Hixie: also, notepad is a pretty safe way to create filenames in unicode, because it's a unicode application itself (most programs are ANSI, which will trigger locale-specific conversions) |
20:52 | <Hixie> | zewt: 16 codepoints are bytes too :-) |
20:52 | <Hixie> | zewt: my concern is over unicode normalisation |
20:52 | <Hixie> | zewt: see http://www.w3.org/Bugs/Public/show_bug.cgi?id=14526 |
20:56 | <zewt> | well, i created \u03D3\u03D2\u0301.txt in File Explorer, and it doesn't appear to have normalized it at all |
20:56 | <Hixie> | yeah that was my experience too, see the last comment on the bug |
20:59 | <zewt> | for real headaches: illegal code sequences in filenames exposed to JS ... |
20:59 | <zewt> | (a question FileAPI will have to figure out at some point) |
21:02 | <Hixie> | Philip`: would be good to have tests like http://test.w3.org//html/tests/submission/PhilipTaylor/canvas/security.pattern.canvas.fillStyle.html that check interaction with document.domain (i'm about to change the spec on this to use the effective origin) |
23:00 | <kennyluck> | Hmm.. the mbox archive output by whatwg.org doesn't do >From quotation. |
23:06 | <ojan> | Hixie: is the case-sensitivity of attribute names for svg in html specified anywhere? |
23:06 | <ojan> | Hixie: i'm having trouble finding it in the html spec |
23:06 | <Hixie> | case-sensitivity in what sense? |
23:07 | <ojan> | Hixie: in regular html, attribute names are lowercased |
23:07 | <Hixie> | you mean when parsing? |
23:07 | <ojan> | Hixie: in regular svg, attribute names keep their case |
23:07 | <ojan> | Hixie: yeah |
23:07 | <Hixie> | aah |
23:08 | <Hixie> | yeah that's in the parser |
23:08 | <Hixie> | hold on |
23:08 | <Hixie> | i'll give you a search string |
23:08 | <ojan> | Hixie: great |
23:08 | <Hixie> | search for "adjust SVG attributes" |
23:10 | <ojan> | Hixie: so basically, we parse it ignoring case and then spit out the case-sensitive result? |
23:10 | <Hixie> | yeah |
23:10 | <Hixie> | well |
23:10 | <Hixie> | we spit out a case-normalised result |
23:10 | <ojan> | Hixie: e.g. paThLength -> pathLength ? |
23:10 | <Hixie> | right |
23:10 | <ojan> | Hixie: ok...here's the problem we're running into... |
23:11 | <Hixie> | paThLength in the markup becomes pathlength in the parser becomes pathLength in the DOM |
23:11 | <ojan> | Hixie: selector parsing says the case-sensitivity of attirbute name/value parsing depends on the document type |
23:11 | <ojan> | Hixie: so, webkit always lowercases attribute names in html documents |
23:12 | <Hixie> | that's changed iirc |
23:12 | <ojan> | Hixie: so now *[pathLength] doesn't match <svg pathLength="..."> |
23:12 | <ojan> | because the attribute name in the selector is lowercased and the one on the svg element isn't |
23:12 | <ojan> | Hixie: it doesn't seemd changed to me in the selectors 4 spec |
23:13 | <Hixie> | hmm, i may be thinking of attribute _values_ |
23:13 | <ojan> | Hixie: http://dev.w3.org/csswg/selectors4/#attribute-case |
23:13 | <Hixie> | yeah i'm thinking of values, don't mind me |
23:13 | <Hixie> | let's see |
23:14 | <Hixie> | ok so the HTML spec says that "and element names of HTML elements in HTML documents must be treated as ASCII case-insensitive for the purposes of selector matching" |
23:14 | <Hixie> | so [pathLength] should match <div pathlength> but not <svg pathlength> |
23:15 | <ojan> | Hixie: yes...but the problem is that it's currently impossible as speced to match <svg pathlength> |
23:16 | <Hixie> | [pathLength] would match it |
23:16 | <Hixie> | since the parser would convert it to pathLength in the DOM |
23:17 | <ojan> | Hixie: oh...i guess it's technically wrong that webkit lowercases the attribute name in the css parser |
23:17 | <ojan> | it should just be doing a case-insensitive compare |
23:17 | <ojan> | for html elements |
23:17 | <Hixie> | yeah |
23:17 | <Hixie> | html elements in html documents |
23:17 | <ojan> | right |
23:17 | <ojan> | sigh |
23:24 | <ojan> | Hixie: arv is suggesting that selector attribute matching in an HTML document shoudl always be case-insensitive regardless of what element you're matching |
23:26 | <ojan> | Hixie: why not make svg attributes in html documents lowercase like all other attributes? |
23:26 | <Hixie> | well the attributes being lowercase would mean that there'd be two SVG vocabularies |
23:26 | <Hixie> | one with lowercase names and one not |
23:26 | <Hixie> | which would have rammifications i can't even fully imagine |
23:27 | <hober> | ojan: DOM Consistency, basically |
23:27 | <Hixie> | but would certainly be a disaster for implementors |
23:27 | <Hixie> | consider the confusion that would result from taking an SVG file and moving the nodes to an HTML file and finding it all stopped working, e.g. |
23:27 | <Hixie> | anyway, that's one thing |
23:28 | <Hixie> | the other thing is case-sensitivity |
23:28 | <Hixie> | i don't really mind what we do there, that's an issue for the css and svg groups to decide |
23:28 | <Hixie> | i expect css would say it's up to svg, css just delegates to the host language |
23:28 | <Hixie> | and i've no idea what the svg group would want |
23:28 | <Hixie> | i haven't worked out what their operating principles are |
23:28 | <shepazu> | I could ask them |
23:29 | <shepazu> | for SVG2, we are not claiming it is an XML syntax, but a DOM one |
23:29 | <Hixie> | ojan, shepazu; shepazu, ojan. |
23:29 | Hixie | steps back :-0 |
23:29 | <shepazu> | (though there is, of course, an XML parsing) |
23:30 | <ojan> | Hixie, shepazu: people here are suggesting that maybe we should do the HTML normalization of svg attribute names at attribute matching time |
23:30 | <shepazu> | Hixie: at least, that's what I said in the charter that's up for review now |
23:30 | <Hixie> | ojan: what would that mean? |
23:30 | shepazu | is not sure what the implications of that are, ojan |
23:32 | <shepazu> | Hixie: fyi http://www.w3.org/Graphics/SVG/2011/charter.html |
23:32 | <shepazu> | [[ |
23:32 | <shepazu> | The SVG WG develops the following technologies: A markup syntax, compatible with XML and HTML5 parsing, for describing shapes, text, and painting effects, including gradients, filters, and other graphical effects, through a set of elements and attributes. |
23:32 | <shepazu> | ]] |
23:33 | <shepazu> | so, I don't say "DOM", but that's the implication |
23:33 | <shepazu> | (or something) |
23:34 | <ojan> | shepazu: the implication is that *[pathlength] would match <svg pathLength=5> |
23:35 | <Hixie> | ojan: would it match <div pathlength>? |
23:35 | <shepazu> | ojan: seems friendly to me, but not sure about the implementation fallout |
23:35 | <ojan> | Hixie: yeah |
23:35 | <Hixie> | shepazu: "a markup syntax, compatible with XML and HTML5 parsing" is, like, the opposite of a "DOM"... |
23:35 | <shepazu> | Hixie: ok, patches welcome |
23:35 | <ojan> | it's a performance tradeoff as far as implementation is concerned |
23:36 | <Hixie> | shepazu: i think charters are irrelevant, so i don't mind either way, i'm just saying that if you meant to say DOM, you should be aware that what you just quoted says the opposite :-) |
23:36 | <shepazu> | ojan: I'm more concerned about backward-compatibility |
23:36 | <Hixie> | ojan: i don't understand what "do the HTML normalization of svg attribute names at attribute matching time" means then. |
23:36 | <ojan> | with *[pathlength] matching <svg pathLength=5>, you can store only the lower-cased copy of the attribute name and for html elements, the name comparison is very fast, but it's slower for svg elements |
23:36 | <shepazu> | Hixie: too jetlagged to follow you, but interested to hear an explanation I could unpack later |
23:37 | <ojan> | Hixie: basically...when parsing *[pathLenGTH] we'd normalize it to *[pathlength]... |
23:37 | <Hixie> | shepazu: sure, ping me if you want to talk about it |
23:37 | <Hixie> | ojan: how do you know to normalize it? |
23:37 | <ojan> | Hixie: then when doing selector matching, if it's an SVG element we'd actually compare to pathLength |
23:37 | <erlehmann> | ojan, but pathLenGTH is WRONG |
23:37 | <erlehmann> | oh okey |
23:37 | <ojan> | erlehmann: for HTML elements, it would match |
23:38 | <erlehmann> | i hate every single member of your working group for that |
23:38 | <erlehmann> | ;) |
23:38 | <Hixie> | ojan: i mean, what if MathML had a "foobar" attribute and SVG had a "fooBar" attribute? |
23:38 | <erlehmann> | Hixie, namespac- oh wait. |
23:39 | <Hixie> | ojan: and would you match [pathlength] to an <svg> element that had a "pathlength" attribute manually set in the DOM? (lowercase, so not the real pathLength one?) |
23:39 | <ojan> | Hixie: what about it? *[foobAr] would match both of them |
23:39 | <ojan> | Hixie: yeah...i guess that doens't make sense |
23:39 | <ojan> | Hixie: sigh...svg in html... :( |
23:39 | <erlehmann> | well, seems “claiming SVG is not XML, but a DOM syntax” needs some work. |
23:40 | <Hixie> | ojan: "just" do the comparison case-insensitively against HTML elements and case-sensitively against non-HTML elements |
23:40 | <ojan> | Hixie: yeah...fine. |
23:40 | <Hixie> | ojan: it means having both strings in the comparison function, and one extra pointer check for each node |
23:40 | <Hixie> | ojan: not the end of the world |
23:40 | <ojan> | Hixie: yeah |
23:40 | <Hixie> | perf-wise |
23:41 | <ojan> | Hixie: yeah...it means storing an extra string if you want to keep the performance for html element matching |
23:41 | <Hixie> | yeah but you have that extra string anyway today, right |
23:41 | <ojan> | but attribute selectors are not widely used enought for it to really matter |
23:41 | <erlehmann> | why not something like *[html:pathlenght|svg:pathLength] |
23:41 | <Hixie> | or are you flattening it during parsing? |
23:41 | <ojan> | Hixie: no, right now webkit only stores the lowercased string |
23:41 | <erlehmann> | what am i missing? |
23:41 | <Hixie> | css parsing |
23:41 | <ojan> | yeah |
23:41 | <Hixie> | ah ok |
23:41 | <Hixie> | yeah that's unfortunate |
23:41 | <Hixie> | are you atom-ifying these strings? |
23:41 | <ojan> | meh, like you said it's not a big deal |
23:42 | <ojan> | Hixie: atom-ifying? |
23:42 | <Hixie> | whatever terminology webkit uses... converting them to a pointer rather than storing the literal string |
23:42 | <ojan> | Hixie: ah. yes. |
23:42 | <Hixie> | ok so it's really just one extra pointer |
23:42 | <Hixie> | plus a pointer check |
23:43 | <Hixie> | plus you get to flatten the logic for xml and html |
23:43 | <ojan> | Hixie: i'm not sure we'd atomify the non-lowercased string |
23:44 | <Hixie> | why not? |
23:44 | <ojan> | Hixie: creating AtomicStrings isn't free |
23:44 | <ojan> | Hixie: the main reason you do it is so you can have quick string comparisons |
23:44 | <Hixie> | yeah but the cost has to be offset against the many comparisons you're going to be doing |
23:44 | <Hixie> | and the same string will likely exist in the DOM too, right |
23:44 | <Hixie> | anyway |
23:45 | <Hixie> | what do i know :-) |
23:45 | <ojan> | oh...i guess for the non-lowercase one we'd still just be doing a case-senstiive comapre...so we probably would. you're right |
23:45 | <ojan> | yeah...so in the common case it would not be considerably more memroy |