| 00:14 | <aklein> | TabAtkins: you about? |
| 00:14 | <aklein> | TabAtkins: I've got a CSS parsing question you might know the answer to (or know if there's no answer) |
| 00:15 | <TabAtkins> | In a bit. |
| 00:16 | <SimonSapin> | aklein: just ask, and wait around a bit as someone may answer later |
| 00:16 | <TabAtkins> | Also that, yes. |
| 00:19 | gsnedders | wonders if he can construct any reasonable way to get profile number of calls per JS function in his browser |
| 00:19 | <gsnedders> | Probably nothing short of hacking on the browser, probably without JIT for simplicity. |
| 00:24 | <aklein> | the question is about url-resolution for url() CSS values |
| 00:25 | <aklein> | and about when it occurs, in various cases (<style>, <link rel=stylesheet>, <div style="...">) |
| 00:25 | <aklein> | that is, when does it occur (and where is that written down in a spec?) |
| 00:27 | <aklein> | (Blink and WebKit seem to do very eager url resolution, while Gecko is lazier) |
| 00:28 | <Hixie> | gsnedders: you can just instrument those methods by replacing them in script, no? |
| 00:28 | <Hixie> | aklein: the HTML spec says for <style> that you should do it ASAP, so that if the base URL changes later, it doesn't affect the <style>'s URLs. |
| 00:28 | <gsnedders> | Hixie: All functions, including those defined in JS. |
| 00:28 | <Hixie> | gsnedders: well, those defined in JS you can find from any profiler, probably |
| 00:29 | <Hixie> | most browsers have those these days, i think |
| 00:29 | <gsnedders> | Not sure how well they cope with short-lived functions, though |
| 00:29 | <Hixie> | "short lived"? |
| 00:29 | <Hixie> | oh you mean you don't want a sample, you want a strict count? |
| 00:30 | <gsnedders> | Yeah. |
| 00:30 | <Hixie> | yeah short of instrumenting the code explicitly (which should be easy enough) i dunno how you'd do that |
| 00:30 | <Hixie> | (the js code, i mean) |
| 00:30 | <gsnedders> | Like, a set of values N_i = x where i is the number of calls the function has and x is the number of functions with that number of calls. |
| 00:32 | <gsnedders> | Also not clear if I want things to be like V8's FunctionCode class (i.e., a FunctionExpression/FunctionDeclaration in the script) or Function class (i.e., a Function object). |
| 00:32 | <Hixie> | what's your actual goal? |
| 00:35 | <gsnedders> | Hypothesis: most functions are called zero times, then a lot are called one time (exactly); the remainder is roughly linear, with N_i going down as i increases. |
| 00:36 | <Hixie> | most of which functions? any function on any site? |
| 00:36 | <Hixie> | in what situations? page load? deep interaction? |
| 00:37 | <gsnedders> | "In general". Per page load, obviously. |
| 00:37 | <Hixie> | well i mean the functions that are handlers for 'onclick' handlers presumbaly only get called when you click |
| 00:37 | <gsnedders> | All functions that the JS VM sees. |
| 00:38 | <Hixie> | so is the test protocol "click everything once"? |
| 00:38 | <Hixie> | "use the application like a noob for 5 minutes"? |
| 00:38 | <gsnedders> | I mean, really want everything from something like "load FB, notice nothing of interest, close immediately" to "load FB, spend the next four hours talking to people on FB chat". |
| 00:39 | <Hixie> | i would imagine they'd have rather different profiles |
| 00:39 | <gsnedders> | I dunno. It makes me wonder if it's going to be a bell curve or something. |
| 00:40 | <gsnedders> | But, yeah, kinda tempted to just instrument browser and use it for a few weeks. Probably get useful data. |
| 00:40 | <gsnedders> | Though "how gsnedders uses his browser" isn't necessarily representative. :) |
| 00:43 | <gsnedders> | Ultimately I'm interested in the probability of the function being called a certain number of times. |
| 00:46 | <aklein> | Hixie: can you give me a link for that behavior, I'm having trouble finding it; I wonder if some of it's in the parts delegated to the CSS OM spec |
| 00:46 | <aklein> | (e.g., to "create a css style sheet") |
| 00:46 | <Hixie> | aklein: it's in the <style> section, i think... let me check |
| 00:49 | <Hixie> | aklein: ah, looks like i commented it out, expecting it to be handled by SimonSapin's CSS parsing spec |
| 00:49 | <Hixie> | aklein: (search for "found by the styling language's processor" in the spec source) |
| 00:50 | <aklein> | Hixie: heh, yes, that's very clear |
| 00:52 | <SimonSapin> | aklein: http://dev.w3.org/csswg/css-values/#urls says " Relative URIs are resolved to full URIs using a base URI. For CSS style sheets, the base URI is that of the style sheet, not that of the source document." |
| 00:52 | <aklein> | Hixie: and it looks like style attributes defer to http://dev.w3.org/csswg/css-style-attr/, which also says that urls are resolved when the attribute is parsed |
| 00:52 | <SimonSapin> | but I’m not sure what your question is… |
| 00:52 | <Hixie> | SimonSapin: that doesn't help for <style> style sheets |
| 00:53 | <Hixie> | aklein: yeah, but when is it parsed? |
| 00:53 | <Hixie> | aklein: imho it should be parsed very eagerly, fwiw |
| 00:53 | <aklein> | Hixie: "In user agents that support CSS, the attribute's value must be parsed when the attribute is added or has its value changed" |
| 00:53 | <aklein> | so the spec says what you want already |
| 00:53 | <aklein> | which is good :) |
| 00:53 | <Hixie> | k, excellent |
| 00:54 | <SimonSapin> | Hixie: I though it obvious that the based URL was the same as for any <a href> in the document, but indeed it’s not specified |
| 00:54 | <Hixie> | SimonSapin: the problem is that the base url in html docs can change dynamically |
| 00:54 | <aklein> | Hixie: fwiw, Firefox seems to re-resolve URLs in style attributes when the hosting element switches documents |
| 00:54 | <aklein> | sounds like you think that's a Firefox bug? |
| 00:54 | <Hixie> | SimonSapin: so is it the base url when the <style> element is created? when it's parsed? later? |
| 00:55 | <Hixie> | aklein: there was some chatter in the bug you filed on this abotu imgs talking about whether we should do that on insertion or on adoption |
| 00:55 | <aklein> | SimonSapin: thanks for the link to that spec, I wasn't sure of the name |
| 00:55 | <SimonSapin> | good point. Looks like a spec bug |
| 00:55 | <Hixie> | aklein: i don't recall the conclusion, but obviously we should be consistent |
| 00:55 | <Hixie> | aklein: (assuming there's no compat constraints) |
| 00:55 | <aklein> | Hixie: I'll dig up the bug again, I didn't recall whether that had mentioned style |
| 00:55 | <Hixie> | i don't htink it mentioned style explicitly |
| 00:56 | <SimonSapin> | Hixie: what do you think it should be? |
| 00:56 | <Hixie> | aklein: i'm just saying that if possible, we should be consistent |
| 00:56 | <Hixie> | SimonSapin: what do browsers do? |
| 00:56 | <aklein> | Hixie: seems reasonable. would you say that <style> should also re-resolve if it switches documents? |
| 00:56 | <Hixie> | SimonSapin: i imagine they just use the current one at parse time |
| 00:56 | <aklein> | it's a little different in that case... |
| 00:56 | <aklein> | because it's non-local |
| 00:57 | <Hixie> | aklein: i think we should be consistent throughout. but for <style> i dunno if i'd say "reparse" or "reresolve" |
| 00:57 | <SimonSapin> | TabAtkins: ^ |
| 00:57 | <aklein> | eww |
| 00:57 | <Hixie> | aklein: do we reparse if you insert/remove/insert in the same doc? |
| 00:57 | <SimonSapin> | no need to reparse even if we want to reresolve |
| 00:57 | <aklein> | Hixie: is parsing observable? |
| 00:57 | <Hixie> | aklein: it is if you changed the OM |
| 00:58 | <aklein> | Hixie: right, if you hold onto the OM...whee |
| 00:58 | <aklein> | hmm |
| 00:58 | <aklein> | requiring reparsing seems bad |
| 00:58 | <Hixie> | sure, but requirin that you hold on to the OM when the <style> is taken out of a doc might be bad too |
| 00:58 | <Hixie> | so i could argue this either way |
| 00:58 | <aklein> | the resolving difference between Firefox and Blink is visible via the OM, too, which is unfortunate |
| 00:59 | <aklein> | Firefox says the value is 'url("relative/url.png")' while Blink says it's 'url("http://foo.bar/relative/url.png")'; |
| 00:59 | <aklein> | maybe that just means we have more webcompat leeway? |
| 01:01 | <aklein> | SimonSapin: looks like CSS Values and Units doesn't speak to the CSS OM? |
| 01:03 | <SimonSapin> | aklein: not directly, but it talks about computed value |
| 01:03 | <SimonSapin> | so with different API you may get specified or computed values which may differ |
| 01:04 | <SimonSapin> | "When a <url> appears in the computed value of a property, it is resolved to an absolute URL" |
| 01:10 | <TabAtkins> | OMG DONE MINUTING |
| 01:10 | <TabAtkins> | Okay, so anyway, I talked about this with Anne. |
| 01:10 | <TabAtkins> | URL canonicalization (turning to absolute) needs to happen during parsing. |
| 01:10 | <TabAtkins> | Absolutizing is, in fact, part of URL parsing itself. |
| 01:11 | <aklein> | TabAtkins: so is the relative URL dropped on the floor? |
| 01:11 | <TabAtkins> | Moving documents around to new base URLs need to be dealt with. |
| 01:11 | <aklein> | will let you finish :) |
| 01:11 | <TabAtkins> | aklein: Yes. You enter "url(/foo)", you immediately get back "url(http://example.com/foo)". |
| 01:11 | <TabAtkins> | There's no way to observe it being relative. |
| 01:11 | <TabAtkins> | Besides, maybe, .cssText, if we keep that as literal stylesheet bytes. |
| 01:12 | <TabAtkins> | That's pre-parsing then. |
| 01:12 | <aklein> | it sounds like you're in the "you have to re-parse if you want to re-resolve" camp |
| 01:13 | <TabAtkins> | Not... necessarily. Parsing *the url itself* requires absolutizing; the two concepts are part and parcel. |
| 01:13 | <TabAtkins> | Parsing *the url() function* doesn't necessarily. |
| 01:13 | <SimonSapin> | TabAtkins: CSS parsing does not need to parse URLs immediately |
| 01:13 | <TabAtkins> | But we all do so. |
| 01:13 | <SimonSapin> | (maybe it should) |
| 01:13 | <TabAtkins> | But we can certainly keep around the unparsed url and absolutize it on demand. |
| 01:14 | <aklein> | TabAtkins: not sure who "we" is, note that I pointed out above that Firefox seems to only absolutize lazily |
| 01:14 | <TabAtkins> | But "on demand" should include "when you serialize a declared value", which is the lowest-level way to observe a CSS value short of grabbing network bytes. |
| 01:14 | <TabAtkins> | "we" there means the browser. |
| 01:14 | <aklein> | TabAtkins: in my testing they don't do that. div.style.backgroundImage returns 'urlI("relative/img.png")' |
| 01:15 | <aklein> | but with fewer l's |
| 01:16 | <TabAtkins> | We definitely absolutize early. |
| 01:17 | <aklein> | Blink and WebKit do, yes |
| 01:17 | <aklein> | but it's not true that "we all do so" (not at the moment, anyway) |
| 01:17 | <TabAtkins> | Okay, true. |
| 01:18 | <TabAtkins> | aklein: What's the context of your question? |
| 01:19 | <aklein> | TabAtkins: the specific case I'd like to fix is that <template><div style="background-image: url('foo/bar.png')"></div></template> is busted in Blink |
| 01:19 | <aklein> | it ends up as url() |
| 01:20 | <TabAtkins> | That's weird. Because there's nothing to absolutize it against, so it just punts? |
| 01:20 | <aklein> | yeah |
| 01:20 | <aklein> | my reading of the CSS Values thingy suggests that perhaps the punting is the bug |
| 01:20 | <aklein> | and it should actually leave the relative URL there if it can't complete the URL |
| 01:20 | <TabAtkins> | The punting is definitely the bug. |
| 01:20 | <TabAtkins> | Are you talking about my blog post? Or the CSSOM Values spec? |
| 01:21 | <aklein> | TabAtkins: http://dev.w3.org/csswg/css-values/#urls |
| 01:22 | <aklein> | hmm, or maybe it was cssom, I don't see this now |
| 01:22 | <TabAtkins> | Don't read much into that. >_< I haven't written it well yet. |
| 01:22 | <TabAtkins> | Gonna fix. |
| 01:22 | <TabAtkins> | It's reffing an RFC, for example. |
| 01:22 | <TabAtkins> | Should be the URL spec. |
| 01:22 | <aklein> | hehe |
| 01:22 | <aklein> | ok |
| 01:23 | <SimonSapin> | TabAtkins: both provide "absolutize an URL", and it’s up to CSS when to call it |
| 01:23 | <aklein> | TabAtkins: but your considered opinion is that url() in a document with no base URL should do what? |
| 01:23 | <TabAtkins> | But hm, so far I'm planning that "declared value" http://dev.w3.org/csswg/css-cascade/#declared gives an absolute url. |
| 01:23 | <TabAtkins> | A document with no base URL is not something I've considered yet. |
| 01:24 | <TabAtkins> | Is the template document the only one so far? |
| 01:24 | <SimonSapin> | annevk-cloud says all documents have an URL, even if it’s one with a non-relative scheme that can not be used as a base |
| 01:25 | <TabAtkins> | I wonder what that means? |
| 01:25 | <TabAtkins> | What is the result of absolutizing something with a not-base URL? |
| 01:25 | <SimonSapin> | absolutizing can fail |
| 01:25 | <TabAtkins> | Hrm. Lemme go check his spec. |
| 01:26 | <aklein> | TabAtkins: document.implementation.createHTMLDocument('') |
| 01:26 | <SimonSapin> | data:text/html,<a href=foo>Test |
| 01:26 | <SimonSapin> | anyway, the result is the same as if you didn’t have a base |
| 01:28 | <TabAtkins> | Ah, and it looks like the result (at least in Chrome) is that the url is "" |
| 01:29 | <TabAtkins> | Problem is that the URL spec has no such concept as "relative URL". |
| 01:30 | <TabAtkins> | It's absolute, or it's nothing, or it's "a string that we haven't yet tried to parse". |
| 01:30 | <TabAtkins> | Problem with the concept of "just hang the relative url off of it", that is. Maybe not a problem with the URL spec. |
| 01:31 | <TabAtkins> | aklein: So it looks like Blink's current behavior of returning url() is correct. |
| 01:32 | <TabAtkins> | aklein: And there's no way for us to do anything else. |
| 01:32 | <TabAtkins> | aklein: Without inventing stuff. |
| 01:32 | <SimonSapin> | TabAtkins: possibly-relative URL == string from url() or href, etc |
| 01:32 | <SimonSapin> | absolute URL == parsed URL |
| 01:33 | <SimonSapin> | an object, which can be serialized back to a string |
| 01:33 | <TabAtkins> | Yeah. |
| 01:33 | <TabAtkins> | Hm. |
| 01:34 | <TabAtkins> | Maybe we can define serialization of URL as "serialization of the url, or else the unparsed string if it can't be parsed". |
| 01:34 | <TabAtkins> | That would also let us preserve nonsense urls that can't be parsed. |
| 01:34 | <SimonSapin> | I’d say specified values should be unparsed URL, as from the stylesheet |
| 01:35 | <SimonSapin> | for computed values serialize, but do we really need to preserve nonsense input? |
| 01:37 | <TabAtkins> | SimonSapin: I think we should return an absolute url if we can. |
| 01:37 | <TabAtkins> | No reason not to. |
| 01:37 | <TabAtkins> | But we shouldn't throw away info if we can't absolutize it yet. |
| 01:37 | <SimonSapin> | If absolutization (aka URL parsing) fails, we can’t |
| 01:38 | <SimonSapin> | the info is still available in the specified value |
| 01:38 | <TabAtkins> | Yes, that's what I'm saying. |
| 01:38 | <TabAtkins> | ...I think. |
| 01:39 | <SimonSapin> | element.style is computed values, right? |
| 01:39 | <TabAtkins> | Nope, declared values. |
| 01:39 | <TabAtkins> | What you smokin', bro? |
| 01:39 | <TabAtkins> | .style is just access to the style='' stylesheet. |
| 01:41 | <TabAtkins> | I agree that a computed url() value should take a stand on non-absolutizable urls. |
| 01:41 | <TabAtkins> | Returning url(about:invalid). |
| 01:41 | <TabAtkins> | (As currently defined in V&U.) |
| 01:41 | <SimonSapin> | No interop :/ data:text/html,<body id=foo style="background:url(bar)"><script>document.write(document.getElementById('foo').style.backgroundImage)</script> |
| 01:43 | <TabAtkins> | Yeah, I know that BlinKit right now absolutizes right away. (And indicates an invalid url as "url()".) |
| 01:43 | <TabAtkins> | And FF does something different. |
| 01:46 | <TabAtkins> | aklein: So does something like what I said sound okay? I can restate it compactly, if you want. |
| 01:47 | <aklein> | TabAtkins: sorry, got pulled away, a compact suggestion would be great (reading scrollback now...) |
| 01:47 | <TabAtkins> | kk, coming: |
| 01:47 | <TabAtkins> | CSS parsing does not immediately absolutize a url. |
| 01:47 | <TabAtkins> | At declared-value time, we try to absolutize it. If it can be absolutized, great. |
| 01:48 | <TabAtkins> | When serializing a declared value, if it's a URL, serialize that. Otherwise, serialize the string. |
| 01:48 | <SimonSapin> | declared, as in http://dev.w3.org/csswg/css-cascade/#declared ? |
| 01:48 | <TabAtkins> | At computed-value time, we *need* a valid url. If it can't be absolutized, use the guaranteed-invalid url "about:invalid". |
| 01:48 | <TabAtkins> | SimonSapin: Yes. |
| 01:48 | <TabAtkins> | Right now we can only observe "declared", "computed", and "used" (in some cases). |
| 01:48 | <SimonSapin> | isn’t that as soon as parsing? |
| 01:49 | <TabAtkins> | Not... quite. Or if you think it's simpler to consider it "as soon as parsing", then make the necessary edits to what I said. |
| 01:49 | <TabAtkins> | A <url> declared value contains either a URL or a string, depending on whether it can be absolutized or not. |
| 01:50 | <annevk_> | So what would the specified value be? |
| 01:50 | <annevk> | If the URL parser returns failure, using a URL that is about:invalid makes sense |
| 01:50 | <TabAtkins> | Not sure when we go from "string or URL" to "URL". Sometime between declared and computed. The exact time is currently unobservable. |
| 01:51 | <SimonSapin> | I don’t really want to have a thing that can be either |
| 01:51 | <SimonSapin> | (unless we have to for web compat) |
| 01:51 | <annevk> | When would you have a string? |
| 01:51 | <TabAtkins> | annevk: aklein gave an example where we don't want to lose information (in the form of returning "url(about:invalid)") when serialziing declared values. |
| 01:52 | <TabAtkins> | I still want to observe the given value even if the document doesn't have a base url. |
| 01:52 | <SimonSapin> | so, counter-proposal: declared/cascaded/specified value is a string as in the input, unparsed |
| 01:53 | <SimonSapin> | computed values is always a parsed URL, possibly about:invalid |
| 01:53 | <TabAtkins> | That's acceptable to me too, I guess. Requires changing BlinKit. |
| 01:53 | <annevk> | You could preserve the specified value, but also have a parsed/declared value alongside that's a URL? |
| 01:53 | <TabAtkins> | annevk: You're mixing up terms. ^_^ |
| 01:53 | <annevk> | The terms have changed :/ |
| 01:53 | <TabAtkins> | declared -> cascaded -> specified -> computed |
| 01:54 | <TabAtkins> | annevk: We just moved what we call "the value that you pull directly from a stylesheet". "specified" was overused for incompatible things. |
| 01:55 | <annevk> | Oh man. Specified in my head is "the value I wrote down" |
| 01:55 | <TabAtkins> | In the specs it's not. ^_^ |
| 01:55 | <TabAtkins> | There's stuff mixed up with inherit/initial, and the cascade. |
| 01:56 | <TabAtkins> | I didn't want to throw away the term "specified", so I left it with one of the existing meanings. |
| 01:56 | <annevk> | So during parsing I think for URL values you want to preserve the value the author wrote down, but also run it through the URL parser. |
| 01:56 | <annevk> | So maybe declared needs to be a tuple |
| 01:56 | <TabAtkins> | Do we need that? |
| 01:57 | <TabAtkins> | Rather, why do we want a parsed URL during declared time? |
| 01:57 | <annevk> | You need to run it through the URL parser to not be tripped by changing base URLs in HTML documents |
| 01:57 | <annevk> | You want to keep the original value for <template> |
| 01:57 | <TabAtkins> | Elaborate on that first one? |
| 01:58 | <annevk> | <style> ... </style> <script> changeBaseURL() </script> |
| 01:58 | <annevk> | Hixie's example, basically |
| 01:59 | <TabAtkins> | Right, but what's the observable effect of resolving it in the declared value? |
| 02:00 | <TabAtkins> | I don't think the absolute url can be observed until computed-value time. |
| 02:00 | <TabAtkins> | Even through side-effects. |
| 02:02 | <annevk> | TabAtkins: do you want to require that we compute sync? |
| 02:02 | <aklein> | so after you guys figure that out, my next question is, does CSS provide some hook for DOM to call upon adoption to re-resolve URLs? |
| 02:02 | <annevk> | aklein: not at the moment |
| 02:02 | <aklein> | annevk: rather, should it? |
| 02:02 | <annevk> | aklein: we don't really have it on the HTML side either |
| 02:03 | <aklein> | annevk: no, though it seems we may end up with it (should go find that bug) |
| 02:03 | <aklein> | but I guess you don't necessarily need it to fix <template> |
| 02:03 | <TabAtkins> | annevk: What do you mean? We can't observe the difference until we compute, and that happens at some undefined time based on style flushing. |
| 02:03 | <aklein> | as long as you clone or import |
| 02:03 | <annevk> | aklein: so for the baseURI bug we kind of came to the conclusion that unless things got declarative we don't need anything complicated for now |
| 02:04 | <annevk> | TabAtkins: if the script changes the base URL, isn't it observable at what point computation happens? |
| 02:05 | <TabAtkins> | Not really. You can't observe except through computed values, and *that* triggers sync behavior. |
| 02:06 | <TabAtkins> | That is, calling getComputedStyle does sync work. |
| 02:06 | <annevk> | TabAtkins: yes |
| 02:06 | <annevk> | TabAtkins: <style> url("/x") </style> and then <script> getComputed(); changeBaseURL() </script> vs <script> changeBaseURL(); getComputed(); </script> |
| 02:06 | <annevk> | TabAtkins: they should do the same |
| 02:07 | <TabAtkins> | No, they're observably different. |
| 02:07 | <TabAtkins> | But now I need to go to dinner and will have to continue this later. |
| 02:07 | <annevk> | And that would be a bug |
| 02:07 | <annevk> | That's why URL parsing needs to happen during CSS parsing |
| 02:09 | <annevk> | I'm very happy the CSS WG is more deeply investigating lifecycle though of style sheets |
| 02:09 | <aklein> | annevk: the trouble in the current blink impl is that the original url is gone when instantiating the template, so it's not even possible to do the url resolution "by hand". so at the least it needs to be available somewhere |
| 02:09 | <annevk> | aklein: I argued for storing a tuple as the "declared value" above |
| 02:09 | <annevk> | aklein: the input and the parsed URL |
| 02:10 | <annevk> | aklein: .cssText could use the input, getComputed the latter |
| 02:11 | <aklein> | annevk: and style attribute serialization corresponds to .cssText? (my CSSOM knowledge is....developing) |
| 02:12 | <annevk> | aklein: serialization of a style attribute is .style.cssText |
| 02:12 | <annevk> | aklein: see http://dev.w3.org/csswg/cssom/#the-cssstyledeclaration-interface |
| 02:13 | <annevk> | aklein: and http://dev.w3.org/csswg/cssom/#elementcssinlinestyle |
| 02:13 | <aklein> | that's some fancy IDL |
| 02:13 | <aklein> | that sounds fine to me |
| 02:14 | <aklein> | (not least because it's a minimal change to Blink; I needn't hold a URL-resolver) |
| 02:14 | <aklein> | annevk: I'm completely with you on needing to resolve eagerly |
| 02:15 | <annevk> | A lot of legacy there in those APIs |
| 02:16 | <annevk> | And a lot of neglect in terms of maintenance |
| 02:16 | <annevk> | Better now because of zcorpan |
| 04:45 | <Domenic_> | where are we on nanotasks? |
| 04:48 | <MikeSmith> | oh we have nanotasks now? |
| 04:48 | <MikeSmith> | Domenic_: your mention is the first I've heard |
| 04:48 | <MikeSmith> | so I assume it must be something recently added |
| 04:48 | <Domenic_> | MikeSmith: scroll up :P. custom elements seems to have a nanotask queue used (a) inside microtask checkpoints; (b) when returnign control from C++ to script |
| 04:49 | <Domenic_> | (b) seems weird because i was pretty sure that was what the event loop was for |
| 04:49 | <MikeSmith> | oh custom elements.. |
| 04:49 | <MikeSmith> | Domenic_: right |
| 04:50 | <Domenic_> | of course (a) is also weird because microtasks are already a queue so why have a queue inside a queue unless you really liked Inception and wanted to implement it in your specs I guess? |
| 04:50 | <MikeSmith> | well |
| 04:51 | <MikeSmith> | I reckon dglazkov is the only person here who knows |
| 04:51 | MikeSmith | wishes Hixie was reviewing the custom-elements spec more |
| 04:52 | <Domenic_> | yeah there was some explanation above but i couldn't understand it so thus my "where are we on nanotasks" query. annevk-cloud seemed to be following along pretty well, maybe he could translate. |
| 05:41 | <smaug____> | oh, nanotasks |
| 05:41 | <smaug____> | annevk-cloud, could you please explain to me tomorrow why we need such things |
| 05:47 | <zewt> | to pave the way towards picotasks, duh |
| 05:48 | <zewt> | no doubt followed by 2^(-n)tasks |
| 06:11 | <hsivonen> | SimonSapin: I think it makes sense to reduce the CSS @charset search buffer size, yes. How much depends mainly on whether the ban on whitespace inside the quotes sticks. |
| 06:45 | <SimonSapin> | hsivonen: browsers apparently do trim whitespace, and we fixed the spec |
| 06:45 | <SimonSapin> | banning whitespace was accidental |
| 06:53 | <zcorpan> | so when are mutation events going to be removed? |
| 07:01 | <zcorpan> | https://github.com/inverts/Data-Tamers/blob/4c8599fd293c84216f161608b08ae1c85532fc25/AppliedAnalytics/src/main/webapp/resources/cache/css/site.css#L1 |
| 07:02 | <zcorpan> | https://github.com/blazedev/simbud/blob/34412f7ba14b4fb7f3d89ac0565b4a6cde37f00d/frontend/app/bower_components/angular/angular-csp.css |
| 07:05 | <zcorpan> | uppercase and comment first are the only mistakes in the first 10 pages of results for "charset" in css on github (sorting by recently indexed) |
| 07:06 | <zcorpan> | does someone have a dataset of external CSS files? |
| 08:16 | <hsivonen> | SimonSapin: if white space trimming stays, then I have no good way of suggesting a number other than 1024 (which is intuitively rather high but at least is what Gecko already does). |
| 08:21 | <Martin1982> | I was wondering if there are any community people here as well who'd want to submit to http://www.mobileconference.nl to speak at the DMC14? |
| 10:55 | <jgraham> | gsnedders: Pretty sure the MS paper from a few years ago looked at that kind of thing |
| 11:20 | <zcorpan> | Ms2ger: this status box looks misplaced? http://www.whatwg.org/specs/web-apps/current-work/multipage/syntax.html#text-0 |
| 11:22 | <zcorpan> | looking at the syntax section, i wonder if it's time to lift the ban on -- in comments |
| 11:25 | zcorpan | files a bug |
| 11:33 | <Ms2ger> | Heh, that's a nice old link |
| 11:34 | <Ms2ger> | Surely it shouldn't be too hard to get the wpt tests into those boxes |
| 13:14 | zcorpan | brings http://html5.org/tools/web-apps-tracker?from=8432&to=8433 to MikeSmith and hsivonen's attention |
| 13:18 | <jgraham> | Anyone got a nice example of a bug in either blink or firefox that can be demoed in a few lines of code? |
| 13:22 | <zcorpan> | what kind of bug? |
| 13:22 | <jgraham> | Any kind |
| 13:23 | <jgraham> | Well something you could write a test for |
| 13:23 | <jgraham> | I can find something from the testsuite I guess |
| 13:26 | <Ms2ger> | In blink? |
| 13:26 | <Ms2ger> | Blob() |
| 13:26 | <Ms2ger> | (throws where it shouldn't) |
| 13:37 | <jgraham> | Oh, that's quite a reasonable example |
| 13:37 | <jgraham> | I would slightly prefer a bug in Firefox I think |
| 13:38 | <Ms2ger> | Blob() |
| 13:39 | <Ms2ger> | (constructs a Blob while annevk thinks it shouldn't) |
| 13:40 | <jgraham> | heh. I can't cite annevk as a spec |
| 13:40 | <darobin_> | jgraham: I'm sure there's precedent |
| 13:40 | <jgraham> | (not sure why we want WebIDL to be different to half of the javascript stdlib here) |
| 13:40 | <Ms2ger> | I had one in the FileReader stuff... |
| 13:42 | <Ms2ger> | (new FileReader()).abort(); |
| 13:42 | <Ms2ger> | Throws in Gecko, but shouldn't |
| 13:43 | <Ms2ger> | jgraham, ^ |
| 13:43 | <gsnedders> | jgraham: Yeah, it did. But that data is several years out of date. Usage of JS is changing pretty quickly. |
| 13:45 | <gsnedders> | jgraham: Sadly, I can't remember which MSR paper it was in :) |
| 13:48 | <jgraham> | gsnedders: Nor can I, but I think you should start with that paper anyway |
| 13:49 | <zcorpan> | jgraham: document.createElement('image') instanceof HTMLUnknownElement |
| 13:50 | <jgraham> | http://research.microsoft.com/en-us/um/people/livshits/papers%5Cpdf%5Cwebapps10b.pdf |
| 13:50 | <jgraham> | zcorpan: I think I will use the FileReader one |
| 13:50 | <Ms2ger> | zcorpan, blink bug |
| 13:51 | <gsnedders> | https://research.microsoft.com/pubs/115734/aitypes.pdf --- is it just me or is there nothing novel in that paper? |
| 13:51 | <zcorpan> | Ms2ger: blink gives true for me which matches the spec afaict |
| 13:52 | <gsnedders> | (I presume I'm just missing what makes it novel) |
| 13:52 | <Ms2ger> | Oh? |
| 13:52 | <Ms2ger> | Firefox should be true too... |
| 13:53 | <jgraham> | If only we had a testsuite to verify these things… ;) |
| 13:53 | <Ms2ger> | I think we do |
| 13:53 | <zcorpan> | i get HTMLElement in gecko (nightly from 2014-01-14) |
| 13:54 | <Ms2ger> | Hrm |
| 13:54 | <gsnedders> | jgraham: That paper only shows that 50-70% of functions are called zero times, makes no statement about functions called once. |
| 13:55 | <Ms2ger> | But yes, html/semantics/interfaces.html and html/editing/dnd/the-draggable-attribute/draggable_attribute.html test it |
| 13:55 | <Ms2ger> | Oh, the latter doesn't use it |
| 13:55 | <Ms2ger> | Anyway |
| 13:55 | <jgraham> | gsnedders: I thought there was a longer paper too. But anyway don't complain at me for helping you with your background reading :p |
| 13:56 | <gsnedders> | jgraham: But I have to complain at you! It's what I do! |
| 13:56 | <Ms2ger> | You could complain at zcorpan? |
| 13:57 | <gsnedders> | Ms2ger: Nah, I always complained at jgraham. |
| 13:57 | <Ms2ger> | So you only glared at zcorpan? |
| 13:57 | <zcorpan> | he still does |
| 13:58 | <Ms2ger> | Have we removed HTMLBaseFontElement from the spec yet? |
| 13:58 | <Ms2ger> | Apparently not |
| 13:58 | <gsnedders> | https://research.microsoft.com/pubs/115687/paper.pdf seems to be the longer thing that the paper jgraham linked me to summarizes. |
| 14:55 | <jgraham> | mathiasbynens: Are you planning to finish the review of https://critic.hoppipolla.co.uk/r/56 ? |
| 14:58 | <mathiasbynens> | jgraham: new to Critic, sorry – what do I need to do? review the new changes? |
| 14:59 | <jgraham> | mathiasbynens: Yes |
| 14:59 | <jgraham> | https://critic.hoppipolla.co.uk/showcommit?review=56&filter=pending |
| 14:59 | <Ms2ger> | "Your work here is done!"? |
| 15:00 | <jgraham> | "Ms2ger watches workers/" |
| 15:00 | <Ms2ger> | "mathiasbynens watches Workers/" |
| 15:00 | <jgraham> | Oh |
| 15:00 | <jgraham> | But also mathiasbynens reviews / |
| 15:01 | Ms2ger | unwatches |
| 15:03 | <jgraham> | Critic seems confused |
| 15:03 | <jgraham> | Let me kick it |
| 15:04 | <jgraham> | mathiasbynens: You should be able to review now :) |
| 15:04 | <mathiasbynens> | jgraham: moar work! thanks |
| 15:07 | zcorpan | was just about to ping mathiasbynens about that |
| 15:08 | <mathiasbynens> | is there a way to have Critic send an email whenever someone responds to a review i made? |
| 15:09 | <zcorpan> | doesn't it already? |
| 15:09 | <mathiasbynens> | nope. `email.activated` is enabled, though |
| 15:10 | <jgraham> | mathiasbynens: You didn't tell it your email address though :) |
| 15:10 | <jgraham> | See the "home" page |
| 15:11 | <mathiasbynens> | jgraham: thanks, i was looking through settings instead |
| 15:12 | <jgraham> | mathiasbynens: A reasonable approach |
| 15:12 | <jgraham> | But wrong ;) |
| 15:17 | <zcorpan> | not sure if the new File test made chrome crash |
| 15:18 | <jgraham> | But if it did you get a badge |
| 15:22 | <zcorpan> | mathiasbynens: refresh |
| 15:31 | <jgraham> | mathiasbynens++ |
| 15:31 | <jgraham> | also zcorpan++ ofc |
| 15:33 | <zcorpan> | ok merged, now fix the browsers |
| 15:34 | <jgraham> | Hehe |
| 15:38 | <zcorpan> | sigh, the Workers directory had been renamed |
| 15:39 | <zcorpan> | oh well |
| 15:39 | <jgraham> | Why did it get renamed? |
| 15:39 | <jgraham> | Oh since r/56 seems quite likely I guess |
| 15:40 | <zcorpan> | to match TR names or some such i think |
| 15:40 | <zcorpan> | thanks mathiasbynens |
| 15:40 | <zcorpan> | now work time is up for today :-) |
| 15:40 | <jgraham> | Yeah, that's the general naming scheme |
| 15:51 | <annevk-cloud> | Blob() should throw without new |
| 15:51 | <annevk-cloud> | See ES6 |
| 15:52 | <jgraham> | Does ES6 also make Array() throw without new? |
| 15:55 | <annevk-cloud> | Not sure |
| 15:56 | <annevk-cloud> | It's unclear how compatible subclassing is per Waldo, but if it is we ought to make it work on our side |
| 15:56 | <jgraham> | Well if it breaks Image() and Array() and Blob() and so on it is surely incompatible |
| 16:43 | <Domenic_> | ES6 legacy classes are not changed to throw |
| 16:43 | <Domenic_> | but new classes throw |
| 16:44 | <Domenic_> | Allen explained this on list a while back lemme find the link |
| 16:44 | <Ms2ger> | So why should legacy DOM classes change? |
| 16:44 | <Domenic_> | unclear |
| 16:45 | <Domenic_> | if users can compatibly not use `new` cross browser then they probably shouldn't |
| 16:45 | <Domenic_> | but if browsers disagree on this point it's an opportunity to move to the newer semantics |
| 16:46 | <Domenic_> | it's this message http://esdiscuss.org/topic/should-the-default-constructor-return-the-return-value-of-super#content-6 although the first half of it is relevant to the post it's replying to; the second half is the more general guidance |
| 16:46 | <jgraham> | (pun intended)? |
| 16:46 | <jgraham> | In any case this seems pretty dumb |
| 16:46 | <jgraham> | Since it bakes inconsistency into the language |
| 16:46 | <Domenic_> | i kind of agree |
| 16:47 | <Domenic_> | the alternative though is making subclassing very hard to get right for all classes ever |
| 16:47 | <Domenic_> | in order to preserve consistency with legacy Array, Date, RegExp |
| 16:48 | <jgraham> | And all of DOM |
| 16:49 | <Domenic_> | cross browser? |
| 16:50 | <Domenic_> | DOM has so few constructors anyway @_@ |
| 16:50 | <jgraham> | I'm pretty sure that there are at least some that work cross browser |
| 16:52 | <annevk-cloud> | Chrome throws for most |
| 16:52 | <annevk-cloud> | I talked with bz the other day and we have a plan |
| 16:52 | <Ms2ger> | Plans are good |
| 16:52 | <Ms2ger> | I guess |
| 16:52 | <annevk-cloud> | Biggest problem is our testsuite |
| 16:52 | <jgraham> | That sounds unlikely |
| 16:53 | <jgraham> | I mean it makes bz's life suck because he has to fix the tests |
| 16:53 | <annevk-cloud> | In terms of executing the plan it is |
| 16:53 | <jgraham> | But it isn't an actual compat issue |
| 16:54 | <annevk-cloud> | Domenic_: more than ES though ;) |
| 16:58 | <TabAtkins> | annevk-cloud: Back to the convo from last night. I don't see how/why you're saying that "getComputed(); changeBaseURL();" should be give the same results as "changeBaseURL(); getComputed();". Calling gCS compatibly forces a sync style flush + layout, so resolving url()s will also happen syncly. |
| 16:59 | <TabAtkins> | So before/after changing the base url, you'll see different computed values for url()s. |
| 17:06 | <annevk> | TabAtkins: because that would be incompatible with what is happening today and would make fetching images racy |
| 17:06 | <annevk> | TabAtkins: once the style sheet is parsed the browser should be able to start fetching happens |
| 17:06 | <annevk> | TabAtkins: so that requires the URL to be parsed |
| 17:07 | <annevk> | s/happens// |
| 17:07 | <TabAtkins> | I don't understand what about this is "incompatibfle with what is happening today". To the best of my knowledge, I'm describing reality. |
| 17:07 | <TabAtkins> | Ah, but yeah, allowing preloading does require you to try and parse the url immediately. |
| 17:08 | <TabAtkins> | (But that doesn't have any effect on what I said. And yes, it is racy.) |
| 17:10 | <annevk> | You can say things but you are wrong |
| 17:10 | <annevk> | http://software.hixie.ch/utilities/js/live-dom-viewer/saved/2782 |
| 17:10 | <annevk> | (Sorry for that, got a bit annoyed I have to demonstrate how CSS works.) |
| 17:13 | <TabAtkins> | Jeezus, Chrome's behavior there is just idiotic. |
| 17:14 | <TabAtkins> | If you run that from a data: url, it'll try to parse it immediately, fail due to the lack of a base url, and set the url to "". Then it'll resolve again when the <base> gets added, and end up with "url(http://example.com)". |
| 17:14 | <TabAtkins> | But I think we've already established that Chrome is doing dumb things here. |
| 17:14 | <TabAtkins> | I need to go test in another browser. |
| 17:17 | <annevk> | TabAtkins: from the data URL I don't see Chrome loading any image |
| 17:17 | <annevk> | TabAtkins: which makes sense |
| 17:17 | <annevk> | TabAtkins: it ending up with http://example.com does not though |
| 17:17 | <TabAtkins> | Exactly, but if you look at the computed style, it's because it's trying to load "http://example.com" |
| 17:18 | <annevk> | TabAtkins: in any event, see how HTML handles this, it doesn't change the URLs of all the resources in a document when the base URL changes |
| 17:18 | <TabAtkins> | If "example.com" returned an image, Chrome would have shown that. |
| 17:18 | <annevk> | TabAtkins: neither should style sheets |
| 17:18 | <dglazkov> | good morning, Whatwg! |
| 17:18 | <annevk> | TabAtkins: oh good point |
| 17:19 | <TabAtkins> | annevk: Right, so I think you're saying that if the url is ever parsed, it's stuck with that parsing. But if it fails to parse, then changing the base url will let it try again? |
| 17:19 | <annevk> | TabAtkins: actually, in the Chrome console I don't see a request for http://example.com/image |
| 17:19 | <annevk> | TabAtkins: no, if it fails you'd store "about:invalid" as the URL |
| 17:19 | <TabAtkins> | annevk: Exactly. Read what I said about Chrome being messed up. ^_^ |
| 17:19 | <annevk> | TabAtkins: the new base URL only takes effect on reparsing |
| 17:20 | <TabAtkins> | Hm, that works badly for url()s in <template>. :/ |
| 17:20 | <annevk> | aklein said it would be fine |
| 17:20 | <annevk> | You reparse those styles, no? |
| 17:20 | <annevk> | All you need is to store the input and the parsed URL |
| 17:20 | <TabAtkins> | I dunno. I guess we can specify that it's reparsed. |
| 17:21 | <annevk> | And you serialize the input if you get cssText, and the parsed URL if you get the computed value |
| 17:21 | <annevk> | Can you explain the <template> scenario more clearly? |
| 17:21 | <TabAtkins> | <template><div style="background: url(/foo);"></div></template>, and then stamp that template out in the document. |
| 17:22 | <TabAtkins> | I think the <template> contents are shoved into a docfrag? |
| 17:22 | <TabAtkins> | So no base url. |
| 17:22 | <annevk> | What does <template> do with <img src=/test>? |
| 17:23 | <annevk> | Because CSS works like HTML in this regard |
| 17:23 | <TabAtkins> | I dunno. |
| 17:23 | <annevk> | HTML also keeps the input and the parsed URL |
| 17:23 | <annevk> | Any question that applies to CSS here would also apply to HTML |
| 17:23 | TabAtkins | will check - he's not sure he's using a version that'll make <template> work. |
| 17:24 | <annevk> | Also, I know you're off it now, but please try to avoid obvious racy things like that in standards! |
| 17:25 | <annevk> | We go out of our way to make GC not observable, define order of tasks, make things deterministic |
| 17:25 | <annevk> | For sure there will be some things, but if we can avoid them we should |
| 17:26 | <TabAtkins> | Haha, obviously I avoid raciness in new things. ^_^ |
| 17:35 | <aklein> | annevk, TabAtkins: good morning |
| 17:35 | <aklein> | reading back up |
| 17:38 | <aklein> | <img src> is quite different from CSS |
| 17:38 | <aklein> | the "src" attribute is never mucked with |
| 17:38 | <aklein> | the content attribute, that is |
| 17:39 | <aklein> | HTML says to go fetch the image whenever src is set (by resolving the URL with the <img>'s baseURI) |
| 17:40 | <aklein> | but reading HTMLImageElement.src doesn't necessarily have any connection to whatever image is displayed by the <img> |
| 17:40 | <aklein> | it always re-resolves whenever it's read, again against the baseURI |
| 17:41 | <aklein> | (though the above will change a bit if we make the spec better match the adoption/insertion behavior in browsers) |
| 17:41 | <aklein> | see the "Otherwise" note in http://www.whatwg.org/specs/web-apps/current-work/multipage/urls.html#dynamic-changes-to-base-urls for discussion of img src not matching the fetched resource |
| 17:42 | <aklein> | annevk: as to what I said last night...conceptually what you suggested last night sounds fine, though it turns out it's trickier than I thought as we're over-eager to share resolved inline style when cloning elements |
| 17:42 | <aklein> | but that's entirely an implementation detail |
| 17:43 | <annevk> | aklein: if you set backgroundImage it will refetch too |
| 17:43 | <aklein> | annevk: sure, that part matches |
| 17:43 | <annevk> | aklein: and if you keep the original value as I suggested, backgroundImage would never be mucked with either |
| 17:43 | <aklein> | but I wanted to point out that HTML doesn't store the resolved URL anywhere |
| 17:43 | <annevk> | aklein: yes it does |
| 17:43 | <annevk> | aklein: if you get .src |
| 17:44 | <annevk> | aklein: after the base URL changed, it will be the original URL |
| 17:44 | <annevk> | iirc |
| 17:44 | <aklein> | annevk: nope |
| 17:44 | <annevk> | hmm |
| 17:44 | <aklein> | see the dynamic changes section I linked above |
| 17:45 | <aklein> | hmm |
| 17:45 | <annevk> | Oh my that is fucked |
| 17:45 | <annevk> | So .src returns a value that is not what is being fetched |
| 17:46 | <annevk> | Or has been fetched |
| 17:46 | <annevk> | Surely we have the original URL around somewhere. Would be much nicer to just expose that |
| 17:47 | <aklein> | strangely I can't find where src is specified to return an absolute url |
| 17:47 | <aklein> | it just says "reflect" in the spec |
| 17:47 | <annevk> | http://www.whatwg.org/specs/web-apps/current-work/multipage/common-dom-interfaces.html#reflecting-content-attributes-in-idl-attributes |
| 17:47 | <aklein> | ah |
| 17:47 | <annevk> | "then on getting, the IDL attribute must resolve the value of the content attribute relative to the element and return the resulting absolute URL if that was successful" |
| 17:47 | <annevk> | bah |
| 17:47 | <annevk> | ugly is ugly |
| 17:48 | <TabAtkins> | Platform is fucked, news at 11. |
| 17:48 | <Ms2ger> | What's <col span> for? |
| 17:49 | <TabAtkins> | For making a <col> span multiple columns. |
| 17:50 | <Ms2ger> | Why not colgroup? |
| 17:50 | <TabAtkins> | Because. |
| 17:50 | <Domenic_> | <col span> is from prehistory right? |
| 17:50 | <TabAtkins> | Yup. |
| 17:51 | <aklein> | annevk: what's awesome in Blink/WebKit is that src reflection is nearly the only place where xml:base is respected |
| 17:51 | <aklein> | so even without a baseURI change the resource and src can have a mismatch |
| 17:51 | <annevk> | aklein: oh, I thought you guys had no xml:base implementation at all |
| 17:51 | <aklein> | it basically only does anything in <svg:a> |
| 17:52 | <annevk> | http://dump.testsuite.org/xml:base/basic.xml |
| 17:52 | <annevk> | I see |
| 17:52 | <aklein> | but it also affects the baseURI getter |
| 17:52 | <annevk> | Please kill it |
| 17:52 | <annevk> | Intent to removes get LGTM pretty quickly :) |
| 17:53 | <aklein> | very true |
| 17:53 | <annevk> | Not having xml:base around will make it easier to design the new declarative thing |
| 17:53 | <aklein> | anyway, I guess it's not a very good argument to say "<img> is crazy, CSS should be just like that" |
| 17:54 | <aklein> | annevk: is there a mozilla bug for removing xml:base? |
| 17:54 | <annevk> | Yeah, it's waiting on someone to do it |
| 17:54 | <aklein> | (or a discussion somewhere?) |
| 17:54 | <aklein> | yeah, everytime it comes up I go test Firefox and am shocked that it fully works there |
| 17:54 | <annevk> | https://www.w3.org/Bugs/Public/show_bug.cgi?id=20976 has all the things on baseURI and xml:base |
| 17:56 | <aklein> | I keep forgetting that bug has all this stuff |
| 18:27 | <jgraham> | Hmm, query-encoding tests seem to be broken |
| 18:27 | <jgraham> | And zcorpan isn't even here to complain at |
| 18:28 | <reyre> | foolip: do you know of any webvtt demos that show the desired behaviour for the processing model step 11 ? |
| 18:28 | <reyre> | i.e. positioning the cues to be on the appropriate lines and making sure they don't overlap |
| 18:33 | <foolip> | reyre: can you quote that step for me? |
| 18:34 | <foolip> | "If reset is false, then, for each text track cue cue in cues..."? |
| 18:34 | <foolip> | (so many algorithms and steps) |
| 18:34 | <reyre> | foolip: yea heh |
| 18:34 | <jgraham> | oh look, "git qseries" isn't a command |
| 18:35 | <reyre> | foolip: i'm having a hard time getting my head around how the cues should be positioned when the snap-to-lines flag is set |
| 18:35 | <reyre> | so i was basically looking for a demo that showcases the behaviour of the end result of that algorithm |
| 18:35 | <reyre> | foolip: for example, if i have a cue with line: 1 and another cue with line: 2 |
| 18:35 | <reyre> | will cue with line: 1 be directly on top of the cue with line: 2 |
| 18:36 | <foolip> | reyre: oh, ok, you mean "Adjust the positions of boxes according to the appropriate steps from the following list" |
| 18:36 | <reyre> | yep |
| 18:36 | <foolip> | sure, examples for that shouldn't be hard to find |
| 18:37 | <foolip> | you could have a look at some of the reftests in http://w3c-test.org/web-platform-tests/master/old-tests/submission/Opera/media/track/webvtt/rendering/reftest/ |
| 18:38 | <foolip> | the overlap avoidance algorithm for snap-to-lines is actually somewhat sane |
| 18:38 | <reyre> | foolip: great, thanks |
| 18:39 | <foolip> | essentially, it first finds the position the cue would like to be at, and if it overlaps it just moves it up until it finds a free space (then down, and other complications) |
| 18:39 | <foolip> | if you want an implementation to compare with, I know that Presto's (old Opera 12.16) followed these steps very closely, although for an older version of the spec |
| 18:40 | <foolip> | and with that I'm going to bed |
| 18:41 | <foolip> | reyre: happy hacking! |
| 18:41 | <reyre> | foolip: okay, thanks! this helps a lot |
| 18:41 | <reyre> | foolip: good night! |
| 19:28 | <Hixie> | hey if anyone is writing tests for type=range, <input type=range step=50 value=25> is an interesting case that chrome gets wrong |
| 19:28 | <Hixie> | (firefox gets it right) |
| 20:07 | <Ms2ger> | zcorpan, did you have a js corpus? |
| 20:07 | <zcorpan> | Ms2ger: miketaylr does |
| 20:08 | <Ms2ger> | miketaylr, want to grep for pkcs11 at some point? |
| 20:08 | <miketaylr> | Ms2ger: sure thing, just the string "pkcs11"? |
| 20:08 | <Ms2ger> | Yep |
| 20:09 | <miketaylr> | k |
| 20:15 | <zcorpan> | jgraham: what is broken? |
| 20:15 | zcorpan | disappears again |
| 20:31 | <miketaylr> | Ms2ger: https://gist.github.com/miketaylr/8696287 |
| 20:31 | <Ms2ger> | Thanks! |
| 20:40 | Hixie | adds a new feature to HTML |
| 20:40 | <Hixie> | <input type=range multiple> |
| 20:40 | <Hixie> | enjoy. |
| 20:41 | <jory> | Random CSS query: should I group together @media blocks that share the same features? |
| 20:43 | <jory> | e.g. is there a noticeable difference between having two identical @media queries with different rules beneath them versus bundling all of the rules under a single instance of the @media? |
| 20:45 | MikeSmith | waves from Washington DC |
| 20:45 | <MikeSmith> | hmm multiple range |
| 20:45 | <annevk> | jory: the object model will be different |
| 20:45 | <annevk> | jory: performance might be different, but I suspect minor |
| 20:47 | <jory> | annevk: Yeah, I've found that when working with most of the popular preprocessors you can often end up with multiple instances of the same MQ being repeated with a very small number of rules in each instance. |
| 20:48 | <jory> | I'm sure there's some # where it becomes more expensive, but just wondering if it was a major no-no / easy fix to eek out some performance. |
| 20:49 | <annevk> | data:text/html,<input type=range step=50 value=25> |
| 20:49 | <annevk> | is weird |
| 20:50 | <Ms2ger> | Weird how? |
| 20:51 | <jory> | Hixie: Is that a range where you can select multiple values, or multiple disconnected ranges? |
| 20:52 | <jory> | i.e. 10-30...40-50 |
| 20:52 | <Ms2ger> | input type=range doesn't let you select ranges |
| 20:52 | <Ms2ger> | Oh, nvm |
| 20:53 | <jory> | Meaning a range where you can select values between 10 and 30, or 40 and 50, but not between 30 and 40. |
| 21:00 | <Hixie> | jory: it's as in where you can select two values. |
| 21:00 | <jory> | Neat! |
| 21:18 | <annevk> | http://www.unicode.org/mail-arch/unicode-ml/y2014-m01/0049.html o_O |
| 21:18 | <annevk> | hsivonen: ^^ |
| 21:19 | <annevk> | I have been replying to that thread, but it seems my email is not getting to the list |
| 21:20 | <annevk> | That email is particularly crazy though |
| 21:32 | <Hixie> | christ, if they really do feel like the need to mint new names, i hope they don't name things "whatwg-*" |
| 21:32 | <Hixie> | that'd be horrible |
| 21:32 | <Hixie> | but i think that somewhat misses the point |
| 21:32 | <Hixie> | since i have huge doubts that anyone, anne least of all, wants to invent a new encoding... |
| 21:37 | <annevk> | So DOM is forked now? http://lists.w3.org/Archives/Public/www-dom/2014JanMar/0054.html |
| 21:38 | <annevk> | https://github.com/whatwg/dom/pulls has no outstanding pull requests regarding this |
| 21:41 | <annevk> | Hixie: seems they want to support multiple incompatible implementations of windows-1252 in a single implementation |
| 21:42 | <Hixie> | there are multiple incompatible implementations of windows-1252? |
| 21:48 | <annevk> | Apparently |
| 21:49 | <annevk> | My opinion is that everyone should migrate towards the Encoding Standard, including default libraries of popular languages |
| 21:59 | <annevk> | Hah, NetworkError has worker in it |
| 22:31 | <Hixie> | annevk: what are these multiple implementations? are they interoperable with public content? |
| 23:08 | <annevk> | Hixie: I think these are libraries that are incompatible with browsers |
| 23:09 | <annevk> | Hixie: e.g. browsers have mappings for code points not officially assigned (return the byte as code point rather than U+FFFD iirc) |
| 23:09 | <Hixie> | annevk: well ok but what are the files that people are reading that are incompatible with returning that? |
| 23:12 | <annevk> | Hixie: I don't know |
| 23:12 | <annevk> | Hixie: I suspect they simply don't want to change existing behavior |
| 23:12 | <Hixie> | i mean, unless there's actual content depending on those other implementations, i would argue it's not a new encoding, it's just a buggy version of the existing encoding |
| 23:13 | <Hixie> | win1252 is by definition whatever microsoft implemented, after all |
| 23:14 | <annevk> | I'm not sure they would agree with that |
| 23:32 | <Hixie> | annevk: yeah. well. maybe they should check interop more then. |
| 23:32 | <annevk> | I don't disagree |
| 23:33 | <annevk> | The only complaints I see are about us not matching some other standards body definition |