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

Side by Side Diff: net/http/http_network_transaction.cc

Issue 2130493002: Implement THROTTLED priority semantics. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@NetworkStreamThrottler
Patch Set: Fix use of message_loop_ in Android tests. Created 4 years, 1 month 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/http/http_network_transaction.h ('k') | net/http/http_network_transaction_unittest.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 (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/http/http_network_transaction.h" 5 #include "net/http/http_network_transaction.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <set> 8 #include <set>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 585
586 void HttpNetworkTransaction::OnQuicBroken() { 586 void HttpNetworkTransaction::OnQuicBroken() {
587 net_error_details_.quic_broken = true; 587 net_error_details_.quic_broken = true;
588 } 588 }
589 589
590 void HttpNetworkTransaction::GetConnectionAttempts( 590 void HttpNetworkTransaction::GetConnectionAttempts(
591 ConnectionAttempts* out) const { 591 ConnectionAttempts* out) const {
592 *out = connection_attempts_; 592 *out = connection_attempts_;
593 } 593 }
594 594
595 void HttpNetworkTransaction::OnThrottleStateChanged() { 595 void HttpNetworkTransaction::OnThrottleUnblocked(
596 NetworkThrottleManager::Throttle* throttle) {
596 // TODO(rdsmith): This DCHECK is dependent on the only transition 597 // TODO(rdsmith): This DCHECK is dependent on the only transition
597 // being from throttled->unthrottled. That is true right now, but may not 598 // being from blocked->unblocked. That is true right now, but may not
598 // be so in the future. 599 // be so in the future.
599 DCHECK_EQ(STATE_THROTTLE_COMPLETE, next_state_); 600 DCHECK_EQ(STATE_THROTTLE_COMPLETE, next_state_);
600 601
601 net_log_.EndEvent(NetLogEventType::HTTP_TRANSACTION_THROTTLED); 602 net_log_.EndEvent(NetLogEventType::HTTP_TRANSACTION_THROTTLED);
602 603
603 DoLoop(OK); 604 DoLoop(OK);
604 } 605 }
605 606
606 bool HttpNetworkTransaction::IsSecureRequest() const { 607 bool HttpNetworkTransaction::IsSecureRequest() const {
607 return request_->url.SchemeIsCryptographic(); 608 return request_->url.SchemeIsCryptographic();
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
790 NOTREACHED() << "bad state"; 791 NOTREACHED() << "bad state";
791 rv = ERR_FAILED; 792 rv = ERR_FAILED;
792 break; 793 break;
793 } 794 }
794 } while (rv != ERR_IO_PENDING && next_state_ != STATE_NONE); 795 } while (rv != ERR_IO_PENDING && next_state_ != STATE_NONE);
795 796
796 return rv; 797 return rv;
797 } 798 }
798 799
799 int HttpNetworkTransaction::DoThrottle() { 800 int HttpNetworkTransaction::DoThrottle() {
801 DCHECK(!throttle_);
800 throttle_ = session_->throttler()->CreateThrottle( 802 throttle_ = session_->throttler()->CreateThrottle(
801 this, priority_, (request_->load_flags & LOAD_IGNORE_LIMITS) != 0); 803 this, priority_, (request_->load_flags & LOAD_IGNORE_LIMITS) != 0);
802 next_state_ = STATE_THROTTLE_COMPLETE; 804 next_state_ = STATE_THROTTLE_COMPLETE;
803 805
804 if (throttle_->IsThrottled()) { 806 if (throttle_->IsBlocked()) {
805 net_log_.BeginEvent(NetLogEventType::HTTP_TRANSACTION_THROTTLED); 807 net_log_.BeginEvent(NetLogEventType::HTTP_TRANSACTION_THROTTLED);
806 return ERR_IO_PENDING; 808 return ERR_IO_PENDING;
807 } 809 }
808 810
809 return OK; 811 return OK;
810 } 812 }
811 813
812 int HttpNetworkTransaction::DoThrottleComplete() { 814 int HttpNetworkTransaction::DoThrottleComplete() {
813 DCHECK(throttle_); 815 DCHECK(throttle_);
814 DCHECK(!throttle_->IsThrottled()); 816 DCHECK(!throttle_->IsBlocked());
815 817
816 next_state_ = STATE_NOTIFY_BEFORE_CREATE_STREAM; 818 next_state_ = STATE_NOTIFY_BEFORE_CREATE_STREAM;
817 819
818 return OK; 820 return OK;
819 } 821 }
820 822
821 int HttpNetworkTransaction::DoNotifyBeforeCreateStream() { 823 int HttpNetworkTransaction::DoNotifyBeforeCreateStream() {
822 next_state_ = STATE_CREATE_STREAM; 824 next_state_ = STATE_CREATE_STREAM;
823 bool defer = false; 825 bool defer = false;
824 if (!before_network_start_callback_.is_null()) 826 if (!before_network_start_callback_.is_null())
(...skipping 874 matching lines...) Expand 10 before | Expand all | Expand 10 after
1699 DCHECK(stream_request_); 1701 DCHECK(stream_request_);
1700 1702
1701 // Since the transaction can restart with auth credentials, it may create a 1703 // Since the transaction can restart with auth credentials, it may create a
1702 // stream more than once. Accumulate all of the connection attempts across 1704 // stream more than once. Accumulate all of the connection attempts across
1703 // those streams by appending them to the vector: 1705 // those streams by appending them to the vector:
1704 for (const auto& attempt : stream_request_->connection_attempts()) 1706 for (const auto& attempt : stream_request_->connection_attempts())
1705 connection_attempts_.push_back(attempt); 1707 connection_attempts_.push_back(attempt);
1706 } 1708 }
1707 1709
1708 } // namespace net 1710 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_network_transaction.h ('k') | net/http/http_network_transaction_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698