• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2012 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "net/http/http_stream_request.h"
6 
7 #include <utility>
8 
9 #include "base/check.h"
10 #include "base/functional/callback.h"
11 #include "net/http/bidirectional_stream_impl.h"
12 #include "net/log/net_log_event_type.h"
13 #include "net/spdy/bidirectional_stream_spdy_impl.h"
14 #include "net/spdy/spdy_http_stream.h"
15 #include "net/spdy/spdy_session.h"
16 
17 namespace net {
18 
HttpStreamRequest(Helper * helper,WebSocketHandshakeStreamBase::CreateHelper * websocket_handshake_stream_create_helper,const NetLogWithSource & net_log,StreamType stream_type)19 HttpStreamRequest::HttpStreamRequest(
20     Helper* helper,
21     WebSocketHandshakeStreamBase::CreateHelper*
22         websocket_handshake_stream_create_helper,
23     const NetLogWithSource& net_log,
24     StreamType stream_type)
25     : helper_(helper),
26       websocket_handshake_stream_create_helper_(
27           websocket_handshake_stream_create_helper),
28       net_log_(net_log),
29       stream_type_(stream_type) {
30   net_log_.BeginEvent(NetLogEventType::HTTP_STREAM_REQUEST);
31 }
32 
~HttpStreamRequest()33 HttpStreamRequest::~HttpStreamRequest() {
34   net_log_.EndEvent(NetLogEventType::HTTP_STREAM_REQUEST);
35   helper_.ExtractAsDangling()->OnRequestComplete();  // May delete `*helper_`;
36 }
37 
Complete(NextProto negotiated_protocol,AlternateProtocolUsage alternate_protocol_usage)38 void HttpStreamRequest::Complete(
39     NextProto negotiated_protocol,
40     AlternateProtocolUsage alternate_protocol_usage) {
41   DCHECK(!completed_);
42   completed_ = true;
43   negotiated_protocol_ = negotiated_protocol;
44   alternate_protocol_usage_ = alternate_protocol_usage;
45 }
46 
RestartTunnelWithProxyAuth()47 int HttpStreamRequest::RestartTunnelWithProxyAuth() {
48   return helper_->RestartTunnelWithProxyAuth();
49 }
50 
SetPriority(RequestPriority priority)51 void HttpStreamRequest::SetPriority(RequestPriority priority) {
52   helper_->SetPriority(priority);
53 }
54 
GetLoadState() const55 LoadState HttpStreamRequest::GetLoadState() const {
56   return helper_->GetLoadState();
57 }
58 
negotiated_protocol() const59 NextProto HttpStreamRequest::negotiated_protocol() const {
60   DCHECK(completed_);
61   return negotiated_protocol_;
62 }
63 
alternate_protocol_usage() const64 AlternateProtocolUsage HttpStreamRequest::alternate_protocol_usage() const {
65   DCHECK(completed_);
66   return alternate_protocol_usage_;
67 }
68 
connection_attempts() const69 const ConnectionAttempts& HttpStreamRequest::connection_attempts() const {
70   return connection_attempts_;
71 }
72 
AddConnectionAttempts(const ConnectionAttempts & attempts)73 void HttpStreamRequest::AddConnectionAttempts(
74     const ConnectionAttempts& attempts) {
75   for (const auto& attempt : attempts) {
76     connection_attempts_.push_back(attempt);
77   }
78 }
79 
80 WebSocketHandshakeStreamBase::CreateHelper*
websocket_handshake_stream_create_helper() const81 HttpStreamRequest::websocket_handshake_stream_create_helper() const {
82   return websocket_handshake_stream_create_helper_;
83 }
84 
SetDnsResolutionTimeOverrides(base::TimeTicks dns_resolution_start_time_override,base::TimeTicks dns_resolution_end_time_override)85 void HttpStreamRequest::SetDnsResolutionTimeOverrides(
86     base::TimeTicks dns_resolution_start_time_override,
87     base::TimeTicks dns_resolution_end_time_override) {
88   CHECK(!dns_resolution_start_time_override.is_null());
89   CHECK(!dns_resolution_end_time_override.is_null());
90   if (dns_resolution_start_time_override_.is_null() ||
91       (dns_resolution_start_time_override <
92        dns_resolution_start_time_override_)) {
93     dns_resolution_start_time_override_ = dns_resolution_start_time_override;
94   }
95   if (dns_resolution_end_time_override_.is_null() ||
96       (dns_resolution_end_time_override < dns_resolution_end_time_override_)) {
97     dns_resolution_end_time_override_ = dns_resolution_end_time_override;
98   }
99 }
100 
101 }  // namespace net
102