blob: 87969bab8245b595ccb5be66b7c9e300d0cc47fe [file] [log] [blame]
license.botbf09a502008-08-24 00:55:551// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
initial.commit586acc5fe2008-07-26 22:42:524
5#include "net/http/http_network_layer.h"
6
[email protected]0dfc81b2008-08-25 03:44:407#include "base/logging.h"
initial.commit586acc5fe2008-07-26 22:42:528#include "net/http/http_network_session.h"
9#include "net/http/http_network_transaction.h"
[email protected]f7984fc62009-06-22 23:26:4410#include "net/socket/client_socket_factory.h"
initial.commit586acc5fe2008-07-26 22:42:5211
12namespace net {
13
14//-----------------------------------------------------------------------------
15
initial.commit586acc5fe2008-07-26 22:42:5216// static
17HttpTransactionFactory* HttpNetworkLayer::CreateFactory(
[email protected]8a00f00a2009-06-12 00:49:3818 HostResolver* host_resolver,
[email protected]db36938c2009-08-19 21:48:4219 ProxyService* proxy_service,
20 SSLConfigService* ssl_config_service) {
[email protected]63de95b2008-12-10 04:11:2721 DCHECK(proxy_service);
initial.commit586acc5fe2008-07-26 22:42:5222
[email protected]c6894572009-06-16 17:10:1023 return new HttpNetworkLayer(ClientSocketFactory::GetDefaultFactory(),
[email protected]db36938c2009-08-19 21:48:4224 host_resolver, proxy_service, ssl_config_service);
initial.commit586acc5fe2008-07-26 22:42:5225}
26
[email protected]e7f29642009-03-02 22:53:1827// static
28HttpTransactionFactory* HttpNetworkLayer::CreateFactory(
29 HttpNetworkSession* session) {
30 DCHECK(session);
31
32 return new HttpNetworkLayer(session);
33}
34
initial.commit586acc5fe2008-07-26 22:42:5235//-----------------------------------------------------------------------------
36
[email protected]c6894572009-06-16 17:10:1037HttpNetworkLayer::HttpNetworkLayer(ClientSocketFactory* socket_factory,
38 HostResolver* host_resolver,
[email protected]db36938c2009-08-19 21:48:4239 ProxyService* proxy_service,
40 SSLConfigService* ssl_config_service)
[email protected]c6894572009-06-16 17:10:1041 : socket_factory_(socket_factory),
42 host_resolver_(host_resolver),
[email protected]8a00f00a2009-06-12 00:49:3843 proxy_service_(proxy_service),
[email protected]db36938c2009-08-19 21:48:4244 ssl_config_service_(ssl_config_service),
[email protected]8a00f00a2009-06-12 00:49:3845 session_(NULL),
46 suspended_(false) {
[email protected]63de95b2008-12-10 04:11:2747 DCHECK(proxy_service_);
[email protected]db36938c2009-08-19 21:48:4248 DCHECK(ssl_config_service_.get());
initial.commit586acc5fe2008-07-26 22:42:5249}
50
[email protected]e7f29642009-03-02 22:53:1851HttpNetworkLayer::HttpNetworkLayer(HttpNetworkSession* session)
[email protected]c6894572009-06-16 17:10:1052 : socket_factory_(ClientSocketFactory::GetDefaultFactory()),
[email protected]db36938c2009-08-19 21:48:4253 ssl_config_service_(NULL),
[email protected]c6894572009-06-16 17:10:1054 session_(session),
55 suspended_(false) {
[email protected]e7f29642009-03-02 22:53:1856 DCHECK(session_.get());
57}
58
initial.commit586acc5fe2008-07-26 22:42:5259HttpNetworkLayer::~HttpNetworkLayer() {
60}
61
62HttpTransaction* HttpNetworkLayer::CreateTransaction() {
63 if (suspended_)
64 return NULL;
65
[email protected]c6894572009-06-16 17:10:1066 return new HttpNetworkTransaction(GetSession(), socket_factory_);
initial.commit586acc5fe2008-07-26 22:42:5267}
68
69HttpCache* HttpNetworkLayer::GetCache() {
70 return NULL;
71}
72
initial.commit586acc5fe2008-07-26 22:42:5273void HttpNetworkLayer::Suspend(bool suspend) {
74 suspended_ = suspend;
75
[email protected]a3b006eea2008-10-22 21:23:0876 if (suspend && session_)
[email protected]a937a06d2009-08-19 21:19:2477 session_->tcp_socket_pool()->CloseIdleSockets();
initial.commit586acc5fe2008-07-26 22:42:5278}
79
[email protected]e7f29642009-03-02 22:53:1880HttpNetworkSession* HttpNetworkLayer::GetSession() {
81 if (!session_) {
82 DCHECK(proxy_service_);
[email protected]8a00f00a2009-06-12 00:49:3883 session_ = new HttpNetworkSession(host_resolver_, proxy_service_,
[email protected]db36938c2009-08-19 21:48:4284 socket_factory_, ssl_config_service_);
[email protected]80d6524d2009-08-18 03:58:0985 // These were just temps for lazy-initializing HttpNetworkSession.
86 host_resolver_ = NULL;
87 proxy_service_ = NULL;
[email protected]e7f29642009-03-02 22:53:1888 }
89 return session_;
90}
91
initial.commit586acc5fe2008-07-26 22:42:5292} // namespace net