Walking the renderer parent chain is wrong with top layer (dialog, ::backdrop).
<rdar://problem/87607943>
HTMLPlugInElement::isReplacementObscured() and ContentChangeObserver::isVisuallyHidden() do the same thing.
And RenderLayer::isTransparentRespectingParentFrames()
HTMLPlugInElement::isReplacementObscured() and RenderLayer::isTransparentRespectingParentFrames() use the layer parent() chain so bug 235194 fixes them. ContentChangeObserver::isVisuallyHidden() is wrong.
Would walking up the stacking context chain be a fix here?
Walking paintOrderParent(), yes.
AXObjectCache::isNodeVisible() was the example mentioned in the original bug title.