Re-land: Improve sad tab accessibility on views platforms

Original: http://crrev.com/c/887736
Reverted: http://crrev.com/c/909508

The first patch was reverted due to a failure on CFI bots.
WebViewUnitTest was not properly creating a TestRenderViewHostFactory,
so the WebContents automatically created by the WebView was improperly
trying to cast a RenderViewHostImpl to a TestRenderViewHost.
To work around this the tests can explicitly create WebContents
rather than having WebView create it implicitly.

Original description:

This fixes an issue where the focusable views in the
sad tab were not keyboard accessible.

Adds a concept of a crashed tab overlay view to WebView.
WebView now shows this view automatically when its
WebContents is crashed, and hides it otherwise.
SadTabView can now just set this directly, with no
need for a widget.

Handles the case of dragging a tab to a new browser window
by reparenting the sad tab view to that new browser window's
WebView.

In addition, gives the sad tab a role of "alert dialog" and
focuses the action button by default, improving the experience
for screen reader users.

TBR=sky@chromium.org,tapted@chromium.org

Bug: 226871
Change-Id: Ie6e9afc7e13f67034fb9cfb066ae083477b61ce3
Reviewed-on: https://chromium-review.googlesource.com/910716
Commit-Queue: Dominic Mazzoni <dmazzoni@chromium.org>
Reviewed-by: Dominic Mazzoni <dmazzoni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#535735}
25 files changed