Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(79)

Unified Diff: content/browser/loader/power_save_block_resource_throttle.cc

Issue 12226005: Minimize PowerSaveBlocker usage during uploading data. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: _ Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
« no previous file with comments | « content/browser/loader/power_save_block_resource_throttle.h ('k') | content/browser/loader/resource_dispatcher_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698