Make PeerConnection take reference to UMA observer.
It's reference counted, yet we aren't taking a reference to it for some
reason. This could be causing it to be dereferenced after deletion in
some cases in chromium.
Bug: chromium:798251
Change-Id: I0b91451e38ed611d2ea8a477f1e7db482a790f79
Reviewed-on: https://webrtc-review.googlesource.com/37283
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Commit-Queue: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21684}
diff --git a/api/peerconnectioninterface.h b/api/peerconnectioninterface.h
index a6c8c06..f6fae58 100644
--- a/api/peerconnectioninterface.h
+++ b/api/peerconnectioninterface.h
@@ -886,10 +886,10 @@
return false;
}
- // Register a metric observer (used by chromium).
- //
- // There can only be one observer at a time. Before the observer is
- // destroyed, RegisterUMAOberver(nullptr) should be called.
+ // Register a metric observer (used by chromium). It's reference counted, and
+ // this method takes a reference. RegisterUMAObserver(nullptr) will release
+ // the reference.
+ // TODO(deadbeef): Take argument as scoped_refptr?
virtual void RegisterUMAObserver(UMAObserver* observer) = 0;
// 0 <= min <= current <= max should hold for set parameters.