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.