Source/Platform: Change PeerConnection getStats function to single value local /...
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 9 Oct 2012 15:56:07 +0000 (15:56 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 9 Oct 2012 15:56:07 +0000 (15:56 +0000)
elements in RTCStatsReport.
https://bugs.webkit.org/show_bug.cgi?id=98753

Patch by Harald Alvestrand <hta@google.com> on 2012-10-09
Reviewed by Adam Barth.

* chromium/public/WebRTCStatsResponse.h:
(WebRTCStatsResponse):

Source/WebCore: Change PeerConnection getStats function to single value local / remote
elements in RTCStatsReport.

https://bugs.webkit.org/show_bug.cgi?id=98753

Patch by Harald Alvestrand <hta@google.com> on 2012-10-09
Reviewed by Adam Barth.

IDL of RTCStatsReport has been changed to make local/remote
single valued RTCStatsElement attributes.
The RTCStatsReport argument to index the list of RTCStatsElement
in the local and remote functions has been removed.

Tested by modifications to RTCPeerConnection-stats.html

* Modules/mediastream/RTCStatsReport.cpp:
(WebCore::RTCStatsReport::addElement):
(WebCore::RTCStatsReport::addStatistic):
* Modules/mediastream/RTCStatsReport.h:
(WebCore::RTCStatsReport::local):
(WebCore::RTCStatsReport::remote):
(RTCStatsReport):
* Modules/mediastream/RTCStatsReport.idl:
* Modules/mediastream/RTCStatsResponse.cpp:
(WebCore::RTCStatsResponse::addElement):
(WebCore::RTCStatsResponse::addStatistic):
* Modules/mediastream/RTCStatsResponse.h:
(RTCStatsResponse):
* platform/chromium/support/WebRTCStatsResponse.cpp:
(WebKit::WebRTCStatsResponse::addElement):
(WebKit::WebRTCStatsResponse::addStatistic):
* platform/mediastream/RTCStatsResponseBase.h:
(RTCStatsResponseBase):

Tools: Change PeerConnection getStats function to single value local / remote
elements in RTCStatsReport.
https://bugs.webkit.org/show_bug.cgi?id=98753

Patch by Harald Alvestrand <hta@google.com> on 2012-10-09
Reviewed by Adam Barth.

* DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
(MockWebRTCPeerConnectionHandler::getStats):

LayoutTests: Change PeerConnection getStats function to single value local / remote
elements in RTCStatsReport.
https://bugs.webkit.org/show_bug.cgi?id=98753

Patch by Harald Alvestrand <hta@google.com> on 2012-10-09
Reviewed by Adam Barth.

* fast/mediastream/RTCPeerConnection-stats-expected.txt:
* fast/mediastream/RTCPeerConnection-stats.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@130768 268f45cc-cd09-0410-ab3c-d52691b4dbfc

15 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/mediastream/RTCPeerConnection-stats-expected.txt
LayoutTests/fast/mediastream/RTCPeerConnection-stats.html
Source/Platform/ChangeLog
Source/Platform/chromium/public/WebRTCStatsResponse.h
Source/WebCore/ChangeLog
Source/WebCore/Modules/mediastream/RTCStatsReport.cpp
Source/WebCore/Modules/mediastream/RTCStatsReport.h
Source/WebCore/Modules/mediastream/RTCStatsReport.idl
Source/WebCore/Modules/mediastream/RTCStatsResponse.cpp
Source/WebCore/Modules/mediastream/RTCStatsResponse.h
Source/WebCore/platform/chromium/support/WebRTCStatsResponse.cpp
Source/WebCore/platform/mediastream/RTCStatsResponseBase.h
Tools/ChangeLog
Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp

index f597beb..ef23b2d 100644 (file)
@@ -1,3 +1,14 @@
+2012-10-09  Harald Alvestrand  <hta@google.com>
+
+        Change PeerConnection getStats function to single value local / remote
+        elements in RTCStatsReport.
+        https://bugs.webkit.org/show_bug.cgi?id=98753
+
+        Reviewed by Adam Barth.
+
+        * fast/mediastream/RTCPeerConnection-stats-expected.txt:
+        * fast/mediastream/RTCPeerConnection-stats.html:
+
 2012-10-09  Adam Barth  <abarth@webkit.org>
 
         Unreviewed. Add chromium-mac specific results for these tests. They
index 4ba1dbe..899bbd8 100644 (file)
@@ -13,9 +13,8 @@ PASS Got a stream.
 PASS pc.getStats(statsHandler2) did not throw exception.
 PASS statsHandler2 was called
 PASS result.length is >= 2
-PASS local.length is 1
 PASS timestamp is >= startTime
-PASS local[0].stat("type") is "audio"
+PASS local.stat("type") is "audio"
 PASS successfullyParsed is true
 
 TEST COMPLETE
index be1338c..d25ffa4 100644 (file)
@@ -48,11 +48,10 @@ function statsHandler2(status)
     testPassed("statsHandler2 was called");
     result = status.result();
     shouldBeGreaterThanOrEqual('result.length', '2');
-    local = result[0].local();
-    shouldBe('local.length', '1');
-    timestamp = local[0].timestamp;
+    local = result[0].local;
+    timestamp = local.timestamp;
     shouldBeGreaterThanOrEqual('timestamp', 'startTime');
-    shouldBe('local[0].stat("type")', '"audio"');
+    shouldBe('local.stat("type")', '"audio"');
     finishJSTest();
 }
 
index ae1e6b4..3d9f6d0 100644 (file)
@@ -1,3 +1,14 @@
+2012-10-09  Harald Alvestrand  <hta@google.com>
+
+        Change PeerConnection getStats function to single value local / remote
+        elements in RTCStatsReport.
+        https://bugs.webkit.org/show_bug.cgi?id=98753
+
+        Reviewed by Adam Barth.
+
+        * chromium/public/WebRTCStatsResponse.h:
+        (WebRTCStatsResponse):
+
 2012-10-04  Harald Alvestrand  <hta@google.com>
 
         Change RTCPeerConnection GetStats to use Date timestamp format
index 326794e..cc6f38e 100644 (file)
@@ -52,8 +52,8 @@ public:
     WEBKIT_EXPORT void reset();
 
     WEBKIT_EXPORT size_t addReport();
-    WEBKIT_EXPORT size_t addElement(size_t report, bool isLocal, double timestamp);
-    WEBKIT_EXPORT void addStatistic(size_t report, bool isLocal, size_t element, WebString name, WebString value);
+    WEBKIT_EXPORT void addElement(size_t report, bool isLocal, double timestamp);
+    WEBKIT_EXPORT void addStatistic(size_t report, bool isLocal, WebString name, WebString value);
 
 #if WEBKIT_IMPLEMENTATION
     WebRTCStatsResponse(const WTF::PassRefPtr<WebCore::RTCStatsResponseBase>&);
index 2ea00c1..a77e5db 100644 (file)
@@ -1,3 +1,38 @@
+2012-10-09  Harald Alvestrand  <hta@google.com>
+
+        Change PeerConnection getStats function to single value local / remote
+        elements in RTCStatsReport.
+
+        https://bugs.webkit.org/show_bug.cgi?id=98753
+
+        Reviewed by Adam Barth.
+
+        IDL of RTCStatsReport has been changed to make local/remote
+        single valued RTCStatsElement attributes.
+        The RTCStatsReport argument to index the list of RTCStatsElement
+        in the local and remote functions has been removed.
+
+        Tested by modifications to RTCPeerConnection-stats.html
+
+        * Modules/mediastream/RTCStatsReport.cpp:
+        (WebCore::RTCStatsReport::addElement):
+        (WebCore::RTCStatsReport::addStatistic):
+        * Modules/mediastream/RTCStatsReport.h:
+        (WebCore::RTCStatsReport::local):
+        (WebCore::RTCStatsReport::remote):
+        (RTCStatsReport):
+        * Modules/mediastream/RTCStatsReport.idl:
+        * Modules/mediastream/RTCStatsResponse.cpp:
+        (WebCore::RTCStatsResponse::addElement):
+        (WebCore::RTCStatsResponse::addStatistic):
+        * Modules/mediastream/RTCStatsResponse.h:
+        (RTCStatsResponse):
+        * platform/chromium/support/WebRTCStatsResponse.cpp:
+        (WebKit::WebRTCStatsResponse::addElement):
+        (WebKit::WebRTCStatsResponse::addStatistic):
+        * platform/mediastream/RTCStatsResponseBase.h:
+        (RTCStatsResponseBase):
+
 2012-10-09  Antonio Gomes  <agomes@rim.com>
 
         Get rid of FIXED_POSITION_CREATES_STACKING_CONTEXT in favor of Settings::fixedPositionCreatesStackingContext()
index 027c170..4ce92ff 100644 (file)
@@ -39,24 +39,24 @@ RTCStatsReport::RTCStatsReport()
 {
 }
 
-size_t RTCStatsReport::addElement(bool isLocal, double timestamp)
+void RTCStatsReport::addElement(bool isLocal, double timestamp)
 {
     if (isLocal) {
-        m_local.append(RTCStatsElement::create(timestamp));
-        return m_local.size() - 1;
+        ASSERT(!m_local);
+        m_local = RTCStatsElement::create(timestamp);
     }
-    m_remote.append(RTCStatsElement::create(timestamp));
-    return m_remote.size() - 1;
+    ASSERT(!m_remote);
+    m_remote = RTCStatsElement::create(timestamp);
 }
 
-void RTCStatsReport::addStatistic(bool isLocal, size_t element, String name, String value)
+void RTCStatsReport::addStatistic(bool isLocal, String name, String value)
 {
     if (isLocal) {
-        ASSERT(element >= 0 && element < m_local.size());
-        m_local[element]->addStatistic(name, value);
+        ASSERT(m_local);
+        m_local->addStatistic(name, value);
     } else {
-        ASSERT(element >= 0 && element < m_remote.size());
-        m_remote[element]->addStatistic(name, value);
+        ASSERT(m_remote);
+        m_remote->addStatistic(name, value);
     }
 }
 
index e6c680c..3d0cccf 100644 (file)
@@ -37,17 +37,17 @@ class RTCStatsReport : public RefCounted<RTCStatsReport> {
 public:
     static PassRefPtr<RTCStatsReport> create();
 
-    const Vector<RefPtr<RTCStatsElement> >& local() const { return m_local; }
-    const Vector<RefPtr<RTCStatsElement> >& remote() const { return m_remote; }
+    const PassRefPtr<RTCStatsElement> local() const { return m_local.get(); }
+    const PassRefPtr<RTCStatsElement> remote() const { return m_remote.get(); }
 
-    size_t addElement(bool isLocal, double timestamp);
-    void addStatistic(bool isLocal, size_t element, String name, String value);
+    void addElement(bool isLocal, double timestamp);
+    void addStatistic(bool isLocal, String name, String value);
 
 private:
     RTCStatsReport();
 
-    Vector<RefPtr<RTCStatsElement> > m_local;
-    Vector<RefPtr<RTCStatsElement> > m_remote;
+    RefPtr<RTCStatsElement> m_local;
+    RefPtr<RTCStatsElement> m_remote;
 };
 
 } // namespace WebCore
index 368b472..c3c6ca5 100644 (file)
@@ -27,7 +27,7 @@ module mediastream {
     interface [
         Conditional=MEDIA_STREAM
     ] RTCStatsReport {
-        sequence<RTCStatsElement> local();
-        sequence<RTCStatsElement> remote();
+        readonly attribute RTCStatsElement local;
+        readonly attribute RTCStatsElement remote;
     };
 }
index 1ece63d..2f450f0 100644 (file)
@@ -45,16 +45,16 @@ size_t RTCStatsResponse::addReport()
     return m_result.size() - 1;
 }
 
-size_t RTCStatsResponse::addElement(size_t report, bool isLocal, double timestamp)
+void RTCStatsResponse::addElement(size_t report, bool isLocal, double timestamp)
 {
     ASSERT(report >= 0 && report < m_result.size());
-    return m_result[report]->addElement(isLocal, timestamp);
+    m_result[report]->addElement(isLocal, timestamp);
 }
 
-void RTCStatsResponse::addStatistic(size_t report, bool isLocal, size_t element, String name, String value)
+void RTCStatsResponse::addStatistic(size_t report, bool isLocal, String name, String value)
 {
     ASSERT(report >= 0 && report < m_result.size());
-    return m_result[report]->addStatistic(isLocal, element, name, value);
+    m_result[report]->addStatistic(isLocal, name, value);
 }
 
 } // namespace WebCore
index d4940de..d1bccc3 100644 (file)
@@ -45,8 +45,8 @@ public:
     const Vector<RefPtr<RTCStatsReport> >& result() const { return m_result; };
 
     virtual size_t addReport() OVERRIDE;
-    virtual size_t addElement(size_t report, bool isLocal, double timestamp) OVERRIDE;
-    virtual void addStatistic(size_t report, bool isLocal, size_t element, String name, String value) OVERRIDE;
+    virtual void addElement(size_t report, bool isLocal, double timestamp) OVERRIDE;
+    virtual void addStatistic(size_t report, bool isLocal, String name, String value) OVERRIDE;
 
 private:
     RTCStatsResponse();
index 6888566..e69c759 100644 (file)
@@ -60,14 +60,14 @@ size_t WebRTCStatsResponse::addReport()
     return m_private->addReport();
 }
 
-size_t WebRTCStatsResponse::addElement(size_t report, bool isLocal, double timestamp)
+void WebRTCStatsResponse::addElement(size_t report, bool isLocal, double timestamp)
 {
-    return m_private->addElement(report, isLocal, timestamp);
+    m_private->addElement(report, isLocal, timestamp);
 }
 
-void WebRTCStatsResponse::addStatistic(size_t report, bool isLocal, size_t element, WebString name, WebString value)
+void WebRTCStatsResponse::addStatistic(size_t report, bool isLocal, WebString name, WebString value)
 {
-    m_private->addStatistic(report, isLocal, element, name, value);
+    m_private->addStatistic(report, isLocal, name, value);
 }
 
 } // namespace WebKit
index 4496f67..91cbfa6 100644 (file)
@@ -38,8 +38,8 @@ public:
     virtual ~RTCStatsResponseBase() { }
 
     virtual size_t addReport() = 0;
-    virtual size_t addElement(size_t report, bool isLocal, double timestamp) = 0;
-    virtual void addStatistic(size_t report, bool isLocal, size_t element, String name, String value) = 0;
+    virtual void addElement(size_t report, bool isLocal, double timestamp) = 0;
+    virtual void addStatistic(size_t report, bool isLocal, String name, String value) = 0;
 };
 
 } // namespace WebCore
@@ -47,3 +47,4 @@ public:
 #endif // ENABLE(MEDIA_STREAM)
 
 #endif // RTCStatsResponseBase_h
+
index 596c310..566b6b8 100644 (file)
@@ -1,3 +1,14 @@
+2012-10-09  Harald Alvestrand  <hta@google.com>
+
+        Change PeerConnection getStats function to single value local / remote
+        elements in RTCStatsReport.
+        https://bugs.webkit.org/show_bug.cgi?id=98753
+
+        Reviewed by Adam Barth.
+
+        * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
+        (MockWebRTCPeerConnectionHandler::getStats):
+
 2012-10-09  Sadrul Habib Chowdhury  <sadrul@chromium.org>
 
         [chromium] Make sure events are transformed correctly for plugins.
index f0a2f62..09f5c5d 100644 (file)
@@ -219,11 +219,11 @@ void MockWebRTCPeerConnectionHandler::getStats(const WebRTCStatsRequest& request
     double currentDate = WTF::jsCurrentTime();
     for (int i = 0; i < m_streamCount; ++i) {
         size_t reportIndex = response.addReport();
-        size_t elementIndex = response.addElement(reportIndex, true, currentDate);
-        response.addStatistic(reportIndex, true, elementIndex, "type", "audio");
+        response.addElement(reportIndex, true, currentDate);
+        response.addStatistic(reportIndex, true, "type", "audio");
         reportIndex = response.addReport();
-        elementIndex = response.addElement(reportIndex, true, currentDate);
-        response.addStatistic(reportIndex, true, elementIndex, "type", "video");
+        response.addElement(reportIndex, true, currentDate);
+        response.addStatistic(reportIndex, true, "type", "video");
     }
     postTask(new RTCStatsRequestSucceededTask(this, request, response));
 }