The Source/core/html/imports directory contains the implementation of HTML Imports.
The spec can be found here.
HTML Imports form a tree:
HTMLImportTreeRoot.HTMLImportTreeRoot is owned by HTMLImportsController, which is owned by the tree_root document as a DocumentSupplement.HTMLImportChild. They are all owned by HTMLImporTreeRoot. LinkStyle is wired into HTMLImportChild by implementing HTMLImportChildClient interface.HTMLImportTreeRoot and HTMLImportChild are derived from HTMLImport superclass that models the tree data structure using WTF::TreeNode and provides a set of virtual functions.HTMLImportsController also owns all loaders in the tree and manages their lifetime through it. One assumption is that the tree is append-only and nodes are never inserted in the middle of the tree nor removed.
Full diagram is here
HTMLImportLoaderThe HTML Imports spec calls for de-dup mechanism to share already loaded imports. To implement this, the actual loading machinery is split out from HTMLImportChild to HTMLImportLoader, and each loader shares HTMLImportLoader with other loader if the URL is same. Check around HTMLImportTreeRoot::Find() for more detail.
HTMLImportLoader can be shared by multiple imports.
HTMLImportChild (1)-->(*) HTMLImportLoader
<script> until all of its children are loaded. Note that dynamically added import won't block the parser.