Firefox 34 leaks shadowed elements to document.activeElement (though not through FocusEvent) and it does not implement ShadowRoot.activeElement. Chrome 39 focuses shadowed content and only reports the shadow-host to document.activeElement and the FocusEvent. Unlinke Chrome, Firefox dispatches a new FocusEvent for every activeElement change within a shadow-host.

Firefox 34 does not expose ShadowRoot.host but that is already fixed in Firefox 37.

Firefox does not know either CSS pseudo ::shadow nor >>> (formerly /deep/) and thus cannot "easily" query shadow hosts. Chrome supports the pseudo element, but only if a descendant of ::shadow is queried. Chrome has not yet switched from /deep/ to >>> (Bug 446051) This effectively allows finding all focusable elements in the composed tree.

Firefox adds shadowed elements with [tabindex="1"] to the document's tablist in the global order. Chrome (correctly) treats the shadow root as the context in which tabindex order is determined, i.e. shadow-dom localizes the effects of [tabindex="1"] to the shadow root.

Chrome focuses the very first element with [autofocus] regardless of it being shadowed or not. Firefox prefers a non-shadowed element with [autofocus] over a shadowed element with autofocus. [autofocus] has no effect on tabbing-order when entering a shadow-root, i.e. it is completely ignored after page-load.

[Specification] Running shadowHost.focus() has no effect (unless it happens to be focusable by itself). The ShadowRoot is not informed of the focus request.

KeyEvent does not leak shadowed content, but is posing the same problem as <video> in IE11 in respect to TAB not necessarily changing document.activeElement.

Note: for Firefox the setting dom.webcomponents.enabled needs to be set to true