| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 // An implementation of WebSocketStreamHandle. | 5 // An implementation of WebSocketStreamHandle. |
| 6 | 6 |
| 7 #include "webkit/glue/websocketstreamhandle_impl.h" | 7 #include "webkit/glue/websocketstreamhandle_impl.h" |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 ~Context() { | 54 ~Context() { |
| 55 DCHECK(!handle_); | 55 DCHECK(!handle_); |
| 56 DCHECK(!client_); | 56 DCHECK(!client_); |
| 57 DCHECK(!bridge_); | 57 DCHECK(!bridge_); |
| 58 } | 58 } |
| 59 | 59 |
| 60 WebSocketStreamHandleImpl* handle_; | 60 WebSocketStreamHandleImpl* handle_; |
| 61 WebKit::WebSocketStreamHandleClient* client_; | 61 WebKit::WebSocketStreamHandleClient* client_; |
| 62 // |bridge_| is alive from Connect to DidClose, so Context must be alive | 62 // |bridge_| is alive from Connect to DidClose, so Context must be alive |
| 63 // in the time period. | 63 // in the time period. |
| 64 WebSocketStreamHandleBridge* bridge_; | 64 scoped_refptr<WebSocketStreamHandleBridge> bridge_; |
| 65 | 65 |
| 66 DISALLOW_COPY_AND_ASSIGN(Context); | 66 DISALLOW_COPY_AND_ASSIGN(Context); |
| 67 }; | 67 }; |
| 68 | 68 |
| 69 WebSocketStreamHandleImpl::Context::Context(WebSocketStreamHandleImpl* handle) | 69 WebSocketStreamHandleImpl::Context::Context(WebSocketStreamHandleImpl* handle) |
| 70 : handle_(handle), | 70 : handle_(handle), |
| 71 client_(NULL), | 71 client_(NULL), |
| 72 bridge_(NULL) { | 72 bridge_(NULL) { |
| 73 } | 73 } |
| 74 | 74 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 90 void WebSocketStreamHandleImpl::Context::Close() { | 90 void WebSocketStreamHandleImpl::Context::Close() { |
| 91 LOG(INFO) << "Close"; | 91 LOG(INFO) << "Close"; |
| 92 if (bridge_) | 92 if (bridge_) |
| 93 bridge_->Close(); | 93 bridge_->Close(); |
| 94 } | 94 } |
| 95 | 95 |
| 96 void WebSocketStreamHandleImpl::Context::Detach() { | 96 void WebSocketStreamHandleImpl::Context::Detach() { |
| 97 handle_ = NULL; | 97 handle_ = NULL; |
| 98 client_ = NULL; | 98 client_ = NULL; |
| 99 // If Connect was called, |bridge_| is not NULL, so that this Context closes | 99 // If Connect was called, |bridge_| is not NULL, so that this Context closes |
| 100 // the |bridge_| here. Then |bridge_| will call back DidClose, in which | 100 // the |bridge_| here. Then |bridge_| will call back DidClose, and will |
| 101 // this Context will delete the |bridge_|. | 101 // be released by itself. |
| 102 // Otherwise, |bridge_| is NULL. | 102 // Otherwise, |bridge_| is NULL. |
| 103 if (bridge_) | 103 if (bridge_) |
| 104 bridge_->Close(); | 104 bridge_->Close(); |
| 105 } | 105 } |
| 106 | 106 |
| 107 void WebSocketStreamHandleImpl::Context::WillOpenStream( | 107 void WebSocketStreamHandleImpl::Context::WillOpenStream( |
| 108 WebKit::WebSocketStreamHandle* web_handle, const GURL& url) { | 108 WebKit::WebSocketStreamHandle* web_handle, const GURL& url) { |
| 109 LOG(INFO) << "WillOpenStream url=" << url; | 109 LOG(INFO) << "WillOpenStream url=" << url; |
| 110 if (client_) | 110 if (client_) |
| 111 client_->willOpenStream(handle_, url); | 111 client_->willOpenStream(handle_, url); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 126 | 126 |
| 127 void WebSocketStreamHandleImpl::Context::DidReceiveData( | 127 void WebSocketStreamHandleImpl::Context::DidReceiveData( |
| 128 WebKit::WebSocketStreamHandle* web_handle, const char* data, int size) { | 128 WebKit::WebSocketStreamHandle* web_handle, const char* data, int size) { |
| 129 if (client_) | 129 if (client_) |
| 130 client_->didReceiveData(handle_, WebKit::WebData(data, size)); | 130 client_->didReceiveData(handle_, WebKit::WebData(data, size)); |
| 131 } | 131 } |
| 132 | 132 |
| 133 void WebSocketStreamHandleImpl::Context::DidClose( | 133 void WebSocketStreamHandleImpl::Context::DidClose( |
| 134 WebKit::WebSocketStreamHandle* web_handle) { | 134 WebKit::WebSocketStreamHandle* web_handle) { |
| 135 LOG(INFO) << "DidClose"; | 135 LOG(INFO) << "DidClose"; |
| 136 delete bridge_; | |
| 137 bridge_ = NULL; | 136 bridge_ = NULL; |
| 138 WebSocketStreamHandleImpl* handle = handle_; | 137 WebSocketStreamHandleImpl* handle = handle_; |
| 139 handle_ = NULL; | 138 handle_ = NULL; |
| 140 if (client_) { | 139 if (client_) { |
| 141 WebKit::WebSocketStreamHandleClient* client = client_; | 140 WebKit::WebSocketStreamHandleClient* client = client_; |
| 142 client_ = NULL; | 141 client_ = NULL; |
| 143 client->didClose(handle); | 142 client->didClose(handle); |
| 144 } | 143 } |
| 145 Release(); | 144 Release(); |
| 146 } | 145 } |
| (...skipping 22 matching lines...) Expand all Loading... |
| 169 | 168 |
| 170 bool WebSocketStreamHandleImpl::send(const WebKit::WebData& data) { | 169 bool WebSocketStreamHandleImpl::send(const WebKit::WebData& data) { |
| 171 return context_->Send(data); | 170 return context_->Send(data); |
| 172 } | 171 } |
| 173 | 172 |
| 174 void WebSocketStreamHandleImpl::close() { | 173 void WebSocketStreamHandleImpl::close() { |
| 175 context_->Close(); | 174 context_->Close(); |
| 176 } | 175 } |
| 177 | 176 |
| 178 } // namespace webkit_glue | 177 } // namespace webkit_glue |
| OLD | NEW |