New method StatsObserver::OnCompleteReports, passing ownership.
The new name, OnCompleteReports rather than OnComplete, is needed
because in C++ method lookup, overriding a method hides all otherwise
inherited methods with the same name, even if they have a different
signature. And here, the intention is that each subclass should
override one or the other of the two methods, and inherit the method it
doesn't override.
This cl is a prerequisite for
https://codereview.webrtc.org/2567143003/, because the Chrome glue
code needs to retain the stats report after the OnComplete method has
returned.
Currently, Chrome makes a copy of the stats mapping (which breaks when
changing ValuePtr from an rtc::linked_ptr to an std::unique_ptr). After
this cl, Chrome can be fixed to take ownership and no longer needs to
copy anything, unblocking cl 2567143003.
BUG=webrtc:6424
Review-Url: https://codereview.webrtc.org/2584553002
Cr-Commit-Position: refs/heads/master@{#15708}
diff --git a/webrtc/api/peerconnectioninterface.h b/webrtc/api/peerconnectioninterface.h
index d4daf24..9c2301c 100644
--- a/webrtc/api/peerconnectioninterface.h
+++ b/webrtc/api/peerconnectioninterface.h
@@ -109,7 +109,14 @@
class StatsObserver : public rtc::RefCountInterface {
public:
- virtual void OnComplete(const StatsReports& reports) = 0;
+ // TODO(nisse, hbos): Old version, not passing ownership. Should
+ // perhaps be deprecated, but since all of this is a legacy
+ // interface anyway, probably best to leave as is until this class
+ // can be deleted.
+ virtual void OnComplete(const StatsReports& reports) {}
+ virtual void OnCompleteReports(std::unique_ptr<StatsReports> reports) {
+ OnComplete(*reports);
+ }
protected:
virtual ~StatsObserver() {}