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

Unified Diff: chrome/browser/chromeos/power/renderer_freezer.h

Issue 543303002: chromeos: power: Refactor RendererFreezer and add tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: include base/macros.h Created 6 years, 3 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: chrome/browser/chromeos/power/renderer_freezer.h
diff --git a/chrome/browser/chromeos/power/renderer_freezer.h b/chrome/browser/chromeos/power/renderer_freezer.h
index 5af26f8cb22a68f0426bfc63910065030b5a6dd1..7b80100ab311384b976ee2c66c3fa2c9b5dc8e76 100644
--- a/chrome/browser/chromeos/power/renderer_freezer.h
+++ b/chrome/browser/chromeos/power/renderer_freezer.h
@@ -6,7 +6,9 @@
#define CHROME_BROWSER_CHROMEOS_POWER_RENDERER_FREEZER_H_
#include "base/callback.h"
-#include "base/files/file_path.h"
+#include "base/cancelable_callback.h"
+#include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
#include "base/memory/weak_ptr.h"
#include "base/time/time.h"
#include "chromeos/chromeos_export.h"
@@ -20,7 +22,23 @@ namespace chromeos {
// destruction.
class CHROMEOS_EXPORT RendererFreezer : public PowerManagerClient::Observer {
public:
- RendererFreezer();
+ class Delegate {
+ public:
+ virtual ~Delegate() {}
+
+ // Freezes the chrome renderers. Returns true if the operation was
+ // successful.
+ virtual bool FreezeRenderers() = 0;
+
+ // Thaws the chrome renderers. Returns true if the operation was
+ // successful.
+ virtual bool ThawRenderers() = 0;
+
+ // Returns true iff the delegate is capable of freezing renderers.
+ virtual bool CanFreezeRenderers() = 0;
+ };
+
+ explicit RendererFreezer(scoped_ptr<Delegate> delegate);
virtual ~RendererFreezer();
// PowerManagerClient::Observer implementation
@@ -28,14 +46,15 @@ class CHROMEOS_EXPORT RendererFreezer : public PowerManagerClient::Observer {
virtual void SuspendDone(const base::TimeDelta& sleep_duration) OVERRIDE;
private:
- void OnReadyToSuspend();
+ // Called when all asynchronous work is complete and renderers can be frozen.
+ void OnReadyToSuspend(const base::Closure& power_manager_callback);
+
+ // Used to ensure that renderers do not get frozen if the suspend is canceled.
+ base::CancelableClosure suspend_readiness_callback_;
- base::FilePath state_path_;
- bool enabled_;
bool frozen_;
- // Callback used to asynchronously report suspend readiness.
- base::Closure suspend_readiness_callback_;
+ scoped_ptr<Delegate> delegate_;
base::WeakPtrFactory<RendererFreezer> weak_factory_;
« no previous file with comments | « chrome/browser/chromeos/power/freezer_cgroup_process_manager.cc ('k') | chrome/browser/chromeos/power/renderer_freezer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698