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

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

Issue 2842263003: Switch SupportsUserData uses to use unique_ptr. (Closed)
Patch Set: clean Created 3 years, 7 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/url_request/url_request_unittest.cc ('k') | no next file » | 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_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
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()),
97 handshake_stream_(nullptr) { 96 handshake_stream_(nullptr) {
98 handshake_stream_create_helper_->set_stream_request(this); 97 create_helper->set_stream_request(this);
99 HttpRequestHeaders headers; 98 HttpRequestHeaders headers;
100 headers.SetHeader(websockets::kUpgrade, websockets::kWebSocketLowercase); 99 headers.SetHeader(websockets::kUpgrade, websockets::kWebSocketLowercase);
101 headers.SetHeader(HttpRequestHeaders::kConnection, websockets::kUpgrade); 100 headers.SetHeader(HttpRequestHeaders::kConnection, websockets::kUpgrade);
102 headers.SetHeader(HttpRequestHeaders::kOrigin, origin.Serialize()); 101 headers.SetHeader(HttpRequestHeaders::kOrigin, origin.Serialize());
103 headers.SetHeader(websockets::kSecWebSocketVersion, 102 headers.SetHeader(websockets::kSecWebSocketVersion,
104 websockets::kSupportedVersion); 103 websockets::kSupportedVersion);
105 104
106 headers.AddHeadersFromString(additional_headers); 105 headers.AddHeadersFromString(additional_headers);
107 106
108 url_request_->SetExtraRequestHeaders(headers); 107 url_request_->SetExtraRequestHeaders(headers);
109 url_request_->set_initiator(origin); 108 url_request_->set_initiator(origin);
110 url_request_->set_first_party_for_cookies(first_party_for_cookies); 109 url_request_->set_first_party_for_cookies(first_party_for_cookies);
111 110
112 // This passes the ownership of |handshake_stream_create_helper_| to
113 // |url_request_|.
114 url_request_->SetUserData( 111 url_request_->SetUserData(
115 WebSocketHandshakeStreamBase::CreateHelper::DataKey(), 112 WebSocketHandshakeStreamBase::CreateHelper::DataKey(),
116 handshake_stream_create_helper_); 113 std::move(create_helper));
117 url_request_->SetLoadFlags(LOAD_DISABLE_CACHE | LOAD_BYPASS_CACHE); 114 url_request_->SetLoadFlags(LOAD_DISABLE_CACHE | LOAD_BYPASS_CACHE);
118 connect_delegate_->OnCreateRequest(url_request_.get()); 115 connect_delegate_->OnCreateRequest(url_request_.get());
119 } 116 }
120 117
121 // Destroying this object destroys the URLRequest, which cancels the request 118 // Destroying this object destroys the URLRequest, which cancels the request
122 // and so terminates the handshake if it is incomplete. 119 // and so terminates the handshake if it is incomplete.
123 ~WebSocketStreamRequestImpl() override {} 120 ~WebSocketStreamRequestImpl() override {}
124 121
125 void OnHandshakeStreamCreated( 122 void OnHandshakeStreamCreated(
126 WebSocketHandshakeStreamBase* handshake_stream) override { 123 WebSocketHandshakeStreamBase* handshake_stream) override {
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 // |delegate_| needs to be declared before |url_request_| so that it gets 212 // |delegate_| needs to be declared before |url_request_| so that it gets
216 // initialised first. 213 // initialised first.
217 std::unique_ptr<Delegate> delegate_; 214 std::unique_ptr<Delegate> delegate_;
218 215
219 // Deleting the WebSocketStreamRequestImpl object deletes this URLRequest 216 // Deleting the WebSocketStreamRequestImpl object deletes this URLRequest
220 // object, cancelling the whole connection. 217 // object, cancelling the whole connection.
221 std::unique_ptr<URLRequest> url_request_; 218 std::unique_ptr<URLRequest> url_request_;
222 219
223 std::unique_ptr<WebSocketStream::ConnectDelegate> connect_delegate_; 220 std::unique_ptr<WebSocketStream::ConnectDelegate> connect_delegate_;
224 221
225 // Owned by the URLRequest.
226 WebSocketHandshakeStreamCreateHelper* handshake_stream_create_helper_;
227
228 // This is owned by the caller of CreateBaseStream() or 222 // This is owned by the caller of CreateBaseStream() or
229 // CreateSpdyStream() of WebsocketHandshakeStreamCreateHelper. Both the 223 // CreateSpdyStream() of WebsocketHandshakeStreamCreateHelper. Both the
230 // stream and this object will be destroyed during the destruction of the 224 // stream and this object will be destroyed during the destruction of the
231 // URLRequest object associated with the handshake. This is only guaranteed 225 // URLRequest object associated with the handshake. This is only guaranteed
232 // to be a valid pointer if the handshake succeeded. 226 // to be a valid pointer if the handshake succeeded.
233 WebSocketHandshakeStreamBase* handshake_stream_; 227 WebSocketHandshakeStreamBase* handshake_stream_;
234 228
235 // The failure message supplied by WebSocketBasicHandshakeStream, if any. 229 // The failure message supplied by WebSocketBasicHandshakeStream, if any.
236 std::string failure_message_; 230 std::string failure_message_;
237 231
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 DCHECK(connect_delegate); 401 DCHECK(connect_delegate);
408 if (headers.get()) { 402 if (headers.get()) {
409 connect_delegate->OnFinishOpeningHandshake( 403 connect_delegate->OnFinishOpeningHandshake(
410 base::MakeUnique<WebSocketHandshakeResponseInfo>( 404 base::MakeUnique<WebSocketHandshakeResponseInfo>(
411 url, headers->response_code(), headers->GetStatusText(), headers, 405 url, headers->response_code(), headers->GetStatusText(), headers,
412 response_time)); 406 response_time));
413 } 407 }
414 } 408 }
415 409
416 } // namespace net 410 } // namespace net
OLDNEW
« no previous file with comments | « net/url_request/url_request_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698