Add test that datachannel events are not fired after DC close.

Addresses spec update:
https://github.com/w3c/webrtc-pc/pull/2521

Code was already fixed.

Bug: chromium:1069811
Change-Id: I6547c56a7ea11c2a024a57dd001f740cd9a1f681
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2179006
Reviewed-by: Guido Urdaneta <guidou@chromium.org>
Commit-Queue: Harald Alvestrand <hta@chromium.org>
Cr-Commit-Position: refs/heads/master@{#765038}
diff --git a/webrtc/RTCDataChannel-close.html b/webrtc/RTCDataChannel-close.html
index a417d66..b8feea3 100644
--- a/webrtc/RTCDataChannel-close.html
+++ b/webrtc/RTCDataChannel-close.html
@@ -88,4 +88,33 @@
   assert_equals(error.name, 'OperationError');
 }, 'Close peerconnection causes close event and error to be called');
 
+promise_test(async t => {
+  let pc1 = new RTCPeerConnection();
+  t.add_cleanup(() => pc1.close());
+  let [channel1, channel2] = await createDataChannelPair(pc1);
+  // The expected sequence of events when closing a DC is that
+  // channel1 goes to closing, channel2 fires onclose, and when
+  // the close is confirmed, channel1 fires onclose.
+  // After that, no more events should fire.
+  channel1.onerror = t.unreached_func();
+  let close2Handler = new Promise(resolve => {
+    channel2.onclose = event => {
+      resolve();
+    };
+  });
+  let close1Handler = new Promise(resolve => {
+    channel1.onclose = event => {
+      resolve();
+    };
+  });
+  channel1.close();
+  await close2Handler;
+  await close1Handler;
+  channel1.onclose = t.unreached_func();
+  channel2.onclose = t.unreached_func();
+  channel2.onerror = t.unreached_func();
+  pc1.close();
+  await new Promise(resolve => t.step_timeout(resolve, 10));
+}, 'Close peerconnection after DC close causes no events');
+
 </script>