Update the sequential focus navigation algorithm so that the focus navigation traverses shadow trees based on a tree of trees.


The algorithm used in the old Shadow DOM spec is to traverse shadow trees based on the composed tree. That has several issues:

- Hard to control distributed nodes's focus navigation. The effect of tabindex attribute is not local to the node tree.
- Focus navigation for <details>/<summary> is broken.
- The focus navigation for multiple shadow roots is ambiguous. The behavior is not clearly defined.


I've recently updated the Shadow DOM spec so that the focus navigation should
traverse shadow trees based on a tree of trees. What's changed:

- A distributed node no longer participates in the focus navigation of the shadow tree.
- A focus scope is now fully recursively defined.
- Each node tree now becomes a scope of a sequential focus navigation order.
- Owners of a focus  scope are:
    * A document - hosting a focus navigation of the document tree.
    * A shadow host - hosting a focus navigation of the youngest shadow tree.
    * A shadow insertion point - hosting a focus navigation of the older shadow root.
- The effect of tabindex attribute is now completely local to the node tree.

Note that there is yet another focus scope owner - IFrameOwnerElement. This patch doesn't change the behavior of a focus navigation for iframes.

Please see the Shadow DOM spec as the normative reference:
https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#focus-navigation

BUG=234034

Review URL: https://chromiumcodereview.appspot.com/23112013

git-svn-id: svn://svn.chromium.org/blink/trunk@156681 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Fix form nodes leak from Document::m_associatedFormControls.

A set of RefPtr<Element> is kept temporarily inside Document to hold arguments to didAssociateFormControls. However, this was kept as a strong ref, constructing a reference chain. This patch clears the set in detach() to make it act as a weak ref and avoid leaking.

BUG=270000

Review URL: https://chromiumcodereview.appspot.com/23205032

git-svn-id: svn://svn.chromium.org/blink/trunk@156682 bbb929c8-8fbe-4397-9dbb-9b2b20218538