Delay PeerConnectionWrapper destruction until data channels are closed Due to a recent WebRTC change, if the PeerConnection is closed before the data channels complete their close dance then an error is raised on the other side of the connection. For our purposes, we can't tell the difference between a connection which was closed on the host-side and a connection that was dropped due to network conditions, host crash, etc. This CL adds some logic to delay destruction of the PeerConnection until after the main data channels (event and control) report that they have closed. These channels are wrapped in several layers of abstraction so instead, mostly to make it simple for the host to handle both WebRTC and Chromotocol connections. The simplest way I could find to track the channel state was to store refptrs for the event and control channels in the WebrtcTransport class and then query them (requires polling) after so often until they report they have successfully closed. If for some reason this takes way longer than usual, we have a max timeout of 5 seconds which will just close the peer connection. Bug: 1083269 Change-Id: I5a42282d7dd4f74ad734e2fc1a955e42c67e4ce7 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2197415 Commit-Queue: Joe Downing <joedow@chromium.org> Reviewed-by: Jamie Walch <jamiewalch@chromium.org> Cr-Commit-Position: refs/heads/master@{#769459}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.