wiki:Component Model

Version 18 (modified by, 12 years ago) (diff)


Component Model in WebKit

The component model effort brings encapsulation to the Web. See use cases for more background and the bug tree to keep up with the progress. Ping dglazkov, dominicc, morrita, hayato, or shinyak on #webkit if you'd like to talk to real people behind the effort.

Implementation Status

If this is older than 30 days, it's probably out of date.

Area Status Comments
Convert all existing shadow DOM to new model input[type=file] remains
Shadow Content Plumbing Basic plumbing in place
DOM Interfaces Not yet implemented Waiting on the plumbing to settle down
Declarative API (Markup) Not yet implemented Waiting on the plumbing to settle down
Events Partially implemented
Lifecycle Not yet implemented Built-in HTML elements implementation uses direct wiring
Document/Resource Loading Not yet implemented
CSS matching Some of the selectors and shadow scopes implemented
Testing Some layout tests Need to grow this to a full-featured test suite, preferably also a conformance suite

Current differences from the XBL2 spec:

  • Shadow root element Instead of it being a <template> element clone, we use a different node type (SHADOW_ROOT_NODE = 14) for the root node.
  • Event retargeting We don't create a separate Event object for each re-targeting, because we don't worry about component isolation (yet).
  • pseudo attribute Same as XBL2 pseudo, but allows arbitrary value and CSS machinery has been modified to allow any value.
  • Tree scopes Matches the shadow scope notion of in XBL2, but is a more explicit abstraction.
  • Inheritance Won't be implementing. This feature is overly complex and unnecessary for the component model. See this post to public-webapps.
  • Content element Need to better understand requirements and use cases to spec/implement properly. Certainly won't be implementing the way it's defined in XBL 2.0.