RTCMediaStreamTrackStats.framesDecoded collected.

According to spec:
https://w3c.github.io/webrtc-stats/#dom-rtcmediastreamtrackstats-framesdecoded

BUG=webrtc:6757, chromium:659137, chromium:627816

Review-Url: https://codereview.webrtc.org/2642713004
Cr-Commit-Position: refs/heads/master@{#16192}
diff --git a/webrtc/api/rtcstats_integrationtest.cc b/webrtc/api/rtcstats_integrationtest.cc
index 903c8c8..6d14c46 100644
--- a/webrtc/api/rtcstats_integrationtest.cc
+++ b/webrtc/api/rtcstats_integrationtest.cc
@@ -442,12 +442,14 @@
         verifier.TestMemberIsUndefined(media_stream_track.frames_sent);
         verifier.TestMemberIsNonNegative<uint32_t>(
             media_stream_track.frames_received);
+        verifier.TestMemberIsNonNegative<uint32_t>(
+            media_stream_track.frames_decoded);
       } else {
         verifier.TestMemberIsNonNegative<uint32_t>(
             media_stream_track.frames_sent);
         verifier.TestMemberIsUndefined(media_stream_track.frames_received);
+        verifier.TestMemberIsUndefined(media_stream_track.frames_decoded);
       }
-      verifier.TestMemberIsUndefined(media_stream_track.frames_decoded);
       verifier.TestMemberIsUndefined(media_stream_track.frames_dropped);
       verifier.TestMemberIsUndefined(media_stream_track.frames_corrupted);
       verifier.TestMemberIsUndefined(media_stream_track.partial_frames_lost);
diff --git a/webrtc/api/rtcstatscollector.cc b/webrtc/api/rtcstatscollector.cc
index 27afcc1..e7929cb 100644
--- a/webrtc/api/rtcstatscollector.cc
+++ b/webrtc/api/rtcstatscollector.cc
@@ -440,6 +440,11 @@
         video_receiver_info.frame_height);
   }
   video_track_stats->frames_received = video_receiver_info.frames_received;
+  // TODO(hbos): When we support receiving simulcast, this should be the total
+  // number of frames correctly decoded, independent of which SSRC it was
+  // received from. Since we don't support that, this is correct and is the same
+  // value as "RTCInboundRTPStreamStats.framesDecoded". crbug.com/659137
+  video_track_stats->frames_decoded = video_receiver_info.frames_decoded;
   return video_track_stats;
 }
 
diff --git a/webrtc/api/rtcstatscollector_unittest.cc b/webrtc/api/rtcstatscollector_unittest.cc
index da5d41e..c5e8a9c 100644
--- a/webrtc/api/rtcstatscollector_unittest.cc
+++ b/webrtc/api/rtcstatscollector_unittest.cc
@@ -1543,6 +1543,7 @@
   video_receiver_info_ssrc3.frame_width = 6789;
   video_receiver_info_ssrc3.frame_height = 9876;
   video_receiver_info_ssrc3.frames_received = 2468;
+  video_receiver_info_ssrc3.frames_decoded = 1234;
 
   // Remote video track with undefined (default) values
   rtc::scoped_refptr<MediaStreamTrackInterface> remote_video_track_ssrc4 =
@@ -1557,6 +1558,7 @@
   video_receiver_info_ssrc4.frame_width = 0;
   video_receiver_info_ssrc4.frame_height = 0;
   video_receiver_info_ssrc4.frames_received = 0;
+  video_receiver_info_ssrc4.frames_decoded = 0;
 
   test_->CreateMockRtpSendersReceiversAndChannels(
       {}, {},
@@ -1632,6 +1634,7 @@
   expected_remote_video_track_ssrc3.frame_width = 6789;
   expected_remote_video_track_ssrc3.frame_height = 9876;
   expected_remote_video_track_ssrc3.frames_received = 2468;
+  expected_remote_video_track_ssrc3.frames_decoded = 1234;
   ASSERT_TRUE(report->Get(expected_remote_video_track_ssrc3.id()));
   EXPECT_EQ(expected_remote_video_track_ssrc3,
             report->Get(expected_remote_video_track_ssrc3.id())->cast_to<
@@ -1646,6 +1649,7 @@
   expected_remote_video_track_ssrc4.ended = false;
   expected_remote_video_track_ssrc4.detached = false;
   expected_remote_video_track_ssrc4.frames_received = 0;
+  expected_remote_video_track_ssrc4.frames_decoded = 0;
   // Should be undefined: |expected_remote_video_track_ssrc4.frame_width| and
   // |expected_remote_video_track_ssrc4.frame_height|.
   ASSERT_TRUE(report->Get(expected_remote_video_track_ssrc4.id()));
diff --git a/webrtc/api/stats/rtcstats_objects.h b/webrtc/api/stats/rtcstats_objects.h
index 0aa1192..3bbe228 100644
--- a/webrtc/api/stats/rtcstats_objects.h
+++ b/webrtc/api/stats/rtcstats_objects.h
@@ -267,7 +267,6 @@
   RTCStatsMember<double> frames_per_second;
   RTCStatsMember<uint32_t> frames_sent;
   RTCStatsMember<uint32_t> frames_received;
-  // TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/659137
   RTCStatsMember<uint32_t> frames_decoded;
   // TODO(hbos): Not collected by |RTCStatsCollector|. crbug.com/659137
   RTCStatsMember<uint32_t> frames_dropped;