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

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

Issue 472163002: Add method to notify blink when PeerConnection is closed in Chrome (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: . Created 6 years, 4 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 588 matching lines...) Expand 10 before | Expand all | Expand 10 after
599 if (exceptionState.hadException()) 599 if (exceptionState.hadException())
600 return nullptr; 600 return nullptr;
601 return dtmfSender; 601 return dtmfSender;
602 } 602 }
603 603
604 void RTCPeerConnection::close(ExceptionState& exceptionState) 604 void RTCPeerConnection::close(ExceptionState& exceptionState)
605 { 605 {
606 if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) 606 if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState))
607 return; 607 return;
608 608
609 m_peerHandler->stop(); 609 doClose();
610 m_closed = true;
611
612 changeIceConnectionState(ICEConnectionStateClosed);
613 changeIceGatheringState(ICEGatheringStateComplete);
614 changeSignalingState(SignalingStateClosed);
615 } 610 }
616 611
617 void RTCPeerConnection::negotiationNeeded() 612 void RTCPeerConnection::negotiationNeeded()
618 { 613 {
619 ASSERT(!m_closed); 614 ASSERT(!m_closed);
620 scheduleDispatchEvent(Event::create(EventTypeNames::negotiationneeded)); 615 scheduleDispatchEvent(Event::create(EventTypeNames::negotiationneeded));
621 } 616 }
622 617
623 void RTCPeerConnection::didGenerateICECandidate(const blink::WebRTCICECandidate& webCandidate) 618 void RTCPeerConnection::didGenerateICECandidate(const blink::WebRTCICECandidate& webCandidate)
624 { 619 {
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
700 m_dataChannels.append(channel); 695 m_dataChannels.append(channel);
701 696
702 scheduleDispatchEvent(RTCDataChannelEvent::create(EventTypeNames::datachanne l, false, false, channel)); 697 scheduleDispatchEvent(RTCDataChannelEvent::create(EventTypeNames::datachanne l, false, false, channel));
703 } 698 }
704 699
705 void RTCPeerConnection::releasePeerConnectionHandler() 700 void RTCPeerConnection::releasePeerConnectionHandler()
706 { 701 {
707 stop(); 702 stop();
708 } 703 }
709 704
705 void RTCPeerConnection::closePeerConnection()
jiayl 2014/08/15 16:12:38 We should make sure the PC is not already closed e
vrk (LEFT CHROMIUM) 2014/08/16 00:36:25 Good point. I added a few asserts here. Done.
706 {
707 doClose();
708 }
709
710 const AtomicString& RTCPeerConnection::interfaceName() const 710 const AtomicString& RTCPeerConnection::interfaceName() const
711 { 711 {
712 return EventTargetNames::RTCPeerConnection; 712 return EventTargetNames::RTCPeerConnection;
713 } 713 }
714 714
715 ExecutionContext* RTCPeerConnection::executionContext() const 715 ExecutionContext* RTCPeerConnection::executionContext() const
716 { 716 {
717 return ActiveDOMObject::executionContext(); 717 return ActiveDOMObject::executionContext();
718 } 718 }
719 719
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
760 } 760 }
761 761
762 void RTCPeerConnection::changeIceConnectionState(ICEConnectionState iceConnectio nState) 762 void RTCPeerConnection::changeIceConnectionState(ICEConnectionState iceConnectio nState)
763 { 763 {
764 if (m_iceConnectionState != ICEConnectionStateClosed && m_iceConnectionState != iceConnectionState) { 764 if (m_iceConnectionState != ICEConnectionStateClosed && m_iceConnectionState != iceConnectionState) {
765 m_iceConnectionState = iceConnectionState; 765 m_iceConnectionState = iceConnectionState;
766 scheduleDispatchEvent(Event::create(EventTypeNames::iceconnectionstatech ange)); 766 scheduleDispatchEvent(Event::create(EventTypeNames::iceconnectionstatech ange));
767 } 767 }
768 } 768 }
769 769
770 void RTCPeerConnection::doClose()
771 {
772 m_peerHandler->stop();
773 m_closed = true;
774
775 changeIceConnectionState(ICEConnectionStateClosed);
776 changeIceGatheringState(ICEGatheringStateComplete);
777 changeSignalingState(SignalingStateClosed);
778 }
779
770 void RTCPeerConnection::scheduleDispatchEvent(PassRefPtrWillBeRawPtr<Event> even t) 780 void RTCPeerConnection::scheduleDispatchEvent(PassRefPtrWillBeRawPtr<Event> even t)
771 { 781 {
772 m_scheduledEvents.append(event); 782 m_scheduledEvents.append(event);
773 783
774 m_dispatchScheduledEventRunner.runAsync(); 784 m_dispatchScheduledEventRunner.runAsync();
775 } 785 }
776 786
777 void RTCPeerConnection::dispatchScheduledEvent() 787 void RTCPeerConnection::dispatchScheduledEvent()
778 { 788 {
779 if (m_stopped) 789 if (m_stopped)
(...skipping 14 matching lines...) Expand all
794 visitor->trace(m_localStreams); 804 visitor->trace(m_localStreams);
795 visitor->trace(m_remoteStreams); 805 visitor->trace(m_remoteStreams);
796 visitor->trace(m_dataChannels); 806 visitor->trace(m_dataChannels);
797 #if ENABLE(OILPAN) 807 #if ENABLE(OILPAN)
798 visitor->trace(m_scheduledEvents); 808 visitor->trace(m_scheduledEvents);
799 #endif 809 #endif
800 EventTargetWithInlineData::trace(visitor); 810 EventTargetWithInlineData::trace(visitor);
801 } 811 }
802 812
803 } // namespace blink 813 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698