// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "net/http/http_stream_factory_impl_request.h" #include #include "base/callback.h" #include "base/logging.h" #include "base/stl_util.h" #include "net/http/bidirectional_stream_impl.h" #include "net/http/http_stream_factory_impl_job.h" #include "net/log/net_log_event_type.h" #include "net/spdy/chromium/spdy_http_stream.h" #include "net/spdy/chromium/spdy_session.h" namespace net { HttpStreamFactoryImpl::Request::Request( const GURL& url, Helper* helper, HttpStreamRequest::Delegate* delegate, WebSocketHandshakeStreamBase::CreateHelper* websocket_handshake_stream_create_helper, const NetLogWithSource& net_log, StreamType stream_type) : url_(url), helper_(helper), websocket_handshake_stream_create_helper_( websocket_handshake_stream_create_helper), net_log_(net_log), completed_(false), was_alpn_negotiated_(false), negotiated_protocol_(kProtoUnknown), using_spdy_(false), stream_type_(stream_type) { net_log_.BeginEvent(NetLogEventType::HTTP_STREAM_REQUEST); } HttpStreamFactoryImpl::Request::~Request() { net_log_.EndEvent(NetLogEventType::HTTP_STREAM_REQUEST); helper_->OnRequestComplete(); } void HttpStreamFactoryImpl::Request::Complete(bool was_alpn_negotiated, NextProto negotiated_protocol, bool using_spdy) { DCHECK(!completed_); completed_ = true; was_alpn_negotiated_ = was_alpn_negotiated; negotiated_protocol_ = negotiated_protocol; using_spdy_ = using_spdy; } void HttpStreamFactoryImpl::Request::OnStreamReadyOnPooledConnection( const SSLConfig& used_ssl_config, const ProxyInfo& used_proxy_info, std::unique_ptr stream) { DCHECK(completed_); helper_->OnStreamReadyOnPooledConnection(used_ssl_config, used_proxy_info, std::move(stream)); } void HttpStreamFactoryImpl::Request:: OnBidirectionalStreamImplReadyOnPooledConnection( const SSLConfig& used_ssl_config, const ProxyInfo& used_proxy_info, std::unique_ptr stream) { DCHECK(completed_); helper_->OnBidirectionalStreamImplReadyOnPooledConnection( used_ssl_config, used_proxy_info, std::move(stream)); } int HttpStreamFactoryImpl::Request::RestartTunnelWithProxyAuth() { return helper_->RestartTunnelWithProxyAuth(); } void HttpStreamFactoryImpl::Request::SetPriority(RequestPriority priority) { helper_->SetPriority(priority); } LoadState HttpStreamFactoryImpl::Request::GetLoadState() const { return helper_->GetLoadState(); } bool HttpStreamFactoryImpl::Request::was_alpn_negotiated() const { DCHECK(completed_); return was_alpn_negotiated_; } NextProto HttpStreamFactoryImpl::Request::negotiated_protocol() const { DCHECK(completed_); return negotiated_protocol_; } bool HttpStreamFactoryImpl::Request::using_spdy() const { DCHECK(completed_); return using_spdy_; } const ConnectionAttempts& HttpStreamFactoryImpl::Request::connection_attempts() const { return connection_attempts_; } void HttpStreamFactoryImpl::Request::AddConnectionAttempts( const ConnectionAttempts& attempts) { for (const auto& attempt : attempts) connection_attempts_.push_back(attempt); } } // namespace net