Reland "Remove conditional use of LayerTreeView from RenderWidget."

This is a reland of 2ae8e4805cf3528619e05806e836a78d2c740e0b

We found that RenderWidget::DidNavigate can occur after OnClose()
runs, so we should early out if |closing_| at that point.

content::RenderWidget::DidNavigate() + 68
content::RenderFrameImpl::DidCommitProvisionalLoad(blink::WebHistoryItem const&, blink::WebHistoryCommitType, mojo::ScopedHandleBase<mojo::MessagePipeHandle>) + 301
blink::LocalFrameClientImpl::DispatchDidCommitLoad(blink::HistoryItem*, blink::WebHistoryCommitType, blink::WebGlobalObjectReusePolicy) + 265
blink::DocumentLoader::DidCommitNavigation(blink::WebGlobalObjectReusePolicy) + 268
blink::DocumentLoader::InstallNewDocument(blink::KURL const&, scoped_refptr<blink::SecurityOrigin const>, blink::Document*, blink::WebGlobalObjectReusePolicy, WTF::AtomicString const&, WTF::AtomicString const&, blink::DocumentLoader::InstallNewDocumentReason, blink::ParserSynchronizationPolicy, blink::KURL const&) + 691
blink::DocumentLoader::CommitNavigation(WTF::AtomicString const&, blink::KURL const&) + 446
blink::DocumentLoader::CommitData(char const*, unsigned long) + 70
blink::DocumentLoader::DataReceived(blink::Resource*, char const*, unsigned long) + 107
blink::Resource::NotifyDataReceived(char const*, unsigned long) + 118
blink::Resource::AppendData(char const*, unsigned long) + 70
blink::ResourceLoader::DidReceiveData(char const*, int) + 164
content::WebURLLoaderImpl::Context::OnReceivedData(std::__1::unique_ptr<content::RequestPeer::ReceivedData, std::__1::default_delete<content::RequestPeer::ReceivedData> >) + 87
content::WebURLLoaderImpl::RequestPeerImpl::OnReceivedData(std::__1::unique_ptr<content::RequestPeer::ReceivedData, std::__1::default_delete<content::RequestPeer::ReceivedData> >) + 42Original change's description:

Also don't remove the MainThreadEventQueue client until the RenderWidget
is destroyed to avoid dropping the mojo reply callback.

> Remove conditional use of LayerTreeView from RenderWidget.
>
> The LayerTreeView is always present since we always composite
> RenderWidgets now (for many years ^_^).
>
> However, the LayerTreeView *is* removed during shutdown. Most places
> will not need to worry about this because OnClose() drops the IPC
> channel and most uses of LayerTreeView are in response to other IPCs.
>
> However a few cases involve calls from Blink which could still be
> active in between OnClose() and tearing down the RenderWidget+Blink,
> so in these cases early out if |closing_| which represents better
> conceptually what we're testing.
>
> TBR=avi@chromium.org
>
> Change-Id: Iff9133d9c69b327495f9290afcb471739124018b
> Bug: 912193
> Reviewed-on: https://chromium-review.googlesource.com/c/1432132
> Reviewed-by: danakj <danakj@chromium.org>
> Reviewed-by: Albert J. Wong <ajwong@chromium.org>
> Commit-Queue: danakj <danakj@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#625473}

Bug: 912193
Change-Id: I148c56da1aa682daa84ccdaef3f836514f744e01
Reviewed-on: https://chromium-review.googlesource.com/c/1434975
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#625865}
1 file changed