[Bug 22054] New: [Custom]: A couple of comments on document.register

https://www.w3.org/Bugs/Public/show_bug.cgi?id=22054

            Bug ID: 22054
           Summary: [Custom]: A couple of comments on document.register
    Classification: Unclassified
           Product: WebAppsWG
           Version: unspecified
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Component Model
          Assignee: dglazkov@chromium.org
          Reporter: mrbkap@gmail.com
        QA Contact: public-webapps-bugzilla@w3.org
                CC: bzbarsky@mit.edu, wchen@mozilla.com
            Blocks: 14968

There are a couple of things that I noticed in the new document.register
implementation in the spec.

    If NAME is an invalid custom element name, throw an InvalidCharacterError
and stop.

The check for an "invalid custom element name" involves comparing it to a few
known element names but in an HTML document we lowercase NAME after dealing
with PROTOTYPE. The spec probably has to lowercase NAME here and TYPE later to
get case-sensitivity correct.

        Let INTERFACE be PROTOTYPE's interface

This means that we should walk PROTOTYPE's prototype chain, looking for an
object with an interface, right?

        Let BASE be INTERFACE's inherited interface that is nearest to BASE in
the prototype chain and that is an element interface

This defines BASE recursively. This should probably read:

        Let BASE be INTERFACE's inherited interface that is nearest to
PROTOTYPE in the prototype chain and that is an element interface

(note the second instance of BASE has been changed to PROTOTYPE).

        If BASE is not HTMLElement or SVGElement, let NAME be the local name,
associated with BASE element interface

It isn't entirely clear how to do this. If I see HTMLHeadingElement.prototype,
should NAME be "h1", "h2", etc? While we have HTMLAudioElement and
HTMLVideoElement, what should happen if the author uses HTMLMediaElement?

I guess I don't see a clear relationship in the spec as it's written currently
between "interface" and "local name" (or, for that matter, a clear definition
of "element interface" as it applies to prototype objects, are these simply
objects that delegate to Element?).

-- 
You are receiving this mail because:
You are the QA Contact for the bug.

Received on Wednesday, 15 May 2013 23:58:52 UTC