diff options
author | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-24 15:53:49 +0000 |
---|---|---|
committer | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-24 15:53:49 +0000 |
commit | 71a565a7f31ec351a46a726e46b3d4194bba348a (patch) | |
tree | 2cc34b453db501462066ad694e9f14bace29a10f | |
parent | ce8a9ca8389aa6a39c5622653e4ff9266cc0be18 (diff) | |
download | chromium_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.cc | 36 | ||||
-rw-r--r-- | chrome/browser/power_save_blocker_stub.cc | 1 | ||||
-rw-r--r-- | chrome/chrome_browser.gypi | 2 |
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', |