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

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

Issue 19269012: Don't persist HPKP if PrivacyMode is enabled. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address codereview nit and fix compilation error in OFFICIAL_BUILD. Created 7 years, 3 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 349 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 360
361 // handshake message is completed. 361 // handshake message is completed.
362 handshake_response_->set_protocol_version( 362 handshake_response_->set_protocol_version(
363 handshake_request_->protocol_version()); 363 handshake_request_->protocol_version());
364 AddCookieHeaderAndSend(); 364 AddCookieHeaderAndSend();
365 return true; 365 return true;
366 } 366 }
367 367
368 void WebSocketJob::AddCookieHeaderAndSend() { 368 void WebSocketJob::AddCookieHeaderAndSend() {
369 bool allow = true; 369 bool allow = true;
370 if (delegate_ && !delegate_->CanGetCookies(socket_.get(), GetURLForCookies())) 370 GURL url_for_cookies(socket_->url_for_cookies());
371 if (delegate_ && !delegate_->CanGetCookies(socket_.get(), url_for_cookies))
371 allow = false; 372 allow = false;
372 373
373 if (socket_.get() && delegate_ && state_ == CONNECTING) { 374 if (socket_.get() && delegate_ && state_ == CONNECTING) {
374 handshake_request_->RemoveHeaders(kCookieHeaders, 375 handshake_request_->RemoveHeaders(kCookieHeaders,
375 arraysize(kCookieHeaders)); 376 arraysize(kCookieHeaders));
376 if (allow && socket_->context()->cookie_store()) { 377 if (allow && socket_->context()->cookie_store()) {
377 // Add cookies, including HttpOnly cookies. 378 // Add cookies, including HttpOnly cookies.
378 CookieOptions cookie_options; 379 CookieOptions cookie_options;
379 cookie_options.set_include_httponly(); 380 cookie_options.set_include_httponly();
380 socket_->context()->cookie_store()->GetCookiesWithOptionsAsync( 381 socket_->context()->cookie_store()->GetCookiesWithOptionsAsync(
381 GetURLForCookies(), cookie_options, 382 url_for_cookies,
383 cookie_options,
382 base::Bind(&WebSocketJob::LoadCookieCallback, 384 base::Bind(&WebSocketJob::LoadCookieCallback,
383 weak_ptr_factory_.GetWeakPtr())); 385 weak_ptr_factory_.GetWeakPtr()));
384 } else { 386 } else {
385 DoSendData(); 387 DoSendData();
386 } 388 }
387 } 389 }
388 } 390 }
389 391
390 void WebSocketJob::LoadCookieCallback(const std::string& cookie) { 392 void WebSocketJob::LoadCookieCallback(const std::string& cookie) {
391 if (!cookie.empty()) 393 if (!cookie.empty())
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 } 504 }
503 505
504 void WebSocketJob::SaveNextCookie() { 506 void WebSocketJob::SaveNextCookie() {
505 if (!socket_.get() || !delegate_ || state_ != CONNECTING) 507 if (!socket_.get() || !delegate_ || state_ != CONNECTING)
506 return; 508 return;
507 509
508 callback_pending_ = false; 510 callback_pending_ = false;
509 save_next_cookie_running_ = true; 511 save_next_cookie_running_ = true;
510 512
511 if (socket_->context()->cookie_store()) { 513 if (socket_->context()->cookie_store()) {
512 GURL url_for_cookies = GetURLForCookies(); 514 GURL url_for_cookies(socket_->url_for_cookies());
513 515
514 CookieOptions options; 516 CookieOptions options;
515 options.set_include_httponly(); 517 options.set_include_httponly();
516 518
517 // Loop as long as SetCookieWithOptionsAsync completes synchronously. Since 519 // Loop as long as SetCookieWithOptionsAsync completes synchronously. Since
518 // CookieMonster's asynchronous operation APIs queue the callback to run it 520 // CookieMonster's asynchronous operation APIs queue the callback to run it
519 // on the thread where the API was called, there won't be race. I.e. unless 521 // on the thread where the API was called, there won't be race. I.e. unless
520 // the callback is run synchronously, it won't be run in parallel with this 522 // the callback is run synchronously, it won't be run in parallel with this
521 // method. 523 // method.
522 while (!callback_pending_ && 524 while (!callback_pending_ &&
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 callback_pending_ = false; 558 callback_pending_ = false;
557 559
558 // Resume SaveNextCookie if the caller of SetCookieWithOptionsAsync() exited 560 // Resume SaveNextCookie if the caller of SetCookieWithOptionsAsync() exited
559 // the loop. Otherwise, return. 561 // the loop. Otherwise, return.
560 if (save_next_cookie_running_) 562 if (save_next_cookie_running_)
561 return; 563 return;
562 564
563 SaveNextCookie(); 565 SaveNextCookie();
564 } 566 }
565 567
566 GURL WebSocketJob::GetURLForCookies() const {
567 GURL url = socket_->url();
568 std::string scheme = socket_->is_secure() ? "https" : "http";
569 url_canon::Replacements<char> replacements;
570 replacements.SetScheme(scheme.c_str(),
571 url_parse::Component(0, scheme.length()));
572 return url.ReplaceComponents(replacements);
573 }
574
575 const AddressList& WebSocketJob::address_list() const { 568 const AddressList& WebSocketJob::address_list() const {
576 return addresses_; 569 return addresses_;
577 } 570 }
578 571
579 int WebSocketJob::TrySpdyStream() { 572 int WebSocketJob::TrySpdyStream() {
580 if (!socket_.get()) 573 if (!socket_.get())
581 return ERR_FAILED; 574 return ERR_FAILED;
582 575
583 if (!websocket_over_spdy_enabled_) 576 if (!websocket_over_spdy_enabled_)
584 return OK; 577 return OK;
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 688
696 scoped_refptr<IOBufferWithSize> next_buffer = send_buffer_queue_.front(); 689 scoped_refptr<IOBufferWithSize> next_buffer = send_buffer_queue_.front();
697 send_buffer_queue_.pop_front(); 690 send_buffer_queue_.pop_front();
698 current_send_buffer_ = 691 current_send_buffer_ =
699 new DrainableIOBuffer(next_buffer.get(), next_buffer->size()); 692 new DrainableIOBuffer(next_buffer.get(), next_buffer->size());
700 SendDataInternal(current_send_buffer_->data(), 693 SendDataInternal(current_send_buffer_->data(),
701 current_send_buffer_->BytesRemaining()); 694 current_send_buffer_->BytesRemaining());
702 } 695 }
703 696
704 } // namespace net 697 } // namespace net
OLDNEW
« net/socket/ssl_client_socket_nss.cc ('K') | « net/websockets/websocket_job.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698