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

Side by Side Diff: third_party/WebKit/Source/modules/mediastream/RTCPeerConnection.cpp

Issue 1580883002: Oilpan: move AsyncMethodRunner to the heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rename to RawPtrOrMemberTrait<> Created 4 years, 11 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 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698