00:19
<Hixie>
othermaciej: so i can get any decision reverted if i just have two people complain?
00:26
<Hixie>
i'm also confused as to why some decisions get made such that the decision doesn't match any proposal, and in others we are told "we only considered the proposals that were provided as CPs"
01:01
<nessy>
http://www.whatwg.org/specs/web-apps/current-work/multipage/ <- is broken for me...
01:01
<Hixie>
yeah i'm looking into it
01:01
<Hixie>
use http://www.whatwg.org/specs/web-apps/current-work/complete/ for now instead
01:09
<TabAtkins>
Hixie: I can't load the description of how to match A>B in the presence of XBL into my head. Given <details><summary/><div></div></details>, and <template><content includes=summary /><div><content /></div></template>, does "details>div" match the light-dom <div>, the shadow <div>, or both?
01:10
<Hixie>
off-hand, i dunno, i've paged all that out to long-term storage :-)
01:10
<TabAtkins>
Dammit.
01:10
<TabAtkins>
I wish you'd been writing in a proper algorithmic style back then. Expressing an algorithm as a series of "otherwise" clauses in a paragraph is confusing.
01:10
<Hixie>
yeah me too
01:10
<Hixie>
i don't recall that being especially difficult though, let me look
01:11
<TabAtkins>
http://dev.w3.org/2006/xbl2/Overview.html#shadow-content-and-css
01:12
<Hixie>
ok so we're given <details><summary/><div></div></details> and <template><content includes=summary /><div><content/></div></template>
01:12
<Hixie>
and the selector is "details > div"
01:12
<Hixie>
ok, there are two potential <div>s that could match
01:12
<Hixie>
let's look at the first one, in the bound element dom
01:13
<Hixie>
it has a details parent, so it definitely matches, irrespective of xbl
01:13
<Hixie>
now let's look at the other one
01:13
<Hixie>
its parent is a <template>, so that's what X is in the second paragraph...
01:14
<Hixie>
"allow-selectors-through" is false by default
01:14
<TabAtkins>
Assume that it's true.
01:14
<Hixie>
oh
01:14
<Hixie>
ok
01:14
<Hixie>
ok so "allow-selectors-through" is true and we assume there's no other binding applying
01:14
<Hixie>
so X becomes the bound element
01:15
<Hixie>
what is the bound element here, <details>?
01:15
<TabAtkins>
Yeah.
01:15
<Hixie>
then yes, both <div>s match that selector.
01:15
<TabAtkins>
That's crazy times.
01:15
<Hixie>
i'm just answering your question dude
01:15
<jamesr>
allow-selectors-through is crazytimes
01:16
<jamesr>
you asked for it
01:16
<TabAtkins>
I know. ^_^ Still crazytimes.
01:16
<Hixie>
if you have a problem with the answer you should speak to Hixie of 2003 and 2005 :-P
01:16
<Hixie>
Hixie of 2011 is mentally ready to merge XBL into HTML and change everything in the process (though not ready in terms of available time, but that'll come)
01:16
<TabAtkins>
I'll put this down on the "Engineer with a time machine TODOs" list.
01:17
<jamesr>
warn the passengers of the Titanic? nah. pop a cap in Hitler's ass in 1938? nah. go talk to Hixie about XBL selector matching? HELL YEAH!
01:18
<TabAtkins>
The Hitler Conservation principle is well-known, so there's no reason to try to fix that.
01:18
<Hixie>
dude if you're gonna warn me about xbl just warn me it still won't be implemented by 2011 so i can work on stuff that doesn't give me a headache :-P
01:18
<TabAtkins>
(Any attempt to stop Hitler inevitably ends with WW2 still occurring in roughly the same or worse manner.)
01:20
<wilhelm>
Indeed. Knock out Clemenceau in 1917 instead.
01:25
<Philip`>
Yeah, it could have been far worse - Hitler could have had dinosaurs
01:28
<Philip`>
(http://www.dinodday.com/ - I like their posters)
01:28
<TabAtkins>
Philip`: Luckily, histories where that happens are usually the direct result of time-travelers, and so are fixable by other time-travelers.
01:30
<Philip`>
Maybe the reason time travel has never been invented is that whenever someone invents it, they mess up history, so the second person to invent time travel travels back to prevent the first person inventing it
01:30
<Philip`>
at which point they become the first person and the cycle repeats
01:30
<TabAtkins>
Yup, and time-cycles eventually result in a quantum fluctuation wiping out the cycle entirely.
01:44
<nessy>
I liked the futurama where timetravel was only possible forward - and then they found that time repeats anyway
01:54
<bga_>
http://www.webdevout.net/test?0k
02:13
<Hixie>
othermaciej: what you describe as what you wouldn't do seems to me to be exactly what was done in both cases where it wasdone
02:14
<othermaciej>
Hixie: do you think the distinction between "mix and match" vs. "something not proposed at all" is a false one, or that the decisions in question were on the wrong side of that distinction?
02:15
<othermaciej>
(replies may be slow as I have a ton of bureaucratic paperwork to slog through tonight)
02:15
<Hixie>
i was trying to say that they were on the wrong side, but i could probably argue the other thing as well :-)
02:17
<Hixie>
looking at the focus ring one more closely, i don't really understand what was decided
02:17
<Hixie>
what's the return value of drawFocusRing() now?
02:18
<jamesr>
a headache
02:18
Hixie
decides to not try to figure out today and to wait til he gets around to actually implementing the decision
02:32
<zewt>
Hixie: was it intended that canvas.getContext() cache a null return value from "Return a new object for contextId"? or was it assumed that it would never fail if the context is supported by the UA?
02:34
<zewt>
(guessing it wasn't intended to receive null as a return value, since null usually isn't considered "a new object")
02:34
Hixie
looks
02:35
<Hixie>
it can't cache null
02:35
<Hixie>
as you say, null is not a new object :-)
02:36
<zewt>
(and firefox just crashed, so a minute of thrashing to restart it...)
02:36
<zewt>
should the abstract "return a new object" algorithm never return null?
02:37
<zewt>
getContext just doesn't seem to describe what happens on error--it seems like the "primary context" should also not be set on error
02:41
<zewt>
(webgl returns null on error, which is why I care--it doesn't seem like that's valid)
02:42
<jamesr>
the problem is for webgl context creation should be async
02:42
<jamesr>
since it's heavyweight and can fail
02:42
<jamesr>
2d context creation is assumed to be pretty lightweight and won't reasonably fail
02:43
<zewt>
they do have "context lost"/"context restored" events, but they're used later
02:44
<zewt>
i'm trying to convince them to do something saner, but that's hard to do when I can't tell what getContext actually wants them to do :)
02:45
<zewt>
IMO: getContext should propagate exceptions from context creation, clear the "primary context" on exception if it was just set, and prohibit null as a return value entirely
02:46
<jamesr>
what would you return in the case of a context initialization failure?
02:46
<zewt>
nothing--throw an exception
02:47
<zewt>
it's a synchronous failure
02:47
<jamesr>
gotcha
02:47
<jamesr>
so you'd have to block the call until you knew the context was ready
02:47
<zewt>
but I can't recommend that to webgl when getContext itself doesn't support it
02:47
<zewt>
it already has to do that
02:48
<zewt>
since webgl returns null if the context can't be created; now it would just throw an exception instead
02:48
<jamesr>
right. which is unfortunate for webgl but orthogonal to your concern
02:48
<zewt>
from talking with them this isn't totally set in stone, which is why I'm trying to nudge this towards something better before it is
02:49
<zewt>
(which is why I'm nagging hixie on IRC :)
03:07
<Hixie>
zewt: the abstract "return a new object" algorithm should never return null, it should return a new object. :-)
03:07
<Hixie>
zewt: how can there be an error?
03:08
<zewt>
webgl context creation can fail; it doesn't know if it can create a context until you try
03:08
<Hixie>
why can it fail?
03:08
<Hixie>
i don't understand how it could possibly fail
03:09
<Hixie>
you just get an object back
03:09
<Hixie>
what is there to fail
03:09
<zewt>
creating the context creates the OS OpenGL context; that may fail
03:09
<zewt>
(or other 3d library)
03:09
<Hixie>
that's the UAs problem, it shouldn't expose such failures to web code
03:09
<Hixie>
web pages aren't going to be able to do any thing useful if getContext() returns null
03:10
<Hixie>
anyway, gotta go for dinner, will be back in a few hours if you want to discuss further.
03:10
<Hixie>
or mail me
03:10
<Hixie>
later
03:10
<zewt>
later
03:18
<karlcow>
http://www.youtube.com/watch?v=Z_sl99D2a18
06:59
<hsivonen>
Hixie: regarding http://www.whatwg.org/specs/web-apps/current-work/#attr-link-href does href="" define a hyperlink in the <link> case?
08:08
<Hixie>
hsivonen: no, href plus a rel value does
09:56
<zcorpan>
Hixie: the ascii art diagram wraps in the spec. and the top and bottom 'borders' of the diagram seem misaligned
10:46
<Peter`>
dbaron: great job at landing CSS animations!
12:19
<jgraham>
http://lists.w3.org/Archives/Public/www-archive/2011Apr/0062.html
12:25
<hsivonen>
jgraham: I find the stance entirely unsurprising
12:36
<kennyluck>
[[I don't think we have an issue with recognizing other prefixes if they use the correct namespace declaration, just guessing we haven't taken the time to implement it yet.]] - what does this mean?
12:37
<hsivonen>
kennyluck: I read "have an issue with" as "object to"
12:38
<hsivonen>
(not as "have a bug in")
12:39
<jgraham>
kennyluck: I assume it means "we haven't actively decided not to do this"
12:39
<jgraham>
But it has not been high enough priority to actually get implemented
12:43
<hsivonen>
was it so that WebKit devs wanted innerText to match what "copy" exports to the clipboard as plain text?
12:43
<hsivonen>
or am I imagining memories?
12:43
<jgraham>
That sounds like something I can imagine being true, but I can't say for sure if it is actually a line of argument they used
13:34
<wilhelm>
Does Mozilla have any publicly available tests for registerProtocolHandler and/or registerContentHandler?
13:36
<Ms2ger>
I'd hope so
13:37
<Ms2ger>
http://mxr.mozilla.org/mozilla-central/source/browser/components/feeds/test/test_registerHandler.html
13:37
<wilhelm>
\o/
13:37
<wilhelm>
Thanks.
13:38
wilhelm
stea^H^H^H^Hborrows tests.
13:38
<Ms2ger>
How about you rewrite them to use testharness.js and submit them? :)
13:41
<wilhelm>
That's what I'll probably end up doing, yes. :P
13:43
<Ms2ger>
Excellent
13:43
<Ms2ger>
Then please do steal them :)
16:54
<hsivonen>
I have a screen recording of a slideshow as a QuickTime movie with Apple Animation codec
16:54
<hsivonen>
how do I encode it into WebM in such a way that successive frames that have no change get encoded as one long frame
16:54
<hsivonen>
with variable frame durations
16:54
<hsivonen>
?
16:55
<hsivonen>
or should I not care and trust that frames that just say "the same as the previous frame" are cheap?
17:04
<Lachy>
hsivonen, hopefully, the encoder would handle that for you
17:25
<AryehGregor>
"We’ve worked closely with the Chrome team to implement a recent web standard so we can support a feature called native printing."
17:25
<AryehGregor>
The words "web standard" link to the CSS 3 Paged Media WD, dated October 2006.
17:25
<AryehGregor>
Not exactly what I'd call "recent".
17:27
<TabAtkins>
Compared to CSS 2.1
17:27
<AryehGregor>
The first WD of CSS 3 Paged Media was 1999.
17:28
<TabAtkins>
Okay, you got me there. That predates 2.1.
17:28
<AryehGregor>
And a bunch of the functionality is already in CSS2.
17:28
<jgraham>
"a feature called native printing" sounds strange
17:28
<AryehGregor>
http://www.w3.org/TR/WD-CSS2-971104/page.html
17:35
<Ms2ger>
Hear hear, CSS2.1 a PR
18:49
<Philip`>
I wonder why Sam acts as if http://lists.w3.org/Archives/Public/public-rdf-in-xhtml-tf/2009Sep/0126.html was new information, when hsivonen already linked to it in his survey response
18:51
<Ms2ger>
Because Henri didn't introduce it with FORMAL OBJECTION?
18:54
<Philip`>
I suppose it suggests a good strategy is to repost all the old information that was previously discussed, in case the chairs have forgotten about it and can treat it as new information
18:55
<Ms2ger>
I'd argue the winning strategy is not to play
18:56
<TabAtkins>
No, see, the winning strategy is to go first and hope your opponent makes a mistake.
18:56
<TabAtkins>
'cause you can just take the middle square, see, and if they mess up you can win it then.
18:56
<Philip`>
Ms2ger: That strategy doesn't work if everyone else carries on playing without you
18:56
<Ms2ger>
wfm
19:06
Philip`
sees http://blogs.msdn.com/b/ie/archive/2011/04/12/native-html5-first-ie10-platform-preview-available-for-download.aspx - now with improved native HTML5 support that consists of four CSS3 modules and ES5 strict mode
19:06
<paul_irish>
haha.
19:08
<Ms2ger>
And 300% hardware acceleration
19:33
<hsivonen>
ooh. is IE10 PP1 really adding Flexbox? which snapshot of Flexbox?
19:35
<Philip`>
http://msdn.microsoft.com/en-gb/ie/gg192966#_CSS3FlexBox might or might not say
19:37
<AryehGregor>
Whoa, PP1 already? They're serious about stepping up their release schedule.
19:38
<tw2113>
now if they could just get people off of XP
19:38
<AryehGregor>
Or release their new browsers for XP.
19:39
<tw2113>
that takes logic that MS can't compute
19:39
<Ms2ger>
+Vista, I hear?
19:39
<tw2113>
it causes segfaults
19:39
<zewt>
please stop trying to coerce me into "upgrading" away from an OS that I like to one that I do not like; thanks
19:39
<bfrohs>
And here I thought SP3 was their attempt to get people off of XP...
19:39
<AryehGregor>
Do grid and flexbox layouts support very different use-cases? I thought they were similar ideas.
19:39
<Ms2ger>
zewt, please upgrade to linux ;)
19:40
bfrohs
agrees with Ms2ger
19:40
<zewt>
i don't touch linux as a desktop OS, thanks :P
19:40
<tw2113>
why not?
19:40
<zewt>
relegated to a terminal, where it belongs
19:40
<AryehGregor>
Ms2ger, how does that help? IE doesn't work on Linux either. :(
19:40
<Philip`>
AryehGregor: They say "Higher cadence just means more frequent releases of incomplete software (and larger version numbers). What matters is when consumers and businesses take delivery of robust, production-ready browsers that use the new technology." which doesn't sound like a great endorsement of a stepped-up release schedule
19:41
<bfrohs>
I have to admit, it's nice to see Microsoft trying to get back into the game.
19:42
<Ms2ger>
It rather sounds like "It takes us half a year to run all our regression tests by hand, and then another 3 months when we've fixed the regressions, so we can't go faster"
19:43
<zewt>
"it takes a really long time to WONTFIX all of these bug reports"
19:43
<Ms2ger>
That, too
19:44
<hsivonen>
that there are multiple browsers implementing the same prefixed CSS features is sad. I wish we could get rid of the prefixes faster.
19:44
<tw2113>
well you don't need to use them
19:45
<AryehGregor>
hsivonen, it's been discussed like six times in the CSSWG, and nobody seems to be interested enough to agree on a solution.
19:45
<hsivonen>
tw2113: yes, I do. I want cool stuff right now.
19:45
<AryehGregor>
What they should really do is declare individual features stable even before CR, and commit to not changing the syntax, so that vendors can drop prefixes before the whole spec moves to CR.
19:45
<tw2113>
:P
19:45
<hsivonen>
having to have bugs like https://bugzilla.mozilla.org/show_bug.cgi?id=642265 is just sad
19:46
<tw2113>
my prefix order is this: -moz, -o, -webkit, no prefix
19:47
<tw2113>
i just let IE render what it can, and use modernizr in some cases
19:47
<hsivonen>
tw2113: why do you discriminate IE?
19:47
<tw2113>
because i am not a fan of it at all
19:47
paul_irish
tries to think of common css3-y stuff that uses a -ms- prefix...
19:48
<zewt>
historically microsoft has a really well-compressed vendor prefix
19:48
<zewt>
""
19:48
<paul_irish>
in the past IE has refrained from implementing things with a prefix
19:48
<paul_irish>
yah
19:48
<Ms2ger>
AryehGregor, isn't that the consensus?
19:48
<hsivonen>
paul_irish: CSS 2D transforms is an example of a spec that's implemented with a prefix in the top 4 engines
19:48
<paul_irish>
but ie10 changes that philosophy.
19:48
<AryehGregor>
Ms2ger, possibly, but no one seems to be doing it.
19:48
<paul_irish>
also 2d transforms in ie9 yes
19:48
<hsivonen>
paul_irish: I count that as a failure of the standardization process
19:49
<paul_irish>
probably. that and msft is way more "careful" about adopting features than everyone else
19:49
<tw2113>
MS just marches to the beat of their own drummer and i deal with it last
19:49
<aho>
Peter`, just saw your vendor prefix tweet. ace! :D
19:49
<Ms2ger>
I'm not too happy about dropping prefixes before we have a test suite, myself
19:49
<paul_irish>
"Updated my Vendor Prefixed #CSS overview with lots of new Firefox, Opera and IE hotness :-) http://goo.gl/NZY0N "
19:50
<aho>
thanks for the copypasta ;)
19:55
<aho>
Peter`, i'm not sure about the meaning of gray/italic entries :f
19:56
<AryehGregor>
Ms2ger, that's a great philosophy if anyone actually bothers writing tests in a reasonable timeframe.
19:56
<AryehGregor>
In practice, not so much.
19:57
<Peter`>
aho: thanks :) The grey ones are the same properties, yet not prefixed anymore
19:57
<hsivonen>
Ms2ger: that doesn't help much if existing content is of the form -moz-foo: bar; -webkit-foo: bar; -o-foo: bar; -ms-foo: bar; foo: bar;
19:58
<aho>
ah ok... so... firefox supports... filter?
19:58
<hsivonen>
aho: different filter, IIRC
19:58
<Ms2ger>
Yeah
19:59
<aho>
https://developer.mozilla.org/en/CSS/filter
19:59
<aho>
ah yea... svg filter/mask stuff
20:00
<bfrohs>
Out of curiosity: 'test suite' or 'testsuite'? Both are used on whatwg wiki.
20:00
<Ms2ger>
Both are used in my head, too
20:00
<hsivonen>
Peter`: might make sense to put Firefox's filter and IE's -ms-filter on different rows, since they are really different features
20:01
<Peter`>
it's a limitation in the system right now, I am aware of the problem
20:02
<aho>
you could add a tooltip comment for now ;)
20:07
<aho>
i'd use ⓘ (24d8) instead of that ✍ thing
20:19
<Peter`>
aho: Good idea, thanks! Both changed.
20:20
<aho>
:)
20:30
<bga_>
oh
20:31
<bga_>
now we have name collision between IE's filter and modern SVG's filter
20:31
<bga_>
many sites will be broken
20:32
<TabAtkins>
We've had this conflict for forever.
20:32
<Ms2ger>
WebKit has even generalized document.all's behaviour for it
20:32
<bga_>
choose for example `svg-filter`
20:33
<bga_>
document.all is good
20:33
<TabAtkins>
This hasn't been a problem so far, because IE hasn't implemented SVG 'filter', and the two versions have massively different syntaxes.
20:35
<jgraham>
"document.all is good" - uh what?
20:36
<bga_>
_filter:alpha(opacity = 50); filter: svg filter here
20:36
<bga_>
or CC
20:37
<bga_>
jgraham document.all.foo is shorter than document.getElementById('foo')
20:37
<bga_>
:)
20:37
<bga_>
developers too lazy
20:38
<TabAtkins>
Bah. It should be just query('#foo') (on window, so it can be omitted).
20:38
<bga_>
or $('foo'), yes
20:39
<TabAtkins>
$ is too opaque, even though it does have a lot of history, imo.
20:39
<bga_>
or with(document.all){ foo } :P
20:39
<TabAtkins>
Bleh.
20:39
<jgraham>
bga_: Every time you use document.all a kitten dies
20:39
<jgraham>
Well I say a kitten
20:40
<TabAtkins>
What's wrong with window.foo? ^_^
20:40
<jgraham>
It is more like most of the cute animals for a mile radius
20:40
<bga_>
TabAtkins gecko? :)
20:40
<TabAtkins>
Pfft.
20:41
<jgraham>
Hmm, gecko supports that
20:41
<jgraham>
I'm pretty sure
20:41
<AryehGregor>
Only in quirks mode.
20:41
<jgraham>
Same as document.all
20:41
<jgraham>
(did I already mention that you shouldn't use either?)
20:42
TabAtkins
uses window.[id] for quick tests because it's just easier. Nothing public, though.
20:45
<bga_>
main goal is make development easy imho. foo.onclick = _bar or document.getElementById('foo').addEventListener('click', _bar, false)
20:46
<bga_>
you provide giant stong api with long names
20:46
<TabAtkins>
Yup, most of the "good" APIs were apparently designed with no consideration for authoring ease. :/
20:47
<bga_>
ppl are forced to invent jq like frameworks
20:53
<jgraham>
bga_: There is "easy" and "easy to shoot yourself in th foot"
20:54
<bga_>
i know
20:55
<TabAtkins>
There is also, of course, "omg verbose how did you ever consider this acceptable don't you know we're in Peak ASCII?".
22:28
<TabAtkins>
Heh, the behavior of transformed elements that are broken across columns is amusing.
22:28
<TabAtkins>
Particularly when you animate the transform.
22:28
<Hixie>
url? :-)
22:29
<TabAtkins>
One sec...
22:29
<TabAtkins>
925 on your dom viewer
22:30
<TabAtkins>
(Sorry, I was doing the test on my windows box, and your "saved" url is too long to easily remember.
22:30
<Hixie>
hah
22:30
<Hixie>
nice
22:31
<TabAtkins>
This makes it somewhat difficult to determine if I need a getQuads() function in addition to getQuad(), for the transformed quad.
22:56
<Hixie>
othermaciej: yt?
22:57
<Hixie>
othermaciej: bug 10202's decision requires me to put RFC2119 terminology in a non-normative context. How should I proceed?
23:07
<Hixie>
othermaciej: for now i just forked the spec so the whatwg one doesn't make that mistake; let me know if i should just fix the w3c one too
23:07
Hixie
doesn't really dare apply judgement to applying these decisions anymore
23:12
<othermaciej>
Hixie: do you mean the word "should" in the note?
23:12
<Hixie>
yes
23:12
<Hixie>
see most recent diff
23:14
<othermaciej>
ok, I don't have time at the moment to study this closer but I can this evening
23:14
<Hixie>
k
23:14
<Hixie>
it's a trivial editorial matter
23:30
<zewt>
drawing a total blank here and I've seen it in several specs--what's a spec that has the "if a feature isn't supported, pretend it doesn't exist and don't expose the interface at all" text?
23:30
<Hixie>
how do you mean?
23:30
<Hixie>
if a feature isn't supported, how would an interface be exposed?
23:30
<Hixie>
surely if the interface is exposed, that means the feature is supported
23:31
<Hixie>
by definition
23:31
<zewt>
it means as opposed to throwing an exception, i think
23:31
<Hixie>
not sure what you mean
23:31
<zewt>
it's a specific bit of text ... dunno, I'll keep poking through specs until I find it
23:33
<zewt>
ah, here it is
23:33
<zewt>
When support for a feature is disabled (e.g. as an emergency measure to mitigate a security problem, or to aid in development, or for performance reasons), user agents must act as if they had no support for the feature whatsoever, and as if the feature was not mentioned in this specification.
23:33
<zewt>
(relevant to the webgl GPU-blacklisting thing)
23:34
<Hixie>
oh, disabled, not not supported
23:34
<Hixie>
ok
23:34
<zewt>
same thing from the user's POV :)
23:34
<jamesr>
i don't think that is true if a feature is disabled due to the hardware limitations clause
23:34
<Hixie>
only because of that paragraph :-)
23:35
<jamesr>
in practice, that is
23:35
<jamesr>
not in spec-ese
23:35
<zewt>
jamesr: i don't know of any cases of it actually happening
23:35
<jamesr>
for example everyone has a hardware limitation on canvas dimensions right now
23:35
<jamesr>
but no user agent pretends that canvas is completely unsupported if the page tries to make a gigantic canvas
23:36
<zewt>
yeah, it's not applied for every edge case
23:36
<jamesr>
for webgl in the blacklist, the feature exists exactly as specified - it just happens to never give you a valid context
23:37
<zewt>
that's a bug, though--getContext() should always return a context
23:37
<jamesr>
if it returns, yeah it probably should
23:37
<jamesr>
but a webgl context isn't necessarily one you can render into
23:37
<zewt>
about to suggest one approach to making that happen on the thread; i suspect implementation problems won't allow it, but it seems like it should work based on the gecko/webkit reasons given so far
23:38
<zewt>
(going to suggest that permanent gpu-blacklisted failures should be detected at browser launch and disable WebGL entirely as above, and transient "out of resources" should create a "lost" context as Kenneth described)
23:38
<jamesr>
that doesn't work
23:38
<jamesr>
the blacklist may be updated while the browser is running
23:38
<zewt>
how?
23:38
<jamesr>
it downloads the blacklist from the interwebs
23:38
<TabAtkins>
The browser polling the blacklist server.
23:39
<jamesr>
or the user may update their graphics drivers to a version that isn't blacklisted while the browser is running
23:39
<zewt>
that should just be updated along with browser updates
23:39
<jamesr>
why?
23:39
<zewt>
if it's okay to restart the browser for a security update, it's okay to do so for a blacklist update
23:40
<jamesr>
why?
23:40
<zewt>
why not?
23:40
<TabAtkins>
It's not actually okay to restart for a security update. It's just necessary.
23:40
<jamesr>
because it's a worse user experience
23:40
<jamesr>
it shouldn't be necessary to restart the browser for a security patch
23:40
<zewt>
(in principle, Chrome might be able to start new, updated tab backends with things like updated blacklists, without having to restart the front-end)
23:40
<jamesr>
and if we figure out a way to patch security holes without requiring a browser restart, you can bet we'll do it
23:40
<jamesr>
we do a similar thing for safebrowsing
23:40
<jamesr>
we update the safebrowsing lists without requiring browser restarts
23:40
<Hixie>
jamesr: if webgl is blacklisted, then 'webgl' is not the name of a context supported by the user agent, and the UA will return 'null' in step 2
23:41
<jamesr>
(in principle, maybe. it'd be insanely complicated)
23:41
<zewt>
so create new browsing environments with WebGL disabled
23:41
<jamesr>
i don't think that's very practical
23:42
<Hixie>
what isn't practical about it?
23:42
<jamesr>
Hixie: good point on that
23:43
<zewt>
yeah, that's true
23:43
<jamesr>
tying webgl blacklisting state with browsing environments instead of allowing the blacklist to be updated dynamically
23:43
<zewt>
the WebGL class named would still be in window, but that's not a big deal
23:43
<Hixie>
oh yeah, you'd want to do it across all browsing contexts at once, sure
23:44
<jamesr>
so the results of step 2 could change essentially at any point
23:44
<Hixie>
it's not like it's going to matter anyway, only users that happen to have a webgl context created on a page that then tries to create another while the blacklist is updated and if they have a black-listed card that hasn't already crashed will be affected
23:44
<Hixie>
and they'll just hit reload
23:44
<Hixie>
(and find the page has stopped working altogether)
23:44
<Hixie>
so...
23:45
<othermaciej>
Hixie: so what are possible resolutions to the "note" containing a "should"? It seems like one is to remove the word "note", and another is to rephrase to not use an RFC2119 keyword if no conformance requirement is intended
23:45
<zewt>
it would mean that ("WebGLTexture" in window) and canvas.getContext("webgl") could be out of sync, but i think nothing guarantees that anyway
23:45
<zewt>
(ignoring primary-context-incompatible errors from getContext)
23:45
<othermaciej>
Hixie: if you want to do either of those things, I'd say run it by the list with an explanation, and if Julian doesn't object, it should be fine
23:45
<jamesr>
Hixie: the reverse could happen (the user was blacklisted then becomes unblacklisted)
23:46
<Hixie>
othermaciej: the resolution i use was to apply the decision as it was made for the w3c copy, and fix the text for the whatwg copy to have s/should/will/ and to have slightly better style
23:46
<jamesr>
Hixie: in which case there's no way for a page to know when to retry the context creation
23:46
<jamesr>
so the only real option is for the user to refresh the page
23:46
<zewt>
jamesr: if a card is blacklisted while a context is created, is it just "lost" (webglcontextlost) forever?
23:46
<Hixie>
othermaciej: i don't intend to post to the list, it just wastes my time even more
23:46
<jamesr>
i believe that's how it should work. i don't know if that's how it does work in the current chrome implementation
23:47
<othermaciej>
Hixie: yes, I recognize that you forked - if you want to unfork, then I would only ask to post to the list first
23:47
<jamesr>
the dynamic blacklisting stuff is relatively new
23:47
<Hixie>
jamesr: yeah
23:47
<Hixie>
othermaciej: k. i'll leave it as is for now.
23:47
<othermaciej>
Hixie: if you don't care about unforking on this point, then you don't need to do anything
23:47
<jamesr>
zewt: meaning that future calls to getContext() would return a reference to the same non-null but lost context, i suppose
23:48
<Hixie>
othermaciej: as far as forking for these decisions go, that one is going to be the least annoying one by far
23:49
<zewt>
jamesr: according to the spec, since at that point "webgl" would no longer be a name of a supported context, it would abort in step 2 and return null
23:49
<zewt>
even if a previous object exists (that happens in 5)
23:50
<zewt>
http://dev.w3.org/html5/spec/the-canvas-element.html#dom-canvas-getcontext
23:50
<jamesr>
hm right, you wouldn't make it to step 3
23:50
<jamesr>
i'm not totally sure step 2 is when the blacklisting should apply
23:50
<zewt>
can you think of any problems with it? it seems like the cleanest fix so far, barring any other issues
23:51
<jamesr>
what would the net delta end up being?
23:51
<zewt>
(helpfully, it also reduces the amount of changes webgl would need)
23:51
<zewt>
well, the actual behavior wouldn't change much in this case--blacklisted returns null now and it still would
23:53
<jamesr>
(note that i still think we need to add a asynchronous context creation path for WebGL. WebGL context initialization can be really expensive and it sucks to block the main message loop while it's going on)
23:53
<zewt>
webglcontextcreationerror would go away, presumably, since you never actually get to any algorithm that can fire it
23:53
<zewt>
which might take some people a bit of convincing
23:53
<zewt>
unless there's a way to wedge it in somehow
23:53
<jamesr>
(we could add an async path that also updated the canvas' primary context)
23:55
<zewt>
would that actually help? i don't know the backends at all
23:55
<zewt>
yeah i guess i could see how that could work (with opengl, anyway, i know webgl isn't actually always opengl under the hood)
23:56
<zewt>
instead of an async getContext, it could be getContext("webgl", {async: true});, which always returns a "lost" context and fires webglcontextrestored when initialization completes
23:57
<zewt>
though if "out of resources" error cases become "context lost" then it would need a way to tell the difference between the cases ("still initializing" and "out of resources, don't wait up")
23:58
<jamesr>
yeah, you really want to have some definitive point where you know whether or not you are gonna get a context
23:58
<zewt>
could have three context states: "active", "lost" and "initializing"
23:58
<zewt>
async starts in initializing; if it fails it's lost, as normal