Obj-C SDK Cleanup

This CL separates the files under sdk/objc into logical directories, replacing
the previous file layout under Framework/.

A long term goal is to have some system set up to generate the files under
sdk/objc/api (the PeerConnection API wrappers) from the C++ code. In the shorter
term the goal is to abstract out shared concepts from these classes in order to
make them as uniform as possible.

The separation into base/, components/, and helpers/ are to differentiate between
the base layer's common protocols, various utilities and the actual platform
specific components.

The old directory layout that resembled a framework's internal layout is not
necessary, since it is generated by the framework target when building it.

Bug: webrtc:9627
Change-Id: Ib084fd83f050ae980649ca99e841f4fb0580bd8f
Reviewed-on: https://webrtc-review.googlesource.com/94142
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Anders Carlsson <andersc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24493}
diff --git a/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnection.h b/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnection.h
index 90fff25..df9bc85 100644
--- a/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnection.h
+++ b/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnection.h
@@ -8,309 +8,4 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#import <Foundation/Foundation.h>
-
-#import <WebRTC/RTCMacros.h>
-
-@class RTCConfiguration;
-@class RTCDataChannel;
-@class RTCDataChannelConfiguration;
-@class RTCIceCandidate;
-@class RTCMediaConstraints;
-@class RTCMediaStream;
-@class RTCMediaStreamTrack;
-@class RTCPeerConnectionFactory;
-@class RTCRtpReceiver;
-@class RTCRtpSender;
-@class RTCRtpTransceiver;
-@class RTCRtpTransceiverInit;
-@class RTCSessionDescription;
-@class RTCLegacyStatsReport;
-
-typedef NS_ENUM(NSInteger, RTCRtpMediaType);
-
-NS_ASSUME_NONNULL_BEGIN
-
-extern NSString *const kRTCPeerConnectionErrorDomain;
-extern int const kRTCSessionDescriptionErrorCode;
-
-/** Represents the signaling state of the peer connection. */
-typedef NS_ENUM(NSInteger, RTCSignalingState) {
-  RTCSignalingStateStable,
-  RTCSignalingStateHaveLocalOffer,
-  RTCSignalingStateHaveLocalPrAnswer,
-  RTCSignalingStateHaveRemoteOffer,
-  RTCSignalingStateHaveRemotePrAnswer,
-  // Not an actual state, represents the total number of states.
-  RTCSignalingStateClosed,
-};
-
-/** Represents the ice connection state of the peer connection. */
-typedef NS_ENUM(NSInteger, RTCIceConnectionState) {
-  RTCIceConnectionStateNew,
-  RTCIceConnectionStateChecking,
-  RTCIceConnectionStateConnected,
-  RTCIceConnectionStateCompleted,
-  RTCIceConnectionStateFailed,
-  RTCIceConnectionStateDisconnected,
-  RTCIceConnectionStateClosed,
-  RTCIceConnectionStateCount,
-};
-
-/** Represents the ice gathering state of the peer connection. */
-typedef NS_ENUM(NSInteger, RTCIceGatheringState) {
-  RTCIceGatheringStateNew,
-  RTCIceGatheringStateGathering,
-  RTCIceGatheringStateComplete,
-};
-
-/** Represents the stats output level. */
-typedef NS_ENUM(NSInteger, RTCStatsOutputLevel) {
-  RTCStatsOutputLevelStandard,
-  RTCStatsOutputLevelDebug,
-};
-
-@class RTCPeerConnection;
-
-RTC_EXPORT
-@protocol RTCPeerConnectionDelegate <NSObject>
-
-/** Called when the SignalingState changed. */
-- (void)peerConnection:(RTCPeerConnection *)peerConnection
-    didChangeSignalingState:(RTCSignalingState)stateChanged;
-
-/** Called when media is received on a new stream from remote peer. */
-- (void)peerConnection:(RTCPeerConnection *)peerConnection didAddStream:(RTCMediaStream *)stream;
-
-/** Called when a remote peer closes a stream.
- *  This is not called when RTCSdpSemanticsUnifiedPlan is specified.
- */
-- (void)peerConnection:(RTCPeerConnection *)peerConnection didRemoveStream:(RTCMediaStream *)stream;
-
-/** Called when negotiation is needed, for example ICE has restarted. */
-- (void)peerConnectionShouldNegotiate:(RTCPeerConnection *)peerConnection;
-
-/** Called any time the IceConnectionState changes. */
-- (void)peerConnection:(RTCPeerConnection *)peerConnection
-    didChangeIceConnectionState:(RTCIceConnectionState)newState;
-
-/** Called any time the IceGatheringState changes. */
-- (void)peerConnection:(RTCPeerConnection *)peerConnection
-    didChangeIceGatheringState:(RTCIceGatheringState)newState;
-
-/** New ice candidate has been found. */
-- (void)peerConnection:(RTCPeerConnection *)peerConnection
-    didGenerateIceCandidate:(RTCIceCandidate *)candidate;
-
-/** Called when a group of local Ice candidates have been removed. */
-- (void)peerConnection:(RTCPeerConnection *)peerConnection
-    didRemoveIceCandidates:(NSArray<RTCIceCandidate *> *)candidates;
-
-/** New data channel has been opened. */
-- (void)peerConnection:(RTCPeerConnection *)peerConnection
-    didOpenDataChannel:(RTCDataChannel *)dataChannel;
-
-/** Called when signaling indicates a transceiver will be receiving media from
- *  the remote endpoint.
- *  This is only called with RTCSdpSemanticsUnifiedPlan specified.
- */
-@optional
-- (void)peerConnection:(RTCPeerConnection *)peerConnection
-    didStartReceivingOnTransceiver:(RTCRtpTransceiver *)transceiver;
-
-/** Called when a receiver and its track are created. */
-@optional
-- (void)peerConnection:(RTCPeerConnection *)peerConnection
-        didAddReceiver:(RTCRtpReceiver *)rtpReceiver
-               streams:(NSArray<RTCMediaStream *> *)mediaStreams;
-
-/** Called when the receiver and its track are removed. */
-- (void)peerConnection:(RTCPeerConnection *)peerConnection
-     didRemoveReceiver:(RTCRtpReceiver *)rtpReceiver;
-
-@end
-
-RTC_EXPORT
-@interface RTCPeerConnection : NSObject
-
-/** The object that will be notifed about events such as state changes and
- *  streams being added or removed.
- */
-@property(nonatomic, weak, nullable) id<RTCPeerConnectionDelegate> delegate;
-/** This property is not available with RTCSdpSemanticsUnifiedPlan. Please use
- *  |senders| instead.
- */
-@property(nonatomic, readonly) NSArray<RTCMediaStream *> *localStreams;
-@property(nonatomic, readonly, nullable) RTCSessionDescription *localDescription;
-@property(nonatomic, readonly, nullable) RTCSessionDescription *remoteDescription;
-@property(nonatomic, readonly) RTCSignalingState signalingState;
-@property(nonatomic, readonly) RTCIceConnectionState iceConnectionState;
-@property(nonatomic, readonly) RTCIceGatheringState iceGatheringState;
-@property(nonatomic, readonly, copy) RTCConfiguration *configuration;
-
-/** Gets all RTCRtpSenders associated with this peer connection.
- *  Note: reading this property returns different instances of RTCRtpSender.
- *  Use isEqual: instead of == to compare RTCRtpSender instances.
- */
-@property(nonatomic, readonly) NSArray<RTCRtpSender *> *senders;
-
-/** Gets all RTCRtpReceivers associated with this peer connection.
- *  Note: reading this property returns different instances of RTCRtpReceiver.
- *  Use isEqual: instead of == to compare RTCRtpReceiver instances.
- */
-@property(nonatomic, readonly) NSArray<RTCRtpReceiver *> *receivers;
-
-/** Gets all RTCRtpTransceivers associated with this peer connection.
- *  Note: reading this property returns different instances of
- *  RTCRtpTransceiver. Use isEqual: instead of == to compare RTCRtpTransceiver
- *  instances.
- *  This is only available with RTCSdpSemanticsUnifiedPlan specified.
- */
-@property(nonatomic, readonly) NSArray<RTCRtpTransceiver *> *transceivers;
-
-- (instancetype)init NS_UNAVAILABLE;
-
-/** Sets the PeerConnection's global configuration to |configuration|.
- *  Any changes to STUN/TURN servers or ICE candidate policy will affect the
- *  next gathering phase, and cause the next call to createOffer to generate
- *  new ICE credentials. Note that the BUNDLE and RTCP-multiplexing policies
- *  cannot be changed with this method.
- */
-- (BOOL)setConfiguration:(RTCConfiguration *)configuration;
-
-/** Terminate all media and close the transport. */
-- (void)close;
-
-/** Provide a remote candidate to the ICE Agent. */
-- (void)addIceCandidate:(RTCIceCandidate *)candidate;
-
-/** Remove a group of remote candidates from the ICE Agent. */
-- (void)removeIceCandidates:(NSArray<RTCIceCandidate *> *)candidates;
-
-/** Add a new media stream to be sent on this peer connection.
- *  This method is not supported with RTCSdpSemanticsUnifiedPlan. Please use
- *  addTrack instead.
- */
-- (void)addStream:(RTCMediaStream *)stream;
-
-/** Remove the given media stream from this peer connection.
- *  This method is not supported with RTCSdpSemanticsUnifiedPlan. Please use
- *  removeTrack instead.
- */
-- (void)removeStream:(RTCMediaStream *)stream;
-
-/** Add a new media stream track to be sent on this peer connection, and return
- *  the newly created RTCRtpSender. The RTCRtpSender will be associated with
- *  the streams specified in the |streamIds| list.
- *
- *  Errors: If an error occurs, returns nil. An error can occur if:
- *  - A sender already exists for the track.
- *  - The peer connection is closed.
- */
-- (RTCRtpSender *)addTrack:(RTCMediaStreamTrack *)track streamIds:(NSArray<NSString *> *)streamIds;
-
-/** With PlanB semantics, removes an RTCRtpSender from this peer connection.
- *
- *  With UnifiedPlan semantics, sets sender's track to null and removes the
- *  send component from the associated RTCRtpTransceiver's direction.
- *
- *  Returns YES on success.
- */
-- (BOOL)removeTrack:(RTCRtpSender *)sender;
-
-/** addTransceiver creates a new RTCRtpTransceiver and adds it to the set of
- *  transceivers. Adding a transceiver will cause future calls to CreateOffer
- *  to add a media description for the corresponding transceiver.
- *
- *  The initial value of |mid| in the returned transceiver is nil. Setting a
- *  new session description may change it to a non-nil value.
- *
- *  https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-addtransceiver
- *
- *  Optionally, an RtpTransceiverInit structure can be specified to configure
- *  the transceiver from construction. If not specified, the transceiver will
- *  default to having a direction of kSendRecv and not be part of any streams.
- *
- *  These methods are only available when Unified Plan is enabled (see
- *  RTCConfiguration).
- */
-
-/** Adds a transceiver with a sender set to transmit the given track. The kind
- *  of the transceiver (and sender/receiver) will be derived from the kind of
- *  the track.
- */
-- (RTCRtpTransceiver *)addTransceiverWithTrack:(RTCMediaStreamTrack *)track;
-- (RTCRtpTransceiver *)addTransceiverWithTrack:(RTCMediaStreamTrack *)track
-                                          init:(RTCRtpTransceiverInit *)init;
-
-/** Adds a transceiver with the given kind. Can either be RTCRtpMediaTypeAudio
- *  or RTCRtpMediaTypeVideo.
- */
-- (RTCRtpTransceiver *)addTransceiverOfType:(RTCRtpMediaType)mediaType;
-- (RTCRtpTransceiver *)addTransceiverOfType:(RTCRtpMediaType)mediaType
-                                       init:(RTCRtpTransceiverInit *)init;
-
-/** Generate an SDP offer. */
-- (void)offerForConstraints:(RTCMediaConstraints *)constraints
-          completionHandler:(nullable void (^)(RTCSessionDescription *_Nullable sdp,
-                                               NSError *_Nullable error))completionHandler;
-
-/** Generate an SDP answer. */
-- (void)answerForConstraints:(RTCMediaConstraints *)constraints
-           completionHandler:(nullable void (^)(RTCSessionDescription *_Nullable sdp,
-                                                NSError *_Nullable error))completionHandler;
-
-/** Apply the supplied RTCSessionDescription as the local description. */
-- (void)setLocalDescription:(RTCSessionDescription *)sdp
-          completionHandler:(nullable void (^)(NSError *_Nullable error))completionHandler;
-
-/** Apply the supplied RTCSessionDescription as the remote description. */
-- (void)setRemoteDescription:(RTCSessionDescription *)sdp
-           completionHandler:(nullable void (^)(NSError *_Nullable error))completionHandler;
-
-/** Limits the bandwidth allocated for all RTP streams sent by this
- *  PeerConnection. Nil parameters will be unchanged. Setting
- * |currentBitrateBps| will force the available bitrate estimate to the given
- *  value. Returns YES if the parameters were successfully updated.
- */
-- (BOOL)setBweMinBitrateBps:(nullable NSNumber *)minBitrateBps
-          currentBitrateBps:(nullable NSNumber *)currentBitrateBps
-              maxBitrateBps:(nullable NSNumber *)maxBitrateBps;
-
-/** Start or stop recording an Rtc EventLog. */
-- (BOOL)startRtcEventLogWithFilePath:(NSString *)filePath maxSizeInBytes:(int64_t)maxSizeInBytes;
-- (void)stopRtcEventLog;
-
-@end
-
-@interface RTCPeerConnection (Media)
-
-/** Create an RTCRtpSender with the specified kind and media stream ID.
- *  See RTCMediaStreamTrack.h for available kinds.
- *  This method is not supported with RTCSdpSemanticsUnifiedPlan. Please use
- *  addTransceiver instead.
- */
-- (RTCRtpSender *)senderWithKind:(NSString *)kind streamId:(NSString *)streamId;
-
-@end
-
-@interface RTCPeerConnection (DataChannel)
-
-/** Create a new data channel with the given label and configuration. */
-- (nullable RTCDataChannel *)dataChannelForLabel:(NSString *)label
-                                   configuration:(RTCDataChannelConfiguration *)configuration;
-
-@end
-
-@interface RTCPeerConnection (Stats)
-
-/** Gather stats for the given RTCMediaStreamTrack. If |mediaStreamTrack| is nil
- *  statistics are gathered for all tracks.
- */
-- (void)statsForTrack:(nullable RTCMediaStreamTrack *)mediaStreamTrack
-     statsOutputLevel:(RTCStatsOutputLevel)statsOutputLevel
-    completionHandler:(nullable void (^)(NSArray<RTCLegacyStatsReport *> *stats))completionHandler;
-
-@end
-
-NS_ASSUME_NONNULL_END
+#import "api/peerconnection/RTCPeerConnection.h"