Chromium Code Reviews| 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 "net/websockets/websocket_stream.h" | 5 #include "net/websockets/websocket_stream.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 86 const URLRequestContext* context, | 86 const URLRequestContext* context, |
| 87 const url::Origin& origin, | 87 const url::Origin& origin, |
| 88 const GURL& first_party_for_cookies, | 88 const GURL& first_party_for_cookies, |
| 89 const std::string& additional_headers, | 89 const std::string& additional_headers, |
| 90 std::unique_ptr<WebSocketStream::ConnectDelegate> connect_delegate, | 90 std::unique_ptr<WebSocketStream::ConnectDelegate> connect_delegate, |
| 91 std::unique_ptr<WebSocketHandshakeStreamCreateHelper> create_helper) | 91 std::unique_ptr<WebSocketHandshakeStreamCreateHelper> create_helper) |
| 92 : delegate_(new Delegate(this)), | 92 : delegate_(new Delegate(this)), |
| 93 url_request_( | 93 url_request_( |
| 94 context->CreateRequest(url, DEFAULT_PRIORITY, delegate_.get())), | 94 context->CreateRequest(url, DEFAULT_PRIORITY, delegate_.get())), |
| 95 connect_delegate_(std::move(connect_delegate)), | 95 connect_delegate_(std::move(connect_delegate)), |
| 96 handshake_stream_create_helper_(create_helper.release()), | 96 handshake_stream_create_helper_(create_helper.release()), |
|
mattm
2017/04/27 04:58:11
would be cleaner to use create_helper.get() here a
Avi (use Gerrit)
2017/04/27 05:05:44
Why is handshake_stream_create_helper_ even a memb
mattm
2017/04/27 05:15:27
Good point. (I'm not familiar with the history of
| |
| 97 handshake_stream_(nullptr) { | 97 handshake_stream_(nullptr) { |
| 98 handshake_stream_create_helper_->set_stream_request(this); | 98 handshake_stream_create_helper_->set_stream_request(this); |
| 99 HttpRequestHeaders headers; | 99 HttpRequestHeaders headers; |
| 100 headers.SetHeader(websockets::kUpgrade, websockets::kWebSocketLowercase); | 100 headers.SetHeader(websockets::kUpgrade, websockets::kWebSocketLowercase); |
| 101 headers.SetHeader(HttpRequestHeaders::kConnection, websockets::kUpgrade); | 101 headers.SetHeader(HttpRequestHeaders::kConnection, websockets::kUpgrade); |
| 102 headers.SetHeader(HttpRequestHeaders::kOrigin, origin.Serialize()); | 102 headers.SetHeader(HttpRequestHeaders::kOrigin, origin.Serialize()); |
| 103 headers.SetHeader(websockets::kSecWebSocketVersion, | 103 headers.SetHeader(websockets::kSecWebSocketVersion, |
| 104 websockets::kSupportedVersion); | 104 websockets::kSupportedVersion); |
| 105 | 105 |
| 106 headers.AddHeadersFromString(additional_headers); | 106 headers.AddHeadersFromString(additional_headers); |
| 107 | 107 |
| 108 url_request_->SetExtraRequestHeaders(headers); | 108 url_request_->SetExtraRequestHeaders(headers); |
| 109 url_request_->set_initiator(origin); | 109 url_request_->set_initiator(origin); |
| 110 url_request_->set_first_party_for_cookies(first_party_for_cookies); | 110 url_request_->set_first_party_for_cookies(first_party_for_cookies); |
| 111 | 111 |
| 112 // This passes the ownership of |handshake_stream_create_helper_| to | 112 // This passes the ownership of |handshake_stream_create_helper_| to |
| 113 // |url_request_|. | 113 // |url_request_|. |
| 114 url_request_->SetUserData( | 114 url_request_->SetUserData( |
| 115 WebSocketHandshakeStreamBase::CreateHelper::DataKey(), | 115 WebSocketHandshakeStreamBase::CreateHelper::DataKey(), |
| 116 handshake_stream_create_helper_); | 116 base::WrapUnique(handshake_stream_create_helper_)); |
| 117 url_request_->SetLoadFlags(LOAD_DISABLE_CACHE | LOAD_BYPASS_CACHE); | 117 url_request_->SetLoadFlags(LOAD_DISABLE_CACHE | LOAD_BYPASS_CACHE); |
| 118 connect_delegate_->OnCreateRequest(url_request_.get()); | 118 connect_delegate_->OnCreateRequest(url_request_.get()); |
| 119 } | 119 } |
| 120 | 120 |
| 121 // Destroying this object destroys the URLRequest, which cancels the request | 121 // Destroying this object destroys the URLRequest, which cancels the request |
| 122 // and so terminates the handshake if it is incomplete. | 122 // and so terminates the handshake if it is incomplete. |
| 123 ~WebSocketStreamRequestImpl() override {} | 123 ~WebSocketStreamRequestImpl() override {} |
| 124 | 124 |
| 125 void OnHandshakeStreamCreated( | 125 void OnHandshakeStreamCreated( |
| 126 WebSocketHandshakeStreamBase* handshake_stream) override { | 126 WebSocketHandshakeStreamBase* handshake_stream) override { |
| (...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 407 DCHECK(connect_delegate); | 407 DCHECK(connect_delegate); |
| 408 if (headers.get()) { | 408 if (headers.get()) { |
| 409 connect_delegate->OnFinishOpeningHandshake( | 409 connect_delegate->OnFinishOpeningHandshake( |
| 410 base::MakeUnique<WebSocketHandshakeResponseInfo>( | 410 base::MakeUnique<WebSocketHandshakeResponseInfo>( |
| 411 url, headers->response_code(), headers->GetStatusText(), headers, | 411 url, headers->response_code(), headers->GetStatusText(), headers, |
| 412 response_time)); | 412 response_time)); |
| 413 } | 413 } |
| 414 } | 414 } |
| 415 | 415 |
| 416 } // namespace net | 416 } // namespace net |
| OLD | NEW |