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

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

Issue 27571005: Replace Timers used in ActiveDOMObject with AsyncMethodRunner (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 2 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 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 return 0; 130 return 0;
131 131
132 return peerConnection.release(); 132 return peerConnection.release();
133 } 133 }
134 134
135 RTCPeerConnection::RTCPeerConnection(ExecutionContext* context, PassRefPtr<RTCCo nfiguration> configuration, PassRefPtr<MediaConstraints> constraints, ExceptionS tate& es) 135 RTCPeerConnection::RTCPeerConnection(ExecutionContext* context, PassRefPtr<RTCCo nfiguration> configuration, PassRefPtr<MediaConstraints> constraints, ExceptionS tate& es)
136 : ActiveDOMObject(context) 136 : ActiveDOMObject(context)
137 , m_signalingState(SignalingStateStable) 137 , m_signalingState(SignalingStateStable)
138 , m_iceGatheringState(IceGatheringStateNew) 138 , m_iceGatheringState(IceGatheringStateNew)
139 , m_iceConnectionState(IceConnectionStateNew) 139 , m_iceConnectionState(IceConnectionStateNew)
140 , m_scheduledEventTimer(this, &RTCPeerConnection::scheduledEventTimerFired) 140 , m_dispatchScheduledEventRunner(this, &RTCPeerConnection::dispatchScheduled Event)
141 , m_stopped(false) 141 , m_stopped(false)
142 { 142 {
143 ScriptWrappable::init(this); 143 ScriptWrappable::init(this);
144 Document* document = toDocument(executionContext()); 144 Document* document = toDocument(executionContext());
145 145
146 if (!document->frame()) { 146 if (!document->frame()) {
147 es.throwUninformativeAndGenericDOMException(NotSupportedError); 147 es.throwUninformativeAndGenericDOMException(NotSupportedError);
148 return; 148 return;
149 } 149 }
150 150
(...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after
617 const AtomicString& RTCPeerConnection::interfaceName() const 617 const AtomicString& RTCPeerConnection::interfaceName() const
618 { 618 {
619 return EventTargetNames::RTCPeerConnection; 619 return EventTargetNames::RTCPeerConnection;
620 } 620 }
621 621
622 ExecutionContext* RTCPeerConnection::executionContext() const 622 ExecutionContext* RTCPeerConnection::executionContext() const
623 { 623 {
624 return ActiveDOMObject::executionContext(); 624 return ActiveDOMObject::executionContext();
625 } 625 }
626 626
627 void RTCPeerConnection::suspend()
628 {
629 m_dispatchScheduledEventRunner.suspend();
630 }
631
632 void RTCPeerConnection::resume()
633 {
634 m_dispatchScheduledEventRunner.resume();
635 }
636
627 void RTCPeerConnection::stop() 637 void RTCPeerConnection::stop()
628 { 638 {
629 if (m_stopped) 639 if (m_stopped)
630 return; 640 return;
631 641
632 m_stopped = true; 642 m_stopped = true;
633 m_iceConnectionState = IceConnectionStateClosed; 643 m_iceConnectionState = IceConnectionStateClosed;
634 m_signalingState = SignalingStateClosed; 644 m_signalingState = SignalingStateClosed;
635 645
636 Vector<RefPtr<RTCDataChannel> >::iterator i = m_dataChannels.begin(); 646 Vector<RefPtr<RTCDataChannel> >::iterator i = m_dataChannels.begin();
637 for (; i != m_dataChannels.end(); ++i) 647 for (; i != m_dataChannels.end(); ++i)
638 (*i)->stop(); 648 (*i)->stop();
649
650 m_dispatchScheduledEventRunner.stop();
639 } 651 }
640 652
641 void RTCPeerConnection::changeSignalingState(SignalingState signalingState) 653 void RTCPeerConnection::changeSignalingState(SignalingState signalingState)
642 { 654 {
643 if (m_signalingState != SignalingStateClosed && m_signalingState != signalin gState) { 655 if (m_signalingState != SignalingStateClosed && m_signalingState != signalin gState) {
644 m_signalingState = signalingState; 656 m_signalingState = signalingState;
645 scheduleDispatchEvent(Event::create(EventTypeNames::signalingstatechange )); 657 scheduleDispatchEvent(Event::create(EventTypeNames::signalingstatechange ));
646 } 658 }
647 } 659 }
648 660
649 void RTCPeerConnection::changeIceGatheringState(IceGatheringState iceGatheringSt ate) 661 void RTCPeerConnection::changeIceGatheringState(IceGatheringState iceGatheringSt ate)
650 { 662 {
651 m_iceGatheringState = iceGatheringState; 663 m_iceGatheringState = iceGatheringState;
652 } 664 }
653 665
654 void RTCPeerConnection::changeIceConnectionState(IceConnectionState iceConnectio nState) 666 void RTCPeerConnection::changeIceConnectionState(IceConnectionState iceConnectio nState)
655 { 667 {
656 if (m_iceConnectionState != IceConnectionStateClosed && m_iceConnectionState != iceConnectionState) { 668 if (m_iceConnectionState != IceConnectionStateClosed && m_iceConnectionState != iceConnectionState) {
657 m_iceConnectionState = iceConnectionState; 669 m_iceConnectionState = iceConnectionState;
658 scheduleDispatchEvent(Event::create(EventTypeNames::iceconnectionstatech ange)); 670 scheduleDispatchEvent(Event::create(EventTypeNames::iceconnectionstatech ange));
659 } 671 }
660 } 672 }
661 673
662 void RTCPeerConnection::scheduleDispatchEvent(PassRefPtr<Event> event) 674 void RTCPeerConnection::scheduleDispatchEvent(PassRefPtr<Event> event)
663 { 675 {
664 m_scheduledEvents.append(event); 676 m_scheduledEvents.append(event);
665 677
666 if (!m_scheduledEventTimer.isActive()) 678 m_dispatchScheduledEventRunner.runAsync();
667 m_scheduledEventTimer.startOneShot(0);
668 } 679 }
669 680
670 void RTCPeerConnection::scheduledEventTimerFired(Timer<RTCPeerConnection>*) 681 void RTCPeerConnection::dispatchScheduledEvent()
671 { 682 {
672 if (m_stopped) 683 if (m_stopped)
673 return; 684 return;
674 685
675 Vector<RefPtr<Event> > events; 686 Vector<RefPtr<Event> > events;
676 events.swap(m_scheduledEvents); 687 events.swap(m_scheduledEvents);
677 688
678 Vector<RefPtr<Event> >::iterator it = events.begin(); 689 Vector<RefPtr<Event> >::iterator it = events.begin();
679 for (; it != events.end(); ++it) 690 for (; it != events.end(); ++it)
680 dispatchEvent((*it).release()); 691 dispatchEvent((*it).release());
681 692
682 events.clear(); 693 events.clear();
683 } 694 }
684 695
685 } // namespace WebCore 696 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698