RTCDataChannelStats[1] added, supporting all stats members.

Also updates MockDataChannel to also mock id, messages_sent, bytes_sent,
messages_received and bytes_received.

[1] https://w3c.github.io/webrtc-stats/#dcstats-dict*

BUG=chromium:654927, chromium:627816

Review-Url: https://codereview.webrtc.org/2420473002
Cr-Commit-Position: refs/heads/master@{#14670}
diff --git a/webrtc/api/test/mock_datachannel.h b/webrtc/api/test/mock_datachannel.h
index a09964e..1bb3984 100644
--- a/webrtc/api/test/mock_datachannel.h
+++ b/webrtc/api/test/mock_datachannel.h
@@ -18,12 +18,35 @@
 
 class MockDataChannel : public rtc::RefCountedObject<DataChannel> {
  public:
-  explicit MockDataChannel(DataState state)
+  MockDataChannel(int id, DataState state)
+      : MockDataChannel(id, state, 0, 0, 0, 0) {
+  }
+  MockDataChannel(
+      int id,
+      DataState state,
+      uint32_t messages_sent,
+      uint64_t bytes_sent,
+      uint32_t messages_received,
+      uint64_t bytes_received)
       : rtc::RefCountedObject<DataChannel>(
             nullptr, cricket::DCT_NONE, "MockDataChannel") {
+    EXPECT_CALL(*this, id()).WillRepeatedly(testing::Return(id));
     EXPECT_CALL(*this, state()).WillRepeatedly(testing::Return(state));
+    EXPECT_CALL(*this, messages_sent()).WillRepeatedly(
+        testing::Return(messages_sent));
+    EXPECT_CALL(*this, bytes_sent()).WillRepeatedly(
+        testing::Return(bytes_sent));
+    EXPECT_CALL(*this, messages_received()).WillRepeatedly(
+        testing::Return(messages_received));
+    EXPECT_CALL(*this, bytes_received()).WillRepeatedly(
+        testing::Return(bytes_received));
   }
+  MOCK_CONST_METHOD0(id, int());
   MOCK_CONST_METHOD0(state, DataState());
+  MOCK_CONST_METHOD0(messages_sent, uint32_t());
+  MOCK_CONST_METHOD0(bytes_sent, uint64_t());
+  MOCK_CONST_METHOD0(messages_received, uint32_t());
+  MOCK_CONST_METHOD0(bytes_received, uint64_t());
 };
 
 }  // namespace webrtc