summaryrefslogtreecommitdiffstats
path: root/chrome/browser/power_save_blocker_mac.cc
diff options
context:
space:
mode:
authoravi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-24 15:53:49 +0000
committeravi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-24 15:53:49 +0000
commit71a565a7f31ec351a46a726e46b3d4194bba348a (patch)
tree2cc34b453db501462066ad694e9f14bace29a10f /chrome/browser/power_save_blocker_mac.cc
parentce8a9ca8389aa6a39c5622653e4ff9266cc0be18 (diff)
downloadchromium_src-71a565a7f31ec351a46a726e46b3d4194bba348a.zip
chromium_src-71a565a7f31ec351a46a726e46b3d4194bba348a.tar.gz
chromium_src-71a565a7f31ec351a46a726e46b3d4194bba348a.tar.bz2
Add sleep blocker for Mac.
BUG=34081 TEST=as in bug Review URL: http://codereview.chromium.org/5360001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@67267 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/power_save_blocker_mac.cc')
-rw-r--r--chrome/browser/power_save_blocker_mac.cc36
1 files changed, 36 insertions, 0 deletions
diff --git a/chrome/browser/power_save_blocker_mac.cc b/chrome/browser/power_save_blocker_mac.cc
new file mode 100644
index 0000000..12a40ec
--- /dev/null
+++ b/chrome/browser/power_save_blocker_mac.cc
@@ -0,0 +1,36 @@
+// Copyright (c) 2010 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 "chrome/browser/power_save_blocker.h"
+
+#include <IOKit/pwr_mgt/IOPMLib.h>
+
+#include "chrome/browser/browser_thread.h"
+
+// Run on the UI thread only.
+void PowerSaveBlocker::ApplyBlock(bool blocking) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
+ // Block just idle sleep; allow display sleep.
+ // See QA1340 <http://developer.apple.com/library/mac/#qa/qa2004/qa1340.html>
+ // for more details.
+
+ static IOPMAssertionID sleep_assertion = kIOPMNullAssertionID;
+ IOReturn result;
+ if (blocking) {
+ DCHECK_EQ(sleep_assertion, kIOPMNullAssertionID);
+ result = IOPMAssertionCreate(
+ kIOPMAssertionTypeNoIdleSleep,
+ kIOPMAssertionLevelOn,
+ &sleep_assertion);
+ } else {
+ DCHECK_NE(sleep_assertion, kIOPMNullAssertionID);
+ result = IOPMAssertionRelease(sleep_assertion);
+ sleep_assertion = kIOPMNullAssertionID;
+ }
+
+ if (result != kIOReturnSuccess) {
+ NOTREACHED();
+ }
+}