00:28
<MikeSmith>
hsivonen: bugzilla.validator.nu unresponsive
00:28
<MikeSmith>
or responding only very slowly
00:29
<MikeSmith>
"Remote DOM Community Group"?
00:29
<MikeSmith>
http://www.w3.org/community/blog/2013/06/09/proposed-group-remote-dom-community-group/
00:29
<MikeSmith>
[[Similarly to how the Shadow DOM paved the way for custom elements using web technologies, a “Remote DOM” could allow display of portions of the web app to be displayed on “remote” (i.e. “external”) devices, such as screens, Smart TVs, etc.
02:16
<MikeSmith>
help me out here
02:17
<MikeSmith>
http://www.whatwg.org/specs/web-apps/current-work/multipage/named-character-references.html#entity-copy-legacy
02:17
<MikeSmith>
that means the spec requires "&copy" (without the semicolon) to be displayed as U+000A9 (the copyright symbol), right?
02:20
<annevk>
MikeSmith: might depend on the context
02:20
<MikeSmith>
k
02:21
<annevk>
MikeSmith: actually, testing <body title=&copy>test&copytest that seems to be what it means
02:22
<MikeSmith>
annevk: yeah, and in stuff like href='http://example.org/demo?id=hello&copy=1&world=fun'; too
02:23
<MikeSmith>
anywhere actually
02:23
<MikeSmith>
regardless of the context, I think
02:23
<MikeSmith>
as far as the parser behavior goes
02:25
<annevk>
MikeSmith: so actually
02:25
<annevk>
MikeSmith: "If the character reference is being consumed as part of an attribute, and the last character matched is not a U+003B SEMICOLON character (;), and the next character is either a U+003D EQUALS SIGN character (=) or an alphanumeric ASCII character, then, for historical reasons, all the characters that were matched after the U+0026 AMPERSAND character (&) must be unconsumed, and nothing is returned."
02:26
<annevk>
MikeSmith: so <body title=&copys> has a title of "&copys"
02:26
<annevk>
and not "©s"
02:27
<MikeSmith>
hmm OK
02:27
<MikeSmith>
I missed the part about the equals sign
02:27
<MikeSmith>
ah yeah, "alphanumeric ASCII character" too
02:31
<MikeSmith>
shit now I have to scribe
02:54
<annevk>
did you give the person asking a shit-bow?
03:11
<MikeSmith>
man I didn't do a good job of scribing that
03:48
<annevk>
Do we have anything else besides WebSocket with regards to streaming?
03:48
<annevk>
Oh doh, EventSource
03:50
<annevk>
http://wiki.whatwg.org/wiki/Streams ...
05:28
<JonathanNeal>
So, <hn> elements section content by nature, correct?
07:06
<SteveF>
JonathanNeal: yup
08:04
<hsivonen>
MikeSmith: seems to work now but slowly
08:05
<MikeSmith>
hsivonen: yeah very slowly
08:14
<hsivonen>
MikeSmith: it should now be better for a little while again
08:15
<hsivonen>
the validator process would benefit from running on Heroku-like infrastructure
08:15
<hsivonen>
but I don't want the DMCA exposure of hosting it in the U.S.
08:16
<hsivonen>
and European companies seem to be too incompetent to come up with something like Heroku
08:16
<Ms2ger>
It's already hosted on the NSA servers too
08:16
<MikeSmith>
hsivonen: thanks I just tried again and it's better and I'll take advantage of it to update a few bugs :-)
08:16
<hsivonen>
Ms2ger: I don't mean in terms of NSA exposure. I mean in terms of the public U.S. legal system.
08:18
<Ms2ger>
(Just joking about the NSA now, because everyone will have forgotten next month)
08:26
<hsivonen>
If I decided to pay for a separate bugzilla server, what guide should I follow to set up bugzilla in such a way that getting security updates works?
08:29
<hsivonen>
oh. awesome. We don't seem to fire DOMContentLoaded for XSLT-generated docs
08:29
<hsivonen>
bug or feature?
08:30
<darobin>
I would assume that no one knows :)
08:31
<MikeSmith>
hsivonen: run Debian stable on the server you use for bugzilla?
08:31
<hsivonen>
my patch starts accidentally firing DOMFrameContentLoaded for the XSLT source docs
08:31
<hsivonen>
MikeSmith: do they backport patches?
08:31
<hsivonen>
MikeSmith: do I get an ancient Bugzilla?
08:32
<MikeSmith>
hsivonen: current Debian stable has version 4.2.5 I think
08:32
<hsivonen>
Gecko also has a bug when it comes to sizing the view port for an XSLT-generated doc in an iframe
08:32
<Ms2ger`>
Yay, XSLT
08:33
<hsivonen>
my problem: I don't forget to test XSLT
08:33
<Ms2ger`>
No good deed goes unpunished
08:33
<MikeSmith>
hsivonen: I don't know how Debian handles patches but I think stable gets regular security-patch updates
08:33
<darobin>
wait, you mean you've made it so that the xml-stylesheet PI fires DOMFrameContentLoaded?
08:34
<darobin>
somehow I find that very funny
08:34
<darobin>
not entirely sure why
08:35
<Ms2ger`>
darobin, you're French, and drunk? I dunno
08:35
<jgraham>
darobin: Not enough coffee? Too much coffee?
08:35
<darobin>
I opt for jgraham's explanation
08:36
<darobin>
maybe the last shreds of sanity I had has finally evaporated
08:37
<hsivonen>
So since we have a pre-existing bug about XSLT not filing DOMContentLoaded, I think I'll take the EME approach and declare that fixing that bug is out of scope of the fix for the bug I'm trying to fix
08:39
<darobin>
when would XSLT fire DCL anyway? before or after transformation? (given that new resources are likely involved)
08:41
<jgraham>
I would assume after
08:41
<jgraham>
OTOH, as we previously discussed, Gecko's XSLT suffers from trying to do things too well
08:41
<hsivonen>
darobin: after
08:45
<zcorpan>
https://github.com/Masterminds/html5-php "This project initially began with the seemingly abandoned html5lib project original source. But after some initial refactoring work, we began a new parser."
08:46
<zcorpan>
hsivonen: have you opened a bug yet about abandoning the xslt code path (i.e. doing the wrong thing)?
08:47
<jgraham>
"The Tokenizer requests data off of the scanner, parses it, clasifies it, and sends it to an EventHandler. It is a recursive descent parser."
08:47
<jgraham>
I don't understand
08:48
<hsivonen>
zcorpan: I haven't
08:49
<zcorpan>
hsivonen: are you going to? :-)
08:55
<zcorpan>
"Processor Instructions: The HTML5 spec does not allow processor instructions. We do. Since this is a server-side library, we think this is useful."
08:55
<hsivonen>
zcorpan: not sure. I was planning on fixing XSLT as part of the planned but always deferred XML rewrite project
08:56
<Ms2ger`>
Processor, eh
08:56
<hsivonen>
Ms2ger`: HTML5 bans your processor from running instructions
08:57
<jgraham>
Unless Hollywood allow it
09:06
<zcorpan>
MikeSmith: i think href="&copy=" is an error currently. "However, if this next character is in fact a U+003D EQUALS SIGN character (=), then this is a parse error, because some legacy user agents will misinterpret the markup in those cases."
09:06
<zcorpan>
http://www.whatwg.org/specs/web-apps/current-work/#tokenizing-character-references
09:06
<hendry>
anyone good with legalese? Just trying to write a phrase where I try explain: if you use my company's services without paying, we reserve the right to persue you for payment.
09:07
<MikeSmith>
zcorpan: oh
09:08
<zcorpan>
also, i don't have a strong opinion on the document conformance around ampersands. i have had strong opinions about how they should be parsed, though :-)
09:09
<zcorpan>
http://html5.org/r/7679 is the change
09:11
zcorpan
commented in the bug
09:15
<hendry>
oh crap, wrong channel
09:21
<marcdm>
Hello sleeping people and those that are awake. i'm seeking some answers regarding the new API for html5lib-python can anyone help?
09:22
<jgraham>
Sure
09:22
<marcdm>
thanks jgraham.
09:22
<marcdm>
I'm seeking to modify bleach for my own purposes, but I can't seem to understand one or 2 little things about the new API....
09:23
<marcdm>
1. how would I access Element.type and ...
09:23
<MikeSmith>
zcorpan: thanks fur the big comment
09:24
<jgraham>
marcdm: Which "API" do you mean? The one for the tree of elements that you get after parsing? Or something else?
09:24
<marcdm>
yes jgraham
09:24
<marcdm>
2. If I want to modify the tree, say I want to make changes to the list I get from .get_children(), which docs should I read for how i can make a new tree or modify it inplace
09:25
<zcorpan>
hmm, seems i messed up with the anolis .tail fix
09:25
<zcorpan>
File "build/bdist.macosx-10.8-intel/egg/anolislib/processes/filter.py", line 32, in filter
09:25
<zcorpan>
TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'
09:25
<marcdm>
the real problem is that in bleach they do an in-place modification using a while loop through tree.childNodes
09:25
<jgraham>
Right, so now html5lib itself doesn't actually have any built-in tree representation. It just outputs a tree in an existing format
09:26
<jgraham>
Before it had this built-in "simpletree" thing, that wasn't really supposed to be production-quality
09:26
<marcdm>
so I'm really just at the mercy of what I can get from ElementTree
09:26
<jgraham>
So the new default is to use ElementTree
09:26
<jgraham>
Which is in the stdlib
09:27
<marcdm>
ah, and the bleach guys implemented their algorithm using the simpletree API
09:27
<jgraham>
Yes, I think they did
09:27
<marcdm>
uphill task. changing into 2nd gear.
09:28
<jgraham>
So, if I understand the situation with bleach right, they need to rework their use of html5lib to use ElementTree
09:28
<marcdm>
and I think the easiest thing might be to implement a fake simpletree over elementTree to provide those attributes they want
09:28
<jgraham>
That might be simple, but it doesn't sound like a great fix.
09:29
<marcdm>
totally agreed.
09:29
<marcdm>
I'm looking at the faulty code now, wanting to run it in Py3.2 on Wheezy
09:29
<jgraham>
I haven't looked closely at bleach, but I wouldn't have thought it was hard to make it work with ElementTree
09:30
<marcdm>
well, since I didn't quite understand how html5lib works, I wasn't quite sure what to expect from the code.
09:32
<jgraham>
So it looks like it's just linkify that needs to be updated?
09:32
<marcdm>
jgraham, just to confirm, parser.parseFragment(text) produces a regular ElementTree.Element right?
09:32
<marcdm>
yup.
09:32
<jgraham>
I think it can return a list of elements
09:32
<marcdm>
more specifically, linkify_nodes within linkify
09:33
<jgraham>
For cases like "<div>foo</div><div>bar</div>"
09:33
<jgraham>
But that is very much from memory
09:33
<marcdm>
huh?
09:34
<marcdm>
the tree is passed in and modified in-place... heading to the etree docs
09:35
<jgraham>
Oh
09:35
<jgraham>
Not a list, a custom element type
09:35
<jgraham>
In [1]: import html5lib
09:35
<jgraham>
In [2]: p = html5lib.HTMLParser()
09:35
<jgraham>
In [3]: p.parseFragment("<div>foo</div><div>bar</div>")
09:35
<jgraham>
Out[3]: <Element u'DOCUMENT_FRAGMENT' at 0x371c300>
09:35
<marcdm>
yup
09:36
<marcdm>
when I try to getchildren on that, which is what linkify_nodes wants to do, I get the 1st div tho
09:36
<marcdm>
I mean I get the divs
09:36
<zcorpan>
how do i sync my anolis fork?
09:37
<jgraham>
yeah, just doing list(p.parseFragment("<div>foo</div><div>bar</div>")) works
09:37
<marcdm>
(facepalm)
09:37
<zcorpan>
Ms2ger`: ^
09:37
zcorpan
switching trains
09:38
<Ms2ger`>
hg pull -u https://zcorpan⊙bo/ms2ger/anolis && hg push https://zcorpan⊙bo/zcorpan/anolis I guess
09:38
<marcdm>
try this (p.parseFragment("http://foo.co and <div>bar</div> you⊙mu")
09:39
<marcdm>
syntax corrections where necessary
09:40
<jgraham>
Yeah, that is going to be harder I guess
09:42
<marcdm>
tree.text gives me the text before the div, but I haven't gotten at the text after the div yet
09:42
<jgraham>
It is the .tail of the last element
09:43
<marcdm>
so I'd want t a list containing the .text of the parent, the children and the .tail of each child?
09:44
<marcdm>
heading to look at simpletree code
09:44
<marcdm>
.itertext?
09:45
<jgraham>
Iterates over all the text in a subtree
09:46
<jgraham>
Which might not be enough for you, since you also need to know what the parent element was
09:46
<marcdm>
well, the bleach code wraps all things in a div (I think), so we can control the parent that way
09:47
<jgraham>
Right, but I mean if you have <div>foo <span>bar <i>http://example.com</i></span>; baz</div>, you need to know that the link should be a child of the <i>
09:48
<marcdm>
if I remember right, BeautifuSoup gives us some kind of "node" iterator that treats bits of text as TextNodes.... I need something like that
09:48
<marcdm>
yeah, I know what you mean, I realized it wasn't a complete solution
09:56
<zcorpan>
Ms2ger`: thanks. new pr coming up
09:57
<Ms2ger`>
Np
09:58
<zcorpan>
https://bitbucket.org/ms2ger/anolis/pull-request/9/turns-out-none-none-throws/diff
10:00
<Ms2ger>
zcorpan, thanks
10:00
Ms2ger
kicks .tail
10:00
<zcorpan>
yeah, seriously. it shouldn't be this hard to remove an element
10:02
<Ms2ger>
I kinda liked simpletree ;)
10:07
<marcdm>
simpletree was nice for what we're trying to do here, _read_ html. etree is awesome when you trying to write x/html
10:22
<marcdm>
I think I sufficiently understand etree api to reimplement the faulty parts of bleach. thanks for your help jgraham
10:27
<zcorpan>
hmm. --w3c-compat turns on lots of xref elements. but turning it off takes away features like [STATUS], <!--logo-->, etc. maybe we should just trim the list of xref elements for w3c mode as well
10:31
<Ms2ger>
--w3c-compat-substitutions?
10:35
<zcorpan>
ah, that seems to do what i want
10:43
<hsivonen>
:-( MDN says the load event is defined by DOM Level 3
10:43
<hsivonen>
it's a wiki, I know
10:47
<Ms2ger>
Yeah, they aren't terribly up to date
10:54
<marcdm>
I have a fairly blonde question, does html5lib-python always return {http://www.w3.org/1999/xhtml} as the namespace for html files?
10:55
<marcdm>
when using etree
10:56
<SimonSapin>
marcdm: yes, for HTML elements. For SVG elements you will get the SVG namespace, etc. This is per the spec
10:56
<marcdm>
what about the newer html elements like aside, section, audio and video?
10:57
<zcorpan>
why does anolis when not in --w3c-compat mode turn <code> into <a><code> but in --w3c-compat mode <code><a>?
10:57
<SimonSapin>
I think there is a list of special cases like SVG and MathML that change the namespace, but everything else defaults to the XHTML namespace.
10:57
<zcorpan>
the former gives blue underlines :-(
10:58
<zcorpan>
which isn't fixable with css afaict
10:58
<marcdm>
SimonSapin: thanks.
11:18
<hsivonen>
looking forward to UTF-16-encoded XSLT
11:20
<Ms2ger>
zcorpan, there's an option for that :)
11:21
<Ms2ger>
--w3c-compat-xref-a-placement
11:21
<zcorpan>
Ms2ger: yeah, i noticed. but what's the point?
11:21
<Ms2ger>
301 gsnedders
11:33
<hsivonen>
Ms2ger: what's the current thinking on exposing an interface object on the global object when speccing a new WebIDL interface?
11:34
<Ms2ger>
In general, just expose it
11:35
<hsivonen>
Ms2ger: what's the mechanism in our code that makes an interface exposed?
11:36
<Ms2ger>
Somewhere in classinfo, I think. There's a few ways to get exposed
11:36
<Ms2ger>
* webidl interface without [NoInterfaceObject]
11:36
<Ms2ger>
* XPIDL interface that starts with nsIDOM
11:36
<Ms2ger>
* XPIDL interface that starts with nsI and has classinfo for some reason
11:37
<hsivonen>
thanks
11:37
<Ms2ger>
I *think* that's all of them
11:37
<hsivonen>
I have been tasked with zapping interface objects that shouldn't be exposed
11:38
<Ms2ger>
The fun part is that a lot of the b2g stuff uses xpidl + classinfo
11:38
<hsivonen>
looks like most items I need to zap are XUL or B2G
11:39
<hsivonen>
yay B2G for moz prefix proliferation
11:39
<Ms2ger>
Yeah, they want to ship :/
11:39
<zcorpan>
presto mostly had the opposite problem, we didn't expose enough
11:40
<hsivonen>
Ms2ger: they could ship without prefixes...
11:40
<hsivonen>
I guess my next step is taking the list from http://hg.mozilla.org/mozilla-central/annotate/tip/dom/tests/mochitest/general/test_interfaces.html and checking it against Blink, WebKit, Presto and Trident
11:43
<Ms2ger>
Note that it doesn't actually fail if there's interfaces in there that aren't exposed
11:44
<Ms2ger>
Say, if you forget to remove MozBlobBuilder
11:55
<hsivonen>
clearly, for a DOM peer, I know quite little about the DOM
11:55
<Ms2ger>
You know about XSLT ;)
11:55
<hsivonen>
why doesn't for (var name in window) {...} not show any interface objects?
11:56
<hsivonen>
s/not//
11:57
<Ms2ger>
w(Object.getOwnPropertyDescriptor(window, "XMLHttpRequest").enumerable)
11:57
<Ms2ger>
log: false
11:58
<hsivonen>
Ms2ger: I suspected there was a concept like that
11:58
<hsivonen>
but of course it's useful that personalbar is enumerable, for instance
11:58
<Ms2ger>
These BarProps are lovely
12:00
<Ms2ger>
Maybe you want Object.getOwnPropertyNames(window)
12:04
<hsivonen>
Ms2ger: indeed, the test case lists a number of names that aren't actually exposed on window
12:04
<hsivonen>
in the sense that (foo in window) would be true
12:05
<Ms2ger>
Any others than HTMLCommandElement and MozBlobBuilder?
12:06
<hsivonen>
SVGStylable, SVGTransformable, MozMobileCellInfo, etc.
12:06
<hsivonen>
many others
12:07
<Ms2ger>
Mm
12:14
<hsivonen>
Ms2ger: awesome. there are also interfaces that aren't exposed but aren't listed in the test case
12:14
hsivonen
wonders what the test case is good for
12:14
<smaug____>
hmm
12:15
<smaug____>
hsivonen: exposed in which way?
12:15
<Ms2ger>
Hmm
12:15
<Ms2ger>
I guess we don't put WebIDL-only interfaces on Ci
12:15
<smaug____>
hsivonen: I added the test to make it less likely to expose random stuff to web
12:15
<hsivonen>
smaug____: listed by Object.getOwnPropertyNames(window)
12:16
<smaug____>
the test was added before we started to webidlfy stuff
12:16
<hsivonen>
smaug____: so the test only cares about nsI stuff getting accidentally exposed, it seems
12:16
<smaug____>
and nsIDOM
12:16
<smaug____>
but I'm not sure about Webidl stuff
12:17
<smaug____>
(nsI and nsIDOM are handled very differently in this kind of case)
12:52
<hsivonen>
hmm. no Object.getOwnPropertyNames() in Chrome
12:54
<jgraham>
Really?!
12:55
<hsivonen>
oh, it's uneval that's missing
12:55
hsivonen
thought everyone had uneval
12:55
<hsivonen>
do I really have to write my own array serializer?
12:55
<jgraham>
JSON.stringify
12:55
<hsivonen>
thanks
12:55
<Ms2ger>
.toString()?
12:56
<jgraham>
Well if he wants something that will parse later with eval
12:56
<jgraham>
... then that's probably a problem on its own
12:56
<Ms2ger>
Fair
12:57
<jgraham>
(I thought only gecko had uneval)
12:57
<hsivonen>
jgraham: so it seems
12:57
Ms2ger
had never heard of uneval
12:57
<hsivonen>
but how am I supposed to know that we're the abnormal ones
12:58
<jgraham>
Well to be fair with js, that's the common case :)
12:59
<Ms2ger>
The question is, is it an e4xism
12:59
<jgraham>
(you were the only ones with E4X and all the js 1.x stuff)
12:59
<jgraham>
(for various values of x)
12:59
<Ms2ger>
We're planning to move to 1js, though, I hear
13:05
<darobin>
JSON.stringify doesn't work on everything, though, obviously
13:05
<darobin>
in some cases IIRC you still need toSource(), but I think that's mostly for old Geckos
15:14
<Ms2ger>
Mm, we're implementing WAP
15:19
<jgraham>
But in good news, I guess my time machine works
15:21
<jgraham>
Ms2ger: Bug or it didn't happen
15:21
<Ms2ger>
https://bugzilla.mozilla.org/show_bug.cgi?id=853715
16:16
<sangwhan_>
Ms2ger: Does the fact that Opera has already done it make it hurt less?
16:17
<Ms2ger>
Opera did it first, eh
16:17
<sangwhan_>
Wait till you have to implement OMA DRM
16:19
<Ms2ger>
I don't think I want to know what that is
16:19
<Ms2ger>
I don't think I want to know what that is
16:26
<sangwhan_>
Looking at the commit, it's not _that_ bad :)
16:43
<KevinMarks>
thanks Yitro - I used it in http://techcrunch.com/2013/06/09/how-apples-ios-fragmentation-problems-distort-design-thinking/
17:36
<rafaelw>
Hixie: ping
18:07
<KevinMarks>
was that an Exclusions demo in Safari?
18:43
<Ms2ger>
zcorpan: can you look at bz's comment in https://bugzilla.mozilla.org/show_bug.cgi?id=880997 please?
19:06
<Hixie>
rafaelw: pong
19:28
<rafaelw>
Hixie: can you read my last comment on https://www.w3.org/Bugs/Public/show_bug.cgi?id=22185
20:11
<Hixie>
rafaelw: looking...
20:15
<Hixie>
rafaelw: as far as i can tell, your last comment and my last coment are orthogonal
20:15
<rafaelw>
Ok. can we take them one at a time?
20:15
<rafaelw>
Am I mis-reading the spec, or is it incorrect?
20:17
<Hixie>
i don't think those are mutually exclusive :-)
20:17
<Hixie>
i don't think there's any doubt in anyone's mind that the jump to a code entry-point algorithm shouldn't call the mutation observers
20:17
<Hixie>
(at least, not unless it's the last script)
20:17
<Hixie>
the question is, should it even both calling it if it's the last script, and do you really want to remove the call to mutation observes in the parser
20:19
<rafaelw>
So I offered a proposal of a simple way to make the current spec accurate. Did my proposal remove the call to mutation observers from the parser?
20:20
<Hixie>
your proposal and your suggested changes were contradictory, so i wasn't sure what you intended, hence my follow-up questions
20:21
<Hixie>
(i don't have an opinion about what exactly should happen)
20:28
<rafaelw>
Can you explain the contradiction?
20:28
<rafaelw>
There's a step in the text insertion mode that says to run a microtask checkpoint open reaching a </script>.
20:29
<rafaelw>
If my proposal changed that, it wasn't intentional.
20:29
<rafaelw>
hixie: ^^
20:29
<Hixie>
comment 18, right?
20:30
<Hixie>
you say "should happen at two times", but neither of the times you list is the parser, but then your suggested chnanges don't change the parser
20:30
<Hixie>
this isn't a criticism or anything, i was (and am) just trying to make sure i do what you actually intended
20:30
<rafaelw>
I see.
20:30
<rafaelw>
You are correc.t
20:30
<rafaelw>
It should be "three times".
20:30
<rafaelw>
I can go back and clarify that.
20:30
<Hixie>
here's fine :-)
20:31
<Hixie>
how about the other thing? are we sure we want to fire mutation observers twice per task if the task fires two scripts synchronously, rather than just once at the end of the task?
20:31
<rafaelw>
This was debated at length when we designed mutation observers.
20:31
<rafaelw>
It was intentional.
20:31
<Hixie>
(as opposed to the example in comment 21, which is about firing them twice within a script (as per the spec now, which is bogus, we all agree) vs once at the end of a script)
20:32
<rafaelw>
Take the case of a click. If there are multiple handlers, and mutation observers registered, then the observers should go after *each* event handler, so that the next event handler sees a "stable" state of the world.
20:33
<rafaelw>
Is this the case you are referring to?
20:34
<Hixie>
yeah, that's a good example of it
20:34
<Hixie>
btw, what's the change in your proposal regarding "global script clean-up jobs" to do with?
20:35
<rafaelw>
I suppose you can look at that as orthogonal.
20:35
<Hixie>
k
20:35
<rafaelw>
It looked to me like that was added out of a misunderstanding of how microtask checkpoints should work.
20:36
<Hixie>
global script clean-up jobs are unrelated to microtask checkpoints, iirc
20:36
<rafaelw>
Mutation Observers *is* a script clean-up job.
20:37
<rafaelw>
My point is that there are now two mechanims doing exactly the same thing.
20:37
<rafaelw>
You can make them be seperate, but it seems silly to me.
20:37
<Hixie>
you mean, they are in principle, or they are in concrete?
20:37
<rafaelw>
Principle.
20:37
<rafaelw>
And there are going to be more.
20:38
<rafaelw>
ECMAScript Object.observe callbacks, Promises, etc...
20:38
<Hixie>
the global script clean-up jobs only run at the end of a script (every script, though whether that means nested ones or not is not clear yet)
20:38
<rafaelw>
I was hoping that we could end up with one "period to run stuff that needs to put the world back in order" thingie.
20:38
<Hixie>
they don't run e.g. before scripts run in the parser
20:38
<Hixie>
or after non-script tasks
20:38
<Hixie>
(like parsing)
20:39
<rafaelw>
Is their any client for end-of-script cleanup jobs other than FileURLs?
20:40
<Hixie>
not as far as i know of, currently
20:40
<Hixie>
one key thing is that end-of-script cleanup jobs cannot run scripts of their own
20:40
<Hixie>
since their ordering isn't defined
20:41
<rafaelw>
So I'm confused by your message of "leave FileURL out of this" vs "How does script-clean-up fit into all of this"
20:42
<Hixie>
"this" in the first of those is the bug, "this" in the second is your specific proposal
20:42
<rafaelw>
I see. Well the I propose we simply remove the script clean up language.
20:43
<rafaelw>
Actually, I retract everything I said about script-clean-up.
20:44
<Hixie>
k :-)
20:44
<rafaelw>
If it only has one client and the requirements aren't clean, then I guess I don't really care about it.
20:44
<rafaelw>
(Although it seems odd to me to have language about it in that case)
20:44
<Hixie>
the requirements are clean, they're just different than microtassks
20:44
<rafaelw>
Ok, how about if I (on the bug):
20:45
<rafaelw>
1) Clarify that microtask checkpoint should be run at three times
20:45
<rafaelw>
2) Clarify my proposal to ignore the script clean-up.
20:46
<Hixie>
don't worry about it, i've already edited the spec as you were suggesting
20:46
<Hixie>
i'm committing the change now
20:47
<rafaelw>
Ok. Thank you.
20:47
<Hixie>
np
20:47
<Hixie>
(unfortunately for my credibility, the change also includes some unrelated editorial fixes to the script clean-up job stuff. but we'll ignore that.)
20:48
<Hixie>
at least this is an easy one. the thing about the parser's namespace-sensitivity is distressingly less so.
20:49
<rafaelw>
Good topic.
20:49
<rafaelw>
So WebKit/blink already implemented what adam proposed.
20:50
<rafaelw>
Aside from the conflict about what the author most likely meant,
20:50
<rafaelw>
One main motivation is that ambiguity like that in the parser as a source of crashers that the security folks found.
20:50
<Hixie>
there's cases where i don't even understand what we can do. e.g. "If the stack of open elements has a p element in button scope, then act as if an end tag with the tag name "p" had been seen." - what if there's a, <svg:p> on the stack, won't that close that instead?
20:50
<rafaelw>
s/as/was
20:51
<Hixie>
i don't understand why it caused crashes
20:51
<Hixie>
the spec wasn't ambiguous, it was (is) just weird in certain cases, as far as i can tell
20:52
<rafaelw>
The main problem is a conceptual one inside the implementation of the parser.
20:52
<rafaelw>
As I mentioned in the bug, when a token is encountered, it's namespace goes from abstract to concrete.
20:53
<rafaelw>
The parser code is written with the assumption that end tags match start tags of the same namespace.
20:54
<Hixie>
ah, that's definitely not a good assumption
20:54
<rafaelw>
You are suggesting that they should be tolerant of this, but it's just not how the code was written.
20:54
<Hixie>
in particular, end tags don't have a namespace
20:54
<Hixie>
tags in general don't have a namespace, in fact
20:58
<rafaelw>
I don't think that matters.
20:58
<rafaelw>
It just is the case that we fixed a bunch of crashers related to invalid assumptions in the parser code which generally takes the view I'm describing.
20:59
<rafaelw>
And based on my discussions with Mozilla re:<template> parsing, I suspect their code is similarly structured.
21:00
<rafaelw>
My point is that even if I agreed with your view that <foreignObject></div> should match an <svg:div>, I'd have a hard time landing that patch.
21:04
<Hixie>
i don't understand how you assign a namespace to a tag
21:38
<Hixie>
GPHemsley: (btw, if you could avoid cc'ing other lists that'd be great, because it causes all kinds of confusing thread fragmentation. e.g. i can't make heads or tails of your subthread that got cc'ed to apps-discuss.)
21:38
<Hixie>
GPHemsley: (though that could just be because the other guy only replied to you each time?)
21:43
<Hixie>
heycam|away: any feedback on https://www.w3.org/Bugs/Public/show_bug.cgi?id=22102 ?
22:17
<aklein>
Hixie: this might be easier to discuss if the spec were fixed in the places where it _doesn't_ use a namespace for comparison. that is, where it says "... with the same tag name as that of the token" instead of "... has a td element in whatever scope"
22:17
<aklein>
it's not just that the spec was "weird", it was (as I think you said) "inaccurate"
22:21
<aklein>
Hixie: those passages where the spec sees, e.g., a </tr> and then says to go look for a "tr element" are those places where a namespace is being "assigned", conceptually, to a tag (in the WebKit and Blink implementations anyway)
22:22
<Hixie>
hm, interesting
22:22
<Hixie>
i'm not sure that's the right fix for that though
22:23
<Hixie>
with the foreign content stuff, i think we maybe need to stop acting as if we saw a tag
22:23
<Hixie>
and just do what we think acting that way should do
22:24
<Hixie>
so e.g. instead of "if a <th> element is in scope, act as if you saw a </th> tag token", we should just close the <th> (popping the stack, etc) directly
22:35
<aklein>
I think that would allay a lot of my concerns; that'd be a new concept though, wouldn't it?
22:42
<Hixie>
we do it in some places, i think
22:42
<Hixie>
but it would involve some normative changes, yes
22:42
<Hixie>
i think it'd probably make it easier to understand
22:42
<Hixie>
which would be a win
22:43
<aklein>
yeah, that sort of change sounds good to me regardless of this whole conversation
22:43
<aklein>
just by being more direct
22:47
<Hixie>
filed as https://www.w3.org/Bugs/Public/show_bug.cgi?id=22322
22:57
<nessy>
Hixie: I'd like to discuss TextTrackCue API changes with you - want me to email WHATWG or what's your preference?
22:57
<zcorpan>
Hixie: do you want me to elaborate on what you should say in the html spec for https://www.w3.org/Bugs/Public/show_bug.cgi?id=15588#c11 ?
23:00
<GPHemsley>
Hixie: Any CCing of other lists happened as a result of a reply-all. I'm not actually on any other lists.
23:02
<GPHemsley>
Hixie: (So if you got multiple copies because you're on other lists, feel free to ignore anything not from the WHATWG list.)
23:14
<Hixie>
nessy: i'm here now if you want to talk here
23:15
<Hixie>
zcorpan_: i just need to use "beginning of the document" right?
23:16
<zcorpan_>
Hixie: well currently the html spec invokes "scroll an element into view" with "top of the document" which is bogus since that's not an element
23:16
<Hixie>
zcorpan_: if you have a specific wording you'd like the html spec to use, please do let me know in the bug. but i can probably work it out.
23:16
<GPHemsley>
FYI: http://tools.ietf.org/html/draft-ietf-appsawg-xml-mediatypes
23:16
<Hixie>
GPHemsley: ah
23:17
<Hixie>
GPHemsley: i don't get multiple copies (gmail dedupes and i filter all mail through gmail), but if there were e-mails sent to you and apps-discuss from people not on whatwg, they didn't make it to the whatwg list
23:17
<Hixie>
GPHemsley: (but your replies would have)
23:17
<zcorpan_>
Hixie: ok. i'll comment in the bug while i have it paged in :-)
23:17
<Hixie>
zcorpan_: thanks :-)
23:18
<GPHemsley>
Hixie: AFAIK, those threads were only me and Peter, and I thought he's on the WHATWG list. There was one time where he only replied to me, but I reintroduced the WHATWG list in my reply.
23:18
<Hixie>
k
23:18
<nessy>
Hixie: it's particularly about this bug: https://www.w3.org/Bugs/Public/show_bug.cgi?id=21851
23:19
<Hixie>
looking...
23:19
<nessy>
Hixie: I'm wondering if we should rename TextTrackCue to AbstractTextTrackCue, then inherit a TextTrackCue object from it that has .text in it
23:20
<GPHemsley>
Hixie: And it looks like my e-mails never even went through to apps-discuss because I'm not on that list.
23:20
<nessy>
Hixie: then WebVTTCue can inherit from that
23:20
<GPHemsley>
Hixie: (Nor is Peter, AFAICT.)
23:20
<nessy>
Hixie: then, TextTrackCue can have its constructor back, too
23:20
<Hixie>
nessy: that's what i suggested in comment 2
23:21
<Hixie>
nessy: but it still makes no sense for TextTrackCue to have a constructor in this scenario
23:21
<nessy>
Hixie: did you? … looking...
23:21
<Hixie>
GPHemsley: good times
23:21
<GPHemsley>
indeed
23:22
<nessy>
Hixie: why would a constructor not make sense?
23:22
<Hixie>
nessy: let's go back to first principles here for this API. stop me as soon as i say something you think is wrong.
23:22
<nessy>
Hixie: ok
23:23
<zcorpan_>
Hixie: maybe i can provide a term "scroll to the beginning of the document" which would be less boilerplate for you
23:23
<Hixie>
nessy: first, each format (like WebVTT, TTML, DVD bitmap subtitles, etc) has an algorithm that defines how cues are rendered to the video frame
23:24
<nessy>
Hixie: no, not all formats are rendered
23:24
<Hixie>
nessy: so for example, WebVTT has the complicated algorithm for avoiding cue overlap. DVD bitmap subtitles just render an image over the video at an x,y coordinate. etc.
23:24
<nessy>
Hixie: some of them are for metadata only and left to deal with by JS
23:24
<Hixie>
nessy: there are subtitle/caption formats that are never rendered?
23:24
<Hixie>
nessy: like what?
23:25
<nessy>
Hixie: TextTrackCue also applies to @kind=metadata cues
23:25
<nessy>
Hixie: that could be JSON or anything else
23:26
<rillian>
chapters as well
23:26
<Hixie>
that's orthogonal
23:26
<nessy>
Hixie: they would not be exposed in a TextTrackCue ???
23:26
<Hixie>
let's start over
23:27
<Hixie>
there are subtitle formats. these are formats for files that contain text cues. these formats can be separate files, or embedded in media resources. correct so far?
23:27
nessy
is not sure what I'm missing...
23:27
<nessy>
well, WebVTT and TTML are not just subtitle formats, but more generic
23:28
<nessy>
why are you restricting it to subtitle formats?
23:28
<Hixie>
s/subtitle formats/text track formats/
23:28
<nessy>
ah ok, agreed
23:28
<Hixie>
ok. each of these formats come with a set of rendering rules. these rules might not apply to any particular cue at any particular time, but each format nonetheless has a set of rules. correct so far?
23:29
<Hixie>
zcorpan_: yeah, that'd be awesome
23:29
<nessy>
no, there are only rendering rules for certain types of these files
23:29
<nessy>
for example only when they contain captions or subtitles
23:29
<nessy>
when they contain descriptions or metadata, there is no rendering
23:29
<nessy>
they just get exposed to JS
23:30
<nessy>
(well, you could say that "descriptions" have rendering - but definitely not "metadata")
23:30
<Hixie>
ok i see the problem.
23:30
<nessy>
or put in a different way: WebVTT can contain cues that contain just JSON
23:31
<Hixie>
you are confusing the format's properties, with the properties of a specific instance of a text track in the HTML API
23:31
<nessy>
that could be exposed in a TextTrackCue with .text
23:31
<nessy>
where? when I say "WebVTT can contain cues that contain just JSON" ?
23:32
<rillian>
Hixie: are you saying that if the cues don't display they need to have a separate type?
23:32
<Hixie>
there's no such thing as a "metadata WebVTT file" or a "chapters TTML file" or a "descriptions DVD subtitle file"
23:32
<Hixie>
there's a WebVTT file, and if it's imported as a kind=subtitles file, it renders
23:33
<Hixie>
and if it's imported as a kind=metadata file, it doesn't
23:33
<Hixie>
but either way, WebVTT has a set of rules that say how it would render, if it were to be rendered
23:33
<nessy>
ok, but it still needs to expose its content to HTML
23:33
<nessy>
s/HTML/JS/ (more correctely)
23:34
<Hixie>
ok so let's go back to what i saw saying earlier
23:34
<Hixie>
each format has a set of rules for how it is rendered
23:34
<nessy>
ok :-)
23:34
<Hixie>
at any one time, the cue may or may not be rendered, but the cue, if it were to be rendered, has a set of rules to follow
23:35
<Hixie>
these rules come from what format the cue was parsed from
23:35
<Hixie>
so e.g. a cue from a webvtt file uses the webvtt rules
23:35
<Hixie>
a cue from a ttml file uses the ttml rules
23:35
<Hixie>
a cue from a DVD bitmap subtitle track uses the DVD bitmap subtitle rules
23:35
<Hixie>
right?
23:35
<nessy>
yup
23:36
<Hixie>
each cue has an object in the DOM
23:36
<nessy>
so a cue that is rendered from a WebVTT file is exposed as a WebVTTCue object
23:36
<Hixie>
that object is also associated with some rendering tules, the same rendering rules as the cue, derived from the file from which it was parsed
23:36
<Hixie>
but some cues aren't parsed, they're created from JS
23:37
<Hixie>
those cues need to know what rules they should use if they were suddenly to be rendered
23:37
<Hixie>
right?
23:37
<nessy>
yup, following this far
23:37
<Hixie>
so each set of rules that the browser supports being created from JS -- TTML, WebVTT, DVD bitmaps, whatever -- needs its own constructor
23:38
<Hixie>
(or factory method, or argument to a factory method, or some other mechanism, but contructor is how WebVTTCue does it)
23:38
<Hixie>
right?
23:38
<nessy>
yup, I think we're all good with cues that get rendered - we have the rendering rules associated with the particular objects etc
23:39
<Hixie>
_all_ cues can get rendered
23:39
<Hixie>
they _all_ have rendering rules just in case they are rendered
23:40
<nessy>
right …. how can that work for cues that are part of a kind=metadata track and are not rendered? can you run me through such cues all the way, too?
23:40
<nessy>
I'm a JS developer and have created a track with kind=metadata
23:40
<nessy>
how do I add cues?
23:41
<Hixie>
the kind is irrelevant
23:41
<Hixie>
you add it the same way you would if it was kind=anythingelse
23:42
<nessy>
I want to add cues that contain JSON and I don't have rendering rules for them, because they are not meant to be displayed, but used by JS only
23:42
<Hixie>
there's no such thing as a cue that doesn't have rendering rules
23:42
<Hixie>
if it's a webvtt cue, it has webvtt rules. if it's a ttml cue, it has ttml rules.
23:42
<nessy>
assume my rendering rules are "don't display anything"
23:43
<nessy>
yeah, I don't think that works
23:43
<Hixie>
you don't get to pick the rendering rules, the rendering rules are those of the formats the browser supports
23:43
<Hixie>
i don't understand what is difficult about this
23:43
<Hixie>
it's exactly the same as a WebVTT file imported with kind=metadata
23:44
<nessy>
are you saying, even if I have WebVTT cues that contain JSON, they will be exposed as WebVTTCue objects?
23:45
<Hixie>
yes
23:45
<Hixie>
because at any time you could change the .kind of the TextTrack object to "subtitles" and then they'd render
23:45
<Hixie>
there's _nothing special_ about metadata tracks
23:45
<nessy>
are you further saying that, given I want to do everything in JS, I am forced to pick a cue format that provides rendering, even if I know that I will never ever want to render it (and in fact some of the content that I may have would be really really bad when rendered)?
23:46
<Hixie>
well you're nor "forced to pick a cue format that provides rendering", you just pick the only format browsers support, WebVTT
23:48
<nessy>
so, can't we introduce a cue object that has rendering rules that simply say not to render anything?
23:48
<Hixie>
what's the point?
23:49
<Hixie>
note that right now, you can really easily debug these cues by just setting kind=subtitles instead of kind=metadata
23:49
<nessy>
it makes for simpler objects
23:49
<Hixie>
it makes for more interfaces, that's not simpler
23:49
<zcorpan_>
Hixie: done
23:49
<zcorpan_>
nn
23:50
<rillian>
Hixie: you just explained how every cue type has associated rendering rules. Therefore metadata and chapter cues should have rendering rules saying nothing is drawn. :P
23:50
<Hixie>
zcorpan_: nn
23:50
<Hixie>
zcorpan_: thanks
23:50
<Hixie>
rillian: "metadata" and "chapter" are not "cue types"
23:51
<Hixie>
rillian: that's the whole point
23:51
<Hixie>
rillian: they're text track kinds which every "cue type" can be set to
23:51
<rillian>
hrm
23:52
<nessy>
ok, then maybe we can create an object that does only simple bottom middle of video plain text rendering
23:52
<rillian>
(I also don't understand why we're breaking the old api if no one's going to implement anything but webvtt)
23:52
<rillian>
nessy: TextTrackCue? :)
23:52
<nessy>
no overlap avoidance, no complicated rendering
23:52
<Hixie>
nessy: why?
23:52
<nessy>
rillian: Microsoft are implementing (and already support) TTML
23:52
<Hixie>
rillian: because apparently people _are_ implementing other formats, in some weird places
23:53
<Hixie>
rillian: in general i agree that that's bad, mind you
23:53
<Hixie>
nessy: i don't understand what problem you are trying to solve
23:53
<nessy>
Hixie: so we can create cues in JS that don't bear the heavy weight of WebVTT cues
23:53
<Hixie>
nessy: what "heavy weight"?
23:54
<Hixie>
nessy: WebVTT is a really light-weight format
23:54
<rillian>
Hixie: you added all those positioning attributes
23:55
<Hixie>
i think it's crazy that we're seriously debating whether to create yet another subtitling format for the web, personally
23:55
<Hixie>
but putting that aside, the way one would do it is the same way we have WebVTT or TTML in the web platform: just create a new spec that defines the new format.
23:55
<nessy>
not a file format - just a cue format
23:55
<nessy>
an object in HTML
23:55
<Hixie>
file format without a serialisation, it's still a file format
23:55
<Hixie>
for these purposes
23:56
<Hixie>
(and i bet you'd shortly be asked "can we have a serialisation")
23:56
<nessy>
that's why I suggested no rendering rules
23:56
<nessy>
no, serialisation is already possible in TTML or WebVTT or SRT or anything else that does times plain text for that matter
23:56
<nessy>
no need for a new file format
23:56
<Hixie>
all of this is already possible in WebVTT
23:57
<Hixie>
this literally adds nothing new
23:57
<zewt>
i don't understand the "heavy weight WebVTT cues" argument (you're already paying the cost of implementing WebVTT; are you suggesting WebVTT cues use a lot of memory or something?)
23:57
<rillian>
nessy: looking at it from the other side, what do the webvtt cue settings mean on a metadata track where the cue text is json?
23:57
<zewt>
what does "heavy weight" mean in this context?
23:58
<nessy>
instantiating a WebVTTCue object creates interfaces (vertical, snapToLines, line, position, size, align, text, getCueAsHTML() ) that are irrelevant for cues that are not rendered
23:58
<zewt>
so?
23:59
<zewt>
(putting aside whether they can be optimized out or whatever--who cares?)
23:59
<Hixie>
man, you should see the HTMLElement interface if you think WebVTTCue is "heavy"
23:59
<Hixie>
bbiab