Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(327)

Side by Side Diff: third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.h

Issue 2946663003: content::RTCRtpSenders/Receivers using track adapter references. (Closed)
Patch Set: scoped_refptr and std::move Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 void Resume() override; 204 void Resume() override;
205 void ContextDestroyed(ExecutionContext*) override; 205 void ContextDestroyed(ExecutionContext*) override;
206 206
207 // ScriptWrappable 207 // ScriptWrappable
208 // We keep the this object alive until either stopped or closed. 208 // We keep the this object alive until either stopped or closed.
209 bool HasPendingActivity() const final { return !closed_ && !stopped_; } 209 bool HasPendingActivity() const final { return !closed_ && !stopped_; }
210 210
211 DECLARE_VIRTUAL_TRACE(); 211 DECLARE_VIRTUAL_TRACE();
212 212
213 private: 213 private:
214 friend class RTCPeerConnectionTest; 214 friend class RTCPeerConnectionTest;
Guido Urdaneta 2017/06/20 11:32:16 Maybe I missed this on another review, but can you
Guido Urdaneta 2017/06/20 11:47:42 Note that you don't have to fix this (if there is
hbos_chromium 2017/06/20 12:05:49 Done: https://codereview.chromium.org/2944323002/
215 215
216 typedef Function<bool()> BoolFunction; 216 typedef Function<bool()> BoolFunction;
217 class EventWrapper : public GarbageCollectedFinalized<EventWrapper> { 217 class EventWrapper : public GarbageCollectedFinalized<EventWrapper> {
218 public: 218 public:
219 EventWrapper(Event*, std::unique_ptr<BoolFunction>); 219 EventWrapper(Event*, std::unique_ptr<BoolFunction>);
220 // Returns true if |m_setupFunction| returns true or it is null. 220 // Returns true if |m_setupFunction| returns true or it is null.
221 // |m_event| will only be fired if setup() returns true; 221 // |m_event| will only be fired if setup() returns true;
222 bool Setup(); 222 bool Setup();
223 223
224 DECLARE_TRACE(); 224 DECLARE_TRACE();
225 225
226 Member<Event> event_; 226 Member<Event> event_;
227 227
228 private: 228 private:
229 std::unique_ptr<BoolFunction> setup_function_; 229 std::unique_ptr<BoolFunction> setup_function_;
230 }; 230 };
231 231
232 RTCPeerConnection(ExecutionContext*, 232 RTCPeerConnection(ExecutionContext*,
233 const WebRTCConfiguration&, 233 const WebRTCConfiguration&,
234 WebMediaConstraints, 234 WebMediaConstraints,
235 ExceptionState&); 235 ExceptionState&);
236 void Dispose(); 236 void Dispose();
237 237
238 void ScheduleDispatchEvent(Event*); 238 void ScheduleDispatchEvent(Event*);
239 void ScheduleDispatchEvent(Event*, std::unique_ptr<BoolFunction>); 239 void ScheduleDispatchEvent(Event*, std::unique_ptr<BoolFunction>);
240 void DispatchScheduledEvent(); 240 void DispatchScheduledEvent();
241 MediaStreamTrack* GetTrack(const WebMediaStreamTrack& web_track) const; 241 MediaStreamTrack* GetTrack(const WebMediaStreamTrack& web_track) const;
242 // Senders and receivers returned by the handler are in use by the peer
243 // connection, a sender or receiver that is no longer in use is permanently
244 // inactive and does not need to be referenced anymore. These methods removes
245 // such senders/receivers from |rtp_senders_|/|rtp_receivers_|.
246 void RemoveInactiveSenders();
247 void RemoveInactiveReceivers();
248 242
249 void ChangeSignalingState(WebRTCPeerConnectionHandlerClient::SignalingState); 243 void ChangeSignalingState(WebRTCPeerConnectionHandlerClient::SignalingState);
250 void ChangeIceGatheringState( 244 void ChangeIceGatheringState(
251 WebRTCPeerConnectionHandlerClient::ICEGatheringState); 245 WebRTCPeerConnectionHandlerClient::ICEGatheringState);
252 // Changes the state immediately; does not fire an event. 246 // Changes the state immediately; does not fire an event.
253 // Returns true if the state was changed. 247 // Returns true if the state was changed.
254 bool SetIceConnectionState( 248 bool SetIceConnectionState(
255 WebRTCPeerConnectionHandlerClient::ICEConnectionState); 249 WebRTCPeerConnectionHandlerClient::ICEConnectionState);
256 // Changes the state asynchronously and fires an event immediately after 250 // Changes the state asynchronously and fires an event immediately after
257 // changing the state. 251 // changing the state.
258 void ChangeIceConnectionState( 252 void ChangeIceConnectionState(
259 WebRTCPeerConnectionHandlerClient::ICEConnectionState); 253 WebRTCPeerConnectionHandlerClient::ICEConnectionState);
260 254
261 void CloseInternal(); 255 void CloseInternal();
262 256
263 void RecordRapporMetrics(); 257 void RecordRapporMetrics();
264 258
265 SignalingState signaling_state_; 259 SignalingState signaling_state_;
266 ICEGatheringState ice_gathering_state_; 260 ICEGatheringState ice_gathering_state_;
267 ICEConnectionState ice_connection_state_; 261 ICEConnectionState ice_connection_state_;
268 262
269 MediaStreamVector local_streams_; 263 MediaStreamVector local_streams_;
270 MediaStreamVector remote_streams_; 264 MediaStreamVector remote_streams_;
271 // A map containing any track that is in use by the peer connection. This 265 // A map containing any track that is in use by the peer connection. This
272 // includes tracks of |local_streams_|, |remote_streams_|, |rtp_senders_| and 266 // includes tracks of |local_streams_|, |remote_streams_|, |rtp_senders_| and
273 // |rtp_receivers_|. 267 // |rtp_receivers_|.
274 HeapHashMap<WeakMember<MediaStreamComponent>, WeakMember<MediaStreamTrack>> 268 HeapHashMap<WeakMember<MediaStreamComponent>, WeakMember<MediaStreamTrack>>
275 tracks_; 269 tracks_;
276 HeapHashMap<uintptr_t, Member<RTCRtpSender>> rtp_senders_; 270 HeapHashMap<uintptr_t, WeakMember<RTCRtpSender>> rtp_senders_;
277 HeapHashMap<uintptr_t, Member<RTCRtpReceiver>> rtp_receivers_; 271 HeapHashMap<uintptr_t, WeakMember<RTCRtpReceiver>> rtp_receivers_;
278 272
279 std::unique_ptr<WebRTCPeerConnectionHandler> peer_handler_; 273 std::unique_ptr<WebRTCPeerConnectionHandler> peer_handler_;
280 274
281 Member<AsyncMethodRunner<RTCPeerConnection>> dispatch_scheduled_event_runner_; 275 Member<AsyncMethodRunner<RTCPeerConnection>> dispatch_scheduled_event_runner_;
282 HeapVector<Member<EventWrapper>> scheduled_events_; 276 HeapVector<Member<EventWrapper>> scheduled_events_;
283 277
284 // This handle notifies scheduler about an active connection associated 278 // This handle notifies scheduler about an active connection associated
285 // with a frame. Handle should be destroyed when connection is closed. 279 // with a frame. Handle should be destroyed when connection is closed.
286 std::unique_ptr<WebFrameScheduler::ActiveConnectionHandle> 280 std::unique_ptr<WebFrameScheduler::ActiveConnectionHandle>
287 connection_handle_for_scheduler_; 281 connection_handle_for_scheduler_;
288 282
289 bool stopped_; 283 bool stopped_;
290 bool closed_; 284 bool closed_;
291 285
292 bool has_data_channels_; // For RAPPOR metrics 286 bool has_data_channels_; // For RAPPOR metrics
293 }; 287 };
294 288
295 } // namespace blink 289 } // namespace blink
296 290
297 #endif // RTCPeerConnection_h 291 #endif // RTCPeerConnection_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698