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

Side by Side Diff: trunk/src/net/websockets/websocket_job.cc

Issue 197463003: Revert 256579 "Allow the content browser client to specify a spe..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 9 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_job.h" 5 #include "net/websockets/websocket_job.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
(...skipping 18 matching lines...) Expand all
29 29
30 // lower-case header names. 30 // lower-case header names.
31 const char* const kCookieHeaders[] = { 31 const char* const kCookieHeaders[] = {
32 "cookie", "cookie2" 32 "cookie", "cookie2"
33 }; 33 };
34 const char* const kSetCookieHeaders[] = { 34 const char* const kSetCookieHeaders[] = {
35 "set-cookie", "set-cookie2" 35 "set-cookie", "set-cookie2"
36 }; 36 };
37 37
38 net::SocketStreamJob* WebSocketJobFactory( 38 net::SocketStreamJob* WebSocketJobFactory(
39 const GURL& url, net::SocketStream::Delegate* delegate, 39 const GURL& url, net::SocketStream::Delegate* delegate) {
40 net::URLRequestContext* context, net::CookieStore* cookie_store) {
41 net::WebSocketJob* job = new net::WebSocketJob(delegate); 40 net::WebSocketJob* job = new net::WebSocketJob(delegate);
42 job->InitSocketStream(new net::SocketStream(url, job, context, cookie_store)); 41 job->InitSocketStream(new net::SocketStream(url, job));
43 return job; 42 return job;
44 } 43 }
45 44
46 class WebSocketJobInitSingleton { 45 class WebSocketJobInitSingleton {
47 private: 46 private:
48 friend struct base::DefaultLazyInstanceTraits<WebSocketJobInitSingleton>; 47 friend struct base::DefaultLazyInstanceTraits<WebSocketJobInitSingleton>;
49 WebSocketJobInitSingleton() { 48 WebSocketJobInitSingleton() {
50 net::SocketStreamJob::RegisterProtocolFactory("ws", WebSocketJobFactory); 49 net::SocketStreamJob::RegisterProtocolFactory("ws", WebSocketJobFactory);
51 net::SocketStreamJob::RegisterProtocolFactory("wss", WebSocketJobFactory); 50 net::SocketStreamJob::RegisterProtocolFactory("wss", WebSocketJobFactory);
52 } 51 }
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 } 363 }
365 364
366 void WebSocketJob::AddCookieHeaderAndSend() { 365 void WebSocketJob::AddCookieHeaderAndSend() {
367 bool allow = true; 366 bool allow = true;
368 if (delegate_ && !delegate_->CanGetCookies(socket_.get(), GetURLForCookies())) 367 if (delegate_ && !delegate_->CanGetCookies(socket_.get(), GetURLForCookies()))
369 allow = false; 368 allow = false;
370 369
371 if (socket_.get() && delegate_ && state_ == CONNECTING) { 370 if (socket_.get() && delegate_ && state_ == CONNECTING) {
372 handshake_request_->RemoveHeaders(kCookieHeaders, 371 handshake_request_->RemoveHeaders(kCookieHeaders,
373 arraysize(kCookieHeaders)); 372 arraysize(kCookieHeaders));
374 if (allow && socket_->cookie_store()) { 373 if (allow && socket_->context()->cookie_store()) {
375 // Add cookies, including HttpOnly cookies. 374 // Add cookies, including HttpOnly cookies.
376 CookieOptions cookie_options; 375 CookieOptions cookie_options;
377 cookie_options.set_include_httponly(); 376 cookie_options.set_include_httponly();
378 socket_->cookie_store()->GetCookiesWithOptionsAsync( 377 socket_->context()->cookie_store()->GetCookiesWithOptionsAsync(
379 GetURLForCookies(), cookie_options, 378 GetURLForCookies(), cookie_options,
380 base::Bind(&WebSocketJob::LoadCookieCallback, 379 base::Bind(&WebSocketJob::LoadCookieCallback,
381 weak_ptr_factory_.GetWeakPtr())); 380 weak_ptr_factory_.GetWeakPtr()));
382 } else { 381 } else {
383 DoSendData(); 382 DoSendData();
384 } 383 }
385 } 384 }
386 } 385 }
387 386
388 void WebSocketJob::LoadCookieCallback(const std::string& cookie) { 387 void WebSocketJob::LoadCookieCallback(const std::string& cookie) {
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 WebSocketThrottle::GetInstance()->RemoveFromQueue(this); 498 WebSocketThrottle::GetInstance()->RemoveFromQueue(this);
500 } 499 }
501 500
502 void WebSocketJob::SaveNextCookie() { 501 void WebSocketJob::SaveNextCookie() {
503 if (!socket_.get() || !delegate_ || state_ != CONNECTING) 502 if (!socket_.get() || !delegate_ || state_ != CONNECTING)
504 return; 503 return;
505 504
506 callback_pending_ = false; 505 callback_pending_ = false;
507 save_next_cookie_running_ = true; 506 save_next_cookie_running_ = true;
508 507
509 if (socket_->cookie_store()) { 508 if (socket_->context()->cookie_store()) {
510 GURL url_for_cookies = GetURLForCookies(); 509 GURL url_for_cookies = GetURLForCookies();
511 510
512 CookieOptions options; 511 CookieOptions options;
513 options.set_include_httponly(); 512 options.set_include_httponly();
514 513
515 // Loop as long as SetCookieWithOptionsAsync completes synchronously. Since 514 // Loop as long as SetCookieWithOptionsAsync completes synchronously. Since
516 // CookieMonster's asynchronous operation APIs queue the callback to run it 515 // CookieMonster's asynchronous operation APIs queue the callback to run it
517 // on the thread where the API was called, there won't be race. I.e. unless 516 // on the thread where the API was called, there won't be race. I.e. unless
518 // the callback is run synchronously, it won't be run in parallel with this 517 // the callback is run synchronously, it won't be run in parallel with this
519 // method. 518 // method.
520 while (!callback_pending_ && 519 while (!callback_pending_ &&
521 response_cookies_save_index_ < response_cookies_.size()) { 520 response_cookies_save_index_ < response_cookies_.size()) {
522 std::string cookie = response_cookies_[response_cookies_save_index_]; 521 std::string cookie = response_cookies_[response_cookies_save_index_];
523 response_cookies_save_index_++; 522 response_cookies_save_index_++;
524 523
525 if (!delegate_->CanSetCookie( 524 if (!delegate_->CanSetCookie(
526 socket_.get(), url_for_cookies, cookie, &options)) 525 socket_.get(), url_for_cookies, cookie, &options))
527 continue; 526 continue;
528 527
529 callback_pending_ = true; 528 callback_pending_ = true;
530 socket_->cookie_store()->SetCookieWithOptionsAsync( 529 socket_->context()->cookie_store()->SetCookieWithOptionsAsync(
531 url_for_cookies, cookie, options, 530 url_for_cookies, cookie, options,
532 base::Bind(&WebSocketJob::OnCookieSaved, 531 base::Bind(&WebSocketJob::OnCookieSaved,
533 weak_ptr_factory_.GetWeakPtr())); 532 weak_ptr_factory_.GetWeakPtr()));
534 } 533 }
535 } 534 }
536 535
537 save_next_cookie_running_ = false; 536 save_next_cookie_running_ = false;
538 537
539 if (callback_pending_) 538 if (callback_pending_)
540 return; 539 return;
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 692
694 scoped_refptr<IOBufferWithSize> next_buffer = send_buffer_queue_.front(); 693 scoped_refptr<IOBufferWithSize> next_buffer = send_buffer_queue_.front();
695 send_buffer_queue_.pop_front(); 694 send_buffer_queue_.pop_front();
696 current_send_buffer_ = 695 current_send_buffer_ =
697 new DrainableIOBuffer(next_buffer.get(), next_buffer->size()); 696 new DrainableIOBuffer(next_buffer.get(), next_buffer->size());
698 SendDataInternal(current_send_buffer_->data(), 697 SendDataInternal(current_send_buffer_->data(),
699 current_send_buffer_->BytesRemaining()); 698 current_send_buffer_->BytesRemaining());
700 } 699 }
701 700
702 } // namespace net 701 } // namespace net
OLDNEW
« no previous file with comments | « trunk/src/net/url_request/url_request_job.cc ('k') | trunk/src/net/websockets/websocket_job_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698