RTCPeerConnection is stopping its backend twice sometimes
https://bugs.webkit.org/show_bug.cgi?id=171043
Patch by Youenn Fablet <youenn@apple.com> on 2017-04-20
Reviewed by Eric Carlson.
Source/WebCore:
Test: webrtc/closing-peerconnection.html
Making sure we stop the backend only once.
Adding an internals API to close the peer connection so as to replicate frame disconnection.
* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::doClose):
(WebCore::RTCPeerConnection::doStop):
* Modules/mediastream/RTCPeerConnection.h:
* testing/Internals.cpp:
(WebCore::Internals::stopPeerConnection):
* testing/Internals.h:
* testing/Internals.idl:
LayoutTests:
* webrtc/closing-peerconnection-expected.txt: Added.
* webrtc/closing-peerconnection.html: Added.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@215558 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 9dbf3c7..e5d471e 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,13 @@
+2017-04-20 Youenn Fablet <youenn@apple.com>
+
+ RTCPeerConnection is stopping its backend twice sometimes
+ https://bugs.webkit.org/show_bug.cgi?id=171043
+
+ Reviewed by Eric Carlson.
+
+ * webrtc/closing-peerconnection-expected.txt: Added.
+ * webrtc/closing-peerconnection.html: Added.
+
2017-04-20 Joanmarie Diggs <jdiggs@igalia.com>
[ATK] Implement support for DPub ARIA roles
diff --git a/LayoutTests/webrtc/closing-peerconnection-expected.txt b/LayoutTests/webrtc/closing-peerconnection-expected.txt
new file mode 100644
index 0000000..dd28d1a
--- /dev/null
+++ b/LayoutTests/webrtc/closing-peerconnection-expected.txt
@@ -0,0 +1,3 @@
+
+PASS closing and stopping peer connection in the middle of gathering candidates
+
diff --git a/LayoutTests/webrtc/closing-peerconnection.html b/LayoutTests/webrtc/closing-peerconnection.html
new file mode 100644
index 0000000..2a5995c
--- /dev/null
+++ b/LayoutTests/webrtc/closing-peerconnection.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <title>Testing closing peer connection</title>
+ <script src="../resources/testharness.js"></script>
+ <script src="../resources/testharnessreport.js"></script>
+ </head>
+ <body>
+ <script>
+promise_test((test) => {
+ return new Promise((resolve, reject) => {
+ var pc = new RTCPeerConnection();
+ pc.onicegatheringstatechange = (event) => {
+ if (pc.iceGatheringState == "gathering") {
+ pc.close();
+ if (window.internals)
+ internals.stopPeerConnection(pc);
+ resolve();
+ }
+ }
+ pc.createDataChannel("test");
+ pc.createOffer().then((desc) => pc.setLocalDescription(desc));
+ });
+}, "closing and stopping peer connection in the middle of gathering candidates");
+ </script>
+ </body>
+</html>