Changeset 131372 in webkit


Ignore:
Timestamp:
Oct 15, 2012 3:21:07 PM (12 years ago)
Author:
tommyw@google.com
Message:

MediaStream API: Implement RTCDataChannel
https://bugs.webkit.org/show_bug.cgi?id=99080

Reviewed by Adam Barth.

This patch introduces RTCDataChannel which is a pipe for sending data between two RTCPeerConnections.
Since the data channel belongs to a peer connection object I have reused part of its infrastructure.

Not currently testable. My next patch will add the chromium WebKit functionality, together with mocks and tests.

  • CMakeLists.txt:
  • GNUmakefile.list.am:
  • Modules/mediastream/RTCDataChannel.cpp: Added.

(WebCore):
(WebCore::RTCDataChannel::create):
(WebCore::RTCDataChannel::RTCDataChannel):
(WebCore::RTCDataChannel::~RTCDataChannel):
(WebCore::RTCDataChannel::label):
(WebCore::RTCDataChannel::reliable):
(WebCore::RTCDataChannel::readyState):
(WebCore::RTCDataChannel::bufferedAmount):
(WebCore::RTCDataChannel::binaryType):
(WebCore::RTCDataChannel::setBinaryType):
(WebCore::RTCDataChannel::send):
(WebCore::RTCDataChannel::close):
(WebCore::RTCDataChannel::readyStateChanged):
(WebCore::RTCDataChannel::dataArrived):
(WebCore::RTCDataChannel::error):
(WebCore::RTCDataChannel::descriptor):
(WebCore::RTCDataChannel::interfaceName):
(WebCore::RTCDataChannel::scriptExecutionContext):
(WebCore::RTCDataChannel::stop):
(WebCore::RTCDataChannel::eventTargetData):
(WebCore::RTCDataChannel::ensureEventTargetData):

  • Modules/mediastream/RTCDataChannel.h: Added.

(WebCore):
(RTCDataChannel):
(WebCore::RTCDataChannel::refEventTarget):
(WebCore::RTCDataChannel::derefEventTarget):

  • Modules/mediastream/RTCDataChannel.idl: Added.
  • Modules/mediastream/RTCDataChannelEvent.cpp: Added.

(WebCore):
(WebCore::RTCDataChannelEvent::create):
(WebCore::RTCDataChannelEvent::RTCDataChannelEvent):
(WebCore::RTCDataChannelEvent::~RTCDataChannelEvent):
(WebCore::RTCDataChannelEvent::channel):
(WebCore::RTCDataChannelEvent::interfaceName):

  • Modules/mediastream/RTCDataChannelEvent.h: Added.

(WebCore):
(RTCDataChannelEvent):

  • Modules/mediastream/RTCDataChannelEvent.idl: Added.
  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::createDataChannel):
(WebCore):
(WebCore::RTCPeerConnection::close):
(WebCore::RTCPeerConnection::didAddRemoteDataChannel):
(WebCore::RTCPeerConnection::stop):

  • Modules/mediastream/RTCPeerConnection.h:

(WebCore):
(RTCPeerConnection):

  • Modules/mediastream/RTCPeerConnection.idl:
  • WebCore.gypi:
  • dom/EventNames.h:

(WebCore):

  • dom/EventNames.in:
  • dom/EventTargetFactory.in:
  • platform/mediastream/RTCDataChannelDescriptor.cpp: Added.

(WebCore):
(WebCore::RTCDataChannelDescriptor::create):
(WebCore::RTCDataChannelDescriptor::RTCDataChannelDescriptor):
(WebCore::RTCDataChannelDescriptor::~RTCDataChannelDescriptor):
(WebCore::RTCDataChannelDescriptor::readyStateChanged):
(WebCore::RTCDataChannelDescriptor::dataArrived):
(WebCore::RTCDataChannelDescriptor::error):

  • platform/mediastream/RTCDataChannelDescriptor.h: Added.

(WebCore):
(RTCDataChannelDescriptorClient):
(WebCore::RTCDataChannelDescriptorClient::~RTCDataChannelDescriptorClient):
(RTCDataChannelDescriptor):
(ExtraData):
(WebCore::RTCDataChannelDescriptor::ExtraData::~ExtraData):
(WebCore::RTCDataChannelDescriptor::client):
(WebCore::RTCDataChannelDescriptor::setClient):
(WebCore::RTCDataChannelDescriptor::label):
(WebCore::RTCDataChannelDescriptor::reliable):
(WebCore::RTCDataChannelDescriptor::readyState):
(WebCore::RTCDataChannelDescriptor::bufferedAmount):
(WebCore::RTCDataChannelDescriptor::setBufferedAmount):
(WebCore::RTCDataChannelDescriptor::extraData):
(WebCore::RTCDataChannelDescriptor::setExtraData):

  • platform/mediastream/RTCPeerConnectionHandler.cpp:

(RTCPeerConnectionHandlerDummy):
(WebCore::RTCPeerConnectionHandlerDummy::openDataChannel):
(WebCore):
(WebCore::RTCPeerConnectionHandlerDummy::sendStringData):
(WebCore::RTCPeerConnectionHandlerDummy::sendRawData):
(WebCore::RTCPeerConnectionHandlerDummy::closeDataChannel):

  • platform/mediastream/RTCPeerConnectionHandler.h:

(WebCore):
(RTCPeerConnectionHandler):

  • platform/mediastream/RTCPeerConnectionHandlerClient.h:

(WebCore):
(RTCPeerConnectionHandlerClient):

  • platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp:

(WebCore::RTCPeerConnectionHandlerChromium::openDataChannel):
(WebCore):
(WebCore::RTCPeerConnectionHandlerChromium::sendStringData):
(WebCore::RTCPeerConnectionHandlerChromium::sendRawData):
(WebCore::RTCPeerConnectionHandlerChromium::closeDataChannel):

  • platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h:

(RTCPeerConnectionHandlerChromium):

Location:
trunk/Source/WebCore
Files:
8 added
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/CMakeLists.txt

    r131137 r131372  
    225225    Modules/mediastream/NavigatorUserMediaSuccessCallback.idl
    226226    Modules/mediastream/PeerConnection00.idl
     227    Modules/mediastream/RTCDataChannel.idl
     228    Modules/mediastream/RTCDataChannelEvent.idl
    227229    Modules/mediastream/RTCErrorCallback.idl
    228230    Modules/mediastream/RTCIceCandidate.idl
     
    863865    Modules/mediastream/NavigatorMediaStream.cpp
    864866    Modules/mediastream/PeerConnection00.cpp
     867    Modules/mediastream/RTCDataChannel.cpp
     868    Modules/mediastream/RTCDataChannelEvent.cpp
    865869    Modules/mediastream/RTCIceCandidate.cpp
    866870    Modules/mediastream/RTCIceCandidateEvent.cpp
     
    19601964    platform/mediastream/MediaStreamSource.cpp
    19611965    platform/mediastream/PeerConnection00Handler.cpp
     1966    platform/mediastream/RTCDataChannelDescriptor.cpp
    19621967    platform/mediastream/RTCIceCandidateDescriptor.cpp
    19631968    platform/mediastream/RTCPeerConnectionHandler.cpp
  • trunk/Source/WebCore/ChangeLog

    r131371 r131372  
     12012-10-15  Tommy Widenflycht  <tommyw@google.com>
     2
     3        MediaStream API: Implement RTCDataChannel
     4        https://bugs.webkit.org/show_bug.cgi?id=99080
     5
     6        Reviewed by Adam Barth.
     7
     8        This patch introduces RTCDataChannel which is a pipe for sending data between two RTCPeerConnections.
     9        Since the data channel belongs to a peer connection object I have reused part of its infrastructure.
     10
     11        Not currently testable. My next patch will add the chromium WebKit functionality, together with mocks and tests.
     12
     13        * CMakeLists.txt:
     14        * GNUmakefile.list.am:
     15        * Modules/mediastream/RTCDataChannel.cpp: Added.
     16        (WebCore):
     17        (WebCore::RTCDataChannel::create):
     18        (WebCore::RTCDataChannel::RTCDataChannel):
     19        (WebCore::RTCDataChannel::~RTCDataChannel):
     20        (WebCore::RTCDataChannel::label):
     21        (WebCore::RTCDataChannel::reliable):
     22        (WebCore::RTCDataChannel::readyState):
     23        (WebCore::RTCDataChannel::bufferedAmount):
     24        (WebCore::RTCDataChannel::binaryType):
     25        (WebCore::RTCDataChannel::setBinaryType):
     26        (WebCore::RTCDataChannel::send):
     27        (WebCore::RTCDataChannel::close):
     28        (WebCore::RTCDataChannel::readyStateChanged):
     29        (WebCore::RTCDataChannel::dataArrived):
     30        (WebCore::RTCDataChannel::error):
     31        (WebCore::RTCDataChannel::descriptor):
     32        (WebCore::RTCDataChannel::interfaceName):
     33        (WebCore::RTCDataChannel::scriptExecutionContext):
     34        (WebCore::RTCDataChannel::stop):
     35        (WebCore::RTCDataChannel::eventTargetData):
     36        (WebCore::RTCDataChannel::ensureEventTargetData):
     37        * Modules/mediastream/RTCDataChannel.h: Added.
     38        (WebCore):
     39        (RTCDataChannel):
     40        (WebCore::RTCDataChannel::refEventTarget):
     41        (WebCore::RTCDataChannel::derefEventTarget):
     42        * Modules/mediastream/RTCDataChannel.idl: Added.
     43        * Modules/mediastream/RTCDataChannelEvent.cpp: Added.
     44        (WebCore):
     45        (WebCore::RTCDataChannelEvent::create):
     46        (WebCore::RTCDataChannelEvent::RTCDataChannelEvent):
     47        (WebCore::RTCDataChannelEvent::~RTCDataChannelEvent):
     48        (WebCore::RTCDataChannelEvent::channel):
     49        (WebCore::RTCDataChannelEvent::interfaceName):
     50        * Modules/mediastream/RTCDataChannelEvent.h: Added.
     51        (WebCore):
     52        (RTCDataChannelEvent):
     53        * Modules/mediastream/RTCDataChannelEvent.idl: Added.
     54        * Modules/mediastream/RTCPeerConnection.cpp:
     55        (WebCore::RTCPeerConnection::createDataChannel):
     56        (WebCore):
     57        (WebCore::RTCPeerConnection::close):
     58        (WebCore::RTCPeerConnection::didAddRemoteDataChannel):
     59        (WebCore::RTCPeerConnection::stop):
     60        * Modules/mediastream/RTCPeerConnection.h:
     61        (WebCore):
     62        (RTCPeerConnection):
     63        * Modules/mediastream/RTCPeerConnection.idl:
     64        * WebCore.gypi:
     65        * dom/EventNames.h:
     66        (WebCore):
     67        * dom/EventNames.in:
     68        * dom/EventTargetFactory.in:
     69        * platform/mediastream/RTCDataChannelDescriptor.cpp: Added.
     70        (WebCore):
     71        (WebCore::RTCDataChannelDescriptor::create):
     72        (WebCore::RTCDataChannelDescriptor::RTCDataChannelDescriptor):
     73        (WebCore::RTCDataChannelDescriptor::~RTCDataChannelDescriptor):
     74        (WebCore::RTCDataChannelDescriptor::readyStateChanged):
     75        (WebCore::RTCDataChannelDescriptor::dataArrived):
     76        (WebCore::RTCDataChannelDescriptor::error):
     77        * platform/mediastream/RTCDataChannelDescriptor.h: Added.
     78        (WebCore):
     79        (RTCDataChannelDescriptorClient):
     80        (WebCore::RTCDataChannelDescriptorClient::~RTCDataChannelDescriptorClient):
     81        (RTCDataChannelDescriptor):
     82        (ExtraData):
     83        (WebCore::RTCDataChannelDescriptor::ExtraData::~ExtraData):
     84        (WebCore::RTCDataChannelDescriptor::client):
     85        (WebCore::RTCDataChannelDescriptor::setClient):
     86        (WebCore::RTCDataChannelDescriptor::label):
     87        (WebCore::RTCDataChannelDescriptor::reliable):
     88        (WebCore::RTCDataChannelDescriptor::readyState):
     89        (WebCore::RTCDataChannelDescriptor::bufferedAmount):
     90        (WebCore::RTCDataChannelDescriptor::setBufferedAmount):
     91        (WebCore::RTCDataChannelDescriptor::extraData):
     92        (WebCore::RTCDataChannelDescriptor::setExtraData):
     93        * platform/mediastream/RTCPeerConnectionHandler.cpp:
     94        (RTCPeerConnectionHandlerDummy):
     95        (WebCore::RTCPeerConnectionHandlerDummy::openDataChannel):
     96        (WebCore):
     97        (WebCore::RTCPeerConnectionHandlerDummy::sendStringData):
     98        (WebCore::RTCPeerConnectionHandlerDummy::sendRawData):
     99        (WebCore::RTCPeerConnectionHandlerDummy::closeDataChannel):
     100        * platform/mediastream/RTCPeerConnectionHandler.h:
     101        (WebCore):
     102        (RTCPeerConnectionHandler):
     103        * platform/mediastream/RTCPeerConnectionHandlerClient.h:
     104        (WebCore):
     105        (RTCPeerConnectionHandlerClient):
     106        * platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp:
     107        (WebCore::RTCPeerConnectionHandlerChromium::openDataChannel):
     108        (WebCore):
     109        (WebCore::RTCPeerConnectionHandlerChromium::sendStringData):
     110        (WebCore::RTCPeerConnectionHandlerChromium::sendRawData):
     111        (WebCore::RTCPeerConnectionHandlerChromium::closeDataChannel):
     112        * platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h:
     113        (RTCPeerConnectionHandlerChromium):
     114
    11152012-10-15  Joshua Bell  <jsbell@chromium.org>
    2116
  • trunk/Source/WebCore/GNUmakefile.list.am

    r131137 r131372  
    628628        DerivedSources/WebCore/JSRGBColor.cpp \
    629629        DerivedSources/WebCore/JSRGBColor.h \
     630        DerivedSources/WebCore/JSRTCDataChannel.cpp \
     631        DerivedSources/WebCore/JSRTCDataChannel.h \
     632        DerivedSources/WebCore/JSRTCDataChannelEvent.cpp \
     633        DerivedSources/WebCore/JSRTCDataChannelEvent.h \
    630634        DerivedSources/WebCore/JSRTCErrorCallback.cpp \
    631635        DerivedSources/WebCore/JSRTCErrorCallback.h \
     
    12371241        $(WebCore)/Modules/mediastream/NavigatorUserMediaSuccessCallback.idl \
    12381242        $(WebCore)/Modules/mediastream/PeerConnection00.idl \
     1243        $(WebCore)/Modules/mediastream/RTCDataChannel.idl \
     1244        $(WebCore)/Modules/mediastream/RTCDataChannelEvent.idl \
    12391245        $(WebCore)/Modules/mediastream/RTCErrorCallback.idl \
    12401246        $(WebCore)/Modules/mediastream/RTCIceCandidate.idl \
     
    19351941        Source/WebCore/Modules/mediastream/PeerConnection00.cpp \
    19361942        Source/WebCore/Modules/mediastream/PeerConnection00.h \
     1943        Source/WebCore/Modules/mediastream/RTCDataChannel.cpp \
     1944        Source/WebCore/Modules/mediastream/RTCDataChannel.h \
     1945        Source/WebCore/Modules/mediastream/RTCDataChannelEvent.cpp \
     1946        Source/WebCore/Modules/mediastream/RTCDataChannelEvent.h \
    19371947        Source/WebCore/Modules/mediastream/RTCErrorCallback.h \
    19381948        Source/WebCore/Modules/mediastream/RTCIceCandidate.cpp \
     
    46134623        Source/WebCore/platform/mediastream/PeerConnection00HandlerClient.h \
    46144624        Source/WebCore/platform/mediastream/RTCConfiguration.h \
     4625        Source/WebCore/platform/mediastream/RTCDataChannelDescriptor.cpp \
     4626        Source/WebCore/platform/mediastream/RTCDataChannelDescriptor.h \
    46154627        Source/WebCore/platform/mediastream/RTCIceCandidateDescriptor.cpp \
    46164628        Source/WebCore/platform/mediastream/RTCIceCandidateDescriptor.h \
    4617         Source/WebCore/platform/mediastream/SessionDescriptionDescriptor.h \
    46184629        Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.cpp \
    46194630        Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.h \
  • trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp

    r130270 r131372  
    4444#include "MediaStreamEvent.h"
    4545#include "RTCConfiguration.h"
     46#include "RTCDataChannel.h"
     47#include "RTCDataChannelEvent.h"
    4648#include "RTCErrorCallback.h"
    4749#include "RTCIceCandidate.h"
     
    409411}
    410412
     413PassRefPtr<RTCDataChannel> RTCPeerConnection::createDataChannel(String label, const Dictionary& options, ExceptionCode& ec)
     414{
     415    if (m_readyState == ReadyStateClosed) {
     416        ec = INVALID_STATE_ERR;
     417        return 0;
     418    }
     419
     420    bool reliable = true;
     421    options.get("reliable", reliable);
     422    RefPtr<RTCDataChannel> channel = RTCDataChannel::create(scriptExecutionContext(), m_peerHandler.get(), label, reliable, ec);
     423    if (ec)
     424        return 0;
     425    m_dataChannels.append(channel);
     426    return channel.release();
     427}
     428
    411429void RTCPeerConnection::close(ExceptionCode& ec)
    412430{
     
    415433        return;
    416434    }
     435
     436    m_peerHandler->stop();
    417437
    418438    changeIceState(IceStateClosed);
    419439    changeReadyState(ReadyStateClosed);
    420     stop();
    421440}
    422441
     
    479498}
    480499
     500void RTCPeerConnection::didAddRemoteDataChannel(PassRefPtr<RTCDataChannelDescriptor> channelDescriptor)
     501{
     502    ASSERT(scriptExecutionContext()->isContextThread());
     503
     504    if (m_readyState == ReadyStateClosed)
     505        return;
     506
     507    RefPtr<RTCDataChannel> channel = RTCDataChannel::create(scriptExecutionContext(), m_peerHandler.get(), channelDescriptor);
     508    m_dataChannels.append(channel);
     509
     510    dispatchEvent(RTCDataChannelEvent::create(eventNames().datachannelEvent, false, false, channel.release()));
     511}
     512
    481513const AtomicString& RTCPeerConnection::interfaceName() const
    482514{
     
    491523void RTCPeerConnection::stop()
    492524{
     525    if (m_readyState != ReadyStateClosed)
     526        m_peerHandler->stop();
     527
     528    m_peerHandler.clear();
     529
    493530    m_iceState = IceStateClosed;
    494531    m_readyState = ReadyStateClosed;
    495532
    496     if (m_peerHandler) {
    497         m_peerHandler->stop();
    498         m_peerHandler.clear();
    499     }
     533    Vector<RefPtr<RTCDataChannel> >::iterator i = m_dataChannels.begin();
     534    for (; i != m_dataChannels.end(); ++i)
     535        (*i)->stop();
    500536}
    501537
  • trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h

    r129908 r131372  
    5050class MediaStreamTrack;
    5151class RTCConfiguration;
     52class RTCDataChannel;
    5253class RTCErrorCallback;
    5354class RTCSessionDescription;
     
    8990    void getStats(PassRefPtr<RTCStatsCallback> successCallback, PassRefPtr<MediaStreamTrack> selector);
    9091
     92    PassRefPtr<RTCDataChannel> createDataChannel(String label, const Dictionary& dataChannelDict, ExceptionCode&);
     93
    9194    void close(ExceptionCode&);
    9295
     
    98101    DEFINE_ATTRIBUTE_EVENT_LISTENER(removestream);
    99102    DEFINE_ATTRIBUTE_EVENT_LISTENER(icechange);
     103    DEFINE_ATTRIBUTE_EVENT_LISTENER(datachannel);
    100104
    101105    // RTCPeerConnectionHandlerClient
     
    106110    virtual void didAddRemoteStream(PassRefPtr<MediaStreamDescriptor>) OVERRIDE;
    107111    virtual void didRemoveRemoteStream(MediaStreamDescriptor*) OVERRIDE;
     112    virtual void didAddRemoteDataChannel(PassRefPtr<RTCDataChannelDescriptor>) OVERRIDE;
    108113
    109114    // EventTarget
     
    138143    RefPtr<MediaStreamList> m_remoteStreams;
    139144
     145    Vector<RefPtr<RTCDataChannel> > m_dataChannels;
     146
    140147    OwnPtr<RTCPeerConnectionHandler> m_peerHandler;
    141148};
  • trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl

    r131172 r131372  
    7373    void getStats(in [Callback] RTCStatsCallback successCallback, in [Optional=DefaultIsUndefined] MediaStreamTrack selector);
    7474
     75    RTCDataChannel createDataChannel(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString label, in [Optional=DefaultIsUndefined] Dictionary options)
     76         raises(DOMException);
     77
    7578    void close()
    7679        raises(DOMException);
     
    8386    attribute EventListener onremovestream;
    8487    attribute EventListener onicechange;
     88    attribute EventListener ondatachannel;
    8589
    8690    // EventTarget interface
  • trunk/Source/WebCore/WebCore.gypi

    r131137 r131372  
    458458            'platform/mediastream/PeerConnection00HandlerClient.h',
    459459            'platform/mediastream/RTCConfiguration.h',
     460            'platform/mediastream/RTCDataChannelDescriptor.cpp',
     461            'platform/mediastream/RTCDataChannelDescriptor.h',
    460462            'platform/mediastream/RTCIceCandidateDescriptor.cpp',
    461463            'platform/mediastream/RTCIceCandidateDescriptor.h',
     
    868870            'Modules/mediastream/NavigatorUserMediaSuccessCallback.idl',
    869871            'Modules/mediastream/PeerConnection00.idl',
     872            'Modules/mediastream/RTCDataChannel.idl',
     873            'Modules/mediastream/RTCDataChannelEvent.idl',
    870874            'Modules/mediastream/RTCErrorCallback.idl',
    871875            'Modules/mediastream/RTCIceCandidate.idl',
     
    16131617            'Modules/mediastream/PeerConnection00.cpp',
    16141618            'Modules/mediastream/PeerConnection00.h',
     1619            'Modules/mediastream/RTCDataChannel.h',
     1620            'Modules/mediastream/RTCDataChannel.cpp',
     1621            'Modules/mediastream/RTCDataChannelEvent.h',
     1622            'Modules/mediastream/RTCDataChannelEvent.cpp',
    16151623            'Modules/mediastream/RTCErrorCallback.h',
    16161624            'Modules/mediastream/RTCIceCandidate.cpp',
  • trunk/Source/WebCore/dom/EventNames.h

    r130307 r131372  
    229229    macro(icecandidate) \
    230230    macro(negotiationneeded) \
     231    macro(datachannel) \
    231232    \
    232233    macro(show) \
  • trunk/Source/WebCore/dom/EventNames.in

    r127425 r131372  
    3333MediaStreamTrackEvent conditional=MEDIA_STREAM
    3434RTCIceCandidateEvent conditional=MEDIA_STREAM
     35RTCDataChannelEvent conditional=MEDIA_STREAM
    3536SpeechInputEvent conditional=INPUT_SPEECH
    3637SpeechRecognitionError conditional=SCRIPTED_SPEECH
  • trunk/Source/WebCore/dom/EventTargetFactory.in

    r125850 r131372  
    2727PeerConnection00 conditional=MEDIA_STREAM
    2828Performance conditional=WEB_TIMING
     29RTCDataChannel conditional=MEDIA_STREAM
    2930RTCPeerConnection conditional=MEDIA_STREAM
    3031SharedWorker conditional=SHARED_WORKERS
  • trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.cpp

    r129908 r131372  
    6262    virtual void getStats(PassRefPtr<RTCStatsRequest>) OVERRIDE;
    6363    virtual void stop() OVERRIDE;
     64
     65    // RTCDataChannel.
     66    virtual bool openDataChannel(PassRefPtr<RTCDataChannelDescriptor>) OVERRIDE;
     67    virtual bool sendStringData(PassRefPtr<RTCDataChannelDescriptor>, const String&) OVERRIDE;
     68    virtual bool sendRawData(PassRefPtr<RTCDataChannelDescriptor>, const char*, size_t) OVERRIDE;
     69    virtual void closeDataChannel(PassRefPtr<RTCDataChannelDescriptor>) OVERRIDE;
    6470
    6571private:
     
    140146}
    141147
     148bool RTCPeerConnectionHandlerDummy::openDataChannel(PassRefPtr<RTCDataChannelDescriptor>)
     149{
     150    return false;
     151}
     152
     153bool RTCPeerConnectionHandlerDummy::sendStringData(PassRefPtr<RTCDataChannelDescriptor>, const String&)
     154{
     155    return false;
     156}
     157
     158bool RTCPeerConnectionHandlerDummy::sendRawData(PassRefPtr<RTCDataChannelDescriptor>, const char*, size_t)
     159{
     160    return false;
     161}
     162
     163void RTCPeerConnectionHandlerDummy::closeDataChannel(PassRefPtr<RTCDataChannelDescriptor>)
     164{
     165}
     166
    142167} // namespace WebCore
    143168
  • trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.h

    r129908 r131372  
    4242class MediaConstraints;
    4343class RTCConfiguration;
     44class RTCDataChannelDescriptor;
    4445class RTCIceCandidateDescriptor;
    4546class RTCPeerConnectionHandlerClient;
     
    6970    virtual void stop() = 0;
    7071
     72    // RTCDataChannel.
     73    virtual bool openDataChannel(PassRefPtr<RTCDataChannelDescriptor>) = 0;
     74    virtual bool sendStringData(PassRefPtr<RTCDataChannelDescriptor>, const String&) = 0;
     75    virtual bool sendRawData(PassRefPtr<RTCDataChannelDescriptor>, const char*, size_t) = 0;
     76    virtual void closeDataChannel(PassRefPtr<RTCDataChannelDescriptor>) = 0;
     77
    7178protected:
    7279    RTCPeerConnectionHandler() { }
  • trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandlerClient.h

    r128166 r131372  
    3939
    4040class MediaStreamDescriptor;
     41class RTCDataChannelDescriptor;
    4142class RTCIceCandidateDescriptor;
    4243
     
    7071    virtual void didAddRemoteStream(PassRefPtr<MediaStreamDescriptor>) = 0;
    7172    virtual void didRemoveRemoteStream(MediaStreamDescriptor*) = 0;
     73
     74    // RTCDataChannel.
     75    virtual void didAddRemoteDataChannel(PassRefPtr<RTCDataChannelDescriptor>) = 0;
    7276};
    7377
  • trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp

    r130270 r131372  
    3737#include "MediaConstraints.h"
    3838#include "RTCConfiguration.h"
     39#include "RTCDataChannelDescriptor.h"
    3940#include "RTCIceCandidateDescriptor.h"
    4041#include "RTCPeerConnectionHandlerClient.h"
     
    213214}
    214215
     216bool RTCPeerConnectionHandlerChromium::openDataChannel(PassRefPtr<RTCDataChannelDescriptor> dataChannel)
     217{
     218    // FIXME: Implement when WebKit changes have landed.
     219    return false;
     220}
     221
     222bool RTCPeerConnectionHandlerChromium::sendStringData(PassRefPtr<RTCDataChannelDescriptor> dataChannel, const String& data)
     223{
     224    // FIXME: Implement when WebKit changes have landed.
     225    return false;
     226}
     227
     228bool RTCPeerConnectionHandlerChromium::sendRawData(PassRefPtr<RTCDataChannelDescriptor> dataChannel, const char* data, size_t dataLength)
     229{
     230    // FIXME: Implement when WebKit changes have landed.
     231    return false;
     232}
     233
     234void RTCPeerConnectionHandlerChromium::closeDataChannel(PassRefPtr<RTCDataChannelDescriptor> dataChannel)
     235{
     236    // FIXME: Implement when WebKit changes have landed.
     237}
     238
    215239} // namespace WebCore
    216240
  • trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h

    r130270 r131372  
    6868    virtual void stop() OVERRIDE;
    6969
     70    virtual bool openDataChannel(PassRefPtr<RTCDataChannelDescriptor>) OVERRIDE;
     71    virtual bool sendStringData(PassRefPtr<RTCDataChannelDescriptor>, const String&) OVERRIDE;
     72    virtual bool sendRawData(PassRefPtr<RTCDataChannelDescriptor>, const char*, size_t) OVERRIDE;
     73    virtual void closeDataChannel(PassRefPtr<RTCDataChannelDescriptor>) OVERRIDE;
     74
    7075    // WebKit::WebRTCPeerConnectionHandlerClient implementation.
    7176    virtual void negotiationNeeded() OVERRIDE;
Note: See TracChangeset for help on using the changeset viewer.