summaryrefslogtreecommitdiffstats
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
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
-rw-r--r--chrome/browser/power_save_blocker_mac.cc36
-rw-r--r--chrome/browser/power_save_blocker_stub.cc1
-rw-r--r--chrome/chrome_browser.gypi2
3 files changed, 38 insertions, 1 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();
+ }
+}
diff --git a/chrome/browser/power_save_blocker_stub.cc b/chrome/browser/power_save_blocker_stub.cc
index a509e63..2c1a7e3 100644
--- a/chrome/browser/power_save_blocker_stub.cc
+++ b/chrome/browser/power_save_blocker_stub.cc
@@ -8,5 +8,4 @@
void PowerSaveBlocker::ApplyBlock(bool blocking) {
// http://code.google.com/p/chromium/issues/detail?id=33605
- // http://code.google.com/p/chromium/issues/detail?id=34081
}
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index bd4cbbf..ebadabe 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -2456,6 +2456,7 @@
'browser/possible_url_model.h',
'browser/power_save_blocker.h',
'browser/power_save_blocker_common.cc',
+ 'browser/power_save_blocker_mac.cc',
'browser/power_save_blocker_stub.cc',
'browser/power_save_blocker_win.cc',
'browser/ppapi_plugin_process_host.cc',
@@ -3584,6 +3585,7 @@
'browser/importer/nss_decryptor_system_nss.h',
'browser/jankometer.cc',
'browser/password_manager/login_database_posix.cc',
+ 'browser/power_save_blocker_stub.cc',
'browser/renderer_host/backing_store_proxy.cc',
'browser/renderer_host/backing_store_proxy.h',
'browser/renderer_host/gpu_view_host.cc',