Chromium Code Reviews| Index: content/browser/loader/power_save_block_resource_throttle.cc |
| diff --git a/content/browser/loader/power_save_block_resource_throttle.cc b/content/browser/loader/power_save_block_resource_throttle.cc |
| index 8518f396315cd67d3e81bfff9b7f2a79402e0b65..0c38ae904f014d12c6366997366c99608e3215c0 100644 |
| --- a/content/browser/loader/power_save_block_resource_throttle.cc |
| +++ b/content/browser/loader/power_save_block_resource_throttle.cc |
| @@ -4,22 +4,59 @@ |
| #include "content/browser/loader/power_save_block_resource_throttle.h" |
| +#include "base/bind.h" |
| +#include "base/memory/weak_ptr.h" |
| +#include "base/message_loop.h" |
| #include "content/public/browser/power_save_blocker.h" |
| namespace content { |
| -PowerSaveBlockResourceThrottle::PowerSaveBlockResourceThrottle( |
| - const std::string& reason) { |
| - power_save_blocker_ = PowerSaveBlocker::Create( |
| - PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension, reason); |
| +namespace { |
| + |
| +const int kPowerSaveBlockDelaySeconds = 30; |
| + |
| +} // namespace |
| + |
| +class PowerSaveBlockResourceThrottle::PowerSaveBlockerOwner { |
|
darin (slow to review)
2013/02/12 19:20:05
I don't understand why you bothered to create this
hashimoto
2013/02/13 08:02:35
I was trying to introduce more complicated mechani
|
| + public: |
| + PowerSaveBlockerOwner() |
| + : weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { |
| + // Delay PowerSaveBlocker activation to dismiss small requests. |
| + MessageLoop::current()->PostDelayedTask( |
| + FROM_HERE, |
| + base::Bind(&PowerSaveBlockerOwner::ActivatePowerSaveBlocker, |
| + weak_ptr_factory_.GetWeakPtr()), |
| + base::TimeDelta::FromSeconds(kPowerSaveBlockDelaySeconds)); |
| + } |
| + |
| + ~PowerSaveBlockerOwner() {} |
| + |
| + void ActivatePowerSaveBlocker() { |
| + power_save_blocker_ = PowerSaveBlocker::Create( |
| + PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension, |
| + "Uploading data."); |
| + } |
| + |
| + private: |
| + scoped_ptr<PowerSaveBlocker> power_save_blocker_; |
| + base::WeakPtrFactory<PowerSaveBlockerOwner> weak_ptr_factory_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(PowerSaveBlockerOwner); |
| +}; |
| + |
| +PowerSaveBlockResourceThrottle::PowerSaveBlockResourceThrottle() { |
| } |
| PowerSaveBlockResourceThrottle::~PowerSaveBlockResourceThrottle() { |
| } |
| +void PowerSaveBlockResourceThrottle::WillStartRequest(bool* defer) { |
| + power_save_blocker_owner_.reset(new PowerSaveBlockerOwner()); |
| +} |
| + |
| void PowerSaveBlockResourceThrottle::WillProcessResponse(bool* defer) { |
| // Stop blocking power save after request finishes. |
| - power_save_blocker_.reset(); |
| + power_save_blocker_owner_.reset(); |
| } |
| } // namespace content |