This is likely inefficient, but I haven't found a way other than this to ensure that the host frame is updated if the inserted/removed content isn't slotted. I'm assuming that Firefox is handling this somewhere else (and may have been even moved to Stylo), but was mentioned in an m-c bug we haven't seen yet. In fact, this is actually similar to how we handled elements passed to ContentInserted before landing e31ed5b07466d4a579fe4b025f97c971003fbc3f.
* Unlike the original patch, this does not remove the XPCOM version of Document.adoptNode/importNode to avoid breaking other applications that might be using those functions.
This covers the following:
Bug 1413834 Implement sequential focus navigation regarding shadow DOM
> Bug 1430020 Let sequential focus navigation in shadow DOM enter iframes
> Bug 1430701 Handle focus navigation on frameless shadow hosts in light DOM
> Bug 1430692 Handle focus navigation on NAC in shadow DOM
> Bug 1453693 Ensure sequential focus navigation works in Shadow DOM and add some tests
> Bug 1466581 Handle sequential focus also in nested shadow DOM
> Bug 1481079 Shadow DOM hosts should be focusable
> Bug 1507101 Use StyleChildrenIterator instead of custom frame tree walking code to handle NAC inside shadow dom
> Bug 1512043 Ensure traverse all nodes owned by the top level shadow host
> Bug 1512457 Fix various cases that focus navigation doesn't work well with frameless shadow host
> Bug 1513141 Really minor nsFocusManager cleanup
> Bug 1519090 Keyboard focus is trapped inside <slot>
> Bug 1528034 Make IsHostOrSlot null-safe
> Bug 1544826 Wrong focus navigation behavior when the root element is a shadow root
>> Bug 1500273 Ensure backward focus navigation works in Shadow DOM
* RE: BasicEvents.h - our WidgetEvent is not movable (yet), so the change that requires that wasn't included.
* Parts of this use code that was introduced in bug 1427511. For now, they were replaced with their equivalents.
Based on FranklinDM's follow-up for the issue.
This would require browser FE changes, particularly removing the associated
code in `tabbrowser.xml`, however, that was already done in Pale Moon previously.
Other front-end applications may need to take note, though.
Based on changes from the following bugs:
* Bug 696398 - Need an api to analyze panning performance
* Bug 800031 - Include paint time in tab switch telemetry
* Bug 820167 - Enable performance measurement of tab animation
* Bug 826383 - Improve Start/Stop FrameTimeRecording for telemetry usage