Because of OOPIFs a single WebContents can span multiple renderer processes. When WebContentsObserver::OnRendererUnresponsive is called, it receives an argument pointing out a specific RenderWidgetHost* that is unresponsive. Unfortunately this information is dropped when forwarding the notification and OnRendererUnresponsive in tab_web_contents_delegate_android.cc is only aware of WebContents* that is unresponsive (i.e. is not aware anymore which widget and/or process *within* WebContents is unresponsive).
The above can lead to killing a wrong/innocent renderer process via HungRendererInfoBarDelegate. OTOH, maybe killing the whole tab is WAI? WDYT? Should the user be able to kill individual renderers instead?
FWIW, I see that Chrome's task manager also overrides WebContentsEntry::OnRendererUnresponsive, but keeps processing it at task manager's task granularity (so hopefully preserving the information which specific renderer is unresponsive).
Comment 1 by boliu@chromium.org
, Sep 21 2017