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

Side by Side Diff: net/websockets/websocket_channel.cc

Issue 304093003: Support recovery from SSL errors for new WebSocket implementation (Closed) Base URL: http://git.chromium.org/chromium/src.git@master-for-pool-throttling
Patch Set: Fixes from tyoshino review. Created 6 years, 6 months 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
« no previous file with comments | « net/websockets/websocket_channel.h ('k') | net/websockets/websocket_channel_test.cc » ('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 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 "net/websockets/websocket_channel.h" 5 #include "net/websockets/websocket_channel.h"
6 6
7 #include <limits.h> // for INT_MAX 7 #include <limits.h> // for INT_MAX
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <deque> 10 #include <deque>
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 virtual void OnStartOpeningHandshake( 169 virtual void OnStartOpeningHandshake(
170 scoped_ptr<WebSocketHandshakeRequestInfo> request) OVERRIDE { 170 scoped_ptr<WebSocketHandshakeRequestInfo> request) OVERRIDE {
171 creator_->OnStartOpeningHandshake(request.Pass()); 171 creator_->OnStartOpeningHandshake(request.Pass());
172 } 172 }
173 173
174 virtual void OnFinishOpeningHandshake( 174 virtual void OnFinishOpeningHandshake(
175 scoped_ptr<WebSocketHandshakeResponseInfo> response) OVERRIDE { 175 scoped_ptr<WebSocketHandshakeResponseInfo> response) OVERRIDE {
176 creator_->OnFinishOpeningHandshake(response.Pass()); 176 creator_->OnFinishOpeningHandshake(response.Pass());
177 } 177 }
178 178
179 virtual void OnSSLCertificateError(
180 scoped_ptr<WebSocketEventInterface::SSLErrorCallbacks>
181 ssl_error_callbacks,
182 const SSLInfo& ssl_info,
183 bool fatal) OVERRIDE {
184 creator_->OnSSLCertificateError(
185 ssl_error_callbacks.Pass(), ssl_info, fatal);
186 }
187
179 private: 188 private:
180 // A pointer to the WebSocketChannel that created this object. There is no 189 // A pointer to the WebSocketChannel that created this object. There is no
181 // danger of this pointer being stale, because deleting the WebSocketChannel 190 // danger of this pointer being stale, because deleting the WebSocketChannel
182 // cancels the connect process, deleting this object and preventing its 191 // cancels the connect process, deleting this object and preventing its
183 // callbacks from being called. 192 // callbacks from being called.
184 WebSocketChannel* const creator_; 193 WebSocketChannel* const creator_;
185 194
186 DISALLOW_COPY_AND_ASSIGN(ConnectDelegate); 195 DISALLOW_COPY_AND_ASSIGN(ConnectDelegate);
187 }; 196 };
188 197
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after
569 578
570 if (CHANNEL_DELETED == 579 if (CHANNEL_DELETED ==
571 notification_sender_->SendImmediately(event_interface_.get())) { 580 notification_sender_->SendImmediately(event_interface_.get())) {
572 // |this| has been deleted. 581 // |this| has been deleted.
573 return; 582 return;
574 } 583 }
575 AllowUnused(event_interface_->OnFailChannel(message)); 584 AllowUnused(event_interface_->OnFailChannel(message));
576 // |this| has been deleted. 585 // |this| has been deleted.
577 } 586 }
578 587
588 void WebSocketChannel::OnSSLCertificateError(
589 scoped_ptr<WebSocketEventInterface::SSLErrorCallbacks> ssl_error_callbacks,
590 const SSLInfo& ssl_info,
591 bool fatal) {
592 AllowUnused(event_interface_->OnSSLCertificateError(
593 ssl_error_callbacks.Pass(), socket_url_, ssl_info, fatal));
594 }
595
579 void WebSocketChannel::OnStartOpeningHandshake( 596 void WebSocketChannel::OnStartOpeningHandshake(
580 scoped_ptr<WebSocketHandshakeRequestInfo> request) { 597 scoped_ptr<WebSocketHandshakeRequestInfo> request) {
581 DCHECK(!notification_sender_->handshake_request_info()); 598 DCHECK(!notification_sender_->handshake_request_info());
582 599
583 // Because it is hard to handle an IPC error synchronously is difficult, 600 // Because it is hard to handle an IPC error synchronously is difficult,
584 // we asynchronously notify the information. 601 // we asynchronously notify the information.
585 notification_sender_->set_handshake_request_info(request.Pass()); 602 notification_sender_->set_handshake_request_info(request.Pass());
586 ScheduleOpeningHandshakeNotification(); 603 ScheduleOpeningHandshakeNotification();
587 } 604 }
588 605
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after
1085 } 1102 }
1086 1103
1087 void WebSocketChannel::CloseTimeout() { 1104 void WebSocketChannel::CloseTimeout() {
1088 stream_->Close(); 1105 stream_->Close();
1089 SetState(CLOSED); 1106 SetState(CLOSED);
1090 AllowUnused(DoDropChannel(false, kWebSocketErrorAbnormalClosure, "")); 1107 AllowUnused(DoDropChannel(false, kWebSocketErrorAbnormalClosure, ""));
1091 // |this| has been deleted. 1108 // |this| has been deleted.
1092 } 1109 }
1093 1110
1094 } // namespace net 1111 } // namespace net
OLDNEW
« no previous file with comments | « net/websockets/websocket_channel.h ('k') | net/websockets/websocket_channel_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698