// Copyright (c) 2013 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 "content/browser/loader/power_save_block_resource_throttle.h" #include "content/public/browser/power_save_blocker.h" namespace content { namespace { const int kPowerSaveBlockDelaySeconds = 30; } // namespace PowerSaveBlockResourceThrottle::PowerSaveBlockResourceThrottle( const std::string& host) : host_(host) {} PowerSaveBlockResourceThrottle::~PowerSaveBlockResourceThrottle() { } void PowerSaveBlockResourceThrottle::WillStartRequest(bool* defer) { // Delay PowerSaveBlocker activation to dismiss small requests. timer_.Start(FROM_HERE, base::TimeDelta::FromSeconds(kPowerSaveBlockDelaySeconds), this, &PowerSaveBlockResourceThrottle::ActivatePowerSaveBlocker); } void PowerSaveBlockResourceThrottle::WillProcessResponse(bool* defer) { // Stop blocking power save after request finishes. power_save_blocker_.reset(); timer_.Stop(); } const char* PowerSaveBlockResourceThrottle::GetNameForLogging() const { return "PowerSaveBlockResourceThrottle"; } void PowerSaveBlockResourceThrottle::ActivatePowerSaveBlocker() { power_save_blocker_ = PowerSaveBlocker::Create( PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension, PowerSaveBlocker::kReasonOther, "Uploading data to " + host_); } } // namespace content