Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(38)

Side by Side Diff: content/common/socket_stream_dispatcher.cc

Issue 8493016: content: Remove 16 exit time destructors and 15 static initializers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: mac compile Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/common/np_channel_base.cc ('k') | content/renderer/devtools_agent.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/common/socket_stream_dispatcher.h" 5 #include "content/common/socket_stream_dispatcher.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/id_map.h" 9 #include "base/id_map.h"
10 #include "base/lazy_instance.h"
10 #include "base/memory/ref_counted.h" 11 #include "base/memory/ref_counted.h"
11 #include "base/message_loop.h" 12 #include "base/message_loop.h"
12 #include "base/task.h" 13 #include "base/task.h"
13 #include "content/common/child_thread.h" 14 #include "content/common/child_thread.h"
14 #include "content/common/socket_stream.h" 15 #include "content/common/socket_stream.h"
15 #include "content/common/socket_stream_messages.h" 16 #include "content/common/socket_stream_messages.h"
16 #include "googleurl/src/gurl.h" 17 #include "googleurl/src/gurl.h"
17 #include "webkit/glue/websocketstreamhandle_bridge.h" 18 #include "webkit/glue/websocketstreamhandle_bridge.h"
18 #include "webkit/glue/websocketstreamhandle_delegate.h" 19 #include "webkit/glue/websocketstreamhandle_delegate.h"
19 20
(...skipping 29 matching lines...) Expand all
49 virtual ~IPCWebSocketStreamHandleBridge(); 50 virtual ~IPCWebSocketStreamHandleBridge();
50 51
51 void DoConnect(const GURL& url); 52 void DoConnect(const GURL& url);
52 void DoClose(); 53 void DoClose();
53 int socket_id_; 54 int socket_id_;
54 55
55 ChildThread* child_thread_; 56 ChildThread* child_thread_;
56 WebKit::WebSocketStreamHandle* handle_; 57 WebKit::WebSocketStreamHandle* handle_;
57 webkit_glue::WebSocketStreamHandleDelegate* delegate_; 58 webkit_glue::WebSocketStreamHandleDelegate* delegate_;
58 59
59 static IDMap<IPCWebSocketStreamHandleBridge> all_bridges; 60 static base::LazyInstance<
61 IDMap<IPCWebSocketStreamHandleBridge>,
62 base::LeakyLazyInstanceTraits<IDMap<IPCWebSocketStreamHandleBridge> > >
63 all_bridges;
60 }; 64 };
61 65
62 IDMap<IPCWebSocketStreamHandleBridge> 66 // static
63 IPCWebSocketStreamHandleBridge::all_bridges; 67 base::LazyInstance<
68 IDMap<IPCWebSocketStreamHandleBridge>,
69 base::LeakyLazyInstanceTraits<IDMap<IPCWebSocketStreamHandleBridge> > >
70 IPCWebSocketStreamHandleBridge::all_bridges(base::LINKER_INITIALIZED);
64 71
65 /* static */ 72 /* static */
66 IPCWebSocketStreamHandleBridge* IPCWebSocketStreamHandleBridge::FromSocketId( 73 IPCWebSocketStreamHandleBridge* IPCWebSocketStreamHandleBridge::FromSocketId(
67 int id) { 74 int id) {
68 return all_bridges.Lookup(id); 75 return all_bridges.Get().Lookup(id);
69 } 76 }
70 77
71 IPCWebSocketStreamHandleBridge::~IPCWebSocketStreamHandleBridge() { 78 IPCWebSocketStreamHandleBridge::~IPCWebSocketStreamHandleBridge() {
72 DVLOG(1) << "IPCWebSocketStreamHandleBridge destructor socket_id=" 79 DVLOG(1) << "IPCWebSocketStreamHandleBridge destructor socket_id="
73 << socket_id_; 80 << socket_id_;
74 if (socket_id_ != content_common::kNoSocketId) { 81 if (socket_id_ != content_common::kNoSocketId) {
75 child_thread_->Send(new SocketStreamHostMsg_Close(socket_id_)); 82 child_thread_->Send(new SocketStreamHostMsg_Close(socket_id_));
76 socket_id_ = content_common::kNoSocketId; 83 socket_id_ = content_common::kNoSocketId;
77 } 84 }
78 } 85 }
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 127
121 void IPCWebSocketStreamHandleBridge::OnReceivedData( 128 void IPCWebSocketStreamHandleBridge::OnReceivedData(
122 const std::vector<char>& data) { 129 const std::vector<char>& data) {
123 if (delegate_) 130 if (delegate_)
124 delegate_->DidReceiveData(handle_, &data[0], data.size()); 131 delegate_->DidReceiveData(handle_, &data[0], data.size());
125 } 132 }
126 133
127 void IPCWebSocketStreamHandleBridge::OnClosed() { 134 void IPCWebSocketStreamHandleBridge::OnClosed() {
128 DVLOG(1) << "IPCWebSocketStreamHandleBridge::OnClosed"; 135 DVLOG(1) << "IPCWebSocketStreamHandleBridge::OnClosed";
129 if (socket_id_ != content_common::kNoSocketId) { 136 if (socket_id_ != content_common::kNoSocketId) {
130 all_bridges.Remove(socket_id_); 137 all_bridges.Get().Remove(socket_id_);
131 socket_id_ = content_common::kNoSocketId; 138 socket_id_ = content_common::kNoSocketId;
132 } 139 }
133 if (delegate_) 140 if (delegate_)
134 delegate_->DidClose(handle_); 141 delegate_->DidClose(handle_);
135 delegate_ = NULL; 142 delegate_ = NULL;
136 Release(); 143 Release();
137 } 144 }
138 145
139 void IPCWebSocketStreamHandleBridge::DoConnect(const GURL& url) { 146 void IPCWebSocketStreamHandleBridge::DoConnect(const GURL& url) {
140 DCHECK(child_thread_); 147 DCHECK(child_thread_);
141 DCHECK_EQ(socket_id_, content_common::kNoSocketId); 148 DCHECK_EQ(socket_id_, content_common::kNoSocketId);
142 if (delegate_) 149 if (delegate_)
143 delegate_->WillOpenStream(handle_, url); 150 delegate_->WillOpenStream(handle_, url);
144 151
145 socket_id_ = all_bridges.Add(this); 152 socket_id_ = all_bridges.Get().Add(this);
146 DCHECK_NE(socket_id_, content_common::kNoSocketId); 153 DCHECK_NE(socket_id_, content_common::kNoSocketId);
147 AddRef(); // Released in OnClosed(). 154 AddRef(); // Released in OnClosed().
148 if (child_thread_->Send(new SocketStreamHostMsg_Connect(url, socket_id_))) { 155 if (child_thread_->Send(new SocketStreamHostMsg_Connect(url, socket_id_))) {
149 DVLOG(1) << "Connect socket_id=" << socket_id_; 156 DVLOG(1) << "Connect socket_id=" << socket_id_;
150 // TODO(ukai): timeout to OnConnected. 157 // TODO(ukai): timeout to OnConnected.
151 } else { 158 } else {
152 DLOG(ERROR) << "IPC SocketStream_Connect failed."; 159 DLOG(ERROR) << "IPC SocketStream_Connect failed.";
153 OnClosed(); 160 OnClosed();
154 } 161 }
155 } 162 }
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 } 222 }
216 223
217 void SocketStreamDispatcher::OnClosed(int socket_id) { 224 void SocketStreamDispatcher::OnClosed(int socket_id) {
218 IPCWebSocketStreamHandleBridge* bridge = 225 IPCWebSocketStreamHandleBridge* bridge =
219 IPCWebSocketStreamHandleBridge::FromSocketId(socket_id); 226 IPCWebSocketStreamHandleBridge::FromSocketId(socket_id);
220 if (bridge) 227 if (bridge)
221 bridge->OnClosed(); 228 bridge->OnClosed();
222 else 229 else
223 DLOG(ERROR) << "No SocketStreamHandleBridge for socket_id=" << socket_id; 230 DLOG(ERROR) << "No SocketStreamHandleBridge for socket_id=" << socket_id;
224 } 231 }
OLDNEW
« no previous file with comments | « content/common/np_channel_base.cc ('k') | content/renderer/devtools_agent.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698