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

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

Issue 2102993002: Fix WebSocket to set first party for cookies (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update testRunner calls to setBlockThirdPartyCookies() Created 4 years, 5 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_stream.h ('k') | net/websockets/websocket_stream_cookie_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_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 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 StreamRequestImpl* owner_; 79 StreamRequestImpl* owner_;
80 HandshakeResult result_; 80 HandshakeResult result_;
81 }; 81 };
82 82
83 class StreamRequestImpl : public WebSocketStreamRequest { 83 class StreamRequestImpl : public WebSocketStreamRequest {
84 public: 84 public:
85 StreamRequestImpl( 85 StreamRequestImpl(
86 const GURL& url, 86 const GURL& url,
87 const URLRequestContext* context, 87 const URLRequestContext* context,
88 const url::Origin& origin, 88 const url::Origin& origin,
89 const GURL& first_party_for_cookies,
89 const std::string& additional_headers, 90 const std::string& additional_headers,
90 std::unique_ptr<WebSocketStream::ConnectDelegate> connect_delegate, 91 std::unique_ptr<WebSocketStream::ConnectDelegate> connect_delegate,
91 std::unique_ptr<WebSocketHandshakeStreamCreateHelper> create_helper) 92 std::unique_ptr<WebSocketHandshakeStreamCreateHelper> create_helper)
92 : delegate_(new Delegate(this)), 93 : delegate_(new Delegate(this)),
93 url_request_( 94 url_request_(
94 context->CreateRequest(url, DEFAULT_PRIORITY, delegate_.get())), 95 context->CreateRequest(url, DEFAULT_PRIORITY, delegate_.get())),
95 connect_delegate_(std::move(connect_delegate)), 96 connect_delegate_(std::move(connect_delegate)),
96 create_helper_(create_helper.release()) { 97 create_helper_(create_helper.release()) {
97 create_helper_->set_failure_message(&failure_message_); 98 create_helper_->set_failure_message(&failure_message_);
98 HttpRequestHeaders headers; 99 HttpRequestHeaders headers;
99 headers.SetHeader(websockets::kUpgrade, websockets::kWebSocketLowercase); 100 headers.SetHeader(websockets::kUpgrade, websockets::kWebSocketLowercase);
100 headers.SetHeader(HttpRequestHeaders::kConnection, websockets::kUpgrade); 101 headers.SetHeader(HttpRequestHeaders::kConnection, websockets::kUpgrade);
101 headers.SetHeader(HttpRequestHeaders::kOrigin, origin.Serialize()); 102 headers.SetHeader(HttpRequestHeaders::kOrigin, origin.Serialize());
102 headers.SetHeader(websockets::kSecWebSocketVersion, 103 headers.SetHeader(websockets::kSecWebSocketVersion,
103 websockets::kSupportedVersion); 104 websockets::kSupportedVersion);
104 105
105 headers.AddHeadersFromString(additional_headers); 106 headers.AddHeadersFromString(additional_headers);
106 107
107 url_request_->SetExtraRequestHeaders(headers); 108 url_request_->SetExtraRequestHeaders(headers);
109 url_request_->set_initiator(origin);
110 url_request_->set_first_party_for_cookies(first_party_for_cookies);
108 111
109 // This passes the ownership of |create_helper_| to |url_request_|. 112 // This passes the ownership of |create_helper_| to |url_request_|.
110 url_request_->SetUserData( 113 url_request_->SetUserData(
111 WebSocketHandshakeStreamBase::CreateHelper::DataKey(), 114 WebSocketHandshakeStreamBase::CreateHelper::DataKey(),
112 create_helper_); 115 create_helper_);
113 url_request_->SetLoadFlags(LOAD_DISABLE_CACHE | LOAD_BYPASS_CACHE); 116 url_request_->SetLoadFlags(LOAD_DISABLE_CACHE | LOAD_BYPASS_CACHE);
114 } 117 }
115 118
116 // Destroying this object destroys the URLRequest, which cancels the request 119 // Destroying this object destroys the URLRequest, which cancels the request
117 // and so terminates the handshake if it is incomplete. 120 // and so terminates the handshake if it is incomplete.
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 332
330 WebSocketStream::WebSocketStream() {} 333 WebSocketStream::WebSocketStream() {}
331 WebSocketStream::~WebSocketStream() {} 334 WebSocketStream::~WebSocketStream() {}
332 335
333 WebSocketStream::ConnectDelegate::~ConnectDelegate() {} 336 WebSocketStream::ConnectDelegate::~ConnectDelegate() {}
334 337
335 std::unique_ptr<WebSocketStreamRequest> WebSocketStream::CreateAndConnectStream( 338 std::unique_ptr<WebSocketStreamRequest> WebSocketStream::CreateAndConnectStream(
336 const GURL& socket_url, 339 const GURL& socket_url,
337 const std::vector<std::string>& requested_subprotocols, 340 const std::vector<std::string>& requested_subprotocols,
338 const url::Origin& origin, 341 const url::Origin& origin,
342 const GURL& first_party_for_cookies,
339 const std::string& additional_headers, 343 const std::string& additional_headers,
340 URLRequestContext* url_request_context, 344 URLRequestContext* url_request_context,
341 const BoundNetLog& net_log, 345 const BoundNetLog& net_log,
342 std::unique_ptr<ConnectDelegate> connect_delegate) { 346 std::unique_ptr<ConnectDelegate> connect_delegate) {
343 std::unique_ptr<WebSocketHandshakeStreamCreateHelper> create_helper( 347 std::unique_ptr<WebSocketHandshakeStreamCreateHelper> create_helper(
344 new WebSocketHandshakeStreamCreateHelper(connect_delegate.get(), 348 new WebSocketHandshakeStreamCreateHelper(connect_delegate.get(),
345 requested_subprotocols)); 349 requested_subprotocols));
346 std::unique_ptr<StreamRequestImpl> request(new StreamRequestImpl( 350 std::unique_ptr<StreamRequestImpl> request(new StreamRequestImpl(
347 socket_url, url_request_context, origin, additional_headers, 351 socket_url, url_request_context, origin, first_party_for_cookies,
348 std::move(connect_delegate), std::move(create_helper))); 352 additional_headers, std::move(connect_delegate),
353 std::move(create_helper)));
349 request->Start(std::unique_ptr<base::Timer>(new base::Timer(false, false))); 354 request->Start(std::unique_ptr<base::Timer>(new base::Timer(false, false)));
350 return std::move(request); 355 return std::move(request);
351 } 356 }
352 357
353 // This is declared in websocket_test_util.h. 358 // This is declared in websocket_test_util.h.
354 std::unique_ptr<WebSocketStreamRequest> CreateAndConnectStreamForTesting( 359 std::unique_ptr<WebSocketStreamRequest> CreateAndConnectStreamForTesting(
355 const GURL& socket_url, 360 const GURL& socket_url,
356 std::unique_ptr<WebSocketHandshakeStreamCreateHelper> create_helper, 361 std::unique_ptr<WebSocketHandshakeStreamCreateHelper> create_helper,
357 const url::Origin& origin, 362 const url::Origin& origin,
363 const GURL& first_party_for_cookies,
358 const std::string& additional_headers, 364 const std::string& additional_headers,
359 URLRequestContext* url_request_context, 365 URLRequestContext* url_request_context,
360 const BoundNetLog& net_log, 366 const BoundNetLog& net_log,
361 std::unique_ptr<WebSocketStream::ConnectDelegate> connect_delegate, 367 std::unique_ptr<WebSocketStream::ConnectDelegate> connect_delegate,
362 std::unique_ptr<base::Timer> timer) { 368 std::unique_ptr<base::Timer> timer) {
363 std::unique_ptr<StreamRequestImpl> request(new StreamRequestImpl( 369 std::unique_ptr<StreamRequestImpl> request(new StreamRequestImpl(
364 socket_url, url_request_context, origin, additional_headers, 370 socket_url, url_request_context, origin, first_party_for_cookies,
365 std::move(connect_delegate), std::move(create_helper))); 371 additional_headers, std::move(connect_delegate),
372 std::move(create_helper)));
366 request->Start(std::move(timer)); 373 request->Start(std::move(timer));
367 return std::move(request); 374 return std::move(request);
368 } 375 }
369 376
370 void WebSocketDispatchOnFinishOpeningHandshake( 377 void WebSocketDispatchOnFinishOpeningHandshake(
371 WebSocketStream::ConnectDelegate* connect_delegate, 378 WebSocketStream::ConnectDelegate* connect_delegate,
372 const GURL& url, 379 const GURL& url,
373 const scoped_refptr<HttpResponseHeaders>& headers, 380 const scoped_refptr<HttpResponseHeaders>& headers,
374 base::Time response_time) { 381 base::Time response_time) {
375 DCHECK(connect_delegate); 382 DCHECK(connect_delegate);
376 if (headers.get()) { 383 if (headers.get()) {
377 connect_delegate->OnFinishOpeningHandshake( 384 connect_delegate->OnFinishOpeningHandshake(
378 base::WrapUnique(new WebSocketHandshakeResponseInfo( 385 base::WrapUnique(new WebSocketHandshakeResponseInfo(
379 url, headers->response_code(), headers->GetStatusText(), headers, 386 url, headers->response_code(), headers->GetStatusText(), headers,
380 response_time))); 387 response_time)));
381 } 388 }
382 } 389 }
383 390
384 } // namespace net 391 } // namespace net
OLDNEW
« no previous file with comments | « net/websockets/websocket_stream.h ('k') | net/websockets/websocket_stream_cookie_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698