OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/renderer/websockethandle_impl.h" | 5 #include "content/renderer/websockethandle_impl.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 #include <string.h> | 8 #include <string.h> |
9 | 9 |
10 #include <string> | 10 #include <string> |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
152 if (websocket_) | 152 if (websocket_) |
153 websocket_->StartClosingHandshake(kAbnormalShutdownOpCode, std::string()); | 153 websocket_->StartClosingHandshake(kAbnormalShutdownOpCode, std::string()); |
154 } | 154 } |
155 | 155 |
156 void WebSocketHandleImpl::Disconnect() { | 156 void WebSocketHandleImpl::Disconnect() { |
157 websocket_.reset(); | 157 websocket_.reset(); |
158 client_ = nullptr; | 158 client_ = nullptr; |
159 } | 159 } |
160 | 160 |
161 void WebSocketHandleImpl::OnConnectionError() { | 161 void WebSocketHandleImpl::OnConnectionError() { |
162 if (!blink::Platform::current()) { | |
darin (slow to review)
2016/08/19 15:54:16
This seems like a sensible band-aid.
| |
163 // In the renderrer shutdown sequence, mojo channels are destructed and this | |
164 // function is called. On the other hand, blink objects became invalid | |
165 // *silently*, which means we must not touch |*client_| any more. | |
166 // TODO(yhirano): Remove this code once the shutdown sequence is fixed. | |
167 Disconnect(); | |
168 return; | |
169 } | |
170 | |
162 // Our connection to the WebSocket was dropped. This could be due to | 171 // Our connection to the WebSocket was dropped. This could be due to |
163 // exceeding the maximum number of concurrent websockets from this process. | 172 // exceeding the maximum number of concurrent websockets from this process. |
164 | 173 |
165 // TODO(darin): This error message is overly specific. We don't know for sure | 174 // TODO(darin): This error message is overly specific. We don't know for sure |
166 // that this is the only reason we'd get here. This should be more generic or | 175 // that this is the only reason we'd get here. This should be more generic or |
167 // we should figure out how to make it more specific. | 176 // we should figure out how to make it more specific. |
168 OnFailChannel("Error in connection establishment: " | 177 OnFailChannel("Error in connection establishment: " |
169 "net::ERR_INSUFFICIENT_RESOURCES"); | 178 "net::ERR_INSUFFICIENT_RESOURCES"); |
170 } | 179 } |
171 | 180 |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
290 DVLOG(1) << "WebSocketHandleImpl @" << reinterpret_cast<void*>(this) | 299 DVLOG(1) << "WebSocketHandleImpl @" << reinterpret_cast<void*>(this) |
291 << " OnClosingHandshake()"; | 300 << " OnClosingHandshake()"; |
292 if (!client_) | 301 if (!client_) |
293 return; | 302 return; |
294 | 303 |
295 client_->didStartClosingHandshake(this); | 304 client_->didStartClosingHandshake(this); |
296 // |this| can be deleted here. | 305 // |this| can be deleted here. |
297 } | 306 } |
298 | 307 |
299 } // namespace content | 308 } // namespace content |
OLD | NEW |