Index: content/common/socket_stream_dispatcher.cc |
diff --git a/content/common/socket_stream_dispatcher.cc b/content/common/socket_stream_dispatcher.cc |
index a44dd94a1f18ed8589ab18a129624acd3dc67638..6ee499ea0dc89befa0f5fe58f50eea4155abb67a 100644 |
--- a/content/common/socket_stream_dispatcher.cc |
+++ b/content/common/socket_stream_dispatcher.cc |
@@ -7,6 +7,7 @@ |
#include <vector> |
#include "base/id_map.h" |
+#include "base/lazy_instance.h" |
#include "base/memory/ref_counted.h" |
#include "base/message_loop.h" |
#include "base/task.h" |
@@ -56,16 +57,22 @@ class IPCWebSocketStreamHandleBridge |
WebKit::WebSocketStreamHandle* handle_; |
webkit_glue::WebSocketStreamHandleDelegate* delegate_; |
- static IDMap<IPCWebSocketStreamHandleBridge> all_bridges; |
+ static base::LazyInstance< |
+ IDMap<IPCWebSocketStreamHandleBridge>, |
+ base::LeakyLazyInstanceTraits<IDMap<IPCWebSocketStreamHandleBridge> > > |
+ all_bridges; |
}; |
-IDMap<IPCWebSocketStreamHandleBridge> |
-IPCWebSocketStreamHandleBridge::all_bridges; |
+// static |
+base::LazyInstance< |
+ IDMap<IPCWebSocketStreamHandleBridge>, |
+ base::LeakyLazyInstanceTraits<IDMap<IPCWebSocketStreamHandleBridge> > > |
+ IPCWebSocketStreamHandleBridge::all_bridges(base::LINKER_INITIALIZED); |
/* static */ |
IPCWebSocketStreamHandleBridge* IPCWebSocketStreamHandleBridge::FromSocketId( |
int id) { |
- return all_bridges.Lookup(id); |
+ return all_bridges.Get().Lookup(id); |
} |
IPCWebSocketStreamHandleBridge::~IPCWebSocketStreamHandleBridge() { |
@@ -127,7 +134,7 @@ void IPCWebSocketStreamHandleBridge::OnReceivedData( |
void IPCWebSocketStreamHandleBridge::OnClosed() { |
DVLOG(1) << "IPCWebSocketStreamHandleBridge::OnClosed"; |
if (socket_id_ != content_common::kNoSocketId) { |
- all_bridges.Remove(socket_id_); |
+ all_bridges.Get().Remove(socket_id_); |
socket_id_ = content_common::kNoSocketId; |
} |
if (delegate_) |
@@ -142,7 +149,7 @@ void IPCWebSocketStreamHandleBridge::DoConnect(const GURL& url) { |
if (delegate_) |
delegate_->WillOpenStream(handle_, url); |
- socket_id_ = all_bridges.Add(this); |
+ socket_id_ = all_bridges.Get().Add(this); |
DCHECK_NE(socket_id_, content_common::kNoSocketId); |
AddRef(); // Released in OnClosed(). |
if (child_thread_->Send(new SocketStreamHostMsg_Connect(url, socket_id_))) { |