| Index: trunk/src/content/renderer/media/rtc_peer_connection_handler.cc
|
| ===================================================================
|
| --- trunk/src/content/renderer/media/rtc_peer_connection_handler.cc (revision 272603)
|
| +++ trunk/src/content/renderer/media/rtc_peer_connection_handler.cc (working copy)
|
| @@ -10,6 +10,7 @@
|
|
|
| #include "base/command_line.h"
|
| #include "base/debug/trace_event.h"
|
| +#include "base/lazy_instance.h"
|
| #include "base/logging.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/metrics/histogram.h"
|
| @@ -317,6 +318,8 @@
|
| impl_.addStatistic(report, name, value);
|
| }
|
|
|
| +namespace {
|
| +
|
| class PeerConnectionUMAObserver : public webrtc::UMAObserver {
|
| public:
|
| PeerConnectionUMAObserver() {}
|
| @@ -351,6 +354,11 @@
|
| }
|
| };
|
|
|
| +base::LazyInstance<std::set<RTCPeerConnectionHandler*> >::Leaky
|
| + g_peer_connection_handlers = LAZY_INSTANCE_INITIALIZER;
|
| +
|
| +} // namespace
|
| +
|
| RTCPeerConnectionHandler::RTCPeerConnectionHandler(
|
| blink::WebRTCPeerConnectionHandlerClient* client,
|
| PeerConnectionDependencyFactory* dependency_factory)
|
| @@ -359,9 +367,11 @@
|
| frame_(NULL),
|
| peer_connection_tracker_(NULL),
|
| num_data_channels_created_(0) {
|
| + g_peer_connection_handlers.Get().insert(this);
|
| }
|
|
|
| RTCPeerConnectionHandler::~RTCPeerConnectionHandler() {
|
| + g_peer_connection_handlers.Get().erase(this);
|
| if (peer_connection_tracker_)
|
| peer_connection_tracker_->UnregisterPeerConnection(this);
|
| STLDeleteValues(&remote_streams_);
|
| @@ -370,6 +380,18 @@
|
| "WebRTC.NumDataChannelsPerPeerConnection", num_data_channels_created_);
|
| }
|
|
|
| +// static
|
| +void RTCPeerConnectionHandler::DestructAllHandlers() {
|
| + std::set<RTCPeerConnectionHandler*> handlers(
|
| + g_peer_connection_handlers.Get().begin(),
|
| + g_peer_connection_handlers.Get().end());
|
| + for (std::set<RTCPeerConnectionHandler*>::iterator handler = handlers.begin();
|
| + handler != handlers.end();
|
| + ++handler) {
|
| + (*handler)->client_->releasePeerConnectionHandler();
|
| + }
|
| +}
|
| +
|
| void RTCPeerConnectionHandler::associateWithFrame(blink::WebFrame* frame) {
|
| DCHECK(frame);
|
| frame_ = frame;
|
|
|