Changeset 127612 in webkit


Ignore:
Timestamp:
Sep 5, 2012 11:01:12 AM (12 years ago)
Author:
tommyw@google.com
Message:

MediaStream API: Add the local and remote description functionality to RTCPeerConnection
https://bugs.webkit.org/show_bug.cgi?id=95839

Reviewed by Adam Barth.

Source/Platform:

  • Platform.gypi:
  • chromium/public/WebRTCPeerConnectionHandler.h:

(WebKit):
(WebRTCPeerConnectionHandler):

  • chromium/public/WebRTCVoidRequest.h: Copied from Source/Platform/chromium/public/WebRTCPeerConnectionHandler.h.

(WebCore):
(WebKit):
(WebRTCVoidRequest):
(ExtraData):
(WebKit::WebRTCVoidRequest::ExtraData::~ExtraData):
(WebKit::WebRTCVoidRequest::WebRTCVoidRequest):
(WebKit::WebRTCVoidRequest::~WebRTCVoidRequest):
(WebKit::WebRTCVoidRequest::operator=):
(WebKit::WebRTCVoidRequest::isNull):

Source/WebCore:

As well as adding the local/remote descriptions stuff, I removed the source attribute from
RTCSessionDescriptionCallback and RTCErrorCallback since it has been removed from the draft.

Tests: fast/mediastream/RTCPeerConnection-localDescription.html

fast/mediastream/RTCPeerConnection-remoteDescription.html

  • CMakeLists.txt:
  • GNUmakefile.list.am:
  • Modules/mediastream/RTCErrorCallback.h:

(RTCErrorCallback):

  • Modules/mediastream/RTCErrorCallback.idl:
  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::createOffer):
(WebCore::RTCPeerConnection::setLocalDescription):
(WebCore):
(WebCore::RTCPeerConnection::localDescription):
(WebCore::RTCPeerConnection::setRemoteDescription):
(WebCore::RTCPeerConnection::remoteDescription):

  • Modules/mediastream/RTCPeerConnection.h:

(WebCore):
(RTCPeerConnection):

  • Modules/mediastream/RTCPeerConnection.idl:
  • Modules/mediastream/RTCSessionDescriptionCallback.h:

(RTCSessionDescriptionCallback):

  • Modules/mediastream/RTCSessionDescriptionCallback.idl:
  • Modules/mediastream/RTCSessionDescriptionRequestImpl.cpp:

(WebCore::RTCSessionDescriptionRequestImpl::create):
(WebCore::RTCSessionDescriptionRequestImpl::RTCSessionDescriptionRequestImpl):
(WebCore::RTCSessionDescriptionRequestImpl::requestSucceeded):
(WebCore::RTCSessionDescriptionRequestImpl::requestFailed):
(WebCore::RTCSessionDescriptionRequestImpl::clear):

  • Modules/mediastream/RTCSessionDescriptionRequestImpl.h:

(RTCSessionDescriptionRequestImpl):

  • Modules/mediastream/RTCVoidRequestImpl.cpp: Copied from Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.cpp.

(WebCore):
(WebCore::RTCVoidRequestImpl::create):
(WebCore::RTCVoidRequestImpl::RTCVoidRequestImpl):
(WebCore::RTCVoidRequestImpl::~RTCVoidRequestImpl):
(WebCore::RTCVoidRequestImpl::requestSucceeded):
(WebCore::RTCVoidRequestImpl::requestFailed):
(WebCore::RTCVoidRequestImpl::stop):
(WebCore::RTCVoidRequestImpl::clear):

  • Modules/mediastream/RTCVoidRequestImpl.h: Copied from Source/WebCore/Modules/mediastream/RTCSessionDescriptionCallback.h.

(WebCore):
(RTCVoidRequestImpl):

  • WebCore.gypi:
  • platform/chromium/support/WebRTCVoidRequest.cpp: Copied from Source/Platform/chromium/public/WebRTCPeerConnectionHandler.h.

(WebKit):
(WebKit::WebRTCVoidRequest::WebRTCVoidRequest):
(WebKit::WebRTCVoidRequest::assign):
(WebKit::WebRTCVoidRequest::reset):
(WebKit::WebRTCVoidRequest::requestSucceeded):
(WebKit::WebRTCVoidRequest::requestFailed):
(ExtraDataContainer):
(WebKit::ExtraDataContainer::ExtraDataContainer):
(WebKit::ExtraDataContainer::extraData):
(WebKit::WebRTCVoidRequest::extraData):
(WebKit::WebRTCVoidRequest::setExtraData):

  • platform/mediastream/RTCPeerConnectionHandler.cpp:

(RTCPeerConnectionHandlerDummy):
(WebCore::RTCPeerConnectionHandlerDummy::setLocalDescription):
(WebCore):
(WebCore::RTCPeerConnectionHandlerDummy::setRemoteDescription):
(WebCore::RTCPeerConnectionHandlerDummy::localDescription):
(WebCore::RTCPeerConnectionHandlerDummy::remoteDescription):

  • platform/mediastream/RTCPeerConnectionHandler.h:

(WebCore):
(RTCPeerConnectionHandler):

  • platform/mediastream/RTCVoidRequest.h: Copied from Source/WebCore/Modules/mediastream/RTCErrorCallback.h.

(WebCore):
(RTCVoidRequest):
(ExtraData):
(WebCore::RTCVoidRequest::ExtraData::~ExtraData):
(WebCore::RTCVoidRequest::~RTCVoidRequest):
(WebCore::RTCVoidRequest::extraData):
(WebCore::RTCVoidRequest::setExtraData):
(WebCore::RTCVoidRequest::RTCVoidRequest):

  • platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp:

(WebCore::RTCPeerConnectionHandlerChromium::setLocalDescription):
(WebCore):
(WebCore::RTCPeerConnectionHandlerChromium::setRemoteDescription):
(WebCore::RTCPeerConnectionHandlerChromium::localDescription):
(WebCore::RTCPeerConnectionHandlerChromium::remoteDescription):

  • platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h:

(RTCPeerConnectionHandlerChromium):

Tools:

In addition to adding the new methods to MockWebRTCPeerConnectionHandler I cleaned
up the task definitions a bit. There was no need to have them in the header file.

  • DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:

(RTCSessionDescriptionRequestSuccededTask):
(RTCSessionDescriptionRequestSuccededTask::RTCSessionDescriptionRequestSuccededTask):
(RTCSessionDescriptionRequestFailedTask):
(RTCSessionDescriptionRequestFailedTask::RTCSessionDescriptionRequestFailedTask):
(RTCVoidRequestTask):
(RTCVoidRequestTask::RTCVoidRequestTask):
(MockWebRTCPeerConnectionHandler::createOffer):
(MockWebRTCPeerConnectionHandler::setLocalDescription):
(MockWebRTCPeerConnectionHandler::setRemoteDescription):
(MockWebRTCPeerConnectionHandler::localDescription):
(MockWebRTCPeerConnectionHandler::remoteDescription):

  • DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:

(MockWebRTCPeerConnectionHandler):

LayoutTests:

  • fast/mediastream/RTCPeerConnection-createOffer.html:
  • fast/mediastream/RTCPeerConnection-localDescription-expected.txt: Added.
  • fast/mediastream/RTCPeerConnection-localDescription.html: Copied from LayoutTests/fast/mediastream/RTCPeerConnection-createOffer.html.
  • fast/mediastream/RTCPeerConnection-remoteDescription-expected.txt: Added.
  • fast/mediastream/RTCPeerConnection-remoteDescription.html: Copied from LayoutTests/fast/mediastream/RTCPeerConnection-createOffer.html.
Location:
trunk
Files:
2 added
25 edited
7 copied

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r127608 r127612  
     12012-09-05  Tommy Widenflycht  <tommyw@google.com>
     2
     3        MediaStream API: Add the local and remote description functionality to RTCPeerConnection
     4        https://bugs.webkit.org/show_bug.cgi?id=95839
     5
     6        Reviewed by Adam Barth.
     7
     8        * fast/mediastream/RTCPeerConnection-createOffer.html:
     9        * fast/mediastream/RTCPeerConnection-localDescription-expected.txt: Added.
     10        * fast/mediastream/RTCPeerConnection-localDescription.html: Copied from LayoutTests/fast/mediastream/RTCPeerConnection-createOffer.html.
     11        * fast/mediastream/RTCPeerConnection-remoteDescription-expected.txt: Added.
     12        * fast/mediastream/RTCPeerConnection-remoteDescription.html: Copied from LayoutTests/fast/mediastream/RTCPeerConnection-createOffer.html.
     13
    1142012-09-01  Dirk Schulze  <krit@webkit.org>
    215
  • trunk/LayoutTests/fast/mediastream/RTCPeerConnection-createOffer.html

    r127501 r127612  
    2020}
    2121
    22 function requestSucceeded2(sd, source)
     22function requestSucceeded2(sd)
    2323{
    2424    testFailed('requestSucceeded was called.');
     
    3232}
    3333
    34 function requestSucceeded1(sd, source)
     34function requestSucceeded1(sd)
    3535{
    3636    testPassed('requestSucceeded was called.');
  • trunk/LayoutTests/fast/mediastream/RTCPeerConnection-localDescription.html

    r127608 r127612  
    66<body>
    77<script>
    8 description("Tests RTCPeerConnection [add|remove]Stream.");
     8description("Tests RTCPeerConnection localDescription.");
    99
    1010var pc = null;
    1111
    12 function requestFailed2(reason)
     12function requestFailed2()
    1313{
    1414    testPassed('requestFailed was called.');
    1515
    16     errorReason = reason;
    17     shouldBe('errorReason', '"TEST_ERROR"');
    18 
     16    shouldBe('pc.localDescription.sdp', '"sdp1"');
    1917    finishJSTest();
    2018}
    2119
    22 function requestSucceeded2(sd, source)
     20function requestSucceeded2()
    2321{
    2422    testFailed('requestSucceeded was called.');
     
    3230}
    3331
    34 function requestSucceeded1(sd, source)
     32function requestSucceeded1()
    3533{
    3634    testPassed('requestSucceeded was called.');
    3735
    38     sessionDescription = sd;
    39     shouldBe('sessionDescription.type', '"offer"');
    40 
    41     pc.createOffer(requestSucceeded2, requestFailed2, {mandatory:{"succeed":false}});
     36    sessionDescription = new RTCSessionDescription({type:"answer", sdp:"sdp2"});
     37    shouldNotThrow('pc.setLocalDescription(sessionDescription, requestSucceeded2, requestFailed2);');
    4238}
    4339
    4440pc = new webkitRTCPeerConnection(null, null);
    45 pc.createOffer(requestSucceeded1, requestFailed1, {mandatory:{"succeed":true}});
     41var sessionDescription = new RTCSessionDescription({type:"offer", sdp:"sdp1"});
     42shouldNotThrow('pc.setLocalDescription(sessionDescription, requestSucceeded1, requestFailed1);');
     43
    4644
    4745window.jsTestIsAsync = true;
  • trunk/LayoutTests/fast/mediastream/RTCPeerConnection-remoteDescription.html

    r127608 r127612  
    66<body>
    77<script>
    8 description("Tests RTCPeerConnection [add|remove]Stream.");
     8description("Tests RTCPeerConnection remoteDescription.");
    99
    1010var pc = null;
    1111
    12 function requestFailed2(reason)
     12function requestFailed2()
    1313{
    1414    testPassed('requestFailed was called.');
    1515
    16     errorReason = reason;
    17     shouldBe('errorReason', '"TEST_ERROR"');
    18 
     16    shouldBe('pc.remoteDescription.sdp', '"sdp1"');
    1917    finishJSTest();
    2018}
    2119
    22 function requestSucceeded2(sd, source)
     20function requestSucceeded2()
    2321{
    2422    testFailed('requestSucceeded was called.');
     
    3230}
    3331
    34 function requestSucceeded1(sd, source)
     32function requestSucceeded1()
    3533{
    3634    testPassed('requestSucceeded was called.');
    3735
    38     sessionDescription = sd;
    39     shouldBe('sessionDescription.type', '"offer"');
    40 
    41     pc.createOffer(requestSucceeded2, requestFailed2, {mandatory:{"succeed":false}});
     36    sessionDescription = new RTCSessionDescription({type:"offer", sdp:"sdp2"});
     37    shouldNotThrow('pc.setRemoteDescription(sessionDescription, requestSucceeded2, requestFailed2);');
    4238}
    4339
    4440pc = new webkitRTCPeerConnection(null, null);
    45 pc.createOffer(requestSucceeded1, requestFailed1, {mandatory:{"succeed":true}});
     41var sessionDescription = new RTCSessionDescription({type:"answer", sdp:"sdp1"});
     42shouldNotThrow('pc.setRemoteDescription(sessionDescription, requestSucceeded1, requestFailed1);');
     43
    4644
    4745window.jsTestIsAsync = true;
  • trunk/Source/Platform/ChangeLog

    r127605 r127612  
     12012-09-05  Tommy Widenflycht  <tommyw@google.com>
     2
     3        MediaStream API: Add the local and remote description functionality to RTCPeerConnection
     4        https://bugs.webkit.org/show_bug.cgi?id=95839
     5
     6        Reviewed by Adam Barth.
     7
     8        * Platform.gypi:
     9        * chromium/public/WebRTCPeerConnectionHandler.h:
     10        (WebKit):
     11        (WebRTCPeerConnectionHandler):
     12        * chromium/public/WebRTCVoidRequest.h: Copied from Source/Platform/chromium/public/WebRTCPeerConnectionHandler.h.
     13        (WebCore):
     14        (WebKit):
     15        (WebRTCVoidRequest):
     16        (ExtraData):
     17        (WebKit::WebRTCVoidRequest::ExtraData::~ExtraData):
     18        (WebKit::WebRTCVoidRequest::WebRTCVoidRequest):
     19        (WebKit::WebRTCVoidRequest::~WebRTCVoidRequest):
     20        (WebKit::WebRTCVoidRequest::operator=):
     21        (WebKit::WebRTCVoidRequest::isNull):
     22
    1232012-09-05  Sami Kyostila  <skyostil@chromium.org>
    224
  • trunk/Source/Platform/Platform.gypi

    r127605 r127612  
    111111            'chromium/public/WebRTCSessionDescriptionDescriptor.h',
    112112            'chromium/public/WebRTCSessionDescriptionRequest.h',
     113            'chromium/public/WebRTCVoidRequest.h',
    113114            'chromium/public/WebRect.h',
    114115            'chromium/public/WebReferrerPolicy.h',
  • trunk/Source/Platform/chromium/public/WebRTCPeerConnectionHandler.h

    r127501 r127612  
    4040class WebRTCSessionDescriptionDescriptor;
    4141class WebRTCSessionDescriptionRequest;
     42class WebRTCVoidRequest;
    4243
    4344class WebRTCPeerConnectionHandler {
     
    4849
    4950    virtual void createOffer(const WebRTCSessionDescriptionRequest&, const WebMediaConstraints&) = 0;
     51    virtual void setLocalDescription(const WebRTCVoidRequest&, const WebRTCSessionDescriptionDescriptor&) = 0;
     52    virtual void setRemoteDescription(const WebRTCVoidRequest&, const WebRTCSessionDescriptionDescriptor&) = 0;
     53    virtual WebRTCSessionDescriptionDescriptor localDescription() = 0;
     54    virtual WebRTCSessionDescriptionDescriptor remoteDescription() = 0;
    5055    virtual bool updateICE(const WebRTCConfiguration&, const WebMediaConstraints&) = 0;
    5156    virtual bool addICECandidate(const WebRTCICECandidateDescriptor&) = 0;
  • trunk/Source/Platform/chromium/public/WebRTCVoidRequest.h

    r127608 r127612  
    2929 */
    3030
    31 #ifndef WebRTCPeerConnectionHandler_h
    32 #define WebRTCPeerConnectionHandler_h
     31#ifndef WebRTCVoidRequest_h
     32#define WebRTCVoidRequest_h
     33
     34#include "WebCommon.h"
     35#include "WebNonCopyable.h"
     36#include "WebPrivatePtr.h"
     37#include "WebString.h"
     38
     39namespace WebCore {
     40class RTCVoidRequest;
     41}
    3342
    3443namespace WebKit {
    35 class WebMediaConstraints;
    36 class WebMediaStreamDescriptor;
    37 class WebRTCConfiguration;
    38 class WebRTCICECandidateDescriptor;
    39 class WebRTCPeerConnectionHandlerClient;
    40 class WebRTCSessionDescriptionDescriptor;
    41 class WebRTCSessionDescriptionRequest;
    4244
    43 class WebRTCPeerConnectionHandler {
     45class WebRTCVoidRequest {
    4446public:
    45     virtual ~WebRTCPeerConnectionHandler() { }
     47    class ExtraData {
     48    public:
     49        virtual ~ExtraData() { }
     50    };
    4651
    47     virtual bool initialize(const WebRTCConfiguration&, const WebMediaConstraints&) = 0;
     52    WebRTCVoidRequest() { }
     53    WebRTCVoidRequest(const WebRTCVoidRequest& other) { assign(other); }
     54    ~WebRTCVoidRequest() { reset(); }
    4855
    49     virtual void createOffer(const WebRTCSessionDescriptionRequest&, const WebMediaConstraints&) = 0;
    50     virtual bool updateICE(const WebRTCConfiguration&, const WebMediaConstraints&) = 0;
    51     virtual bool addICECandidate(const WebRTCICECandidateDescriptor&) = 0;
    52     virtual bool addStream(const WebMediaStreamDescriptor&, const WebMediaConstraints&) = 0;
    53     virtual void removeStream(const WebMediaStreamDescriptor&) = 0;
    54     virtual void stop() = 0;
     56    WebRTCVoidRequest& operator=(const WebRTCVoidRequest& other)
     57    {
     58        assign(other);
     59        return *this;
     60    }
     61
     62    WEBKIT_EXPORT void assign(const WebRTCVoidRequest&);
     63
     64    WEBKIT_EXPORT void reset();
     65    bool isNull() const { return m_private.isNull(); }
     66
     67    WEBKIT_EXPORT void requestSucceeded() const;
     68    WEBKIT_EXPORT void requestFailed(const WebString& error) const;
     69
     70    // Extra data associated with this object.
     71    // If non-null, the extra data pointer will be deleted when the object is destroyed.
     72    // Setting the extra data pointer will cause any existing non-null
     73    // extra data pointer to be deleted.
     74    WEBKIT_EXPORT ExtraData* extraData() const;
     75    WEBKIT_EXPORT void setExtraData(ExtraData*);
     76
     77#if WEBKIT_IMPLEMENTATION
     78    WebRTCVoidRequest(const WTF::PassRefPtr<WebCore::RTCVoidRequest>&);
     79#endif
     80
     81private:
     82    WebPrivatePtr<WebCore::RTCVoidRequest> m_private;
    5583};
    5684
    5785} // namespace WebKit
    5886
    59 #endif // WebRTCPeerConnectionHandler_h
     87#endif // WebRTCVoidRequest_h
  • trunk/Source/WebCore/CMakeLists.txt

    r127535 r127612  
    862862    Modules/mediastream/RTCSessionDescription.cpp
    863863    Modules/mediastream/RTCSessionDescriptionRequestImpl.cpp
     864    Modules/mediastream/RTCVoidRequestImpl.cpp
    864865    Modules/mediastream/SessionDescription.cpp
    865866    Modules/mediastream/UserMediaController.cpp
  • trunk/Source/WebCore/ChangeLog

    r127608 r127612  
     12012-09-05  Tommy Widenflycht  <tommyw@google.com>
     2
     3        MediaStream API: Add the local and remote description functionality to RTCPeerConnection
     4        https://bugs.webkit.org/show_bug.cgi?id=95839
     5
     6        Reviewed by Adam Barth.
     7
     8        As well as adding the local/remote descriptions stuff, I removed the source attribute from
     9        RTCSessionDescriptionCallback and RTCErrorCallback since it has been removed from the draft.
     10
     11        Tests: fast/mediastream/RTCPeerConnection-localDescription.html
     12               fast/mediastream/RTCPeerConnection-remoteDescription.html
     13
     14        * CMakeLists.txt:
     15        * GNUmakefile.list.am:
     16        * Modules/mediastream/RTCErrorCallback.h:
     17        (RTCErrorCallback):
     18        * Modules/mediastream/RTCErrorCallback.idl:
     19        * Modules/mediastream/RTCPeerConnection.cpp:
     20        (WebCore::RTCPeerConnection::createOffer):
     21        (WebCore::RTCPeerConnection::setLocalDescription):
     22        (WebCore):
     23        (WebCore::RTCPeerConnection::localDescription):
     24        (WebCore::RTCPeerConnection::setRemoteDescription):
     25        (WebCore::RTCPeerConnection::remoteDescription):
     26        * Modules/mediastream/RTCPeerConnection.h:
     27        (WebCore):
     28        (RTCPeerConnection):
     29        * Modules/mediastream/RTCPeerConnection.idl:
     30        * Modules/mediastream/RTCSessionDescriptionCallback.h:
     31        (RTCSessionDescriptionCallback):
     32        * Modules/mediastream/RTCSessionDescriptionCallback.idl:
     33        * Modules/mediastream/RTCSessionDescriptionRequestImpl.cpp:
     34        (WebCore::RTCSessionDescriptionRequestImpl::create):
     35        (WebCore::RTCSessionDescriptionRequestImpl::RTCSessionDescriptionRequestImpl):
     36        (WebCore::RTCSessionDescriptionRequestImpl::requestSucceeded):
     37        (WebCore::RTCSessionDescriptionRequestImpl::requestFailed):
     38        (WebCore::RTCSessionDescriptionRequestImpl::clear):
     39        * Modules/mediastream/RTCSessionDescriptionRequestImpl.h:
     40        (RTCSessionDescriptionRequestImpl):
     41        * Modules/mediastream/RTCVoidRequestImpl.cpp: Copied from Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.cpp.
     42        (WebCore):
     43        (WebCore::RTCVoidRequestImpl::create):
     44        (WebCore::RTCVoidRequestImpl::RTCVoidRequestImpl):
     45        (WebCore::RTCVoidRequestImpl::~RTCVoidRequestImpl):
     46        (WebCore::RTCVoidRequestImpl::requestSucceeded):
     47        (WebCore::RTCVoidRequestImpl::requestFailed):
     48        (WebCore::RTCVoidRequestImpl::stop):
     49        (WebCore::RTCVoidRequestImpl::clear):
     50        * Modules/mediastream/RTCVoidRequestImpl.h: Copied from Source/WebCore/Modules/mediastream/RTCSessionDescriptionCallback.h.
     51        (WebCore):
     52        (RTCVoidRequestImpl):
     53        * WebCore.gypi:
     54        * platform/chromium/support/WebRTCVoidRequest.cpp: Copied from Source/Platform/chromium/public/WebRTCPeerConnectionHandler.h.
     55        (WebKit):
     56        (WebKit::WebRTCVoidRequest::WebRTCVoidRequest):
     57        (WebKit::WebRTCVoidRequest::assign):
     58        (WebKit::WebRTCVoidRequest::reset):
     59        (WebKit::WebRTCVoidRequest::requestSucceeded):
     60        (WebKit::WebRTCVoidRequest::requestFailed):
     61        (ExtraDataContainer):
     62        (WebKit::ExtraDataContainer::ExtraDataContainer):
     63        (WebKit::ExtraDataContainer::extraData):
     64        (WebKit::WebRTCVoidRequest::extraData):
     65        (WebKit::WebRTCVoidRequest::setExtraData):
     66        * platform/mediastream/RTCPeerConnectionHandler.cpp:
     67        (RTCPeerConnectionHandlerDummy):
     68        (WebCore::RTCPeerConnectionHandlerDummy::setLocalDescription):
     69        (WebCore):
     70        (WebCore::RTCPeerConnectionHandlerDummy::setRemoteDescription):
     71        (WebCore::RTCPeerConnectionHandlerDummy::localDescription):
     72        (WebCore::RTCPeerConnectionHandlerDummy::remoteDescription):
     73        * platform/mediastream/RTCPeerConnectionHandler.h:
     74        (WebCore):
     75        (RTCPeerConnectionHandler):
     76        * platform/mediastream/RTCVoidRequest.h: Copied from Source/WebCore/Modules/mediastream/RTCErrorCallback.h.
     77        (WebCore):
     78        (RTCVoidRequest):
     79        (ExtraData):
     80        (WebCore::RTCVoidRequest::ExtraData::~ExtraData):
     81        (WebCore::RTCVoidRequest::~RTCVoidRequest):
     82        (WebCore::RTCVoidRequest::extraData):
     83        (WebCore::RTCVoidRequest::setExtraData):
     84        (WebCore::RTCVoidRequest::RTCVoidRequest):
     85        * platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp:
     86        (WebCore::RTCPeerConnectionHandlerChromium::setLocalDescription):
     87        (WebCore):
     88        (WebCore::RTCPeerConnectionHandlerChromium::setRemoteDescription):
     89        (WebCore::RTCPeerConnectionHandlerChromium::localDescription):
     90        (WebCore::RTCPeerConnectionHandlerChromium::remoteDescription):
     91        * platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h:
     92        (RTCPeerConnectionHandlerChromium):
     93
    1942012-09-01  Dirk Schulze  <krit@webkit.org>
    295
  • trunk/Source/WebCore/GNUmakefile.list.am

    r127535 r127612  
    19371937        Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.cpp \
    19381938        Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.h \
     1939        Source/WebCore/Modules/mediastream/RTCVoidRequestImpl.cpp \
     1940        Source/WebCore/Modules/mediastream/RTCVoidRequestImpl.h \
    19391941        Source/WebCore/Modules/mediastream/SessionDescription.cpp \
    19401942        Source/WebCore/Modules/mediastream/SessionDescription.h \
     
    45664568        Source/WebCore/platform/mediastream/RTCSessionDescriptionDescriptor.cpp \
    45674569        Source/WebCore/platform/mediastream/RTCSessionDescriptionDescriptor.h \
     4570        Source/WebCore/platform/mediastream/RTCVoidRequest.h \
    45684571        Source/WebCore/platform/mediastream/SessionDescriptionDescriptor.cpp \
    45694572        Source/WebCore/platform/mediastream/SessionDescriptionDescriptor.h \
  • trunk/Source/WebCore/Modules/mediastream/RTCErrorCallback.h

    r127501 r127612  
    3939namespace WebCore {
    4040
    41 class RTCPeerConnection;
    42 
    4341class RTCErrorCallback : public RefCounted<RTCErrorCallback> {
    4442public:
    4543    virtual ~RTCErrorCallback() { }
    46     virtual bool handleEvent(const String& errorInformation, RTCPeerConnection*) = 0;
     44    virtual bool handleEvent(const String& errorInformation) = 0;
    4745};
    4846
  • trunk/Source/WebCore/Modules/mediastream/RTCErrorCallback.idl

    r127501 r127612  
    3535        Callback
    3636    ] RTCErrorCallback {
    37         boolean handleEvent(in DOMString errorInformation, in RTCPeerConnection source);
     37        boolean handleEvent(in DOMString errorInformation);
    3838    };
    3939
  • trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp

    r127501 r127612  
    4949#include "RTCSessionDescriptionDescriptor.h"
    5050#include "RTCSessionDescriptionRequestImpl.h"
     51#include "RTCVoidRequestImpl.h"
    5152#include "ScriptExecutionContext.h"
     53#include "VoidCallback.h"
    5254
    5355namespace WebCore {
     
    152154        return;
    153155
    154     RefPtr<RTCSessionDescriptionRequestImpl> request = RTCSessionDescriptionRequestImpl::create(scriptExecutionContext(), successCallback, errorCallback, this);
     156    RefPtr<RTCSessionDescriptionRequestImpl> request = RTCSessionDescriptionRequestImpl::create(scriptExecutionContext(), successCallback, errorCallback);
    155157    m_peerHandler->createOffer(request.release(), constraints);
     158}
     159
     160void RTCPeerConnection::setLocalDescription(PassRefPtr<RTCSessionDescription> prpSessionDescription, PassRefPtr<VoidCallback> successCallback, PassRefPtr<RTCErrorCallback> errorCallback, ExceptionCode& ec)
     161{
     162    if (m_readyState == ReadyStateClosing || m_readyState == ReadyStateClosed) {
     163        ec = INVALID_STATE_ERR;
     164        return;
     165    }
     166
     167    RefPtr<RTCSessionDescription> sessionDescription = prpSessionDescription;
     168    if (!sessionDescription) {
     169        ec = TYPE_MISMATCH_ERR;
     170        return;
     171    }
     172
     173    RefPtr<RTCVoidRequestImpl> request = RTCVoidRequestImpl::create(scriptExecutionContext(), successCallback, errorCallback);
     174    m_peerHandler->setLocalDescription(request.release(), sessionDescription->descriptor());
     175}
     176
     177PassRefPtr<RTCSessionDescription> RTCPeerConnection::localDescription(ExceptionCode& ec)
     178{
     179    if (m_readyState == ReadyStateClosing || m_readyState == ReadyStateClosed) {
     180        ec = INVALID_STATE_ERR;
     181        return 0;
     182    }
     183
     184    RefPtr<RTCSessionDescriptionDescriptor> descriptor = m_peerHandler->localDescription();
     185    if (!descriptor)
     186        return 0;
     187
     188    RefPtr<RTCSessionDescription> desc = RTCSessionDescription::create(descriptor.release());
     189    return desc.release();
     190}
     191
     192void RTCPeerConnection::setRemoteDescription(PassRefPtr<RTCSessionDescription> prpSessionDescription, PassRefPtr<VoidCallback> successCallback, PassRefPtr<RTCErrorCallback> errorCallback, ExceptionCode& ec)
     193{
     194    if (m_readyState == ReadyStateClosing || m_readyState == ReadyStateClosed) {
     195        ec = INVALID_STATE_ERR;
     196        return;
     197    }
     198
     199    RefPtr<RTCSessionDescription> sessionDescription = prpSessionDescription;
     200    if (!sessionDescription) {
     201        ec = TYPE_MISMATCH_ERR;
     202        return;
     203    }
     204
     205    RefPtr<RTCVoidRequestImpl> request = RTCVoidRequestImpl::create(scriptExecutionContext(), successCallback, errorCallback);
     206    m_peerHandler->setRemoteDescription(request.release(), sessionDescription->descriptor());
     207}
     208
     209PassRefPtr<RTCSessionDescription> RTCPeerConnection::remoteDescription(ExceptionCode& ec)
     210{
     211    if (m_readyState == ReadyStateClosing || m_readyState == ReadyStateClosed) {
     212        ec = INVALID_STATE_ERR;
     213        return 0;
     214    }
     215
     216    RefPtr<RTCSessionDescriptionDescriptor> descriptor = m_peerHandler->remoteDescription();
     217    if (!descriptor)
     218        return 0;
     219
     220    RefPtr<RTCSessionDescription> desc = RTCSessionDescription::create(descriptor.release());
     221    return desc.release();
    156222}
    157223
  • trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h

    r127501 r127612  
    5050class RTCConfiguration;
    5151class RTCErrorCallback;
     52class RTCSessionDescription;
    5253class RTCSessionDescriptionCallback;
     54class VoidCallback;
    5355
    5456class RTCPeerConnection : public RefCounted<RTCPeerConnection>, public RTCPeerConnectionHandlerClient, public EventTarget, public ActiveDOMObject {
     
    5860
    5961    void createOffer(PassRefPtr<RTCSessionDescriptionCallback>, PassRefPtr<RTCErrorCallback>, const Dictionary& mediaConstraints, ExceptionCode&);
     62
     63    void setLocalDescription(PassRefPtr<RTCSessionDescription>, PassRefPtr<VoidCallback>, PassRefPtr<RTCErrorCallback>, ExceptionCode&);
     64    PassRefPtr<RTCSessionDescription> localDescription(ExceptionCode&);
     65
     66    void setRemoteDescription(PassRefPtr<RTCSessionDescription>, PassRefPtr<VoidCallback>, PassRefPtr<RTCErrorCallback>, ExceptionCode&);
     67    PassRefPtr<RTCSessionDescription> remoteDescription(ExceptionCode&);
    6068
    6169    String readyState() const;
  • trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl

    r127501 r127612  
    4242            raises(DOMException);
    4343
     44        void setLocalDescription(in RTCSessionDescription description, in [Callback, Optional=DefaultIsUndefined] VoidCallback successCallback, in [Callback, Optional=DefaultIsUndefined] RTCErrorCallback failureCallback)
     45            raises(DOMException);
     46        readonly attribute RTCSessionDescription localDescription
     47            getter raises(DOMException);
     48
     49        void setRemoteDescription(in RTCSessionDescription description, in [Callback, Optional=DefaultIsUndefined] VoidCallback successCallback, in [Callback, Optional=DefaultIsUndefined] RTCErrorCallback failureCallback)
     50            raises(DOMException);
     51        readonly attribute RTCSessionDescription remoteDescription
     52            getter raises(DOMException);
     53
    4454        readonly attribute DOMString readyState;
    4555
  • trunk/Source/WebCore/Modules/mediastream/RTCSessionDescriptionCallback.h

    r127501 r127612  
    3838namespace WebCore {
    3939
    40 class RTCPeerConnection;
    4140class RTCSessionDescription;
    4241
     
    4443public:
    4544    virtual ~RTCSessionDescriptionCallback() { }
    46     virtual bool handleEvent(RTCSessionDescription*, RTCPeerConnection*) = 0;
     45    virtual bool handleEvent(RTCSessionDescription*) = 0;
    4746};
    4847
  • trunk/Source/WebCore/Modules/mediastream/RTCSessionDescriptionCallback.idl

    r127501 r127612  
    3535        Callback
    3636    ] RTCSessionDescriptionCallback {
    37         boolean handleEvent(in RTCSessionDescription sdp, in RTCPeerConnection source);
     37        boolean handleEvent(in RTCSessionDescription sdp);
    3838    };
    3939
  • trunk/Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.cpp

    r127501 r127612  
    4343namespace WebCore {
    4444
    45 PassRefPtr<RTCSessionDescriptionRequestImpl> RTCSessionDescriptionRequestImpl::create(ScriptExecutionContext* context, PassRefPtr<RTCSessionDescriptionCallback> successCallback, PassRefPtr<RTCErrorCallback> errorCallback, PassRefPtr<RTCPeerConnection> owner)
     45PassRefPtr<RTCSessionDescriptionRequestImpl> RTCSessionDescriptionRequestImpl::create(ScriptExecutionContext* context, PassRefPtr<RTCSessionDescriptionCallback> successCallback, PassRefPtr<RTCErrorCallback> errorCallback)
    4646{
    47     RefPtr<RTCSessionDescriptionRequestImpl> request = adoptRef(new RTCSessionDescriptionRequestImpl(context, successCallback, errorCallback, owner));
     47    RefPtr<RTCSessionDescriptionRequestImpl> request = adoptRef(new RTCSessionDescriptionRequestImpl(context, successCallback, errorCallback));
    4848    request->suspendIfNeeded();
    4949    return request.release();
    5050}
    5151
    52 RTCSessionDescriptionRequestImpl::RTCSessionDescriptionRequestImpl(ScriptExecutionContext* context, PassRefPtr<RTCSessionDescriptionCallback> successCallback, PassRefPtr<RTCErrorCallback> errorCallback, PassRefPtr<RTCPeerConnection> owner)
     52RTCSessionDescriptionRequestImpl::RTCSessionDescriptionRequestImpl(ScriptExecutionContext* context, PassRefPtr<RTCSessionDescriptionCallback> successCallback, PassRefPtr<RTCErrorCallback> errorCallback)
    5353    : ActiveDOMObject(context, this)
    5454    , m_successCallback(successCallback)
    5555    , m_errorCallback(errorCallback)
    56     , m_owner(owner)
    5756{
    5857}
     
    6665    if (m_successCallback) {
    6766        RefPtr<RTCSessionDescription> sessionDescription = RTCSessionDescription::create(descriptor);
    68         m_successCallback->handleEvent(sessionDescription.get(), m_owner.get());
     67        m_successCallback->handleEvent(sessionDescription.get());
    6968    }
    7069
     
    7574{
    7675    if (m_errorCallback)
    77         m_errorCallback->handleEvent(error, m_owner.get());
     76        m_errorCallback->handleEvent(error);
    7877
    7978    clear();
     
    8988    m_successCallback.clear();
    9089    m_errorCallback.clear();
    91     m_owner.clear();
    9290}
    9391
  • trunk/Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.h

    r127501 r127612  
    4545class RTCSessionDescriptionRequestImpl : public RTCSessionDescriptionRequest, public ActiveDOMObject {
    4646public:
    47     static PassRefPtr<RTCSessionDescriptionRequestImpl> create(ScriptExecutionContext*, PassRefPtr<RTCSessionDescriptionCallback>, PassRefPtr<RTCErrorCallback>, PassRefPtr<RTCPeerConnection>);
     47    static PassRefPtr<RTCSessionDescriptionRequestImpl> create(ScriptExecutionContext*, PassRefPtr<RTCSessionDescriptionCallback>, PassRefPtr<RTCErrorCallback>);
    4848    virtual ~RTCSessionDescriptionRequestImpl();
    4949
     
    5555
    5656private:
    57     RTCSessionDescriptionRequestImpl(ScriptExecutionContext*, PassRefPtr<RTCSessionDescriptionCallback>, PassRefPtr<RTCErrorCallback>, PassRefPtr<RTCPeerConnection>);
     57    RTCSessionDescriptionRequestImpl(ScriptExecutionContext*, PassRefPtr<RTCSessionDescriptionCallback>, PassRefPtr<RTCErrorCallback>);
    5858
    5959    void clear();
     
    6161    RefPtr<RTCSessionDescriptionCallback> m_successCallback;
    6262    RefPtr<RTCErrorCallback> m_errorCallback;
    63     RefPtr<RTCPeerConnection> m_owner;
    6463};
    6564
  • trunk/Source/WebCore/Modules/mediastream/RTCVoidRequestImpl.cpp

    r127608 r127612  
    3333#if ENABLE(MEDIA_STREAM)
    3434
    35 #include "RTCSessionDescriptionRequestImpl.h"
     35#include "RTCVoidRequestImpl.h"
    3636
    3737#include "RTCErrorCallback.h"
    3838#include "RTCPeerConnection.h"
    39 #include "RTCSessionDescription.h"
    40 #include "RTCSessionDescriptionCallback.h"
    41 #include "RTCSessionDescriptionDescriptor.h"
     39#include "VoidCallback.h"
    4240
    4341namespace WebCore {
    4442
    45 PassRefPtr<RTCSessionDescriptionRequestImpl> RTCSessionDescriptionRequestImpl::create(ScriptExecutionContext* context, PassRefPtr<RTCSessionDescriptionCallback> successCallback, PassRefPtr<RTCErrorCallback> errorCallback, PassRefPtr<RTCPeerConnection> owner)
     43PassRefPtr<RTCVoidRequestImpl> RTCVoidRequestImpl::create(ScriptExecutionContext* context, PassRefPtr<VoidCallback> successCallback, PassRefPtr<RTCErrorCallback> errorCallback)
    4644{
    47     RefPtr<RTCSessionDescriptionRequestImpl> request = adoptRef(new RTCSessionDescriptionRequestImpl(context, successCallback, errorCallback, owner));
     45    RefPtr<RTCVoidRequestImpl> request = adoptRef(new RTCVoidRequestImpl(context, successCallback, errorCallback));
    4846    request->suspendIfNeeded();
    4947    return request.release();
    5048}
    5149
    52 RTCSessionDescriptionRequestImpl::RTCSessionDescriptionRequestImpl(ScriptExecutionContext* context, PassRefPtr<RTCSessionDescriptionCallback> successCallback, PassRefPtr<RTCErrorCallback> errorCallback, PassRefPtr<RTCPeerConnection> owner)
     50RTCVoidRequestImpl::RTCVoidRequestImpl(ScriptExecutionContext* context, PassRefPtr<VoidCallback> successCallback, PassRefPtr<RTCErrorCallback> errorCallback)
    5351    : ActiveDOMObject(context, this)
    5452    , m_successCallback(successCallback)
    5553    , m_errorCallback(errorCallback)
    56     , m_owner(owner)
    5754{
    5855}
    5956
    60 RTCSessionDescriptionRequestImpl::~RTCSessionDescriptionRequestImpl()
     57RTCVoidRequestImpl::~RTCVoidRequestImpl()
    6158{
    6259}
    6360
    64 void RTCSessionDescriptionRequestImpl::requestSucceeded(PassRefPtr<RTCSessionDescriptionDescriptor> descriptor)
     61void RTCVoidRequestImpl::requestSucceeded()
    6562{
    66     if (m_successCallback) {
    67         RefPtr<RTCSessionDescription> sessionDescription = RTCSessionDescription::create(descriptor);
    68         m_successCallback->handleEvent(sessionDescription.get(), m_owner.get());
    69     }
     63    if (m_successCallback)
     64        m_successCallback->handleEvent();
    7065
    7166    clear();
    7267}
    7368
    74 void RTCSessionDescriptionRequestImpl::requestFailed(const String& error)
     69void RTCVoidRequestImpl::requestFailed(const String& error)
    7570{
    76     if (m_errorCallback)
    77         m_errorCallback->handleEvent(error, m_owner.get());
     71    if (m_errorCallback.get())
     72        m_errorCallback->handleEvent(error);
    7873
    7974    clear();
    8075}
    8176
    82 void RTCSessionDescriptionRequestImpl::stop()
     77void RTCVoidRequestImpl::stop()
    8378{
    8479    clear();
    8580}
    8681
    87 void RTCSessionDescriptionRequestImpl::clear()
     82void RTCVoidRequestImpl::clear()
    8883{
    8984    m_successCallback.clear();
    9085    m_errorCallback.clear();
    91     m_owner.clear();
    9286}
    9387
  • trunk/Source/WebCore/Modules/mediastream/RTCVoidRequestImpl.h

    r127608 r127612  
    2929 */
    3030
    31 #ifndef RTCSessionDescriptionCallback_h
    32 #define RTCSessionDescriptionCallback_h
     31#ifndef RTCVoidRequestImpl_h
     32#define RTCVoidRequestImpl_h
    3333
    3434#if ENABLE(MEDIA_STREAM)
    3535
    36 #include <wtf/RefCounted.h>
     36#include "ActiveDOMObject.h"
     37#include "RTCVoidRequest.h"
    3738
    3839namespace WebCore {
    3940
    40 class RTCPeerConnection;
    41 class RTCSessionDescription;
     41class RTCErrorCallback;
     42class VoidCallback;
    4243
    43 class RTCSessionDescriptionCallback : public RefCounted<RTCSessionDescriptionCallback> {
     44class RTCVoidRequestImpl : public RTCVoidRequest, public ActiveDOMObject {
    4445public:
    45     virtual ~RTCSessionDescriptionCallback() { }
    46     virtual bool handleEvent(RTCSessionDescription*, RTCPeerConnection*) = 0;
     46    static PassRefPtr<RTCVoidRequestImpl> create(ScriptExecutionContext*, PassRefPtr<VoidCallback>, PassRefPtr<RTCErrorCallback>);
     47    virtual ~RTCVoidRequestImpl();
     48
     49    virtual void requestSucceeded();
     50    virtual void requestFailed(const String& error);
     51
     52    // ActiveDOMObject
     53    virtual void stop() OVERRIDE;
     54
     55private:
     56    RTCVoidRequestImpl(ScriptExecutionContext*, PassRefPtr<VoidCallback>, PassRefPtr<RTCErrorCallback>);
     57
     58    void clear();
     59
     60    RefPtr<VoidCallback> m_successCallback;
     61    RefPtr<RTCErrorCallback> m_errorCallback;
    4762};
    4863
     
    5166#endif // ENABLE(MEDIA_STREAM)
    5267
    53 #endif // RTCSessionDescriptionCallback_h
     68#endif // RTCVoidRequestImpl_h
     69
     70
  • trunk/Source/WebCore/WebCore.gypi

    r127558 r127612  
    466466            'platform/mediastream/RTCSessionDescriptionDescriptor.h',
    467467            'platform/mediastream/RTCSessionDescriptionRequest.h',
     468            'platform/mediastream/RTCVoidRequest.h',
    468469            'platform/mediastream/SessionDescriptionDescriptor.cpp',
    469470            'platform/mediastream/SessionDescriptionDescriptor.h',
     
    16201621            'Modules/mediastream/RTCSessionDescriptionRequestImpl.cpp',
    16211622            'Modules/mediastream/RTCSessionDescriptionRequestImpl.h',
     1623            'Modules/mediastream/RTCVoidRequestImpl.cpp',
     1624            'Modules/mediastream/RTCVoidRequestImpl.h',
    16221625            'Modules/mediastream/SessionDescription.cpp',
    16231626            'Modules/mediastream/SessionDescription.h',
     
    83498352            'platform/chromium/support/WebRTCSessionDescriptionDescriptor.cpp',
    83508353            'platform/chromium/support/WebRTCSessionDescriptionRequest.cpp',
     8354            'platform/chromium/support/WebRTCVoidRequest.cpp',
    83518355            'platform/chromium/support/WebScrollbarThemeGeometryNative.cpp',
    83528356            'platform/chromium/support/WebScrollbarThemeGeometryNative.h',
  • trunk/Source/WebCore/platform/chromium/support/WebRTCVoidRequest.cpp

    r127608 r127612  
    2929 */
    3030
    31 #ifndef WebRTCPeerConnectionHandler_h
    32 #define WebRTCPeerConnectionHandler_h
     31#include "config.h"
     32
     33#if ENABLE(MEDIA_STREAM)
     34
     35#include <public/WebRTCVoidRequest.h>
     36
     37#include "RTCVoidRequest.h"
     38#include <wtf/PassOwnPtr.h>
     39
     40using namespace WebCore;
    3341
    3442namespace WebKit {
    35 class WebMediaConstraints;
    36 class WebMediaStreamDescriptor;
    37 class WebRTCConfiguration;
    38 class WebRTCICECandidateDescriptor;
    39 class WebRTCPeerConnectionHandlerClient;
    40 class WebRTCSessionDescriptionDescriptor;
    41 class WebRTCSessionDescriptionRequest;
    4243
    43 class WebRTCPeerConnectionHandler {
     44WebRTCVoidRequest::WebRTCVoidRequest(const PassRefPtr<RTCVoidRequest>& constraints)
     45    : m_private(constraints)
     46{
     47}
     48
     49void WebRTCVoidRequest::assign(const WebRTCVoidRequest& other)
     50{
     51    m_private = other.m_private;
     52}
     53
     54void WebRTCVoidRequest::reset()
     55{
     56    m_private.reset();
     57}
     58
     59void WebRTCVoidRequest::requestSucceeded() const
     60{
     61    ASSERT(m_private.get());
     62    m_private->requestSucceeded();
     63}
     64
     65void WebRTCVoidRequest::requestFailed(const WebString& error) const
     66{
     67    ASSERT(m_private.get());
     68    m_private->requestFailed(error);
     69}
     70
     71class ExtraDataContainer : public WebCore::RTCVoidRequest::ExtraData {
    4472public:
    45     virtual ~WebRTCPeerConnectionHandler() { }
     73    ExtraDataContainer(WebRTCVoidRequest::ExtraData* extraData) : m_extraData(WTF::adoptPtr(extraData)) { }
    4674
    47     virtual bool initialize(const WebRTCConfiguration&, const WebMediaConstraints&) = 0;
     75    WebRTCVoidRequest::ExtraData* extraData() { return m_extraData.get(); }
    4876
    49     virtual void createOffer(const WebRTCSessionDescriptionRequest&, const WebMediaConstraints&) = 0;
    50     virtual bool updateICE(const WebRTCConfiguration&, const WebMediaConstraints&) = 0;
    51     virtual bool addICECandidate(const WebRTCICECandidateDescriptor&) = 0;
    52     virtual bool addStream(const WebMediaStreamDescriptor&, const WebMediaConstraints&) = 0;
    53     virtual void removeStream(const WebMediaStreamDescriptor&) = 0;
    54     virtual void stop() = 0;
     77private:
     78    OwnPtr<WebRTCVoidRequest::ExtraData> m_extraData;
    5579};
     80
     81WebRTCVoidRequest::ExtraData* WebRTCVoidRequest::extraData() const
     82{
     83    RefPtr<RTCVoidRequest::ExtraData> data = m_private->extraData();
     84    if (!data)
     85        return 0;
     86    return static_cast<ExtraDataContainer*>(data.get())->extraData();
     87}
     88
     89void WebRTCVoidRequest::setExtraData(ExtraData* extraData)
     90{
     91    m_private->setExtraData(adoptRef(new ExtraDataContainer(extraData)));
     92}
    5693
    5794} // namespace WebKit
    5895
    59 #endif // WebRTCPeerConnectionHandler_h
     96#endif // ENABLE(MEDIA_STREAM)
     97
  • trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.cpp

    r127501 r127612  
    3636
    3737#include "RTCPeerConnectionHandlerClient.h"
     38#include "RTCSessionDescriptionDescriptor.h"
    3839#include <wtf/PassOwnPtr.h>
    3940
     
    5051
    5152    virtual void createOffer(PassRefPtr<RTCSessionDescriptionRequest>, PassRefPtr<MediaConstraints>) OVERRIDE;
     53    virtual void setLocalDescription(PassRefPtr<RTCVoidRequest>, PassRefPtr<RTCSessionDescriptionDescriptor>) OVERRIDE;
     54    virtual void setRemoteDescription(PassRefPtr<RTCVoidRequest>, PassRefPtr<RTCSessionDescriptionDescriptor>) OVERRIDE;
     55    virtual PassRefPtr<RTCSessionDescriptionDescriptor> localDescription() OVERRIDE;
     56    virtual PassRefPtr<RTCSessionDescriptionDescriptor> remoteDescription() OVERRIDE;
    5257    virtual bool updateIce(PassRefPtr<RTCConfiguration>, PassRefPtr<MediaConstraints>) OVERRIDE;
    5358    virtual bool addIceCandidate(PassRefPtr<RTCIceCandidateDescriptor>) OVERRIDE;
     
    8489}
    8590
     91void RTCPeerConnectionHandlerDummy::setLocalDescription(PassRefPtr<RTCVoidRequest>, PassRefPtr<RTCSessionDescriptionDescriptor>)
     92{
     93}
     94
     95void RTCPeerConnectionHandlerDummy::setRemoteDescription(PassRefPtr<RTCVoidRequest>, PassRefPtr<RTCSessionDescriptionDescriptor>)
     96{
     97}
     98
     99PassRefPtr<RTCSessionDescriptionDescriptor> RTCPeerConnectionHandlerDummy::localDescription()
     100{
     101    return 0;
     102}
     103
     104PassRefPtr<RTCSessionDescriptionDescriptor> RTCPeerConnectionHandlerDummy::remoteDescription()
     105{
     106    return 0;
     107}
     108
    86109bool RTCPeerConnectionHandlerDummy::addStream(PassRefPtr<MediaStreamDescriptor>, PassRefPtr<MediaConstraints>)
    87110{
  • trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.h

    r127501 r127612  
    4646class RTCSessionDescriptionDescriptor;
    4747class RTCSessionDescriptionRequest;
     48class RTCVoidRequest;
    4849
    4950class RTCPeerConnectionHandler {
     
    5556
    5657    virtual void createOffer(PassRefPtr<RTCSessionDescriptionRequest>, PassRefPtr<MediaConstraints>) = 0;
     58    virtual void setLocalDescription(PassRefPtr<RTCVoidRequest>, PassRefPtr<RTCSessionDescriptionDescriptor>) = 0;
     59    virtual void setRemoteDescription(PassRefPtr<RTCVoidRequest>, PassRefPtr<RTCSessionDescriptionDescriptor>) = 0;
     60    virtual PassRefPtr<RTCSessionDescriptionDescriptor> localDescription() = 0;
     61    virtual PassRefPtr<RTCSessionDescriptionDescriptor> remoteDescription() = 0;
    5762    virtual bool updateIce(PassRefPtr<RTCConfiguration>, PassRefPtr<MediaConstraints>) = 0;
    5863    virtual bool addIceCandidate(PassRefPtr<RTCIceCandidateDescriptor>) = 0;
  • trunk/Source/WebCore/platform/mediastream/RTCVoidRequest.h

    r127608 r127612  
    2929 */
    3030
    31 #ifndef RTCErrorCallback_h
    32 #define RTCErrorCallback_h
     31#ifndef RTCVoidRequest_h
     32#define RTCVoidRequest_h
    3333
    3434#if ENABLE(MEDIA_STREAM)
    3535
     36#include <wtf/PassRefPtr.h>
    3637#include <wtf/RefCounted.h>
     38#include <wtf/RefPtr.h>
    3739#include <wtf/text/WTFString.h>
    3840
    3941namespace WebCore {
    4042
    41 class RTCPeerConnection;
     43class RTCVoidRequest : public RefCounted<RTCVoidRequest> {
     44public:
     45    class ExtraData : public RefCounted<ExtraData> {
     46    public:
     47        virtual ~ExtraData() { }
     48    };
    4249
    43 class RTCErrorCallback : public RefCounted<RTCErrorCallback> {
    44 public:
    45     virtual ~RTCErrorCallback() { }
    46     virtual bool handleEvent(const String& errorInformation, RTCPeerConnection*) = 0;
     50    virtual ~RTCVoidRequest() { }
     51
     52    virtual void requestSucceeded() = 0;
     53    virtual void requestFailed(const String& error) = 0;
     54
     55    PassRefPtr<ExtraData> extraData() const { return m_extraData; }
     56    void setExtraData(PassRefPtr<ExtraData> extraData) { m_extraData = extraData; }
     57
     58protected:
     59    RTCVoidRequest() { }
     60
     61private:
     62    RefPtr<ExtraData> m_extraData;
    4763};
    4864
     
    5167#endif // ENABLE(MEDIA_STREAM)
    5268
    53 #endif // RTCErrorCallback_h
     69#endif // RTCVoidRequest_h
  • trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp

    r127501 r127612  
    4848#include <public/WebRTCSessionDescriptionDescriptor.h>
    4949#include <public/WebRTCSessionDescriptionRequest.h>
     50#include <public/WebRTCVoidRequest.h>
    5051#include <wtf/PassOwnPtr.h>
    5152
     
    8283}
    8384
     85void RTCPeerConnectionHandlerChromium::setLocalDescription(PassRefPtr<RTCVoidRequest> request, PassRefPtr<RTCSessionDescriptionDescriptor> sessionDescription)
     86{
     87    if (!m_webHandler)
     88        return;
     89
     90    m_webHandler->setLocalDescription(request, sessionDescription);
     91}
     92
     93void RTCPeerConnectionHandlerChromium::setRemoteDescription(PassRefPtr<RTCVoidRequest> request, PassRefPtr<RTCSessionDescriptionDescriptor> sessionDescription)
     94{
     95    if (!m_webHandler)
     96        return;
     97
     98    m_webHandler->setRemoteDescription(request, sessionDescription);
     99}
     100
    84101bool RTCPeerConnectionHandlerChromium::updateIce(PassRefPtr<RTCConfiguration> configuration, PassRefPtr<MediaConstraints> constraints)
    85102{
     
    96113
    97114    return m_webHandler->addICECandidate(iceCandidate);
     115}
     116
     117PassRefPtr<RTCSessionDescriptionDescriptor> RTCPeerConnectionHandlerChromium::localDescription()
     118{
     119    if (!m_webHandler)
     120        return 0;
     121
     122    return m_webHandler->localDescription();
     123}
     124
     125PassRefPtr<RTCSessionDescriptionDescriptor> RTCPeerConnectionHandlerChromium::remoteDescription()
     126{
     127    if (!m_webHandler)
     128        return 0;
     129
     130    return m_webHandler->remoteDescription();
    98131}
    99132
  • trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h

    r127501 r127612  
    5656
    5757    virtual void createOffer(PassRefPtr<RTCSessionDescriptionRequest>, PassRefPtr<MediaConstraints>) OVERRIDE;
     58    virtual void setLocalDescription(PassRefPtr<RTCVoidRequest>, PassRefPtr<RTCSessionDescriptionDescriptor>) OVERRIDE;
     59    virtual void setRemoteDescription(PassRefPtr<RTCVoidRequest>, PassRefPtr<RTCSessionDescriptionDescriptor>) OVERRIDE;
     60    virtual PassRefPtr<RTCSessionDescriptionDescriptor> localDescription() OVERRIDE;
     61    virtual PassRefPtr<RTCSessionDescriptionDescriptor> remoteDescription() OVERRIDE;
    5862    virtual bool updateIce(PassRefPtr<RTCConfiguration>, PassRefPtr<MediaConstraints>) OVERRIDE;
    5963    virtual bool addIceCandidate(PassRefPtr<RTCIceCandidateDescriptor>) OVERRIDE;
  • trunk/Tools/ChangeLog

    r127604 r127612  
     12012-09-05  Tommy Widenflycht  <tommyw@google.com>
     2
     3        MediaStream API: Add the local and remote description functionality to RTCPeerConnection
     4        https://bugs.webkit.org/show_bug.cgi?id=95839
     5
     6        Reviewed by Adam Barth.
     7
     8        In addition to adding the new methods to MockWebRTCPeerConnectionHandler I cleaned
     9        up the task definitions a bit. There was no need to have them in the header file.
     10
     11        * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
     12        (RTCSessionDescriptionRequestSuccededTask):
     13        (RTCSessionDescriptionRequestSuccededTask::RTCSessionDescriptionRequestSuccededTask):
     14        (RTCSessionDescriptionRequestFailedTask):
     15        (RTCSessionDescriptionRequestFailedTask::RTCSessionDescriptionRequestFailedTask):
     16        (RTCVoidRequestTask):
     17        (RTCVoidRequestTask::RTCVoidRequestTask):
     18        (MockWebRTCPeerConnectionHandler::createOffer):
     19        (MockWebRTCPeerConnectionHandler::setLocalDescription):
     20        (MockWebRTCPeerConnectionHandler::setRemoteDescription):
     21        (MockWebRTCPeerConnectionHandler::localDescription):
     22        (MockWebRTCPeerConnectionHandler::remoteDescription):
     23        * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
     24        (MockWebRTCPeerConnectionHandler):
     25
    1262012-09-05  Kangil Han  <kangil.han@samsung.com>
    227
  • trunk/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp

    r127501 r127612  
    3838#include <public/WebRTCSessionDescriptionDescriptor.h>
    3939#include <public/WebRTCSessionDescriptionRequest.h>
     40#include <public/WebRTCVoidRequest.h>
    4041#include <public/WebString.h>
    4142#include <public/WebVector.h>
     
    4344using namespace WebKit;
    4445
    45 MockWebRTCPeerConnectionHandler::SuccessCallbackTask::SuccessCallbackTask(MockWebRTCPeerConnectionHandler* object, const WebKit::WebRTCSessionDescriptionRequest& request, const WebRTCSessionDescriptionDescriptor& result)
    46     : MethodTask<MockWebRTCPeerConnectionHandler>(object)
    47     , m_request(request)
    48     , m_result(result)
    49 {
    50 }
    51 
    52 void MockWebRTCPeerConnectionHandler::SuccessCallbackTask::runIfValid()
    53 {
    54     m_request.requestSucceeded(m_result);
    55 }
    56 
    57 MockWebRTCPeerConnectionHandler::FailureCallbackTask::FailureCallbackTask(MockWebRTCPeerConnectionHandler* object, const WebKit::WebRTCSessionDescriptionRequest& request)
    58     : MethodTask<MockWebRTCPeerConnectionHandler>(object)
    59     , m_request(request)
    60 {
    61 }
    62 
    63 void MockWebRTCPeerConnectionHandler::FailureCallbackTask::runIfValid()
    64 {
    65     m_request.requestFailed("TEST_ERROR");
    66 }
     46class RTCSessionDescriptionRequestSuccededTask : public MethodTask<MockWebRTCPeerConnectionHandler> {
     47public:
     48    RTCSessionDescriptionRequestSuccededTask(MockWebRTCPeerConnectionHandler* object, const WebKit::WebRTCSessionDescriptionRequest& request, const WebKit::WebRTCSessionDescriptionDescriptor& result)
     49        : MethodTask<MockWebRTCPeerConnectionHandler>(object)
     50        , m_request(request)
     51        , m_result(result)
     52    {
     53    }
     54
     55    virtual void runIfValid() OVERRIDE
     56    {
     57        m_request.requestSucceeded(m_result);
     58    }
     59
     60private:
     61    WebKit::WebRTCSessionDescriptionRequest m_request;
     62    WebKit::WebRTCSessionDescriptionDescriptor m_result;
     63};
     64
     65class RTCSessionDescriptionRequestFailedTask : public MethodTask<MockWebRTCPeerConnectionHandler> {
     66public:
     67    RTCSessionDescriptionRequestFailedTask(MockWebRTCPeerConnectionHandler* object, const WebKit::WebRTCSessionDescriptionRequest& request)
     68        : MethodTask<MockWebRTCPeerConnectionHandler>(object)
     69        , m_request(request)
     70    {
     71    }
     72
     73    virtual void runIfValid() OVERRIDE
     74    {
     75        m_request.requestFailed("TEST_ERROR");
     76    }
     77
     78private:
     79    WebKit::WebRTCSessionDescriptionRequest m_request;
     80};
     81
     82class RTCVoidRequestTask : public MethodTask<MockWebRTCPeerConnectionHandler> {
     83public:
     84    RTCVoidRequestTask(MockWebRTCPeerConnectionHandler* object, const WebKit::WebRTCVoidRequest& request, bool succeeded)
     85        : MethodTask<MockWebRTCPeerConnectionHandler>(object)
     86        , m_request(request)
     87        , m_succeeded(succeeded)
     88    {
     89    }
     90
     91    virtual void runIfValid() OVERRIDE
     92    {
     93        if (m_succeeded)
     94            m_request.requestSucceeded();
     95        else
     96            m_request.requestFailed("TEST_ERROR");
     97    }
     98
     99private:
     100    WebKit::WebRTCVoidRequest m_request;
     101    bool m_succeeded;
     102};
     103
     104/////////////////////
    67105
    68106MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler(WebRTCPeerConnectionHandlerClient* client)
     
    118156        WebRTCSessionDescriptionDescriptor sessionDescription;
    119157        sessionDescription.initialize("offer", "Some SDP here");
    120         postTask(new SuccessCallbackTask(this, request, sessionDescription));
     158        postTask(new RTCSessionDescriptionRequestSuccededTask(this, request, sessionDescription));
    121159    } else
    122         postTask(new FailureCallbackTask(this, request));
     160        postTask(new RTCSessionDescriptionRequestFailedTask(this, request));
     161}
     162
     163void MockWebRTCPeerConnectionHandler::setLocalDescription(const WebRTCVoidRequest& request, const WebRTCSessionDescriptionDescriptor& localDescription)
     164{
     165    if (!localDescription.isNull() && localDescription.type() == "offer") {
     166        m_localDescription = localDescription;
     167        postTask(new RTCVoidRequestTask(this, request, true));
     168    } else
     169        postTask(new RTCVoidRequestTask(this, request, false));
     170}
     171
     172void MockWebRTCPeerConnectionHandler::setRemoteDescription(const WebRTCVoidRequest& request, const WebRTCSessionDescriptionDescriptor& remoteDescription)
     173{
     174    if (!remoteDescription.isNull() && remoteDescription.type() == "answer") {
     175        m_remoteDescription = remoteDescription;
     176        postTask(new RTCVoidRequestTask(this, request, true));
     177    } else
     178        postTask(new RTCVoidRequestTask(this, request, false));
     179}
     180
     181WebRTCSessionDescriptionDescriptor MockWebRTCPeerConnectionHandler::localDescription()
     182{
     183    return m_localDescription;
     184}
     185
     186WebRTCSessionDescriptionDescriptor MockWebRTCPeerConnectionHandler::remoteDescription()
     187{
     188    return m_remoteDescription;
    123189}
    124190
  • trunk/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h

    r127501 r127612  
    5050
    5151    virtual void createOffer(const WebKit::WebRTCSessionDescriptionRequest&, const WebKit::WebMediaConstraints&) OVERRIDE;
     52    virtual void setLocalDescription(const WebKit::WebRTCVoidRequest&, const WebKit::WebRTCSessionDescriptionDescriptor&) OVERRIDE;
     53    virtual void setRemoteDescription(const WebKit::WebRTCVoidRequest&, const WebKit::WebRTCSessionDescriptionDescriptor&) OVERRIDE;
     54    virtual WebKit::WebRTCSessionDescriptionDescriptor localDescription() OVERRIDE;
     55    virtual WebKit::WebRTCSessionDescriptionDescriptor remoteDescription() OVERRIDE;
    5256    virtual bool updateICE(const WebKit::WebRTCConfiguration&, const WebKit::WebMediaConstraints&) OVERRIDE;
    5357    virtual bool addICECandidate(const WebKit::WebRTCICECandidateDescriptor&) OVERRIDE;
     
    6367
    6468    WebKit::WebRTCPeerConnectionHandlerClient* m_client;
    65 
    6669    TaskList m_taskList;
    67 
    68     class SuccessCallbackTask : public MethodTask<MockWebRTCPeerConnectionHandler> {
    69     public:
    70         SuccessCallbackTask(MockWebRTCPeerConnectionHandler*, const WebKit::WebRTCSessionDescriptionRequest&, const WebKit::WebRTCSessionDescriptionDescriptor&);
    71         virtual void runIfValid() OVERRIDE;
    72 
    73     private:
    74         WebKit::WebRTCSessionDescriptionRequest m_request;
    75         WebKit::WebRTCSessionDescriptionDescriptor m_result;
    76     };
    77 
    78     class FailureCallbackTask : public MethodTask<MockWebRTCPeerConnectionHandler> {
    79     public:
    80         FailureCallbackTask(MockWebRTCPeerConnectionHandler*, const WebKit::WebRTCSessionDescriptionRequest&);
    81         virtual void runIfValid() OVERRIDE;
    82 
    83     private:
    84         WebKit::WebRTCSessionDescriptionRequest m_request;
    85     };
     70    WebKit::WebRTCSessionDescriptionDescriptor m_localDescription;
     71    WebKit::WebRTCSessionDescriptionDescriptor m_remoteDescription;
    8672};
    8773
Note: See TracChangeset for help on using the changeset viewer.