Propagate MediaStreamSource state to video tracks the same way as audio.
Also removes unused track states kLive and kFailed.
Since this also required a Video source to exist in all unit tests that create a track, a FakeVideoTrackSource is added and used in tests.

BUG=webrtc:5426

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

Cr-Commit-Position: refs/heads/master@{#12098}
diff --git a/webrtc/api/objc/RTCMediaStreamTrack.h b/webrtc/api/objc/RTCMediaStreamTrack.h
index 7883843..b8576bd 100644
--- a/webrtc/api/objc/RTCMediaStreamTrack.h
+++ b/webrtc/api/objc/RTCMediaStreamTrack.h
@@ -11,14 +11,11 @@
 #import <Foundation/Foundation.h>
 
 /**
- * Represents the state of the track. This exposes the same states in C++,
- * which include two more states than are in the W3C spec.
+ * Represents the state of the track. This exposes the same states in C++.
  */
 typedef NS_ENUM(NSInteger, RTCMediaStreamTrackState) {
-  RTCMediaStreamTrackStateInitializing,
   RTCMediaStreamTrackStateLive,
-  RTCMediaStreamTrackStateEnded,
-  RTCMediaStreamTrackStateFailed,
+  RTCMediaStreamTrackStateEnded
 };
 
 NS_ASSUME_NONNULL_BEGIN
diff --git a/webrtc/api/objc/RTCMediaStreamTrack.mm b/webrtc/api/objc/RTCMediaStreamTrack.mm
index 260c89d..25979b3 100644
--- a/webrtc/api/objc/RTCMediaStreamTrack.mm
+++ b/webrtc/api/objc/RTCMediaStreamTrack.mm
@@ -67,41 +67,29 @@
 + (webrtc::MediaStreamTrackInterface::TrackState)nativeTrackStateForState:
     (RTCMediaStreamTrackState)state {
   switch (state) {
-    case RTCMediaStreamTrackStateInitializing:
-      return webrtc::MediaStreamTrackInterface::kInitializing;
     case RTCMediaStreamTrackStateLive:
       return webrtc::MediaStreamTrackInterface::kLive;
     case RTCMediaStreamTrackStateEnded:
       return webrtc::MediaStreamTrackInterface::kEnded;
-    case RTCMediaStreamTrackStateFailed:
-      return webrtc::MediaStreamTrackInterface::kFailed;
   }
 }
 
 + (RTCMediaStreamTrackState)trackStateForNativeState:
     (webrtc::MediaStreamTrackInterface::TrackState)nativeState {
   switch (nativeState) {
-    case webrtc::MediaStreamTrackInterface::kInitializing:
-      return RTCMediaStreamTrackStateInitializing;
     case webrtc::MediaStreamTrackInterface::kLive:
       return RTCMediaStreamTrackStateLive;
     case webrtc::MediaStreamTrackInterface::kEnded:
       return RTCMediaStreamTrackStateEnded;
-    case webrtc::MediaStreamTrackInterface::kFailed:
-      return RTCMediaStreamTrackStateFailed;
   }
 }
 
 + (NSString *)stringForState:(RTCMediaStreamTrackState)state {
   switch (state) {
-    case RTCMediaStreamTrackStateInitializing:
-      return @"Initializing";
     case RTCMediaStreamTrackStateLive:
       return @"Live";
     case RTCMediaStreamTrackStateEnded:
       return @"Ended";
-    case RTCMediaStreamTrackStateFailed:
-      return @"Failed";
   }
 }