// 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 #include "content/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 // 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(); } }