| OLD | NEW |
| 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 329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 340 return 0; | 340 return 0; |
| 341 | 341 |
| 342 return peerConnection; | 342 return peerConnection; |
| 343 } | 343 } |
| 344 | 344 |
| 345 RTCPeerConnection::RTCPeerConnection(ExecutionContext* context, RTCConfiguration
* configuration, WebMediaConstraints constraints, ExceptionState& exceptionState
) | 345 RTCPeerConnection::RTCPeerConnection(ExecutionContext* context, RTCConfiguration
* configuration, WebMediaConstraints constraints, ExceptionState& exceptionState
) |
| 346 : ActiveDOMObject(context) | 346 : ActiveDOMObject(context) |
| 347 , m_signalingState(SignalingStateStable) | 347 , m_signalingState(SignalingStateStable) |
| 348 , m_iceGatheringState(ICEGatheringStateNew) | 348 , m_iceGatheringState(ICEGatheringStateNew) |
| 349 , m_iceConnectionState(ICEConnectionStateNew) | 349 , m_iceConnectionState(ICEConnectionStateNew) |
| 350 , m_dispatchScheduledEventRunner(this, &RTCPeerConnection::dispatchScheduled
Event) | 350 , m_dispatchScheduledEventRunner(AsyncMethodRunner<RTCPeerConnection>::creat
e(this, &RTCPeerConnection::dispatchScheduledEvent)) |
| 351 , m_stopped(false) | 351 , m_stopped(false) |
| 352 , m_closed(false) | 352 , m_closed(false) |
| 353 { | 353 { |
| 354 Document* document = toDocument(executionContext()); | 354 Document* document = toDocument(executionContext()); |
| 355 | 355 |
| 356 // If we fail, set |m_closed| and |m_stopped| to true, to avoid hitting the
assert in the destructor. | 356 // If we fail, set |m_closed| and |m_stopped| to true, to avoid hitting the
assert in the destructor. |
| 357 | 357 |
| 358 if (!document->frame()) { | 358 if (!document->frame()) { |
| 359 m_closed = true; | 359 m_closed = true; |
| 360 m_stopped = true; | 360 m_stopped = true; |
| (...skipping 571 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 932 return EventTargetNames::RTCPeerConnection; | 932 return EventTargetNames::RTCPeerConnection; |
| 933 } | 933 } |
| 934 | 934 |
| 935 ExecutionContext* RTCPeerConnection::executionContext() const | 935 ExecutionContext* RTCPeerConnection::executionContext() const |
| 936 { | 936 { |
| 937 return ActiveDOMObject::executionContext(); | 937 return ActiveDOMObject::executionContext(); |
| 938 } | 938 } |
| 939 | 939 |
| 940 void RTCPeerConnection::suspend() | 940 void RTCPeerConnection::suspend() |
| 941 { | 941 { |
| 942 m_dispatchScheduledEventRunner.suspend(); | 942 m_dispatchScheduledEventRunner->suspend(); |
| 943 } | 943 } |
| 944 | 944 |
| 945 void RTCPeerConnection::resume() | 945 void RTCPeerConnection::resume() |
| 946 { | 946 { |
| 947 m_dispatchScheduledEventRunner.resume(); | 947 m_dispatchScheduledEventRunner->resume(); |
| 948 } | 948 } |
| 949 | 949 |
| 950 void RTCPeerConnection::stop() | 950 void RTCPeerConnection::stop() |
| 951 { | 951 { |
| 952 if (m_stopped) | 952 if (m_stopped) |
| 953 return; | 953 return; |
| 954 | 954 |
| 955 m_stopped = true; | 955 m_stopped = true; |
| 956 m_iceConnectionState = ICEConnectionStateClosed; | 956 m_iceConnectionState = ICEConnectionStateClosed; |
| 957 m_signalingState = SignalingStateClosed; | 957 m_signalingState = SignalingStateClosed; |
| 958 | 958 |
| 959 HeapVector<Member<RTCDataChannel>>::iterator i = m_dataChannels.begin(); | 959 HeapVector<Member<RTCDataChannel>>::iterator i = m_dataChannels.begin(); |
| 960 for (; i != m_dataChannels.end(); ++i) | 960 for (; i != m_dataChannels.end(); ++i) |
| 961 (*i)->stop(); | 961 (*i)->stop(); |
| 962 m_dataChannels.clear(); | 962 m_dataChannels.clear(); |
| 963 | 963 |
| 964 m_dispatchScheduledEventRunner.stop(); | 964 m_dispatchScheduledEventRunner->stop(); |
| 965 | 965 |
| 966 m_peerHandler.clear(); | 966 m_peerHandler.clear(); |
| 967 } | 967 } |
| 968 | 968 |
| 969 void RTCPeerConnection::changeSignalingState(SignalingState signalingState) | 969 void RTCPeerConnection::changeSignalingState(SignalingState signalingState) |
| 970 { | 970 { |
| 971 if (m_signalingState != SignalingStateClosed && m_signalingState != signalin
gState) { | 971 if (m_signalingState != SignalingStateClosed && m_signalingState != signalin
gState) { |
| 972 m_signalingState = signalingState; | 972 m_signalingState = signalingState; |
| 973 scheduleDispatchEvent(Event::create(EventTypeNames::signalingstatechange
)); | 973 scheduleDispatchEvent(Event::create(EventTypeNames::signalingstatechange
)); |
| 974 } | 974 } |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1010 void RTCPeerConnection::scheduleDispatchEvent(PassRefPtrWillBeRawPtr<Event> even
t) | 1010 void RTCPeerConnection::scheduleDispatchEvent(PassRefPtrWillBeRawPtr<Event> even
t) |
| 1011 { | 1011 { |
| 1012 scheduleDispatchEvent(event, nullptr); | 1012 scheduleDispatchEvent(event, nullptr); |
| 1013 } | 1013 } |
| 1014 | 1014 |
| 1015 void RTCPeerConnection::scheduleDispatchEvent(PassRefPtrWillBeRawPtr<Event> even
t, | 1015 void RTCPeerConnection::scheduleDispatchEvent(PassRefPtrWillBeRawPtr<Event> even
t, |
| 1016 PassOwnPtr<BoolFunction> setupFunction) | 1016 PassOwnPtr<BoolFunction> setupFunction) |
| 1017 { | 1017 { |
| 1018 m_scheduledEvents.append(new EventWrapper(event, setupFunction)); | 1018 m_scheduledEvents.append(new EventWrapper(event, setupFunction)); |
| 1019 | 1019 |
| 1020 m_dispatchScheduledEventRunner.runAsync(); | 1020 m_dispatchScheduledEventRunner->runAsync(); |
| 1021 } | 1021 } |
| 1022 | 1022 |
| 1023 void RTCPeerConnection::dispatchScheduledEvent() | 1023 void RTCPeerConnection::dispatchScheduledEvent() |
| 1024 { | 1024 { |
| 1025 if (m_stopped) | 1025 if (m_stopped) |
| 1026 return; | 1026 return; |
| 1027 | 1027 |
| 1028 HeapVector<Member<EventWrapper>> events; | 1028 HeapVector<Member<EventWrapper>> events; |
| 1029 events.swap(m_scheduledEvents); | 1029 events.swap(m_scheduledEvents); |
| 1030 | 1030 |
| 1031 HeapVector<Member<EventWrapper>>::iterator it = events.begin(); | 1031 HeapVector<Member<EventWrapper>>::iterator it = events.begin(); |
| 1032 for (; it != events.end(); ++it) { | 1032 for (; it != events.end(); ++it) { |
| 1033 if ((*it)->setup()) { | 1033 if ((*it)->setup()) { |
| 1034 dispatchEvent((*it)->m_event.release()); | 1034 dispatchEvent((*it)->m_event.release()); |
| 1035 } | 1035 } |
| 1036 } | 1036 } |
| 1037 | 1037 |
| 1038 events.clear(); | 1038 events.clear(); |
| 1039 } | 1039 } |
| 1040 | 1040 |
| 1041 DEFINE_TRACE(RTCPeerConnection) | 1041 DEFINE_TRACE(RTCPeerConnection) |
| 1042 { | 1042 { |
| 1043 visitor->trace(m_localStreams); | 1043 visitor->trace(m_localStreams); |
| 1044 visitor->trace(m_remoteStreams); | 1044 visitor->trace(m_remoteStreams); |
| 1045 visitor->trace(m_dataChannels); | 1045 visitor->trace(m_dataChannels); |
| 1046 visitor->trace(m_dispatchScheduledEventRunner); |
| 1046 visitor->trace(m_scheduledEvents); | 1047 visitor->trace(m_scheduledEvents); |
| 1047 RefCountedGarbageCollectedEventTargetWithInlineData<RTCPeerConnection>::trac
e(visitor); | 1048 RefCountedGarbageCollectedEventTargetWithInlineData<RTCPeerConnection>::trac
e(visitor); |
| 1048 ActiveDOMObject::trace(visitor); | 1049 ActiveDOMObject::trace(visitor); |
| 1049 } | 1050 } |
| 1050 | 1051 |
| 1051 } // namespace blink | 1052 } // namespace blink |
| OLD | NEW |