Index: third_party/WebKit/Source/core/dom/custom/README.md |
diff --git a/third_party/WebKit/Source/core/dom/custom/README.md b/third_party/WebKit/Source/core/dom/custom/README.md |
index b86a2e18838b70ccbba3020215b94be986b96c46..5d7f387bec4546340b26a952aa05109303968097 100644 |
--- a/third_party/WebKit/Source/core/dom/custom/README.md |
+++ b/third_party/WebKit/Source/core/dom/custom/README.md |
@@ -8,27 +8,46 @@ Contact Dominic Cooney |
([dominicc@chromium.org](mailto:dominicc@chromium.org)) with |
questions. |
+### Code Location |
+ |
+The custom elements implementation is split between core/dom and |
+bindings/core/v8. |
+ |
## Design |
### Some Important Classes |
###### CustomElementDefinition |
-The definition of one ‘class’ of element; it consists of a |
-tag name, and a prototype. |
+The definition of one ‘class’ of element. This type is |
+abstract to permit different kinds of definitions, although at the |
+moment there is only one: ScriptCustomElementDefinition. |
+ |
+ScriptCustomElementDefinition is linked to its constructor by an ID |
+number. The ID number is stored in a map, keyed by constructor, in a |
+hidden value of the CustomElementsRegistry wrapper. The ID is an index |
+into a list of definitions stored in V8PerContextData. |
+ |
+###### CustomElementDescriptor |
+ |
+A tuple of local name, and custom element name. For autonomous custom |
+elements, these strings are the same; for customized built-in elements |
+these strings will be different. In that case, the local name is the |
+element's tag name and the custom element name is related to the value |
+of the “is” attribute. |
###### CustomElementsRegistry |
-Implements the `window.customElements` property. This maintains a list |
-of definitions, and a mapping from constructors to an index in this |
-list. The same map also has indexes as keys and prototypes as values. |
+Implements the `window.customElements` property. This maintains the |
+set of registered names. The wrapper of this object is used by |
+ScriptCustomElementDefinition to cache state in V8. |
###### V8HTMLElement Constructor |
The `HTMLElement` interface constructor. When a custom element is |
created from JavaScript all we have to go on is the constructor (in |
-`new.target`); this uses CustomElementRegistry’s map to find |
-which definition and prototype to use. |
+`new.target`); this uses ScriptCustomElementDefinition's state to find |
+the definition to use. |
### Memory Management |
@@ -38,7 +57,8 @@ the parser. On the other hand, we must not leak when a window can no |
longer run script. |
We use a V8HiddenValue on the CustomElementsRegistry wrapper which |
-points to a map that keeps constructors and prototypes alive. |
+points to a map that keeps constructors and prototypes alive. See |
+ScriptCustomElementDefinition. |
## Style Guide |