Options:
- # Session Start: Tue Jun 17 00:00:00 2008
- # Session Ident: #whatwg
- # [00:02] * Quits: aaronlev (n=chatzill@g227079101.adsl.alicedsl.de) ("ChatZilla 0.9.82.1 [Firefox 3.0/2008052906]")
- # [00:05] * Quits: othermaciej (n=mjs@17.255.69.132)
- # [00:11] <heycam> Dashiva, if that's the case that's a bug :)
- # [00:11] <heycam> i'll have a look once i'm at uni
- # [00:14] * Quits: heycam (n=cam@203-217-69-250.dyn.iinet.net.au) ("bye")
- # [00:16] * Joins: MangoFusion (n=jamesu@host86-145-164-229.range86-145.btcentralplus.com)
- # [00:19] * Quits: virtuelv (n=virtuelv@192.80-203-77.nextgentel.com) ("Ex-Chat")
- # [00:19] * Joins: jgraham (n=james@81-86-219-217.dsl.pipex.com)
- # [00:20] <jgraham__> gsnedders: I copied the latest version of outline.py to james.html5.org/temp/outline/outline.py
- # [00:32] * Quits: hasather (n=hasather@cm-84.215.63.253.getinternet.no) (Read error: 110 (Connection timed out))
- # [00:34] * Quits: aroben (n=aroben@unaffiliated/aroben)
- # [00:39] * Joins: mcarter (n=mcarter@ip-12-22-56-126.hqglobal.net)
- # [00:43] * Joins: othermaciej (n=mjs@17.255.96.158)
- # [00:44] * Joins: heycam (n=cam@clm-laptop.infotech.monash.edu.au)
- # [00:44] <Dashiva> Just to see if I got the terminology right... HTMLDivElement is an 'interface object', HTMLDivElement.prototype (also somediv.[[prototype]]) is an 'interface prototype object' and somediv is a 'host object implementing an interface'.
- # [00:44] <heycam> Dashiva, i see the bug (the "go to step 23")
- # [00:44] <heycam> (in web idl's [[Put]])
- # [00:45] <heycam> Dashiva, yeah that's the terminology i used
- # [00:45] <Dashiva> heycam: That's half of it
- # [00:45] <Dashiva> The other half is step 14
- # [00:46] <Dashiva> If the property doesn't exist, it continues to 15 and from there you can't get anywhere beyond 19
- # [00:46] <heycam> hmm
- # [00:47] <heycam> ok i'll take a look at it
- # [00:47] <Dashiva> Actually, probably step 15 is the problem
- # [00:47] <Dashiva> Since it has to check PutForwards before going on to create
- # [00:47] <Dashiva> So instead of throwing an exception, it should jump to 24
- # [00:48] <Dashiva> *19
- # [00:48] * Quits: MangoFusion (n=jamesu@host86-145-164-229.range86-145.btcentralplus.com) ("Not here")
- # [00:48] <Dashiva> You know what, it's too late for this. Don't listen to me. Zzz :)
- # [00:49] <heycam> yeah that step 15 is assuming the property already exists
- # [00:49] <heycam> which it shouldn't
- # [00:53] * Quits: hober (n=ted@unaffiliated/hober) ("ERC Version 5.3 (IRC client for Emacs)")
- # [00:57] * Joins: csarven (n=csarven@modemcable130.251-202-24.mc.videotron.ca)
- # [01:00] * Quits: tndH (i=Rob@87.102.5.204) ("ChatZilla 0.9.82.1-rdmsoft [XULRunner 1.8.0.9/2006120508]")
- # [01:01] * Quits: csarven (n=csarven@modemcable130.251-202-24.mc.videotron.ca) (Client Quit)
- # [01:04] * Quits: qwert666 (n=qwert666@day221.neoplus.adsl.tpnet.pl) ("Leaving")
- # [01:07] * Quits: smedero (n=smedero@mdp-nat251.mdp.com)
- # [01:30] * Joins: csarven (n=csarven@modemcable130.251-202-24.mc.videotron.ca)
- # [01:40] * Joins: jruderman (n=jruderma@ip68-5-179-249.oc.oc.cox.net)
- # [01:42] * Joins: tantek (n=tantek@c-98-210-12-23.hsd1.ca.comcast.net)
- # [02:06] * Joins: aa__ (n=aa@nat/google/x-169c754896fed4db)
- # [02:07] * Quits: tantek (n=tantek@c-98-210-12-23.hsd1.ca.comcast.net)
- # [02:09] * Quits: grimboy (n=grimboy@78-105-162-250.zone3.bethere.co.uk) ("Lost terminal")
- # [02:12] <takkaria> could anyone confirm my reading of the tokenisation part of the spec, that '<h a="¬">' should result in an 'a' attribute containing the not symbol?
- # [02:13] <takkaria> oh, wait, I think I see my problem
- # [02:23] * Joins: BenMillard (i=cerbera@cpc1-flee1-0-0-cust285.glfd.cable.ntl.com)
- # [02:25] * Parts: BenMillard (i=cerbera@cpc1-flee1-0-0-cust285.glfd.cable.ntl.com)
- # [02:26] * Joins: BenMillard (i=cerbera@cpc1-flee1-0-0-cust285.glfd.cable.ntl.com)
- # [02:34] * Joins: deane (n=dean@121.98.128.155)
- # [02:39] * Quits: eseidel (n=eseidel@nat/google/x-05285c5b20294e95)
- # [02:39] * Parts: BenMillard (i=cerbera@cpc1-flee1-0-0-cust285.glfd.cable.ntl.com)
- # [03:00] * Quits: billmason (n=billmaso@ip232.unival.com) (Read error: 104 (Connection reset by peer))
- # [03:07] * Quits: gavin (n=gavin@firefox/developer/gavin) (Read error: 104 (Connection reset by peer))
- # [03:07] * Joins: franksalim (n=franksal@cpe-72-130-134-143.san.res.rr.com)
- # [03:19] * Quits: jruderman (n=jruderma@ip68-5-179-249.oc.oc.cox.net)
- # [03:21] * Joins: jruderman (n=jruderma@ip68-5-179-249.oc.oc.cox.net)
- # [03:51] * Joins: othermaciej_ (n=mjs@17.203.15.234)
- # [03:51] * Quits: KevinMarks (n=KevinMar@60.sub-75-208-225.myvzw.com) ("The computer fell asleep")
- # [03:59] * Quits: othermaciej (n=mjs@17.255.96.158) (Nick collision from services.)
- # [03:59] * othermaciej_ is now known as othermaciej
- # [04:01] * Joins: eseidel (n=eseidel@adsl-75-36-129-130.dsl.pltn13.sbcglobal.net)
- # [04:04] * Quits: deane (n=dean@121.98.128.155) (Remote closed the connection)
- # [04:09] * Joins: mcarter_ (n=mcarter@ip-12-22-56-126.hqglobal.net)
- # [04:11] * Quits: mcarter (n=mcarter@ip-12-22-56-126.hqglobal.net) (Read error: 110 (Connection timed out))
- # [04:23] * Quits: jgraham (n=james@81-86-219-217.dsl.pipex.com) ("I get eaten by the worms")
- # [04:30] * Quits: eseidel (n=eseidel@adsl-75-36-129-130.dsl.pltn13.sbcglobal.net)
- # [04:50] * Quits: mcarter_ (n=mcarter@ip-12-22-56-126.hqglobal.net) (Read error: 110 (Connection timed out))
- # [05:17] * Quits: dbaron (n=dbaron@corp-241.mountainview.mozilla.com) ("8403864 bytes have been tenured, next gc will be global.")
- # [05:18] * Quits: othermaciej (n=mjs@17.203.15.234) (Read error: 104 (Connection reset by peer))
- # [05:44] * Quits: Dashiva (i=Dashiva@wikia/Dashiva) (Read error: 113 (No route to host))
- # [05:56] * Quits: weinig (n=weinig@17.203.15.145)
- # [06:11] * Joins: eseidel (n=eseidel@c-67-180-49-110.hsd1.ca.comcast.net)
- # [06:23] * Joins: weinig (n=weinig@c-71-198-176-23.hsd1.ca.comcast.net)
- # [06:39] * Quits: csarven (n=csarven@modemcable130.251-202-24.mc.videotron.ca) ("http://www.csarven.ca/")
- # [06:42] * Joins: othermaciej (n=mjs@c-24-5-43-151.hsd1.ca.comcast.net)
- # [06:44] * Joins: othermaciej_ (n=mjs@c-24-5-43-151.hsd1.ca.comcast.net)
- # [06:44] * Quits: othermaciej (n=mjs@c-24-5-43-151.hsd1.ca.comcast.net) (Read error: 104 (Connection reset by peer))
- # [06:48] * Joins: deane (n=dean@121-72-175-170.dsl.telstraclear.net)
- # [06:48] * othermaciej_ is now known as othermaciej
- # [07:36] * Quits: sverrej (n=sverrej@89.10.27.86) (Read error: 60 (Operation timed out))
- # [07:45] * Quits: roc (n=roc@202.0.36.64)
- # [07:57] * Joins: sverrej (n=sverrej@pat-tdc.opera.com)
- # [07:59] * Quits: othermaciej (n=mjs@c-24-5-43-151.hsd1.ca.comcast.net)
- # [08:04] * Joins: maikmerten (n=merten@ls5laptop14.cs.uni-dortmund.de)
- # [08:05] * Joins: othermaciej (n=mjs@c-24-5-43-151.hsd1.ca.comcast.net)
- # [08:08] <heycam> Dashiiva, fixed the thing you mentioned earlier
- # [08:14] * Quits: heycam (n=cam@clm-laptop.infotech.monash.edu.au) ("bye")
- # [08:17] * Joins: Dashiva (n=noone@wikia/Dashiva)
- # [08:18] * Joins: sverrej_ (n=sverrej@pat-tdc.opera.com)
- # [08:22] <othermaciej> Hixie: sicking said almost everything I would have said in his reply to Microsoft's feedback
- # [08:22] <othermaciej> I am tempted to +1
- # [08:23] <Hixie> heh
- # [08:23] <Hixie> i haven't read it yet
- # [08:23] * Quits: sverrej (n=sverrej@pat-tdc.opera.com) (Read error: 110 (Connection timed out))
- # [08:23] <Hixie> i can't believe they stuffed so much filler crap into that feedback
- # [08:24] <Hixie> on another note, the htmlwg bugzilla hasn't had any activity for at least 6 hours
- # [08:24] <othermaciej> I was dismayed that many of their quotes were clearly out of context
- # [08:25] <othermaciej> or at least, they turned them towards ends that I am pretty sure the authors of said comments did not intend
- # [08:25] <othermaciej> this cast doubt on the contextual validity of their other quotes for me
- # [08:26] <Hixie> hence the version i provded that just has their actual feedback
- # [08:26] <Hixie> stripping out the stuff that doesn't actually contibute
- # [08:39] * Quits: sverrej_ (n=sverrej@pat-tdc.opera.com) (Read error: 110 (Connection timed out))
- # [08:41] * Joins: sverrej_ (n=sverrej@213.236.208.247)
- # [09:02] * Joins: hsivonen (n=hsivonen@kekkonen.cs.hut.fi)
- # [09:02] * Joins: heycam (n=cam@203-217-69-250.dyn.iinet.net.au)
- # [09:13] <heycam> Dashiva, in your mail you said s14 of the [[Put]] can be removed. why's that?
- # [09:16] * Joins: tndH_ (i=Rob@87.102.5.204)
- # [09:16] * tndH_ is now known as tndH
- # [09:21] <Dashiva> heycam: If you would jump in s14 there's no such property. That means that in s15, there can't be a property with putforwards either (since there's no property)
- # [09:22] * Quits: eseidel (n=eseidel@c-67-180-49-110.hsd1.ca.comcast.net)
- # [09:23] <heycam> but you jump in s14 if there is no property
- # [09:23] * heycam confused
- # [09:24] <Dashiva> And you jump in s15 if there is no property (or there is a property, and it's not putforwards)
- # [09:24] <Dashiva> Essentially s15 is all of s14 + check putforwards
- # [09:26] <heycam> true i could combine s14 and s15 to say "If O does not have a property with name P, or if it does but it does not blah blah [PutForwards] ..."
- # [09:27] <heycam> i split them only to avoid a big conditional thing like that
- # [09:27] <Dashiva> I just figured 'does not correspond to an attribute' included the case 'there is no such attribute'
- # [09:28] <heycam> ah, k
- # [09:28] <Dashiva> Also, it seems a bit string to split on attribute exists/not in step 14, and then combine them into step 19, and then split again in step 21
- # [09:28] <Dashiva> s/string/strange/
- # [09:28] <heycam> or you figured "If the property on O with name P does not correspond ..." could still evaluate to false if there is no such property
- # [09:29] <Dashiva> Yeah. I see it might not be spec-level clarity.
- # [09:31] <heycam> so with the splitting on 14 / combining on 19 / splitting on 21... could you elaborate?
- # [09:32] <Dashiva> If the property does not exist, or if the property exists but is not putforward, in both cases it is necessary to run [[CanPut]].
- # [09:32] <Dashiva> (which is step 19)
- # [09:34] <heycam> yep...
- # [09:34] <Dashiva> And step 19 leads to step 21, where it checks if the property exists. Again.
- # [09:38] <heycam> so you'd rather have two branches from s14/s15, and include the [[CanPut]] in both?
- # [09:38] * Joins: jgraham (n=james@81-86-219-217.dsl.pipex.com)
- # [09:39] <heycam> or i could bring the [[CanPut]] up above s14 (but then it's irrelevant if we get to s16)
- # [09:39] <Dashiva> I'd rather not branch on 14, and just send both cases to 19.
- # [09:40] <Dashiva> Hmm... actually...
- # [09:41] <Dashiva> PutForwards implies a Readonly attribute, so we can't CanPut before it anyhows, I believe
- # [09:42] <heycam> right (well, the [[CanPut]] could be done, but not the return based on it)
- # [09:43] * heycam wonders if he should write up his algorithms as C code and then run gcc -S -O9 on them to try to minimise them :)
- # [09:44] <Dashiva> Would unifying 14 and 15 be easier if the conditional was inverted? e.g. if there is a property with name P and that property has extattr putforwards, jump to steps equivalent to 16-18. And then the canput stuff following instead of in a jump.
- # [09:46] <heycam> yeah that probably would
- # [09:47] <Dashiva> Oh well. As long as [[CanPut]] happens for both new and old properties, I suppose this is just bikeshedding.
- # [09:48] <heycam> i should have a "you can implement these how you want as long as the observable effects are the same" in the spec somewhere (but don't yet)
- # [09:49] <Dashiva> By the way, is the special casing of 2^32-1 for integer indexes explained somewhere?
- # [09:49] * Joins: virtuelv (n=virtuelv@pat-tdc.opera.com)
- # [09:50] <heycam> not in the document
- # [09:50] <heycam> although now i wonder if it is really necessary
- # [09:50] <heycam> since such host objects won't necessarily have a .length property on them
- # [09:50] <heycam> (which is the reason it is like that for Array objects)
- # [09:52] <Dashiva> Oh, of course. Then it makes perfect sense.
- # [09:53] <Dashiva> I didn't think of .length being greater than the max index
- # [09:53] <heycam> yeah it makes sense for Array. not sure for IndexSetters...
- # [09:53] * heycam adds an ednote
- # [09:53] <Dashiva> It's good for consistency, though. :)
- # [09:54] <heycam> true
- # [10:00] * heycam dinners
- # [10:00] * Dashiiva avoids comments about barbies
- # [10:01] * Quits: jgraham (n=james@81-86-219-217.dsl.pipex.com) ("I get eaten by the worms")
- # [10:03] <virtuelv> Dashiiva: wanna go shopping?
- # [10:03] * Joins: tantek (n=tantek@adsl-63-195-114-133.dsl.snfc21.pacbell.net)
- # [10:07] * Quits: maikmerten (n=merten@ls5laptop14.cs.uni-dortmund.de) (Remote closed the connection)
- # [10:08] * Joins: othermaciej_ (n=mjs@c-24-5-43-151.hsd1.ca.comcast.net)
- # [10:08] * Quits: othermaciej (n=mjs@c-24-5-43-151.hsd1.ca.comcast.net) (Read error: 104 (Connection reset by peer))
- # [10:08] * Joins: roc (n=roc@121-72-162-128.dsl.telstraclear.net)
- # [10:39] * Joins: zcorpan (n=zcorpan@pat.se.opera.com)
- # [10:46] * Joins: ROBOd (n=robod@89.122.216.38)
- # [10:48] * Quits: Lachy (n=Lachlan@85.196.122.246) ("This computer has gone to sleep")
- # [10:59] * Joins: Lachy (n=Lachlan@pat-tdc.opera.com)
- # [11:09] * Joins: maikmerten (n=merten@ls5laptop14.cs.uni-dortmund.de)
- # [11:10] * Joins: Dashiiiva (n=noone@195.18.164.170)
- # [11:11] * Quits: roc (n=roc@121-72-162-128.dsl.telstraclear.net) (Read error: 104 (Connection reset by peer))
- # [11:13] * Joins: roc (n=roc@121-72-162-128.dsl.telstraclear.net)
- # [11:13] * Joins: sverrej (n=sverrej@pat-tdc.opera.com)
- # [11:20] * Joins: webben (n=benh@nat/yahoo/x-b23946d03e2f9faf)
- # [11:22] * Quits: sverrej_ (n=sverrej@213.236.208.247) (Read error: 113 (No route to host))
- # [11:23] * Quits: Dashiiva (n=noone@195.18.164.170) (Read error: 110 (Connection timed out))
- # [11:27] <Hixie> rb is 50% of the html4all traffic too
- # [11:27] <Hixie> that's funny
- # [11:28] <zcorpan> Hixie: does it make sense for the ratechange event to be cancelable?
- # [11:29] <Hixie> does it have a default action?
- # [11:29] <zcorpan> not afaict
- # [11:29] <Hixie> then it doesn't matter
- # [11:29] <zcorpan> fair enough
- # [11:31] <Hixie> teehee, on june 6th rb asked gregory to forward many of his comments on html5 to the xhtml2 group
- # [11:31] <Hixie> but as far as i can tell, that didn't happen
- # [11:34] <zcorpan> "When the defaultPlaybackRate or playbackRate attributes change value", setting to the value it already has means it hasn't changed right
- # [11:39] <Hixie> i guess
- # [11:40] <Hixie> i can specify it the other way if that's what UAs want
- # [11:40] <Hixie> hey does anyone know what the status of the svgwg's work on the svg parsing thing is?
- # [11:40] <Hixie> i don't recall ever hearing back from them
- # [11:40] <Hixie> and it's been what, two months now?
- # [11:42] <hsivonen> ouch. document.write writing a script that document.writes is more complex than I first thought :-(
- # [11:43] <hsivonen> Hixie: do you know if Gecko and WebKit really call the parser re-entrantly or whether they interleave parser and script execution using a run queue?
- # [11:43] <Hixie> no idea what their implementation does
- # [11:43] <Hixie> the net result is basically what the spec says though
- # [11:43] <Hixie> though the spec is mildly more complex to handle script async and script defer
- # [11:44] <hsivonen> I had happily assumed a run queue model, but now that I try to write it down in the case where document.write document.writes, it starts to get ugly
- # [11:44] <virtuelv> hsivonen: document write is evil
- # [11:45] <virtuelv> I hacked up a bunch of testcases that indicates that no two browsers behave the same
- # [11:45] <Hixie> the browsers are pretty close to each other, most of the differences are obvious bugs
- # [11:45] <virtuelv> Hixie: I'll ask if I can release the TC's somewhere
- # [11:45] <virtuelv> I'm not sure what are bugs or not
- # [11:46] <virtuelv> document.write in setTimeout calls are so much fun
- # [11:46] <hsivonen> Hixie: anyway, I have trouble wrapping my head around the spec assertion that the tree builder is re-entrant
- # [11:46] <Hixie> they should just blow away the document
- # [11:46] <Hixie> hsivonen: oh?
- # [11:46] <hsivonen> Hixie: it seems to me that the parser doesn't need to be re-entrant
- # [11:47] <virtuelv> Hixie: suffice it to say that browsers in general don't cancel the timeout
- # [11:47] <Hixie> hsivonen: just like any thing that you can implement as a recursive function can be implemented with a hand-managed stack? or more so?
- # [11:47] <hsivonen> Hixie: right
- # [11:47] <Hixie> hsivonen: well sure
- # [11:48] <Hixie> hsivonen: recursive algorithms are what the spec uses generally because they're easier to explain and understand, but they're not what i'd recommend implementing
- # [11:48] <Hixie> hsivonen: though iirc the parser's re-entrancy is only ever one level deep
- # [11:49] <hsivonen> Hixie: instead of recursing, a single-threaded browser engine should be able to put the parser state on the heap and spin through the event loop
- # [11:50] <Hixie> well the parser has to be interruptible in a browser anyway
- # [11:50] <Hixie> so it would just interrupt itself
- # [11:50] <Hixie> returning to the vent loop
- # [11:51] <Hixie> event
- # [11:51] <hsivonen> Hixie: right. and once you make it interruptible, I don't see why you'd ever want the *tree builder* to be re-entrant
- # [11:51] <Hixie> indeed
- # [11:51] <hsivonen> So I'm again in a situation where I'm trying to unroll the spec definition into something else but equivalent
- # [11:51] <Hixie> that is an expected situation, yes
- # [11:52] <Hixie> no spec will ever directly map to all implementations
- # [11:55] <hsivonen> Hmm. I can't figure how to make three-level-deep document.write have the right execution order in a GWT context where the browser owns the script execution but the script owns the parser
- # [11:55] <hsivonen> too bad. I can't use GWT to fully try stuff out then
- # [11:57] <Hixie> heh
- # [11:57] <annevk> http://www.p01.org/releases/DHTML_contests/files/20lines_hypno_trip_down_the_fractal_rug/
- # [11:58] <roc> Hixie: there was a discussion here with Doug Schepers a while ago about the SVG parsing thing
- # [11:58] <Hixie> roc: yeah, i think i saw that
- # [11:58] <roc> annevk: wow
- # [11:58] <hsivonen> hmm. I'm starting to suspect the "generic [R]CDATA algoritm" and the way Gecko executes document.written scripts doesn't match
- # [11:58] <hsivonen> hmm.
- # [11:59] <roc> annevk: somewhat abusive use of "20 lines" though
- # [11:59] <annevk> Hixie, I don't think there was much progress, though they assigned some actions
- # [11:59] <annevk> roc, "20 lines" is a dubious concept anyway :)
- # [11:59] <hsivonen> roc: I seriously think the same tokenizer should handle both HTML and SVG islands
- # [12:00] <Hixie> hsivonen: gecko has some thing where adding text to a script that hasn't executed will still execute
- # [12:00] <Hixie> hsivonen: i'm not sure if we need to put that in html5 or if gecko can change, it's something i should probably look at
- # [12:00] <roc> it seemed clear that a) the SVG group has a requirement that parsing of SVG fragments should impose XML-esque validation with strict error handling and that b) you have a requirement that parsing SVG fragments should not impose strict error handling
- # [12:01] <Hixie> that appears to be the case, yes
- # [12:01] <hsivonen> roc: in addition to requiring non-strict error handling for SVG fragments, I also want to require avoiding complexity in the parser
- # [12:01] <roc> so it doesn't really matter what the proposed solution is, since those two requirements are irreconcilable
- # [12:02] <hsivonen> roc: I'm OK with complexity imposed by the legacy Web
- # [12:02] <hsivonen> roc: I'm not OK with introducing new complexity for XML purity
- # [12:02] <hsivonen> we have to define what document.write does inside an SVG fragment
- # [12:03] <hsivonen> if the same tokenizer is used, document.write inside SVG doesn't cause new complexity
- # [12:03] <Hixie> roc: they're not completely irreconcilable, you could come up with some schemes where you fall from one to the other (and the remainder is treated as html, not svg)
- # [12:03] <Hixie> roc: but it does seem unlikely that such a scheme would fit into the various constraints we have
- # [12:03] <Hixie> anyway
- # [12:03] <hsivonen> if we'd change to an XML parser mid-stream, we'd have to figure out what exactly document.write does and how it can be implemented sanely
- # [12:03] <annevk> that's what they're looking at, but it's not really clear to me how that works with tokenizing etc.
- # [12:03] <roc> that's what Doug wanted to do actually
- # [12:04] <Hixie> i was just wondering if there was anything i needed to work on
- # [12:04] <Hixie> apparently there isn't yet
- # [12:04] <annevk> <keygen>
- # [12:04] <Hixie> <keygen>?
- # [12:04] <roc> okay, so if you would accept strict SVG parsing with errors falling back to HTML parsing, then progress is possible
- # [12:04] <roc> in theory
- # [12:05] <Hixie> potentially
- # [12:05] <hsivonen> I'd much rather spend my time delivering an additional serializer to address the copy-paste requirements of the SVG WG than to spend my time writing two tokenizers that can be switched mid-stream
- # [12:05] <Hixie> i'm not convinced such a scheme would work, but we'll find out in due course
- # [12:05] <annevk> Hixie, I guess that's part of WF2, but it'd be nice if it was in a spec so it becomes easier to advocate Koreans for instance into using it
- # [12:05] <roc> someone should ping them
- # [12:06] <roc> hsivonen: it's clear that having browsers reserialize as XML when copy/pasting is the right thing, but the SVG WG insists that copy-pasting in a text editor is a requirement
- # [12:06] <hsivonen> I'm not convinced the complexity imposed by additional strictness is a good use of anyone's limited resources
- # [12:06] <hsivonen> roc: I'd prefer to go with the right thing
- # [12:06] <roc> they want both
- # [12:07] <Dashiiiva> <pony/>
- # [12:08] <hsivonen> roc: it's easy to want it if writing the parser is Someone Else's Problem
- # [12:08] <roc> such is the life of the implementor
- # [12:09] <annevk> it doesn't really make sense to just accept that roc, imo
- # [12:09] <roc> I'm just the messenger
- # [12:09] <Hixie> annevk: send me a spec
- # [12:10] <annevk> if we just implemented whatever the W3C came up with we'd never beat Flash
- # [12:10] <Philip`> I think it wasn't clear whether they'd be unhappy with using the current SVG-in-HTML parsing rules and just defining conformance so that the content must be well-formed XML, so that conforming HTML5 SVG could always be copied into a real XML document, which seems to me kind of nicer than actual XML parsing since it wouldn't affect the parser at all
- # [12:10] <annevk> Hixie, I can't really get anything better than the old Netscape one, I guess I should try harder
- # [12:10] <annevk> :/
- # [12:10] <roc> Philip`: what do you mean "conforming"? They want browsers to check for well-formed XML of the SVG fragment before rendering it.
- # [12:11] * Philip` suggests black-box reverse engineering of <keygen>
- # [12:11] <hsivonen> Philip`: it does affect at least *a* parser if you expect that level of conformange to be checked in software
- # [12:11] <Hixie> annevk: neither could i, and that was basically useless
- # [12:12] <Hixie> right well. bed time. nn.
- # [12:12] <hsivonen> Hixie: http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%0A%3Cscript%3E%0Adocument.write(%27a%27)%3B%0Adocument.write(%27%3Cscript%3Edocument.write(%22c%22)%3C\%2Fscript%3E%27)%3B%0Adocument.write(%27b%27)%3B%0A%3C%2Fscript%3E%0A has the same result in Gecko and WebKit
- # [12:12] * Joins: myakura (n=myakura@p1216-ipbf601marunouchi.tokyo.ocn.ne.jp)
- # [12:12] <Philip`> roc: I don't think all of 'they' considers that as an absolute requirement, so they could perhaps be convinced away from that
- # [12:13] <roc> I tried
- # [12:14] <roc> with Doug at least. The WG as a whole hasn't been all that responsive to my other issues
- # [12:14] <roc> I wonder what heycam's position is on all this
- # [12:23] * Parts: annevk (n=annevk@pat-tdc.opera.com)
- # [12:23] * Joins: annevk (n=annevk@pat-tdc.opera.com)
- # [12:24] * othermaciej_ is now known as othermaciej
- # [12:27] <hsivonen> I guess I should go read some browser source on how document.write is implemented
- # [12:29] <othermaciej> document.write writes at the current insertion point
- # [12:29] <othermaciej> which might be beyond the end of the current script element
- # [12:30] <othermaciej> if it document.wrote something already
- # [12:31] <hsivonen> othermaciej: in WebKit, does the script engine call into the parser on document.write or schedule stuff for running and return to the main loop?
- # [12:31] <othermaciej> actually the insertion point starts right after the script, per-script, so when you document.write a script and then document.write something else, and that script document.writes, I think the content gets inserted before whatever was written after the second script
- # [12:31] <othermaciej> it just inserts stuff into the queue of characters to process
- # [12:31] <othermaciej> it does not return to the main loop at all
- # [12:31] <othermaciej> script execution during parsing is synchronous and blocks the parser
- # [12:32] <hsivonen> but when document.written data gets parsed, are there script engine stack frames on the call stack?
- # [12:33] <hsivonen> so if document.write document.writes, will the script engine be entered re-entrantly?
- # [12:33] <othermaciej> the script engine can be re-entered via the parser using innerHTML
- # [12:33] <othermaciej> but not document.write, I don't think
- # [12:33] <othermaciej> since nothing that document.write writes (to the current, parsing document) is processed until after the script completes execution
- # [12:34] <hsivonen> othermaciej: that doesn't seem to be the case
- # [12:34] <hsivonen> http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%0A%3Cscript%3E%0Adocument.write('a')%3B%0Adocument.write('%3Cscript%3Edocument.write(%22b%22)%3C%5C%2Fscript%3E')%3B%0Adocument.write('c')%3B%0A%3C%2Fscript%3E
- # [12:34] <othermaciej> well I could be misremembering it, this is a very confusing area
- # [12:35] <hsivonen> the document.written script runs before the script that wrote it finishes
- # [12:35] <othermaciej> is that true?
- # [12:35] <othermaciej> the live dom viewer does not prove that
- # [12:35] <othermaciej> the output ("abc") is consistent with what I described
- # [12:36] <Lachy> hsivonen, no, othermaciej is right.
- # [12:36] <othermaciej> first 'a<script>document.write("b")<\/script>c' is injected into the character stream right after the first script
- # [12:36] <othermaciej> then a is parsed
- # [12:36] <othermaciej> then the second script
- # [12:36] <othermaciej> which causes b to be injected into the token stream right after the second script
- # [12:37] <othermaciej> then c is parsed
- # [12:37] <othermaciej> each script starts with an insertion point right after its end tag
- # [12:37] <hsivonen> ah. excellent. That's what I thought at first, and then I got tangled in confusion
- # [12:37] <othermaciej> which may not be the same as the end of all currently inserted content
- # [12:37] <annevk> I wonder why Opera has two separate text nodes for bc
- # [12:38] <hsivonen> so why does the spec talk about re-entrant calls to the tree builder?
- # [12:38] <Lachy> hmm, maybe not.
- # [12:38] <Lachy> document.write('a');
- # [12:38] <Lachy> w(1);
- # [12:38] <Lachy> document.write('<script>document.write("b");w(3);<\/script>');
- # [12:38] <Lachy> w(2);
- # [12:38] <Lachy> document.write('c');
- # [12:38] <Lachy> that doesn't work as I'd expect it to.
- # [12:39] <Lachy> at least in Firefox.
- # [12:40] <Lachy> or in WebKit.
- # [12:40] <Lachy> w(3) is executing before w(2), so it seems it's not waiting until the first script is finished.
- # [12:46] <othermaciej> yeah that didn't do what I expected either
- # [12:47] <othermaciej> seems like it can re-enter to arbitrary levels
- # [12:47] <othermaciej> <script>
- # [12:47] <othermaciej> document.write('a');
- # [12:47] <othermaciej> alert(1);
- # [12:47] <othermaciej> document.write('<script>document.write("b<script>document.write(\'c\'); alert(4);<\\/script>"); alert(3);<\/script>');
- # [12:47] <othermaciej> alert(2);
- # [12:47] <othermaciej> document.write('d');
- # [12:47] <othermaciej> </script>
- # [12:50] <hsivonen> alert requires UI to be responsive
- # [12:50] <hsivonen> does alert establish a nested event loop or does alert cause the call stack to unwind to the main event loop?
- # [12:51] <hsivonen> document.write is hard
- # [13:03] <othermaciej> alert makes a modal event loop
- # [13:03] <othermaciej> it does not cause all UI to be responsive
- # [13:04] <hsivonen> in Firefox 3, alert is window-modal, although, as I understand it, the windows have their UI run on one thread
- # [13:05] <hsivonen> alert seems app-modal is Safari
- # [13:08] * Joins: htmlfivedotne1 (n=dcostali@c-67-162-99-121.hsd1.il.comcast.net)
- # [13:08] * Parts: htmlfivedotne1 (n=dcostali@c-67-162-99-121.hsd1.il.comcast.net)
- # [13:15] <heycam> roc, sorry for the delay on your www-svg issues
- # [13:15] <heycam> (note that a couple of them are on the agenda for today's telcon (which i won't be at))
- # [13:16] <hsivonen> I'm getting curious about support for incremental rendering of document.written content
- # [13:17] <annevk> <script> without async is not so good for incremental rendering
- # [13:19] <heycam> as for html in svg, i have to say that i (persionally) haven't had time to look into it. i believe the others did something on it at the F2F recently, and are writing up some text, but i haven't seen it.
- # [13:19] * heycam tv ⇒ afk
- # [13:23] <hsivonen> annevk: <script> without async *could* be good for incremental rendering, if a) layout runs on a different thread or b) the script engine stack is really on the heap, so that the C++ stack can unwind without breaking script state
- # [13:24] <hsivonen> however, I just saw some Gecko code that makes me want to write a test case to see if incremental layout works from document.written content
- # [13:25] <hsivonen> it seems safe to assume that Presto and Trident have concurrency models that differ significantly from Gecko and WebKit, which I gather are more alike
- # [13:42] * Quits: webben (n=benh@nat/yahoo/x-b23946d03e2f9faf)
- # [13:53] * Joins: ROBOd2 (n=robod@89.122.216.38)
- # [13:54] * Quits: ROBOd (n=robod@89.122.216.38) (Read error: 60 (Operation timed out))
- # [13:58] <Lachy> hey, I just realised that <iframe sandbox=""> could potentially create a false sense of security. If a website author uses it to embed user comments and hosts the comment file on the same domain as the parent page, it only protects the user as long as the comment page isn't viewed outside of the iframe.
- # [14:00] <Lachy> so websites would still need to filter out as much as possible, and keep sandbox="" only as a last line of defence.
- # [14:02] <Philip`> That would matter if you used <iframe sandbox src=...>, but you can't use that because it's unsafe in UAs that don't support sandboxing
- # [14:02] <Lachy> at the moment, that's the only way to do it, since there isn't yet a way to embed the markup inline.
- # [14:02] <Philip`> so you'd have to use <iframe sandbox doc="user's raw comment" src="some-file-with-user's-sanitised-comment.html"> and then it's alright anyway
- # [14:03] <Lachy> doc="" isn't specced yet.
- # [14:04] <Lachy> if you were going to sanitise the comment, then why embed the raw comment inline?
- # [14:05] * Joins: qwert666 (n=qwert666@acai2.neoplus.adsl.tpnet.pl)
- # [14:05] <Lachy> I'm just not convinced sandox is a good solution for sandboxing user contribued content. It could be good for embedding content from 3rd party sites though.
- # [14:06] <Philip`> The sanitised comment might strip out lots of safe content and styles that aren't in the whitelist, so it's uglier for users than the original unsanitised (sandboxed) comment
- # [14:07] <Philip`> so if their UA supports sandboxing then they can benefit from getting the unsanitised version
- # [14:07] <Lachy> if your sanitiser code is that bad, it's time to rewrite it.
- # [14:08] * Quits: myakura (n=myakura@p1216-ipbf601marunouchi.tokyo.ocn.ne.jp) ("Leaving...")
- # [14:08] * Joins: aaronlev (n=chatzill@f051105064.adsl.alicedsl.de)
- # [14:09] <Philip`> If it was possible to write a sanitiser that wasn't bad, why would anyone want client-side sandboxing?
- # [14:09] <Lachy> I just don't think it's a good idea to ever send unsanitised code to browsers. Imagine if there was a browser bug that inadvertently allowed something it shouldn't, and there were sites that published fully unsanitised comments, then you can bet there would be exploits pretty quickly.
- # [14:10] <Lachy> incase their sanitiser missed something by mistake, not because it could accidently remove something it shouldn't.
- # [14:12] <othermaciej> having both sanitization and client-side sandboxing is safer
- # [14:12] <othermaciej> to get an exploit through, you'd need matching mistakes on both ends
- # [14:12] * othermaciej is failing to sleep
- # [14:13] <Lachy> othermaciej, right. But if the server didn't sanitise, then the browser is the only line of defence, and you'd better hope there's no bug in it.
- # [14:13] <othermaciej> why is that a "but"?
- # [14:14] <Lachy> because I'm concerned that sandbox="" could create a false sense of security, where silly developers don't bother sanitising the code, and then it really doesn't depend on there being matching mistakes on both ends.
- # [14:15] <Lachy> it's just one really big mistake on the server side and whatever small mistake in the browser is enough.
- # [14:16] <Lachy> and if even Philip` is suggesting sending unsanitised code to browsers, I'm sure there will be developers in the wild crazy enough to do so as well.
- # [14:18] <othermaciej> one obviously shouldn't even remotely consider sending unsanitized code to browsers until sandbox="" is widely implemented, which won't be for a while
- # [14:19] <othermaciej> but even then it's probably not a good idea
- # [14:19] <othermaciej> defense in depth and all
- # [14:19] <Philip`> You could send unsanitised code in doc="" even if sandbox="" isn't implemented yet, as long as nobody implements doc="" before implementing sandbox=""
- # [14:20] <othermaciej> I'm willing to entertain the notion that adding sandbox="" could in some cases hurt security through second-order effects like you describe
- # [14:21] <othermaciej> but I think it is likely not the case, because the vast number of sites currently doing blacklist-based instead of whitelist-based sanitization may well be better off with sandbox="" and no server-side sanitization at all
- # [14:27] <Lachy> why? Blacklist sanitation is better than nothing, even though it's clearly a flawed approach.
- # [14:28] <virtuelv> blacklists do not scale
- # [14:28] <Lachy> virtuelv, yeah, I know that.
- # [14:28] <virtuelv> and especially if it's about cleaning markup
- # [14:28] <othermaciej> I would expect every blacklist-based filter to have holes, while browsers could plausibly implement sandbox="" close to correctly
- # [14:29] <othermaciej> nontheless, I think it is best to both filter on the server and use client-side restrictions
- # [14:34] * Joins: webben (n=benh@nat/yahoo/x-486bd7c0a10669ed)
- # [14:35] <Lachy> jgraham__, yt?
- # [14:36] <Lachy> jgraham__, are you ever intending to finish and publish that @media blog post on the whatwg blog?
- # [14:38] * Quits: weinig (n=weinig@c-71-198-176-23.hsd1.ca.comcast.net) (Read error: 104 (Connection reset by peer))
- # [14:38] * Joins: weinig (n=weinig@c-71-198-176-23.hsd1.ca.comcast.net)
- # [14:49] * Quits: mpt (n=mpt@canonical/launchpad/mpt) (Remote closed the connection)
- # [14:50] * Joins: mpt (n=mpt@canonical/launchpad/mpt)
- # [14:51] * Quits: tommorris (n=tommorri@i-83-67-98-32.freedom2surf.net)
- # [14:57] <zcorpan> Hixie: shouldn't currentLoop be readonly?
- # [15:16] * Quits: Lachy (n=Lachlan@pat-tdc.opera.com) ("This computer has gone to sleep")
- # [15:22] * Quits: deane (n=dean@121-72-175-170.dsl.telstraclear.net)
- # [15:24] * Quits: virtuelv (n=virtuelv@pat-tdc.opera.com) (Read error: 110 (Connection timed out))
- # [15:28] * Joins: Lachy (n=Lachlan@85.196.122.246)
- # [15:32] * Joins: itpastorn (n=itpastor@ne.keryx.se)
- # [15:38] * Joins: aroben (n=aroben@c-71-58-56-76.hsd1.pa.comcast.net)
- # [15:58] * Quits: mpt (n=mpt@canonical/launchpad/mpt) ("Ex-Chat")
- # [15:58] * Parts: Dashiiiva (n=noone@195.18.164.170)
- # [16:02] * Joins: mpt (n=mpt@canonical/launchpad/mpt)
- # [16:05] * Joins: Dashiiiva (n=noone@195.18.164.170)
- # [16:15] * Quits: itpastorn (n=itpastor@ne.keryx.se) ("Leaving.")
- # [16:20] * Joins: billmason (n=billmaso@ip232.unival.com)
- # [16:45] * Quits: maikmerten (n=merten@ls5laptop14.cs.uni-dortmund.de) (Remote closed the connection)
- # [16:47] * Quits: roc (n=roc@121-72-162-128.dsl.telstraclear.net)
- # [16:58] * Joins: tantek_ (n=tantek@adsl-63-195-114-133.dsl.snfc21.pacbell.net)
- # [16:58] * Quits: tantek_ (n=tantek@adsl-63-195-114-133.dsl.snfc21.pacbell.net) (Read error: 104 (Connection reset by peer))
- # [16:59] * Joins: tantek_ (n=tantek@adsl-63-195-114-133.dsl.snfc21.pacbell.net)
- # [17:03] <annevk> If someone else wants to reply again to the sandboxing thread, be my guest. It seems obvious to me that his solution is flawed, but I can't really put it in words.
- # [17:05] <annevk> <applet> use case: http://wordle.net/gallery/Faux_Columns
- # [17:05] * Joins: smedero (n=smedero@mdp-nat251.mdp.com)
- # [17:05] * annevk can't see the outcome
- # [17:05] * Quits: zcorpan (n=zcorpan@pat.se.opera.com)
- # [17:06] * annevk isn't sure whether that justifies <applet> or whether it's a sign that plugins are harmful
- # [17:06] <Philip`> <applet ... /> ... </applet>
- # [17:07] <Philip`> Oh wait
- # [17:07] <Philip`> Ignore me, I can't read
- # [17:07] <Philip`> (I missed the '><param' in the middle)
- # [17:07] <annevk> quirks mode :/
- # [17:08] <Philip`> That seems like an unnecessarily fancy way to display a static image
- # [17:09] <annevk> <applet> has a print() method?
- # [17:09] <Philip`> Oh, apparently that is actually necessary, in order to put the computation load on the clients instead of the server
- # [17:12] * Quits: tantek (n=tantek@adsl-63-195-114-133.dsl.snfc21.pacbell.net) (Read error: 110 (Connection timed out))
- # [17:12] <Philip`> (and it's not possible to do on the client even with the not-yet-implemented canvas text support, since it needs to analyse the shape of the characters)
- # [17:13] * Joins: csarven (n=csarven@on-irc.csarven.ca)
- # [17:22] * Joins: jgraham_ (n=james@81-86-219-217.dsl.pipex.com)
- # [17:34] * Joins: BenMillard (n=cerbera@cpc1-flee1-0-0-cust285.glfd.cable.ntl.com)
- # [17:43] <csarven> Is Safari treating it properly if <object type="text/html" data="#foo"></object> includes the current document? Firefox2, Opera9.5 and IE7 doesn't.
- # [17:44] <annevk> per HTML5, yes
- # [17:45] <annevk> per HTML4, probably also yes
- # [17:48] <csarven> Good to here that.
- # [17:51] <csarven> Except that Safari includes the whole document and not just the contents of the element with id "foo"
- # [17:51] <gsnedders> csarven: that's right
- # [17:51] <annevk> csarven, that would be correct, actually
- # [17:51] <gsnedders> csarven: It should load the same as what loading a URI with a fragment would do normally
- # [17:51] <annevk> csarven, there's no special treatment specified
- # [17:52] <csarven> Is there a user for the fragment identifier then?
- # [17:52] <csarven> s/user/use
- # [18:00] <annevk> it will show that within the <object>
- # [18:00] <annevk> http://simon.html5.org/html5-elements uses that for instance
- # [18:09] <csarven> annevk I see an <iframe> instead of <object>
- # [18:09] <annevk> it would work the same way
- # [18:10] * Quits: tantek_ (n=tantek@adsl-63-195-114-133.dsl.snfc21.pacbell.net)
- # [18:15] * Quits: weinig (n=weinig@c-71-198-176-23.hsd1.ca.comcast.net)
- # [18:26] * Quits: sverrej (n=sverrej@pat-tdc.opera.com) (Read error: 110 (Connection timed out))
- # [18:28] <csarven> annevk If data value is a fragment identifier of the current page, is it expected for the UA to not request the current page seperately?
- # [18:30] <annevk> they're not handled specifically so I'd expect an additional request
- # [18:30] <annevk> though given that three browsers disagree with WebKit it might be worth noting somewhere to see whether Opera/Firefox are planning on fixing this
- # [18:34] * Quits: JohnResig (n=jresig@c-76-118-158-44.hsd1.ma.comcast.net)
- # [18:38] * Joins: Dashimon (i=Dashiva@199.84-48-51.nextgentel.com)
- # [18:44] * Joins: eseidel (n=eseidel@c-67-180-49-110.hsd1.ca.comcast.net)
- # [18:48] * Quits: Dashiva (n=noone@wikia/Dashiva) (Read error: 110 (Connection timed out))
- # [18:48] * Dashimon is now known as Dashiva
- # [18:48] * Quits: eseidel (n=eseidel@c-67-180-49-110.hsd1.ca.comcast.net) (Client Quit)
- # [18:49] * Quits: mpt (n=mpt@canonical/launchpad/mpt) (Read error: 113 (No route to host))
- # [18:49] * Joins: hasather (n=hasather@ti0034a380-3359.bb.online.no)
- # [18:52] * Joins: mpt (n=mpt@canonical/launchpad/mpt)
- # [18:57] * Joins: JohnResig (n=jresig@c-76-118-158-44.hsd1.ma.comcast.net)
- # [18:58] * Joins: dbaron (n=dbaron@corp-241.mountainview.mozilla.com)
- # [18:59] * Parts: BenMillard (n=cerbera@cpc1-flee1-0-0-cust285.glfd.cable.ntl.com)
- # [19:05] * Joins: csarven- (n=csarven@on-irc.csarven.ca)
- # [19:11] * Quits: hasather (n=hasather@ti0034a380-3359.bb.online.no) (Read error: 110 (Connection timed out))
- # [19:15] * Quits: csarven (n=csarven@on-irc.csarven.ca) (Read error: 110 (Connection timed out))
- # [19:25] * csarven- is now known as csarven
- # [19:26] * Joins: tantek (n=tantek@137.164.255.6)
- # [19:41] * Joins: mpt_ (n=mpt@canonical/launchpad/mpt)
- # [19:49] * Joins: tantek_ (n=tantek@137.164.255.6)
- # [19:49] * Quits: tantek (n=tantek@137.164.255.6) (Read error: 104 (Connection reset by peer))
- # [19:57] * Quits: mpt (n=mpt@canonical/launchpad/mpt) (Read error: 113 (No route to host))
- # [20:03] * Joins: roc (n=roc@121-72-162-128.dsl.telstraclear.net)
- # [20:12] * Joins: virtuelv (n=virtuelv@192.80-203-77.nextgentel.com)
- # [20:12] * Quits: aaronlev (n=chatzill@f051105064.adsl.alicedsl.de) ("ChatZilla 0.9.82.1 [Firefox 3.0/2008052906]")
- # [20:12] * Joins: aaronlev (n=chatzill@f051105064.adsl.alicedsl.de)
- # [20:19] * Joins: hober (n=ted@unaffiliated/hober)
- # [20:20] * Joins: csarven- (n=csarven@on-irc.csarven.ca)
- # [20:21] * Quits: csarven (n=csarven@on-irc.csarven.ca) (Nick collision from services.)
- # [20:21] * csarven- is now known as csarven
- # [20:23] <Hixie> hsivonen: as far as i can tell, all the examples you posted and what othermaciej was saying are consistent with the spec
- # [20:24] <hsivonen> Hixie: yeah, they are. my understanding of document.write was flawed. sorry.
- # [20:25] * Quits: othermaciej (n=mjs@c-24-5-43-151.hsd1.ca.comcast.net)
- # [20:25] * Joins: KevinMarks (n=KevinMar@137.164.255.6)
- # [20:27] <Hixie> np
- # [20:28] * Joins: eseidel (n=eseidel@nat/google/x-07c60711a668ab9c)
- # [20:31] * Joins: sverrej (n=sverrej@84.38.144.42)
- # [21:03] * Quits: dbaron (n=dbaron@corp-241.mountainview.mozilla.com) ("8403864 bytes have been tenured, next gc will be global.")
- # [21:05] * Quits: KevinMarks (n=KevinMar@137.164.255.6) ("The computer fell asleep")
- # [21:12] <hsivonen> I could use a more detailed diagram of how document.write is supposed to work
- # [21:13] <hsivonen> I'm having doubts about whether the "insertion point" is the most intuitive concept
- # [21:14] <hsivonen> and if treating document.written data as separate buffers that get pushed to the tokenizer would be easier to grasp
- # [21:17] * Quits: tantek_ (n=tantek@137.164.255.6)
- # [21:25] * Joins: othermaciej_ (n=mjs@nat/apple/x-d83e54a4c6c105d8)
- # [21:27] * Joins: zcorpan_ (n=zcorpan@c-cb21e353.1451-1-64736c12.cust.bredbandsbolaget.se)
- # [21:27] <zcorpan_> googling for "acid3" shows a link "FAIL" to http://acid3.acidtests.org/empty.txt , that's pretty funny
- # [21:28] <zcorpan_> Hixie: clearly, google isn't standards compliant
- # [21:30] <Lachy> is anyone here actually able to load getfirefox.com and download FF3 now? I can't connect.
- # [21:30] <webben> Lachy: That's a common experience.
- # [21:31] <Lachy> it's not good enough. How do they expect to break a world record like this?
- # [21:31] <webben> are they trying to?
- # [21:31] <Lachy> yes, haven't you heard?
- # [21:31] <zcorpan_> Lachy: wfm
- # [21:31] <didymos> Lachy, John Gruber at Daring Fireball is saying the same thing
- # [21:32] <Lachy> http://weblogs.mozillazine.org/asa/archives/2008/06/download_day_st.html
- # [21:32] <webben> nah, I've studiously avoided all the hypes and just kept downloading latest prereleases ;)
- # [21:32] <didymos> personally, I got there at first attempt (just now)
- # [21:32] <Lachy> the link to the world record page won't work either.
- # [21:32] <webben> yeah, was just gonna say ;)
- # [21:33] <Hixie> google fails acid2 as well iirc
- # [21:34] <zcorpan_> Hixie: that clearly shows google's commitment to standards ;)
- # [21:34] <Lachy> google is a non-visual UA with little, if any, support for JS. So it doesn't really have much hope of fully passing the tests.
- # [21:37] * Joins: dbaron (n=dbaron@corp-241.mountainview.mozilla.com)
- # [21:39] * Quits: othermaciej_ (n=mjs@nat/apple/x-d83e54a4c6c105d8) (Read error: 104 (Connection reset by peer))
- # [21:40] * Joins: othermaciej_ (n=mjs@nat/apple/x-39ce087fe668d5b1)
- # [21:40] * zcorpan_ finds registerProtocolHandler() in the firefox advanced tips
- # [21:45] * zcorpan_ finds that http://www.mozilla.com/js/firefox-video-launch.js is text/html
- # [21:46] <gsnedders> zcorpan_: Who needs correct MIME types?
- # [21:46] <zcorpan_> gsnedders: indeed
- # [21:55] * Quits: roc (n=roc@121-72-162-128.dsl.telstraclear.net)
- # [21:56] * Joins: csarven- (n=csarven@on-irc.csarven.ca)
- # [21:58] * Quits: sverrej (n=sverrej@84.38.144.42) (Remote closed the connection)
- # [21:58] * Quits: csarven- (n=csarven@on-irc.csarven.ca) (Read error: 104 (Connection reset by peer))
- # [22:00] * Quits: zcorpan_ (n=zcorpan@c-cb21e353.1451-1-64736c12.cust.bredbandsbolaget.se) (Remote closed the connection)
- # [22:01] <hsivonen> Hixie: I'm reading https://bugzilla.mozilla.org/show_bug.cgi?id=95487#c39
- # [22:01] * Hixie learns his backup system has been broken since february
- # [22:01] * Joins: zcorpan_ (n=zcorpan@c-cb21e353.1451-1-64736c12.cust.bredbandsbolaget.se)
- # [22:01] <Hixie> "oops"
- # [22:02] <hsivonen> Hixie: which seems to confirm my guess that document.written content is parsed without letting the event loop breathe
- # [22:02] <Hixie> sounds plausible
- # [22:03] <hsivonen> Hixie: does the spec expect the relationship of normal parsing and the first level of doc.write and the relationship of the first and second levels of doc.write to be different somehow
- # [22:03] <hsivonen> ?
- # [22:03] <Hixie> yes, you can only recurse once
- # [22:03] * Joins: hasather_ (n=hasather@cm-84.215.63.253.getinternet.no)
- # [22:04] <hsivonen> Hixie: what takes care of preventing deeper recursion?
- # [22:04] * Hixie looks
- # [22:05] * hsivonen wonders if document.write was considered a simple feature in the Netscape 2 design phase
- # [22:06] <Philip`> I imagine they designed it to be simple to implement in their architecture, and as hard as possible for any competitors to implement in their different architectures :-)
- # [22:07] * Joins: othermaciej (n=mjs@17.255.105.164)
- # [22:07] * Quits: csarven (n=csarven@on-irc.csarven.ca) (Read error: 110 (Connection timed out))
- # [22:08] <Hixie> hsivonen: step 3 of document.write()
- # [22:08] <hsivonen> "If there is a script that will execute as soon as the parser resumes, then the method must now return without further processing of the input stream."?
- # [22:09] <hsivonen> why does the behavior othermaciej showed earlier follow?
- # [22:09] <Hixie> yeah
- # [22:09] * Joins: KevinMarks (n=KevinMar@137.164.255.6)
- # [22:10] <hsivonen> in that case, the second level of document.write wrote a third level of script that executed similarly relative to the second level as the second level did relative to the first level
- # [22:11] <Hixie> give me a concrete example and i'll try to describe how it runs
- # [22:11] <hsivonen> http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%0D%0A%3Cscript%3E%0D%0Adocument.write('a')%3B%0D%0Aalert(1)%3B%0D%0Adocument.write('%3Cscript%3Edocument.write(%22b%3Cscript%3Edocument.write(%5C'c%5C')%3B%20alert(4)%3B%3C%5C%5C%2Fscript%3E%22)%3B%20alert(3)%3B%3C%5C%2Fscript%3E')%3B%0D%0Aalert(2)%3B%0D%0Adocument.write('d')%3B%0D%0A%3C%2Fscript%3E%0D%0A
- # [22:11] <othermaciej> it looks like in Firefox and WebKit at least execute scripts that are document.written while executing another script
- # [22:11] <othermaciej> I made this test case:
- # [22:11] <othermaciej> <script>
- # [22:11] <othermaciej> document.write('a');
- # [22:11] <othermaciej> alert(1);
- # [22:11] <othermaciej> document.write('<script>document.write("b<script>document.write(\'c\'); alert(4);<\\/script>"); alert(3);<\/scr\
- # [22:11] <othermaciej> ipt>');
- # [22:11] <othermaciej> alert(2);
- # [22:11] <othermaciej> document.write('d');
- # [22:11] <othermaciej> </script>
- # [22:11] <othermaciej> (sorry for bad line break)
- # [22:11] <othermaciej> it alerts 1 4 3 2
- # [22:11] <othermaciej> but prints abcd
- # [22:13] <Hixie> ok hsivonen
- # [22:13] <Hixie> so
- # [22:13] <gsnedders> jgraham__: ping
- # [22:14] <Hixie> we tokenise up to the bottom of the input
- # [22:14] <jgraham_> gsnedders: Here, sorta
- # [22:15] <gsnedders> jgraham_: How do you get what's under `elif rank(element) >= rank(self.current_section.heading):` from the spec?
- # [22:15] <Hixie> then we create a <Script> element and mark it "parser-inserted"
- # [22:16] * Joins: weinig (n=weinig@17.203.15.145)
- # [22:16] <Hixie> let "old insertion point" be "uninitialised"
- # [22:16] <Hixie> let "insertion point" be just after the </script>
- # [22:17] <Hixie> we then insert the element into the DOM and run the script, which goes as follows:
- # [22:18] <Hixie> first a call to document.write()
- # [22:18] <Hixie> step 1: insertion point is defined, skip this step
- # [22:19] <Hixie> step 2: "a" is inserted after </script>
- # [22:19] <Hixie> step 3: skip this step
- # [22:19] * Joins: tantek (n=tantek@137.164.255.6)
- # [22:19] <gsnedders> jgraham_: As far as I can see, you deviate from the spec
- # [22:20] <Hixie> step 4: run the tokeniser on the new input (just "a"), which just causes a text node saying "a" to be appended after the <script> in the DOM
- # [22:20] <Hixie> step 5: return
- # [22:20] <Hixie> next an alert. we alert "1".
- # [22:20] <Hixie> next another document.write().
- # [22:20] <Hixie> step 1: insertion point is defined, skip this step
- # [22:20] <jgraham_> gsnedders: I'll have a look.
- # [22:21] <gsnedders> jgraham_: Meaning Hixie's algorithm is broken, and it's not an implementation bug on my behalf
- # [22:21] * gsnedders hopes it is Hixie's fault so then he doesn't have to deal with it :P
- # [22:21] <Hixie> step 2: just after the "a" (and before the insertion point) we insert |<script>document.write("b<script>document.write('c'); alert(4);<\/script>"); alert(3);</script>|.
- # [22:21] <Hixie> step 3: skip this step
- # [22:21] * Quits: webben (n=benh@nat/yahoo/x-486bd7c0a10669ed)
- # [22:22] <Hixie> step 4: run the tokeniser:
- # [22:22] * Quits: othermaciej_ (n=mjs@nat/apple/x-39ce087fe668d5b1) (Read error: 110 (Connection timed out))
- # [22:22] <Hixie> we tokenise a <script>
- # [22:22] <Hixie> create a <script> element.
- # [22:22] <Hixie> mark it as "parser-inserted".
- # [22:23] <Hixie> tokenise until we get the </script>, and append that string to the <script>
- # [22:23] <Hixie> let "old insertion point" be just after the last inserted piece of text (basically the end of the file)
- # [22:24] * Quits: weinig (n=weinig@17.203.15.145)
- # [22:24] <gsnedders> jgraham_: I must be blind if it is in the spec :)
- # [22:24] <Hixie> we let "insertion point" be the same, actually.
- # [22:25] <Hixie> append the <script> to the DOM
- # [22:25] <Lachy> hmm, weird. Whenver I'm able to load getfirefox.com, it still links to Firefox 2
- # [22:25] <Hixie> this is the script that says |document.write("b<script>document.write('c'); alert(4);<\/script>");alert(3);|
- # [22:26] <Hixie> it's inline, so it executes.
- # [22:26] <jgraham_> gsnedders: I really should have commented this code more :)
- # [22:26] <Hixie> we call document.write() again.
- # [22:26] <jgraham_> The relevant part of the spec is "Otherwise, if the element being entered has a rank equal to or greater than the heading of the current section, then create a new section and append it to the outline of the current outlinee element, so that this new section is the new last section of that outline. Let current section be that new section. Let the element being entered be the new heading for the current section."
- # [22:26] <jgraham_> But I have no idea if that's the same as my implementation or not
- # [22:27] <hsivonen> Hixie: so far, we haven't had "a script that will execute as soon as the parser resumes", right?
- # [22:27] <Hixie> correct (in fact i think we won't because in this example you never have <script src="">)
- # [22:27] <gsnedders> jgraham_: It's totally different
- # [22:28] <gsnedders> jgraham_: the spec needs three lines
- # [22:28] <Hixie> so i guess the spec doesn't (and shouldn't) limit it to two deep for inline scripts
- # [22:28] <gsnedders> jgraham_: and no loop
- # [22:28] <Hixie> do you want me to continue?
- # [22:28] <hsivonen> Hixie: no need to. thank you.
- # [22:28] <Hixie> k
- # [22:29] * Hixie breathes a sigh of relief because this was getting complicated
- # [22:29] <hsivonen> Hixie: the concept of "a script that will execute as soon as the parser resumes" could be more clearly named so that the reader wouldn't try to see if an inline script can be it
- # [22:29] <Hixie> any suggestions for a better name?
- # [22:30] <Hixie> an external script, maybe?
- # [22:30] <hsivonen> not before I have figured out what exactly it is
- # [22:30] <gsnedders> http://pastebin.com/m7524f744 — that's the rather bogus TOC I'm getting
- # [22:30] <jgraham_> gsnedders: http://lists.w3.org/Archives/Public/public-html/2008Mar/0032.html
- # [22:30] <hsivonen> if it always an external script, then, yes, "external script" would be good
- # [22:30] <gsnedders> Hixie: Fix that!
- # [22:30] <hsivonen> no I have to learn why their execution has different steps :-/
- # [22:30] * gsnedders runs and hides
- # [22:31] * gsnedders implements jgraham_'s prose
- # [22:31] <Hixie> hsivonen: external scripts have to be downloaded
- # [22:31] <hsivonen> Hixie: did my email "Re-entrant invocation of the tree builder" make sense?
- # [22:31] <Hixie> when did you send it?
- # [22:31] <hsivonen> public-html
- # [22:32] * zcorpan_ wonders if public-html is a moment in time
- # [22:32] <Hixie> oh just now
- # [22:32] <hsivonen> oops. I misread when as where
- # [22:33] <hsivonen> 45 minutes ago
- # [22:34] * Hixie works out why his backup wasn't working
- # [22:35] <Hixie> it was trying to back up three machines
- # [22:35] <Hixie> the first one is one that i turned off in february
- # [22:35] <Hixie> so my makefile was failing
- # [22:35] <Hixie> oops
- # [22:36] <jgraham_> gsnedders: You can always vote in favour of the issue :)
- # [22:36] <gsnedders> jgraham_: Coward! Just bully Hixie!
- # [22:36] <hsivonen> a <script src> load stops the world until loaded, right?
- # [22:37] <Hixie> gsnedders: (will get to your issue momentarily)
- # [22:37] <Hixie> hsivonen: not if it's nested deeply enough, iirc
- # [22:39] * gsnedders realises he has no way to get at the parent of a section
- # [22:40] <hsivonen> Hixie: I guess I should convert othermaciej's example to use external scripts and see how the scripts run
- # [22:40] <hsivonen> having them run differently than in the inline case seems counter-intuitive
- # [22:41] <gsnedders> jgraham_: self[::-1] — what do two colons do?
- # [22:41] <Hixie> hsivonen: oh, no, wait
- # [22:41] <Hixie> hsivonen: the problem is this
- # [22:41] <Hixie> hsivonen: it's a script the document.write()s multiple things in a row
- # [22:41] <Hixie> hsivonen: one of which is external
- # [22:41] <Hixie> hsivonen: it doesn't block script execution iirc
- # [22:41] <Hixie> hsivonen: only the parser
- # [22:42] <hsivonen> like document.write("<script src=foo><\/script><script src=bar><\/script>")
- # [22:42] <hsivonen> ?
- # [22:43] <Philip`> gsnedders: things[x:y:z] means things[x], things[x+z], things[x+2*z], ... up to things[x+n*z] where n is the maximum number such that x+n*z < y, or something like that
- # [22:43] <Philip`> gsnedders: and if x is omitted it means 0, and if y is omitted it means len(things)
- # [22:44] <Philip`> gsnedders: oh but my explanation breaks down a bit
- # [22:44] <Hixie> hsivonen: more like document.write("<script src=alert2><\/script>");alert(1);
- # [22:44] <Philip`> gsnedders: but if you ignore all the details, then that means self[::-1] is just reversed(self)
- # [22:44] <hsivonen> Hixie: that seems counter-intuitive
- # [22:44] <Philip`> gsnedders: (but compatible with older Pythons that don't have 'reversed')
- # [22:45] <gsnedders> Philip`: ah
- # [22:45] <Hixie> hsivonen: specifically, <script>document.write("<script src=alert2><\/script>");document.write("this won't be tokenised until after the alert1 and alert2");alert(1);</script>
- # [22:45] <Hixie> hsivonen: see the /topic
- # [22:45] <hsivonen> Hixie: thanks. I need to study this in detail.
- # [22:47] <Hixie> when you test this beware of hitting the cache; in some browsers that changes the behaviour
- # [22:47] <Hixie> html5 goes out of its way not to be cache-sensitive here
- # [22:47] <hsivonen> fun!
- # [22:48] * Quits: ROBOd2 (n=robod@89.122.216.38) ("http://www.robodesign.ro")
- # [22:49] <jgraham_> gsnedders: What Philip` said. http://www.python.org/doc/2.3.5/whatsnew/section-slices.html
- # [22:49] <Hixie> hsivonen: specifically in the spec this is implemented by having the "pause until the script has completed loading" be only ever executed in the very outer tree construction invokcation
- # [22:49] <Hixie> invocation
- # [22:53] * Joins: aaronlev_ (n=chatzill@f051105064.adsl.alicedsl.de)
- # [22:55] <hsivonen> Hixie: so regarding my email, I could substitute checking if the tree builder is invoked recursively with checking if there's a document.write on the call stack?
- # [22:57] <Hixie> i believe that is currently equivalent, yes
- # [22:57] <Hixie> be wary of changes that violate that assumption, in case we ever add other ways to be reentrant
- # [22:57] <hsivonen> Hixie: thanks
- # [22:58] <hsivonen> Hixie: it seems that it's necessary to keep track of document.write nesting level anyway: http://bonsai.mozilla.org/cvsblame.cgi?file=mozilla/content/html/document/src/nsHTMLDocument.cpp&rev=3.785&mark=2417-2420#2413
- # [22:59] * Quits: othermaciej (n=mjs@17.255.105.164)
- # [23:00] * Quits: zcorpan_ (n=zcorpan@c-cb21e353.1451-1-64736c12.cust.bredbandsbolaget.se) (Remote closed the connection)
- # [23:01] <Hixie> hsivonen: there are other ways to implement that restriction
- # [23:01] <Hixie> replid to your mail btw
- # [23:02] <Hixie> replied
- # [23:02] <hsivonen> Hixie: restricting recursion depth?
- # [23:02] <hsivonen> Hixie: thanks
- # [23:02] * Joins: zcorpan_ (n=zcorpan@c-cb21e353.1451-1-64736c12.cust.bredbandsbolaget.se)
- # [23:03] <Hixie> well what you really want to make sure is that a document.write() doesn't write a script that does another document.write(), but there's no guarantee that the second will be run while the first is on the call stack
- # [23:03] <Hixie> (or rather, you want to block that but only when it's in an infinite loop)
- # [23:03] * Quits: jgraham_ (n=james@81-86-219-217.dsl.pipex.com) ("I get eaten by the worms")
- # [23:04] <Hixie> another way is just to limit how much cpu/ram a script can use
- # [23:04] <gsnedders> Infinite loops are _awesome_!
- # [23:05] <gsnedders> I mean, how else are you going to use a modern CPU?
- # [23:05] * Joins: othermaciej (n=mjs@17.255.105.164)
- # [23:05] <hsivonen> Hixie: I'll have to ponder your point about appending to a buffer on stack tomorrow
- # [23:05] <hsivonen> it's past my bed time
- # [23:05] <Hixie> nn
- # [23:06] <hsivonen> nn.
- # [23:06] <Hixie> and thanks for implementing this
- # [23:06] <Hixie> it's good to have someone look at it this closely
- # [23:10] * Quits: aaronlev (n=chatzill@f051105064.adsl.alicedsl.de) (Connection timed out)
- # [23:16] * Quits: qwert666 (n=qwert666@acai2.neoplus.adsl.tpnet.pl) ("Leaving")
- # [23:20] * Joins: roc (n=roc@202.0.36.64)
- # [23:22] <zcorpan_> Hixie: the spec annotation system gives 500 when trying to log in
- # [23:23] <Hixie> yeah
- # [23:23] <Hixie> i need to reboot the server
- # [23:23] * zcorpan_ was going to add a pointer to http://simon.html5.org/test/html/dom/interfaces/HTMLElement/HTMLMediaElement/ somewhere
- # [23:23] <Hixie> for some reason dreamhost have apache set to spawn more processes than the server can handle, and it doesn't reap them
- # [23:23] <Hixie> so we run out of ram
- # [23:23] <zcorpan_> buy more ram :)
- # [23:24] <Hixie> send me money :-)
- # [23:24] <zcorpan_> doh :(
- # [23:24] <zcorpan_> you should be happy i'm writing tests! :-p
- # [23:25] <zcorpan_> though the ones i've got so far are pretty boring
- # [23:26] <Hixie> :-)
- # [23:26] <Hixie> try now
- # [23:27] <zcorpan_> still 500
- # [23:27] <Hixie> sigh
- # [23:28] <Hixie> try now
- # [23:28] <zcorpan_> still
- # [23:28] <zcorpan_> i'll try tomorrow
- # [23:28] <zcorpan_> bedtime
- # [23:28] <Hixie> nn
- # [23:29] <zcorpan_> nn
- # [23:29] * Parts: zcorpan_ (n=zcorpan@c-cb21e353.1451-1-64736c12.cust.bredbandsbolaget.se)
- # [23:29] * Joins: manko (n=asdf@ip2-195.thearbours.orl.ygnition.net)
- # [23:31] <Lachy> Hixie, how much does dreamhost charge for your private server?
- # [23:31] * Joins: weinig (n=weinig@17.203.15.145)
- # [23:32] <Hixie> $1 per 10 MHz CPU and 10MB RAM per month
- # [23:32] <Lachy> and how much do you pay for?
- # [23:33] <Hixie> varies based on load
- # [23:33] <Lachy> ok
- # [23:33] <Hixie> right now (high load on acid3 for no apparent reason) i'm using just under 1.5GB RAM
- # [23:35] <Philip`> The release of Firefox 3 seems like an apparent reason for people to try Acid3
- # [23:36] <Lachy> it only scores 51
- # [23:36] <Hixie> yeah that was my reasoning too, but the referrers were all over hte place
- # [23:36] <roc> Lachy: no way, it should be over 70
- # [23:36] <Lachy> oh, 71. It just paused at 51 for some reasonj
- # [23:36] <Philip`> You ought to just cache the results based on UA string - there's no point having a hundred million people run the same test with an identical browser, and it's an awful waste of energy
- # [23:36] <Hixie> heh
- # [23:37] <othermaciej> there's some networking in the middle of the test
- # [23:37] <Hixie> yeah run it twice to get real results, otherwise your network will have too much effect on the test
- # [23:38] * Lachy just runs his localhost copy of the test so it doesn't suffer from network issues
- # [23:38] <othermaciej> I told people to try the Safari 4 Developer Preview on Acid3 at WWDC, but I doubt that generated a whole lot of traffic
- # [23:38] <Hixie> ok yeah running the logs through just checking the UA string instead of the referrer does indeed indicate that it's all ff3 users
- # [23:38] <Hixie> mostly on xp
- # [23:38] * Philip` just looks on Wikipedia to get the Acid3 results
- # [23:38] <Hixie> some opera 9.5 users too
- # [23:39] <Lachy> othermaciej, how recent is Safari 4 compared to the latest nightly WebKit?
- # [23:39] <gsnedders> Hixie: Can you deal with <http://lists.w3.org/Archives/Public/public-html/2008Mar/0032.html> over night?
- # [23:39] <othermaciej> Lachy: it's an older WebKit, but a newer Safari (although you can run a nightly with S4DP installed)
- # [23:40] <Lachy> is Safari 4 only available to people with ADC accounts?
- # [23:40] <othermaciej> the preview is up on ADC, which you need an account to access, but getting an ADC account is free
- # [23:41] <Lachy> ok, I have a free account.
- # [23:41] <Hixie> gsnedders: ok
- # [23:42] <othermaciej> Lachy: you should be able to get it then (though I am not sure how to find the download, probably the search feature will find it)
- # [23:43] <Lachy> yeah, found it.
- # [23:43] <Lachy> when you log in, there's a link that says downloads and it's the 3rd listed under What's New
- # [23:43] * manko is now known as White_Leviathan
- # [23:43] <othermaciej> cool
- # [23:44] <Lachy> does it have any cool new UI features that weren't in Safari 3?
- # [23:45] <smedero> Lachy: It handles what Fluid does nicely http://fluidapp.com/ (creating dedicated "apps" for websites)
- # [23:47] <Lachy> ok. Why do I have to restart after installing Safari? It's like a Windows installer! :-(
- # [23:47] <Lachy> brb
- # [23:47] * Quits: Lachy (n=Lachlan@85.196.122.246) ("Leaving")
- # [23:49] * weinig is now known as weinig|coffee
- # [23:49] * Joins: Lachy (n=Lachlan@85.196.122.246)
- # [23:52] <othermaciej> Lachy: you can actually force quit the installer when it tells you to reboot, as long as you quit all WebKit apps
- # [23:52] <othermaciej> Lachy: if you are willing to live on the edge a little
- # [23:53] <Lachy> ah, too late. I already restarted.
- # [23:53] <othermaciej> anyway, it has "Save as Web Application" which among other things supports HTML5 <link rel="icon" sizes=...> and <meta name="application-name" ...>
- # [23:53] <Lachy> oh, nice.
- # [23:54] * Quits: eseidel (n=eseidel@nat/google/x-07c60711a668ab9c)
- # [23:54] <Hixie> the installer should probably list the applications you have to close instead of just rebooting :-)
- # [23:54] <othermaciej> http://webkit.org/blog has the right markup
- # [23:54] <othermaciej> if you wanna test it out
- # [23:54] <Lachy> better yet, the installer should just tell me which applications it wants to close, ask if it's ok and do it automatically
- # [23:55] <othermaciej> (but it will genreate a name and icon if needed)
- # [23:55] * Quits: virtuelv (n=virtuelv@192.80-203-77.nextgentel.com) ("Ex-Chat")
- # [23:55] <othermaciej> sadly I am not an installer engineer, but I see you rpoint
- # [23:57] * Parts: hasather_ (n=hasather@cm-84.215.63.253.getinternet.no)
- # [23:59] * Quits: smedero (n=smedero@mdp-nat251.mdp.com) (Read error: 104 (Connection reset by peer))
- # [23:59] <Lachy> othermaciej, http://webkit.org/images/surfin-safari.icns is served as text/plain.
- # [23:59] <othermaciej> Lachy: I guess I should figure out how to reconfigure the server
- # [23:59] <Lachy> and although Firefox sniffed it as binary, Safari didn't and displayed a lot of jibberish.
- # Session Close: Wed Jun 18 00:00:00 2008
The end :)