// 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_network_layer.h" #include "base/logging.h" #include "base/power_monitor/power_monitor.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "net/http/http_network_session.h" #include "net/http/http_network_transaction.h" #include "net/http/http_server_properties_impl.h" #include "net/http/http_stream_factory_job.h" #include "net/spdy/spdy_session.h" #include "net/spdy/spdy_session_pool.h" #include "net/third_party/spdy/core/spdy_framer.h" namespace net { HttpNetworkLayer::HttpNetworkLayer(HttpNetworkSession* session) : session_(session), suspended_(false) { DCHECK(session_); #if defined(OS_WIN) base::PowerMonitor* power_monitor = base::PowerMonitor::Get(); if (power_monitor) power_monitor->AddObserver(this); #endif } HttpNetworkLayer::~HttpNetworkLayer() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); #if defined(OS_WIN) base::PowerMonitor* power_monitor = base::PowerMonitor::Get(); if (power_monitor) power_monitor->RemoveObserver(this); #endif } int HttpNetworkLayer::CreateTransaction( RequestPriority priority, std::unique_ptr* trans) { if (suspended_) return ERR_NETWORK_IO_SUSPENDED; trans->reset(new HttpNetworkTransaction(priority, GetSession())); return OK; } HttpCache* HttpNetworkLayer::GetCache() { return NULL; } HttpNetworkSession* HttpNetworkLayer::GetSession() { return session_; } void HttpNetworkLayer::OnSuspend() { suspended_ = true; session_->CloseIdleConnections(); } void HttpNetworkLayer::OnResume() { suspended_ = false; } } // namespace net