15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2012 Google Inc. All rights reserved.
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions are
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * met:
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     * Redistributions of source code must retain the above copyright
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer.
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     * Redistributions in binary form must reproduce the above
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * in the documentation and/or other materials provided with the
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * distribution.
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     * Neither the name of Google Inc. nor the names of its
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * contributors may be used to endorse or promote products derived from
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * this software without specific prior written permission.
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "config.h"
32521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)#include "core/platform/mediastream/RTCPeerConnectionHandler.h"
3353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
34521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)#include "core/platform/mediastream/RTCDataChannelHandler.h"
3553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/platform/mediastream/RTCPeerConnectionHandlerClient.h"
3653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/platform/mediastream/RTCStatsRequest.h"
3751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)#include "platform/mediastream/MediaConstraints.h"
3851b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)#include "platform/mediastream/MediaStreamComponent.h"
3919cde67944066db31e633d9e386f2aa9bf9fadb3Torne (Richard Coles)#include "platform/mediastream/RTCConfiguration.h"
4051b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)#include "platform/mediastream/RTCDTMFSenderHandler.h"
4151b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)#include "platform/mediastream/RTCSessionDescriptionRequest.h"
4251b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)#include "platform/mediastream/RTCVoidRequest.h"
435267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "public/platform/Platform.h"
445267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "public/platform/WebMediaConstraints.h"
455267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "public/platform/WebMediaStream.h"
465267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "public/platform/WebMediaStreamTrack.h"
475267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "public/platform/WebRTCConfiguration.h"
485267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "public/platform/WebRTCDTMFSenderHandler.h"
49521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)#include "public/platform/WebRTCDataChannelHandler.h"
505267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "public/platform/WebRTCICECandidate.h"
515267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "public/platform/WebRTCSessionDescription.h"
525267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "public/platform/WebRTCSessionDescriptionRequest.h"
535267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "public/platform/WebRTCStatsRequest.h"
545267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "public/platform/WebRTCVoidRequest.h"
55521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)#include "wtf/PassOwnPtr.h"
565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace WebCore {
585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)blink::WebRTCPeerConnectionHandler* RTCPeerConnectionHandler::toWebRTCPeerConnectionHandler(RTCPeerConnectionHandler* handler)
605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
61521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)    return static_cast<RTCPeerConnectionHandler*>(handler)->m_webHandler.get();
625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)PassOwnPtr<RTCPeerConnectionHandler> RTCPeerConnectionHandler::create(RTCPeerConnectionHandlerClient* client)
655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ASSERT(client);
67521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)    OwnPtr<RTCPeerConnectionHandler> handler = adoptPtr(new RTCPeerConnectionHandler(client));
685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    if (!handler->createWebHandler())
705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return nullptr;
715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    return handler.release();
735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
75521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)RTCPeerConnectionHandler::RTCPeerConnectionHandler(RTCPeerConnectionHandlerClient* client)
765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    : m_client(client)
775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
80521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)RTCPeerConnectionHandler::~RTCPeerConnectionHandler()
815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
84521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)bool RTCPeerConnectionHandler::createWebHandler()
855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
8651b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)    m_webHandler = adoptPtr(blink::Platform::current()->createRTCPeerConnectionHandler(this));
875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    return m_webHandler;
885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
90521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)bool RTCPeerConnectionHandler::initialize(PassRefPtr<RTCConfiguration> configuration, PassRefPtr<MediaConstraints> constraints)
915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    return m_webHandler->initialize(configuration, constraints);
935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
95521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)void RTCPeerConnectionHandler::createOffer(PassRefPtr<RTCSessionDescriptionRequest> request, PassRefPtr<MediaConstraints> constraints)
965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    m_webHandler->createOffer(request, constraints);
985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
100521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)void RTCPeerConnectionHandler::createAnswer(PassRefPtr<RTCSessionDescriptionRequest> request, PassRefPtr<MediaConstraints> constraints)
1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    m_webHandler->createAnswer(request, constraints);
1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
10551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)void RTCPeerConnectionHandler::setLocalDescription(PassRefPtr<RTCVoidRequest> request, blink::WebRTCSessionDescription sessionDescription)
1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    m_webHandler->setLocalDescription(request, sessionDescription);
1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
11051b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)void RTCPeerConnectionHandler::setRemoteDescription(PassRefPtr<RTCVoidRequest> request, blink::WebRTCSessionDescription sessionDescription)
1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    m_webHandler->setRemoteDescription(request, sessionDescription);
1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
115521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)bool RTCPeerConnectionHandler::updateIce(PassRefPtr<RTCConfiguration> configuration, PassRefPtr<MediaConstraints> constraints)
1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    return m_webHandler->updateICE(configuration, constraints);
1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12051b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)bool RTCPeerConnectionHandler::addIceCandidate(blink::WebRTCICECandidate iceCandidate)
1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    return m_webHandler->addICECandidate(iceCandidate);
1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)bool RTCPeerConnectionHandler::addIceCandidate(PassRefPtr<RTCVoidRequest> request, blink::WebRTCICECandidate iceCandidate)
1268abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles){
1278abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)    return m_webHandler->addICECandidate(request, iceCandidate);
1288abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)}
1298abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)
13051b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)blink::WebRTCSessionDescription RTCPeerConnectionHandler::localDescription()
1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    return m_webHandler->localDescription();
1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
13551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)blink::WebRTCSessionDescription RTCPeerConnectionHandler::remoteDescription()
1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    return m_webHandler->remoteDescription();
1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
140521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)bool RTCPeerConnectionHandler::addStream(PassRefPtr<MediaStreamDescriptor> mediaStream, PassRefPtr<MediaConstraints> constraints)
1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    return m_webHandler->addStream(mediaStream, constraints);
1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
145521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)void RTCPeerConnectionHandler::removeStream(PassRefPtr<MediaStreamDescriptor> mediaStream)
1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    m_webHandler->removeStream(mediaStream);
1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
150521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)void RTCPeerConnectionHandler::getStats(PassRefPtr<RTCStatsRequest> request)
1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    m_webHandler->getStats(request);
1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)PassOwnPtr<RTCDataChannelHandler> RTCPeerConnectionHandler::createDataChannel(const String& label, const blink::WebRTCDataChannelInit& init)
1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
15751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)    blink::WebRTCDataChannelHandler* webHandler = m_webHandler->createDataChannel(label, init);
158926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    if (!webHandler)
159926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        return nullptr;
1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
161521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)    return RTCDataChannelHandler::create(webHandler);
1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
164521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)PassOwnPtr<RTCDTMFSenderHandler> RTCPeerConnectionHandler::createDTMFSender(PassRefPtr<MediaStreamComponent> track)
1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
16651b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)    blink::WebRTCDTMFSenderHandler* webHandler = m_webHandler->createDTMFSender(track);
167926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    if (!webHandler)
168926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        return nullptr;
1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
170521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)    return RTCDTMFSenderHandler::create(webHandler);
1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
173521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)void RTCPeerConnectionHandler::stop()
1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    m_webHandler->stop();
1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
178521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)void RTCPeerConnectionHandler::negotiationNeeded()
1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    m_client->negotiationNeeded();
1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
18351b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)void RTCPeerConnectionHandler::didGenerateICECandidate(const blink::WebRTCICECandidate& iceCandidate)
1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    m_client->didGenerateIceCandidate(iceCandidate);
1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
18851b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)void RTCPeerConnectionHandler::didChangeSignalingState(blink::WebRTCPeerConnectionHandlerClient::SignalingState state)
1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
190926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    m_client->didChangeSignalingState(static_cast<RTCPeerConnectionHandlerClient::SignalingState>(state));
1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
19351b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)void RTCPeerConnectionHandler::didChangeICEGatheringState(blink::WebRTCPeerConnectionHandlerClient::ICEGatheringState state)
1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
195926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    m_client->didChangeIceGatheringState(static_cast<RTCPeerConnectionHandlerClient::IceGatheringState>(state));
1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
19851b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)void RTCPeerConnectionHandler::didChangeICEConnectionState(blink::WebRTCPeerConnectionHandlerClient::ICEConnectionState state)
199926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
200926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    m_client->didChangeIceConnectionState(static_cast<RTCPeerConnectionHandlerClient::IceConnectionState>(state));
201926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
202926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
20351b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)void RTCPeerConnectionHandler::didAddRemoteStream(const blink::WebMediaStream& webMediaStreamDescriptor)
2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    m_client->didAddRemoteStream(webMediaStreamDescriptor);
2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
20851b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)void RTCPeerConnectionHandler::didRemoveRemoteStream(const blink::WebMediaStream& webMediaStreamDescriptor)
2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    m_client->didRemoveRemoteStream(webMediaStreamDescriptor);
2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21351b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)void RTCPeerConnectionHandler::didAddRemoteDataChannel(blink::WebRTCDataChannelHandler* webHandler)
214926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
215926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    ASSERT(webHandler);
216521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)    m_client->didAddRemoteDataChannel(RTCDataChannelHandler::create(webHandler));
217926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
218926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} // namespace WebCore
220