Revert of Free SCTP data channels asynchronously in PeerConnection. (patchset #3 id:40001 of https://codereview.webrtc.org/1492383002/ )

Reason for revert:
Breaks WebrtcTransportTest.DataStream, due to different rtc::Thread implementation on Chromium.

Original issue's description:
> Free SCTP data channels asynchronously in PeerConnection.
>
> This is needed so that the data channel isn't deleted while one of its
> own methods is on the call stack.
>
> BUG=565048
>
> Committed: https://crrev.com/386869247f28e72a00307a1b5c92465eea343ad2
> Cr-Commit-Position: refs/heads/master@{#10923}

TBR=pthatcher@webrtc.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=565048

Review URL: https://codereview.webrtc.org/1513143003

Cr-Commit-Position: refs/heads/master@{#10977}
diff --git a/talk/app/webrtc/peerconnection.cc b/talk/app/webrtc/peerconnection.cc
index f1ff4e6..933dc83 100644
--- a/talk/app/webrtc/peerconnection.cc
+++ b/talk/app/webrtc/peerconnection.cc
@@ -107,7 +107,6 @@
   MSG_SET_SESSIONDESCRIPTION_FAILED,
   MSG_CREATE_SESSIONDESCRIPTION_FAILED,
   MSG_GETSTATS,
-  MSG_DELETE,
 };
 
 struct SetSessionDescriptionMsg : public rtc::MessageData {
@@ -598,8 +597,6 @@
 PeerConnection::~PeerConnection() {
   TRACE_EVENT0("webrtc", "PeerConnection::~PeerConnection");
   RTC_DCHECK(signaling_thread()->IsCurrent());
-  // Finish any pending deletions.
-  signaling_thread()->Clear(this, MSG_DELETE, nullptr);
   // Need to detach RTP senders/receivers from WebRtcSession,
   // since it's about to be destroyed.
   for (const auto& sender : senders_) {
@@ -1332,10 +1329,6 @@
       delete param;
       break;
     }
-    case MSG_DELETE: {
-      delete msg->pdata;
-      break;
-    }
     default:
       RTC_DCHECK(false && "Not implemented");
       break;
@@ -1915,11 +1908,6 @@
       if (channel->id() >= 0) {
         sid_allocator_.ReleaseSid(channel->id());
       }
-      // Since this method is triggered by a signal from the DataChannel,
-      // we can't free it directly here; we need to free it asynchronously.
-      signaling_thread()->Post(
-          this, MSG_DELETE,
-          new rtc::TypedMessageData<rtc::scoped_refptr<DataChannel>>(channel));
       sctp_data_channels_.erase(it);
       return;
     }
diff --git a/talk/app/webrtc/peerconnectionendtoend_unittest.cc b/talk/app/webrtc/peerconnectionendtoend_unittest.cc
index aff117e..1d7bb92 100644
--- a/talk/app/webrtc/peerconnectionendtoend_unittest.cc
+++ b/talk/app/webrtc/peerconnectionendtoend_unittest.cc
@@ -402,30 +402,3 @@
 
   CloseDataChannels(caller_dc, callee_signaled_data_channels_, 1);
 }
-
-// This tests that if a data channel is closed remotely while not referenced
-// by the application (meaning only the PeerConnection contributes to its
-// reference count), no memory access violation will occur.
-// See: https://code.google.com/p/chromium/issues/detail?id=565048
-TEST_F(PeerConnectionEndToEndTest, CloseDataChannelRemotelyWhileNotReferenced) {
-  MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
-
-  CreatePcs();
-
-  webrtc::DataChannelInit init;
-  rtc::scoped_refptr<DataChannelInterface> caller_dc(
-      caller_->CreateDataChannel("data", init));
-
-  Negotiate();
-  WaitForConnection();
-
-  WaitForDataChannelsToOpen(caller_dc, callee_signaled_data_channels_, 0);
-  // This removes the reference to the remote data channel that we hold.
-  callee_signaled_data_channels_.clear();
-  caller_dc->Close();
-  EXPECT_EQ_WAIT(DataChannelInterface::kClosed, caller_dc->state(), kMaxWait);
-
-  // Wait for a bit longer so the remote data channel will receive the
-  // close message and be destroyed.
-  rtc::Thread::Current()->ProcessMessages(100);
-}