Changeset 129654 in webkit


Ignore:
Timestamp:
Sep 26, 2012 9:16:43 AM (12 years ago)
Author:
commit-queue@webkit.org
Message:

Implement the GetStats interface on PeerConnection
https://bugs.webkit.org/show_bug.cgi?id=95193

Source/Platform:

Patch by Harald Tveit Alvestrand <harald@alvestrand.no> on 2012-09-26
Reviewed by Adam Barth.

  • chromium/public/WebRTCPeerConnectionHandler.h:

(WebKit):
(WebRTCPeerConnectionHandler):
(WebKit::WebRTCPeerConnectionHandler::getStats):

  • chromium/public/WebRTCStatsRequest.h: added.

(WebCore):
(WebKit):
(WebRTCStatsRequest):
(WebKit::WebRTCStatsRequest::WebRTCStatsRequest):
(WebKit::WebRTCStatsRequest::~WebRTCStatsRequest):
(WebKit::WebRTCStatsRequest::operator=):

Source/WebCore:

Specification:
http://dev.w3.org/2011/webrtc/editor/webrtc-20120920.html

Patch by Harald Tveit Alvestrand <harald@alvestrand.no> on 2012-09-26
Reviewed by Adam Barth.

The implementation consists of a pure virtual platform object
(RTCStatsRequest) that is implemented in WebCore, and stores
its information in a straightforward data hierarchy.
This patch adds the call path and the storage structures.
It does not add filling in data.

Test: fast/mediastream/RTCPeerConnection-stats.html

  • CMakeLists.txt:
  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::getStats):
(WebCore):

  • Modules/mediastream/RTCPeerConnection.h:

(WebCore):
(RTCPeerConnection):

  • Modules/mediastream/RTCPeerConnection.idl:
  • Modules/mediastream/RTCStatsCallback.h: Added.

(WebCore):
(RTCStatsCallback):
(WebCore::RTCStatsCallback::~RTCStatsCallback):

  • Modules/mediastream/RTCStatsCallback.idl: Added.
  • Modules/mediastream/RTCStatsElement.cpp: Added.

(WebCore):
(WebCore::RTCStatsElement::create):
(WebCore::RTCStatsElement::RTCStatsElement):
(WebCore::RTCStatsElement::stat):

  • Modules/mediastream/RTCStatsElement.h: Added.

(WebCore):
(RTCStatsElement):

  • Modules/mediastream/RTCStatsElement.idl: Added.
  • Modules/mediastream/RTCStatsReport.cpp: Added.

(WebCore):
(WebCore::RTCStatsReport::create):
(WebCore::RTCStatsReport::RTCStatsReport):

  • Modules/mediastream/RTCStatsReport.h: Added.

(WebCore):
(RTCStatsReport):
(WebCore::RTCStatsReport::local):
(WebCore::RTCStatsReport::remote):

  • Modules/mediastream/RTCStatsReport.idl: Added.
  • Modules/mediastream/RTCStatsRequestImpl.cpp: Added.

(WebCore):
(WebCore::RTCStatsRequestImpl::create):
(WebCore::RTCStatsRequestImpl::RTCStatsRequestImpl):
(WebCore::RTCStatsRequestImpl::~RTCStatsRequestImpl):
(WebCore::RTCStatsRequestImpl::requestSucceeded):
(WebCore::RTCStatsRequestImpl::stop):
(WebCore::RTCStatsRequestImpl::clear):

  • Modules/mediastream/RTCStatsRequestImpl.h: Added.

(WebCore):
(RTCStatsRequestImpl):

  • Modules/mediastream/RTCStatsResponse.cpp: Added.

(WebCore):
(WebCore::RTCStatsResponse::create):
(WebCore::RTCStatsResponse::RTCStatsResponse):

  • Modules/mediastream/RTCStatsResponse.h: Added.

(WebCore):
(RTCStatsResponse):
(WebCore::RTCStatsResponse::result):

  • Modules/mediastream/RTCStatsResponse.idl: Added.
  • WebCore.gypi:
  • platform/chromium/support/WebRTCStatsRequest.cpp: Copied from Source/Platform/chromium/public/WebRTCPeerConnectionHandler.h.

(WebKit):
(WebKit::WebRTCStatsRequest::WebRTCStatsRequest):
(WebKit::WebRTCStatsRequest::assign):
(WebKit::WebRTCStatsRequest::reset):
(WebKit::WebRTCStatsRequest::requestSucceeded):

  • platform/mediastream/RTCPeerConnectionHandler.h:

(WebCore):
(RTCPeerConnectionHandler):

  • platform/mediastream/RTCStatsRequest.h: Copied from Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.h.

(WebCore):
(RTCStatsRequest):
(WebCore::RTCStatsRequest::~RTCStatsRequest):
(WebCore::RTCStatsRequest::RTCStatsRequest):

  • platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp:

(WebCore::RTCPeerConnectionHandlerChromium::getStats):
(WebCore):

  • platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h:

(RTCPeerConnectionHandlerChromium):

Tools:

Patch by Harald Tveit Alvestrand <harald@alvestrand.no> on 2012-09-26
Reviewed by Adam Barth.

  • DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:

(RTCStatsRequestSucceededTask):
(RTCStatsRequestSucceededTask::RTCStatsRequestSucceededTask):
(MockWebRTCPeerConnectionHandler::getStats):

  • DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:

(MockWebRTCPeerConnectionHandler):

LayoutTests:

Patch by Harald Tveit Alvestrand <harald@alvestrand.no> on 2012-09-26
Reviewed by Adam Barth.

  • fast/mediastream/RTCPeerConnection-stats-expected.txt: Added.
  • fast/mediastream/RTCPeerConnection-stats.html: Added.
Location:
trunk
Files:
16 added
17 edited
2 copied

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r129653 r129654  
     12012-09-26  Harald Tveit Alvestrand  <harald@alvestrand.no>
     2       
     3        Implement the GetStats interface on PeerConnection
     4        https://bugs.webkit.org/show_bug.cgi?id=95193
     5
     6        Reviewed by Adam Barth.
     7
     8        * fast/mediastream/RTCPeerConnection-stats-expected.txt: Added.
     9        * fast/mediastream/RTCPeerConnection-stats.html: Added.
     10
    1112012-09-26  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
    212
  • trunk/Source/Platform/ChangeLog

    r129532 r129654  
     12012-09-26  Harald Tveit Alvestrand  <harald@alvestrand.no>
     2
     3        Implement the GetStats interface on PeerConnection
     4        https://bugs.webkit.org/show_bug.cgi?id=95193
     5
     6        Reviewed by Adam Barth.
     7
     8        * chromium/public/WebRTCPeerConnectionHandler.h:
     9        (WebKit):
     10        (WebRTCPeerConnectionHandler):
     11        (WebKit::WebRTCPeerConnectionHandler::getStats):
     12        * chromium/public/WebRTCStatsRequest.h: added.
     13        (WebCore):
     14        (WebKit):
     15        (WebRTCStatsRequest):
     16        (WebKit::WebRTCStatsRequest::WebRTCStatsRequest):
     17        (WebKit::WebRTCStatsRequest::~WebRTCStatsRequest):
     18        (WebKit::WebRTCStatsRequest::operator=):
     19
    1202012-09-25  Sheriff Bot  <webkit.review.bot@gmail.com>
    221
  • trunk/Source/Platform/chromium/public/WebRTCPeerConnectionHandler.h

    r128064 r129654  
    4040class WebRTCSessionDescription;
    4141class WebRTCSessionDescriptionRequest;
     42class WebRTCStatsRequest;
    4243class WebRTCVoidRequest;
    4344
     
    5859    virtual bool addStream(const WebMediaStreamDescriptor&, const WebMediaConstraints&) = 0;
    5960    virtual void removeStream(const WebMediaStreamDescriptor&) = 0;
     61    // FIXME: Remove default implementation when clients have changed.
     62    virtual void getStats(const WebRTCStatsRequest&) { }
    6063    virtual void stop() = 0;
    6164};
  • trunk/Source/Platform/chromium/public/WebRTCStatsRequest.h

    r129653 r129654  
    2929 */
    3030
    31 #ifndef WebRTCPeerConnectionHandler_h
    32 #define WebRTCPeerConnectionHandler_h
     31#ifndef WebRTCStatsRequest_h
     32#define WebRTCStatsRequest_h
     33
     34#include "WebCommon.h"
     35#include "WebPrivatePtr.h"
     36#include "WebString.h"
     37
     38namespace WebCore {
     39class RTCStatsRequest;
     40}
    3341
    3442namespace WebKit {
    35 class WebMediaConstraints;
    36 class WebMediaStreamDescriptor;
    37 class WebRTCConfiguration;
    38 class WebRTCICECandidate;
    39 class WebRTCPeerConnectionHandlerClient;
    40 class WebRTCSessionDescription;
    41 class WebRTCSessionDescriptionRequest;
    42 class WebRTCVoidRequest;
    4343
    44 class WebRTCPeerConnectionHandler {
     44class WebRTCStatsRequest {
    4545public:
    46     virtual ~WebRTCPeerConnectionHandler() { }
     46    WebRTCStatsRequest() { }
     47    WebRTCStatsRequest(const WebRTCStatsRequest& other) { assign(other); }
     48    ~WebRTCStatsRequest() { reset(); }
    4749
    48     virtual bool initialize(const WebRTCConfiguration&, const WebMediaConstraints&) = 0;
     50    WebRTCStatsRequest& operator=(const WebRTCStatsRequest& other)
     51    {
     52        assign(other);
     53        return *this;
     54    }
    4955
    50     virtual void createOffer(const WebRTCSessionDescriptionRequest&, const WebMediaConstraints&) = 0;
    51     virtual void createAnswer(const WebRTCSessionDescriptionRequest&, const WebMediaConstraints&) = 0;
    52     virtual void setLocalDescription(const WebRTCVoidRequest&, const WebRTCSessionDescription&) = 0;
    53     virtual void setRemoteDescription(const WebRTCVoidRequest&, const WebRTCSessionDescription&) = 0;
    54     virtual WebRTCSessionDescription localDescription() = 0;
    55     virtual WebRTCSessionDescription remoteDescription() = 0;
    56     virtual bool updateICE(const WebRTCConfiguration&, const WebMediaConstraints&) = 0;
    57     virtual bool addICECandidate(const WebRTCICECandidate&) = 0;
    58     virtual bool addStream(const WebMediaStreamDescriptor&, const WebMediaConstraints&) = 0;
    59     virtual void removeStream(const WebMediaStreamDescriptor&) = 0;
    60     virtual void stop() = 0;
     56    WEBKIT_EXPORT void assign(const WebRTCStatsRequest&);
     57
     58    WEBKIT_EXPORT void reset();
     59
     60    WEBKIT_EXPORT void requestSucceeded() const;
     61
     62#if WEBKIT_IMPLEMENTATION
     63    WebRTCStatsRequest(const WTF::PassRefPtr<WebCore::RTCStatsRequest>&);
     64#endif
     65
     66private:
     67    WebPrivatePtr<WebCore::RTCStatsRequest> m_private;
    6168};
    6269
    6370} // namespace WebKit
    6471
    65 #endif // WebRTCPeerConnectionHandler_h
     72#endif // WebRTCStatsRequest_h
  • trunk/Source/WebCore/CMakeLists.txt

    r129423 r129654  
    229229    Modules/mediastream/RTCSessionDescription.idl
    230230    Modules/mediastream/RTCSessionDescriptionCallback.idl
     231    Modules/mediastream/RTCStatsCallback.idl
     232    Modules/mediastream/RTCStatsElement.idl
     233    Modules/mediastream/RTCStatsReport.idl
     234    Modules/mediastream/RTCStatsResponse.idl
    231235    Modules/mediastream/SessionDescription.idl
    232236
     
    862866    Modules/mediastream/RTCSessionDescription.cpp
    863867    Modules/mediastream/RTCSessionDescriptionRequestImpl.cpp
     868    Modules/mediastream/RTCStatsElement.cpp
     869    Modules/mediastream/RTCStatsReport.cpp
     870    Modules/mediastream/RTCStatsRequestImpl.cpp
     871    Modules/mediastream/RTCStatsResponse.cpp
    864872    Modules/mediastream/RTCVoidRequestImpl.cpp
    865873    Modules/mediastream/SessionDescription.cpp
  • trunk/Source/WebCore/ChangeLog

    r129653 r129654  
     12012-09-26  Harald Tveit Alvestrand  <harald@alvestrand.no>
     2       
     3        Implement the GetStats interface on PeerConnection
     4        https://bugs.webkit.org/show_bug.cgi?id=95193
     5
     6        Specification:
     7        http://dev.w3.org/2011/webrtc/editor/webrtc-20120920.html
     8
     9        Reviewed by Adam Barth.
     10
     11        The implementation consists of a pure virtual platform object
     12        (RTCStatsRequest) that is implemented in WebCore, and stores
     13        its information in a straightforward data hierarchy.
     14        This patch adds the call path and the storage structures.
     15        It does not add filling in data.
     16
     17        Test: fast/mediastream/RTCPeerConnection-stats.html
     18
     19        * CMakeLists.txt:
     20        * Modules/mediastream/RTCPeerConnection.cpp:
     21        (WebCore::RTCPeerConnection::getStats):
     22        (WebCore):
     23        * Modules/mediastream/RTCPeerConnection.h:
     24        (WebCore):
     25        (RTCPeerConnection):
     26        * Modules/mediastream/RTCPeerConnection.idl:
     27        * Modules/mediastream/RTCStatsCallback.h: Added.
     28        (WebCore):
     29        (RTCStatsCallback):
     30        (WebCore::RTCStatsCallback::~RTCStatsCallback):
     31        * Modules/mediastream/RTCStatsCallback.idl: Added.
     32        * Modules/mediastream/RTCStatsElement.cpp: Added.
     33        (WebCore):
     34        (WebCore::RTCStatsElement::create):
     35        (WebCore::RTCStatsElement::RTCStatsElement):
     36        (WebCore::RTCStatsElement::stat):
     37        * Modules/mediastream/RTCStatsElement.h: Added.
     38        (WebCore):
     39        (RTCStatsElement):
     40        * Modules/mediastream/RTCStatsElement.idl: Added.
     41        * Modules/mediastream/RTCStatsReport.cpp: Added.
     42        (WebCore):
     43        (WebCore::RTCStatsReport::create):
     44        (WebCore::RTCStatsReport::RTCStatsReport):
     45        * Modules/mediastream/RTCStatsReport.h: Added.
     46        (WebCore):
     47        (RTCStatsReport):
     48        (WebCore::RTCStatsReport::local):
     49        (WebCore::RTCStatsReport::remote):
     50        * Modules/mediastream/RTCStatsReport.idl: Added.
     51        * Modules/mediastream/RTCStatsRequestImpl.cpp: Added.
     52        (WebCore):
     53        (WebCore::RTCStatsRequestImpl::create):
     54        (WebCore::RTCStatsRequestImpl::RTCStatsRequestImpl):
     55        (WebCore::RTCStatsRequestImpl::~RTCStatsRequestImpl):
     56        (WebCore::RTCStatsRequestImpl::requestSucceeded):
     57        (WebCore::RTCStatsRequestImpl::stop):
     58        (WebCore::RTCStatsRequestImpl::clear):
     59        * Modules/mediastream/RTCStatsRequestImpl.h: Added.
     60        (WebCore):
     61        (RTCStatsRequestImpl):
     62        * Modules/mediastream/RTCStatsResponse.cpp: Added.
     63        (WebCore):
     64        (WebCore::RTCStatsResponse::create):
     65        (WebCore::RTCStatsResponse::RTCStatsResponse):
     66        * Modules/mediastream/RTCStatsResponse.h: Added.
     67        (WebCore):
     68        (RTCStatsResponse):
     69        (WebCore::RTCStatsResponse::result):
     70        * Modules/mediastream/RTCStatsResponse.idl: Added.
     71        * WebCore.gypi:
     72        * platform/chromium/support/WebRTCStatsRequest.cpp: Copied from Source/Platform/chromium/public/WebRTCPeerConnectionHandler.h.
     73        (WebKit):
     74        (WebKit::WebRTCStatsRequest::WebRTCStatsRequest):
     75        (WebKit::WebRTCStatsRequest::assign):
     76        (WebKit::WebRTCStatsRequest::reset):
     77        (WebKit::WebRTCStatsRequest::requestSucceeded):
     78        * platform/mediastream/RTCPeerConnectionHandler.h:
     79        (WebCore):
     80        (RTCPeerConnectionHandler):
     81        * platform/mediastream/RTCStatsRequest.h: Copied from Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.h.
     82        (WebCore):
     83        (RTCStatsRequest):
     84        (WebCore::RTCStatsRequest::~RTCStatsRequest):
     85        (WebCore::RTCStatsRequest::RTCStatsRequest):
     86        * platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp:
     87        (WebCore::RTCPeerConnectionHandlerChromium::getStats):
     88        (WebCore):
     89        * platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h:
     90        (RTCPeerConnectionHandlerChromium):
     91
    1922012-09-26  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
    293
  • trunk/Source/WebCore/GNUmakefile.list.am

    r129545 r129654  
    640640        DerivedSources/WebCore/JSRTCSessionDescriptionCallback.cpp \
    641641        DerivedSources/WebCore/JSRTCSessionDescriptionCallback.h \
     642        DerivedSources/WebCore/JSRTCStatsCallback.cpp \
     643        DerivedSources/WebCore/JSRTCStatsCallback.h \
     644        DerivedSources/WebCore/JSRTCStatsElement.cpp \
     645        DerivedSources/WebCore/JSRTCStatsElement.h \
     646        DerivedSources/WebCore/JSRTCStatsReport.cpp \
     647        DerivedSources/WebCore/JSRTCStatsReport.h \
     648        DerivedSources/WebCore/JSRTCStatsResponse.cpp \
     649        DerivedSources/WebCore/JSRTCStatsResponse.h \
    642650        DerivedSources/WebCore/JSScreen.cpp \
    643651        DerivedSources/WebCore/JSScreen.h \
     
    12371245        $(WebCore)/Modules/mediastream/RTCSessionDescription.idl \
    12381246        $(WebCore)/Modules/mediastream/RTCSessionDescriptionCallback.idl \
     1247        $(WebCore)/Modules/mediastream/RTCStatsCallback.idl \
     1248        $(WebCore)/Modules/mediastream/RTCStatsElement.idl \
     1249        $(WebCore)/Modules/mediastream/RTCStatsReport.idl \
     1250        $(WebCore)/Modules/mediastream/RTCStatsResponse.idl \
    12391251        $(WebCore)/Modules/mediastream/SessionDescription.idl \
    12401252        $(WebCore)/Modules/navigatorcontentutils/NavigatorContentUtils.idl \
  • trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp

    r129397 r129654  
    4949#include "RTCSessionDescriptionDescriptor.h"
    5050#include "RTCSessionDescriptionRequestImpl.h"
     51#include "RTCStatsCallback.h"
     52#include "RTCStatsRequestImpl.h"
    5153#include "RTCVoidRequestImpl.h"
    5254#include "ScriptExecutionContext.h"
     
    380382}
    381383
     384void RTCPeerConnection::getStats(PassRefPtr<RTCStatsCallback> successCallback, PassRefPtr<MediaStreamTrack> selector)
     385{
     386    RefPtr<RTCStatsRequestImpl> statsRequest = RTCStatsRequestImpl::create(scriptExecutionContext(), successCallback);
     387    // FIXME: Add passing selector as part of the statsRequest.
     388    m_peerHandler->getStats(statsRequest.release());
     389}
     390
    382391void RTCPeerConnection::close(ExceptionCode& ec)
    383392{
  • trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h

    r129397 r129654  
    4848
    4949class MediaConstraints;
     50class MediaStreamTrack;
    5051class RTCConfiguration;
    5152class RTCErrorCallback;
    5253class RTCSessionDescription;
    5354class RTCSessionDescriptionCallback;
     55class RTCStatsCallback;
    5456class VoidCallback;
    5557
     
    8486
    8587    void removeStream(MediaStream*, ExceptionCode&);
     88
     89    void getStats(PassRefPtr<RTCStatsCallback> successCallback, PassRefPtr<MediaStreamTrack> selector);
    8690
    8791    void close(ExceptionCode&);
  • trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl

    r129397 r129654  
    7373            raises(DOMException);
    7474
     75        void getStats(in [Callback] RTCStatsCallback successCallback, in [Optional=DefaultIsUndefined] MediaStreamTrack selector);
     76
    7577        void close()
    7678            raises(DOMException);
  • trunk/Source/WebCore/WebCore.gypi

    r129545 r129654  
    466466            'platform/mediastream/RTCSessionDescriptionDescriptor.h',
    467467            'platform/mediastream/RTCSessionDescriptionRequest.h',
     468            'platform/mediastream/RTCStatsRequest.h',
    468469            'platform/mediastream/RTCVoidRequest.h',
    469470            'platform/mediastream/SessionDescriptionDescriptor.cpp',
     
    874875            'Modules/mediastream/RTCSessionDescription.idl',
    875876            'Modules/mediastream/RTCSessionDescriptionCallback.idl',
     877            'Modules/mediastream/RTCStatsCallback.idl',
     878            'Modules/mediastream/RTCStatsElement.idl',
     879            'Modules/mediastream/RTCStatsReport.idl',
     880            'Modules/mediastream/RTCStatsResponse.idl',
    876881            'Modules/mediastream/SessionDescription.idl',
    877882            'Modules/navigatorcontentutils/NavigatorContentUtils.idl',
     
    16221627            'Modules/mediastream/RTCSessionDescriptionRequestImpl.cpp',
    16231628            'Modules/mediastream/RTCSessionDescriptionRequestImpl.h',
     1629            'Modules/mediastream/RTCStatsElement.cpp',
     1630            'Modules/mediastream/RTCStatsElement.h',
     1631            'Modules/mediastream/RTCStatsReport.cpp',
     1632            'Modules/mediastream/RTCStatsReport.h',
     1633            'Modules/mediastream/RTCStatsRequestImpl.cpp',
     1634            'Modules/mediastream/RTCStatsRequestImpl.h',
     1635            'Modules/mediastream/RTCStatsResponse.cpp',
     1636            'Modules/mediastream/RTCStatsResponse.h',
    16241637            'Modules/mediastream/RTCVoidRequestImpl.cpp',
    16251638            'Modules/mediastream/RTCVoidRequestImpl.h',
     
    83888401            'platform/chromium/support/WebRTCSessionDescription.cpp',
    83898402            'platform/chromium/support/WebRTCSessionDescriptionRequest.cpp',
     8403            'platform/chromium/support/WebRTCStatsRequest.cpp',
    83908404            'platform/chromium/support/WebRTCVoidRequest.cpp',
    83918405            'platform/chromium/support/WebScrollbarThemeGeometryNative.cpp',
  • trunk/Source/WebCore/platform/chromium/support/WebRTCStatsRequest.cpp

    r129653 r129654  
    2929 */
    3030
    31 #ifndef WebRTCPeerConnectionHandler_h
    32 #define WebRTCPeerConnectionHandler_h
     31#include "config.h"
     32
     33#if ENABLE(MEDIA_STREAM)
     34
     35#include <public/WebRTCStatsRequest.h>
     36
     37#include "RTCStatsRequest.h"
     38#include <wtf/PassOwnPtr.h>
     39
     40using namespace WebCore;
    3341
    3442namespace WebKit {
    35 class WebMediaConstraints;
    36 class WebMediaStreamDescriptor;
    37 class WebRTCConfiguration;
    38 class WebRTCICECandidate;
    39 class WebRTCPeerConnectionHandlerClient;
    40 class WebRTCSessionDescription;
    41 class WebRTCSessionDescriptionRequest;
    42 class WebRTCVoidRequest;
    4343
    44 class WebRTCPeerConnectionHandler {
    45 public:
    46     virtual ~WebRTCPeerConnectionHandler() { }
     44WebRTCStatsRequest::WebRTCStatsRequest(const PassRefPtr<RTCStatsRequest>& request)
     45    : m_private(request)
     46{
     47}
    4748
    48     virtual bool initialize(const WebRTCConfiguration&, const WebMediaConstraints&) = 0;
     49void WebRTCStatsRequest::assign(const WebRTCStatsRequest& other)
     50{
     51    m_private = other.m_private;
     52}
    4953
    50     virtual void createOffer(const WebRTCSessionDescriptionRequest&, const WebMediaConstraints&) = 0;
    51     virtual void createAnswer(const WebRTCSessionDescriptionRequest&, const WebMediaConstraints&) = 0;
    52     virtual void setLocalDescription(const WebRTCVoidRequest&, const WebRTCSessionDescription&) = 0;
    53     virtual void setRemoteDescription(const WebRTCVoidRequest&, const WebRTCSessionDescription&) = 0;
    54     virtual WebRTCSessionDescription localDescription() = 0;
    55     virtual WebRTCSessionDescription remoteDescription() = 0;
    56     virtual bool updateICE(const WebRTCConfiguration&, const WebMediaConstraints&) = 0;
    57     virtual bool addICECandidate(const WebRTCICECandidate&) = 0;
    58     virtual bool addStream(const WebMediaStreamDescriptor&, const WebMediaConstraints&) = 0;
    59     virtual void removeStream(const WebMediaStreamDescriptor&) = 0;
    60     virtual void stop() = 0;
    61 };
     54void WebRTCStatsRequest::reset()
     55{
     56    m_private.reset();
     57}
     58
     59void WebRTCStatsRequest::requestSucceeded() const
     60{
     61    m_private->requestSucceeded();
     62}
    6263
    6364} // namespace WebKit
    6465
    65 #endif // WebRTCPeerConnectionHandler_h
     66#endif // ENABLE(MEDIA_STREAM)
     67
  • trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.cpp

    r127906 r129654  
    6060    virtual bool addStream(PassRefPtr<MediaStreamDescriptor>, PassRefPtr<MediaConstraints>) OVERRIDE;
    6161    virtual void removeStream(PassRefPtr<MediaStreamDescriptor>) OVERRIDE;
     62    virtual void getStats(PassRefPtr<RTCStatsRequest>) OVERRIDE;
    6263    virtual void stop() OVERRIDE;
    6364
     
    131132}
    132133
     134void RTCPeerConnectionHandlerDummy::getStats(PassRefPtr<RTCStatsRequest>)
     135{
     136}
     137
    133138void RTCPeerConnectionHandlerDummy::stop()
    134139{
  • trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.h

    r127906 r129654  
    4646class RTCSessionDescriptionDescriptor;
    4747class RTCSessionDescriptionRequest;
     48class RTCStatsRequest;
    4849class RTCVoidRequest;
    4950
     
    6566    virtual bool addStream(PassRefPtr<MediaStreamDescriptor>, PassRefPtr<MediaConstraints>) = 0;
    6667    virtual void removeStream(PassRefPtr<MediaStreamDescriptor>) = 0;
     68    virtual void getStats(PassRefPtr<RTCStatsRequest>) = 0;
    6769    virtual void stop() = 0;
    6870
  • trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp

    r128166 r129654  
    4949#include <public/WebRTCSessionDescription.h>
    5050#include <public/WebRTCSessionDescriptionRequest.h>
     51#include <public/WebRTCStatsRequest.h>
    5152#include <public/WebRTCVoidRequest.h>
    5253#include <wtf/PassOwnPtr.h>
     
    157158}
    158159
     160void RTCPeerConnectionHandlerChromium::getStats(PassRefPtr<RTCStatsRequest> request)
     161{
     162    if (!m_webHandler)
     163        return;
     164
     165    m_webHandler->getStats(request);
     166}
     167
    159168void RTCPeerConnectionHandlerChromium::stop()
    160169{
  • trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h

    r128166 r129654  
    6565    virtual bool addStream(PassRefPtr<MediaStreamDescriptor>, PassRefPtr<MediaConstraints>) OVERRIDE;
    6666    virtual void removeStream(PassRefPtr<MediaStreamDescriptor>) OVERRIDE;
     67    virtual void getStats(PassRefPtr<RTCStatsRequest>) OVERRIDE;
    6768    virtual void stop() OVERRIDE;
    6869
  • trunk/Tools/ChangeLog

    r129653 r129654  
     12012-09-26  Harald Tveit Alvestrand  <harald@alvestrand.no>
     2
     3        Implement the GetStats interface on PeerConnection
     4        https://bugs.webkit.org/show_bug.cgi?id=95193
     5
     6        Reviewed by Adam Barth.
     7
     8        * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
     9        (RTCStatsRequestSucceededTask):
     10        (RTCStatsRequestSucceededTask::RTCStatsRequestSucceededTask):
     11        (MockWebRTCPeerConnectionHandler::getStats):
     12        * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
     13        (MockWebRTCPeerConnectionHandler):
     14
    1152012-09-26  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
    216
  • trunk/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp

    r129532 r129654  
    3838#include <public/WebRTCSessionDescription.h>
    3939#include <public/WebRTCSessionDescriptionRequest.h>
     40#include <public/WebRTCStatsRequest.h>
    4041#include <public/WebRTCVoidRequest.h>
    4142#include <public/WebString.h>
     
    7879private:
    7980    WebKit::WebRTCSessionDescriptionRequest m_request;
     81};
     82
     83class RTCStatsRequestSucceededTask : public MethodTask<MockWebRTCPeerConnectionHandler> {
     84public:
     85    RTCStatsRequestSucceededTask(MockWebRTCPeerConnectionHandler* object, const WebKit::WebRTCStatsRequest& request)
     86        : MethodTask<MockWebRTCPeerConnectionHandler>(object)
     87        , m_request(request)
     88    {
     89    }
     90
     91    virtual void runIfValid() OVERRIDE
     92    {
     93        m_request.requestSucceeded();
     94    }
     95
     96private:
     97    WebKit::WebRTCStatsRequest m_request;
    8098};
    8199
     
    224242}
    225243
     244void MockWebRTCPeerConnectionHandler::getStats(const WebRTCStatsRequest& request)
     245{
     246    postTask(new RTCStatsRequestSucceededTask(this, request));
     247}
     248
     249
    226250void MockWebRTCPeerConnectionHandler::stop()
    227251{
  • trunk/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h

    r128064 r129654  
    3838#include <public/WebRTCSessionDescription.h>
    3939#include <public/WebRTCSessionDescriptionRequest.h>
     40#include <public/WebRTCStatsRequest.h>
    4041
    4142namespace WebKit {
     
    5960    virtual bool addStream(const WebKit::WebMediaStreamDescriptor&, const WebKit::WebMediaConstraints&) OVERRIDE;
    6061    virtual void removeStream(const WebKit::WebMediaStreamDescriptor&) OVERRIDE;
     62    virtual void getStats(const WebKit::WebRTCStatsRequest&) OVERRIDE;
    6163    virtual void stop() OVERRIDE;
    6264
Note: See TracChangeset for help on using the changeset viewer.