Bug 17195 - Definition of .properties does not match implementation reality
Definition of .properties does not match implementation reality
Status: RESOLVED FIXED
Product: WHATWG
Classification: Unclassified
Component: HTML
unspecified
Other other
: P3 normal
: Unsorted
Assigned To: Ian 'Hixie' Hickson
contributor
http://www.whatwg.org/specs/web-apps/...
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2012-05-25 19:33 UTC by contributor
Modified: 2013-02-08 01:36 UTC (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description contributor 2012-05-25 19:33:00 UTC
Specification: http://www.whatwg.org/specs/web-apps/current-work/multipage/microdata.html
Multipage: http://www.whatwg.org/C#microdata-dom-api
Complete: http://www.whatwg.org/c#microdata-dom-api

Comment:
Definition of .properties does not match implementation reality

Posted from: 71.184.125.56 by bzbarsky@mit.edu
User agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:15.0) Gecko/15.0 Firefox/15.0a1
Comment 1 Boris Zbarsky 2012-05-25 19:35:18 UTC
Specifically, this part:

  The properties IDL attribute on HTML elements must return an
  HTMLPropertiesCollection rooted at the Document node

combined with the fact that all the properties are in the element's home subtree would mean that elements that are not in the document should always have an empty .properties.

That doesn't seem to be terribly useful, and as far as I can tell Opera doesn't implement that.  Neither does the upcoming Gecko implementation.

See upcoming testcase: it would alert 0, then 2, if the spec was actually followed here.  In Opera it alerts 1, then 2.
Comment 2 contributor 2012-07-18 17:38:02 UTC
This bug was cloned to create bug 18194 as part of operation convergence.
Comment 3 Ian 'Hixie' Hickson 2012-09-21 20:09:49 UTC
It's intentional that .properties on elements not in a Document would be empty... not my fault y'all can't follow the spec. :-P
Comment 4 Ian 'Hixie' Hickson 2012-09-21 20:16:58 UTC
bz: Do you still have the aforementioned testcase, by any chance?
Comment 5 Boris Zbarsky 2012-11-26 05:04:36 UTC
I don't have the testcase anymore, sorry.  It was just doing basic testing of what happens in a disconnected subtree.

I think the reason people didn't follow the spec as you wrote is threefold:

1) "It doesn't seem to be terribly useful".  
2) The action-at-a-distance due to the implications of "rooted at" involving
   digging up a separate (unlinked, too) spec bit, combined with the fact that
   actually sharing implementations between HTMLPropertiesCollection and other
   HTMLCollections didn't happen at least in Gecko for various reasons, so the
   rooting didn't give behavior for free.
3) Whoever wrote the tests implementors used to verify their implementations
   didn't follow the spec either.

with #3 being likely most important in practice.

We could probably change Gecko to do what the spec says if you really think that's a better approach.  Why is it better?
Comment 6 Ian 'Hixie' Hickson 2012-11-26 20:48:29 UTC
I'm not sure it's really better — I don't really know what it means to be checking for the properties of a node that's not in a Document. But I can root it at the home subtree's root element, or something? I'll have to test to see what implementations actually do.
Comment 7 Boris Zbarsky 2012-11-26 22:24:27 UTC
It's worth seeing if Opera is willing to change.  I'd really much rather root at the document in Gecko, for what it's worth.  Speccing the other is a pain, since the home subtreee's root obviously changes over time.

Of course the owner document also changes over time (see adoptNode), so things are a bit annoying no matter what.
Comment 8 Simon Pieters 2012-11-27 05:32:42 UTC
I don't have a strong opinion, but Opera's behavior seems more useful than the spec's.
Comment 9 Ian 'Hixie' Hickson 2013-02-08 01:01:24 UTC
http://software.hixie.ch/utilities/js/live-dom-viewer/?saved=2086

Gecko and Opera do a remarkable job of implementing what the spec doesn't say, so I guess I'll change the spec to match them... :-)
Comment 10 contributor 2013-02-08 01:03:33 UTC
Checked in as WHATWG revision r7705.
Check-in comment: Match reality. It's a bit more useful anyway, arguably.
http://html5.org/tools/web-apps-tracker?from=7704&to=7705
Comment 11 contributor 2013-02-08 01:36:04 UTC
Checked in as WHATWG revision r7706.
Check-in comment: Clarify that the collection's root might change during the collection's lifetime.
http://html5.org/tools/web-apps-tracker?from=7705&to=7706