power_save_blocker.h revision c407dc5cd9bdc5668497f21b26b09d988ab439de
1// Copyright (c) 2009 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_POWER_SAVE_BLOCKER_H_
6#define CHROME_BROWSER_POWER_SAVE_BLOCKER_H_
7
8#include "base/basictypes.h"
9
10// A RAII-style class to block the system from entering low-power
11// (sleep) mode.
12class PowerSaveBlocker {
13 public:
14  explicit PowerSaveBlocker(bool enabled);
15  ~PowerSaveBlocker();
16
17  bool enabled() const { return enabled_; }
18
19  // Puts the sleep mode block into effect.
20  void Enable();
21  // Disables the sleep block.
22  void Disable();
23
24 private:
25  // Platform-specific function called when enable state is changed.
26  // Guarenteed to be called only from the UI thread.
27  static void ApplyBlock(bool blocked);
28
29  // Called only from UI thread.
30  static void AdjustBlockCount(int delta);
31
32  // Invokes AdjustBlockCount on the UI thread.
33  static void PostAdjustBlockCount(int delta);
34
35  bool enabled_;
36
37  static int blocker_count_;
38
39  DISALLOW_COPY_AND_ASSIGN(PowerSaveBlocker);
40};
41
42#endif  // CHROME_BROWSER_POWER_SAVE_BLOCKER_H_
43