Return correct subtype from RTCRtpSender/Receiver track.

Bug: webrtc:8915
Change-Id: Iaa004d5d3e055cdaa08daf57b662b6711ead681d
Reviewed-on: https://webrtc-review.googlesource.com/56661
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Commit-Queue: Kári Helgason <kthelgason@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22155}
diff --git a/sdk/objc/Framework/Classes/PeerConnection/RTCMediaStreamTrack+Private.h b/sdk/objc/Framework/Classes/PeerConnection/RTCMediaStreamTrack+Private.h
index cb93f11..bcf7a5f 100644
--- a/sdk/objc/Framework/Classes/PeerConnection/RTCMediaStreamTrack+Private.h
+++ b/sdk/objc/Framework/Classes/PeerConnection/RTCMediaStreamTrack+Private.h
@@ -49,6 +49,9 @@
 
 + (NSString *)stringForState:(RTCMediaStreamTrackState)state;
 
++ (RTCMediaStreamTrack *)mediaTrackForNativeTrack:
+        (rtc::scoped_refptr<webrtc::MediaStreamTrackInterface>)nativeTrack;
+
 @end
 
 NS_ASSUME_NONNULL_END
diff --git a/sdk/objc/Framework/Classes/PeerConnection/RTCMediaStreamTrack.mm b/sdk/objc/Framework/Classes/PeerConnection/RTCMediaStreamTrack.mm
index 208550f..5c1b5a3 100644
--- a/sdk/objc/Framework/Classes/PeerConnection/RTCMediaStreamTrack.mm
+++ b/sdk/objc/Framework/Classes/PeerConnection/RTCMediaStreamTrack.mm
@@ -8,7 +8,9 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#import "RTCAudioTrack+Private.h"
 #import "RTCMediaStreamTrack+Private.h"
+#import "RTCVideoTrack+Private.h"
 
 #import "NSString+StdString.h"
 
@@ -134,4 +136,18 @@
   }
 }
 
++ (RTCMediaStreamTrack *)mediaTrackForNativeTrack:
+        (rtc::scoped_refptr<webrtc::MediaStreamTrackInterface>)nativeTrack {
+  NSParameterAssert(nativeTrack);
+  if (nativeTrack->kind() == webrtc::MediaStreamTrackInterface::kAudioKind) {
+    return
+        [[RTCAudioTrack alloc] initWithNativeTrack:nativeTrack type:RTCMediaStreamTrackTypeAudio];
+  } else if (nativeTrack->kind() == webrtc::MediaStreamTrackInterface::kVideoKind) {
+    return
+        [[RTCVideoTrack alloc] initWithNativeTrack:nativeTrack type:RTCMediaStreamTrackTypeVideo];
+  } else {
+    return [[RTCMediaStreamTrack alloc] initWithNativeTrack:nativeTrack];
+  }
+}
+
 @end
diff --git a/sdk/objc/Framework/Classes/PeerConnection/RTCRtpReceiver.mm b/sdk/objc/Framework/Classes/PeerConnection/RTCRtpReceiver.mm
index cb2771a..0677a9b 100644
--- a/sdk/objc/Framework/Classes/PeerConnection/RTCRtpReceiver.mm
+++ b/sdk/objc/Framework/Classes/PeerConnection/RTCRtpReceiver.mm
@@ -62,7 +62,7 @@
   rtc::scoped_refptr<webrtc::MediaStreamTrackInterface> nativeTrack(
     _nativeRtpReceiver->track());
   if (nativeTrack) {
-    return [[RTCMediaStreamTrack alloc] initWithNativeTrack:nativeTrack];
+    return [RTCMediaStreamTrack mediaTrackForNativeTrack:nativeTrack];
   }
   return nil;
 }
diff --git a/sdk/objc/Framework/Classes/PeerConnection/RTCRtpSender.mm b/sdk/objc/Framework/Classes/PeerConnection/RTCRtpSender.mm
index ed007cf..e980ade 100644
--- a/sdk/objc/Framework/Classes/PeerConnection/RTCRtpSender.mm
+++ b/sdk/objc/Framework/Classes/PeerConnection/RTCRtpSender.mm
@@ -44,7 +44,7 @@
   rtc::scoped_refptr<webrtc::MediaStreamTrackInterface> nativeTrack(
     _nativeRtpSender->track());
   if (nativeTrack) {
-    return [[RTCMediaStreamTrack alloc] initWithNativeTrack:nativeTrack];
+    return [RTCMediaStreamTrack mediaTrackForNativeTrack:nativeTrack];
   }
   return nil;
 }