| Index: content/browser/power_save_blocker_mac.cc
|
| diff --git a/content/browser/power_save_blocker_mac.cc b/content/browser/power_save_blocker_mac.cc
|
| index 0f63de01d347acdd847e102893a5a72da06bcd2d..aaed6a8c05654e451c3a93c5c9202210320216c4 100644
|
| --- a/content/browser/power_save_blocker_mac.cc
|
| +++ b/content/browser/power_save_blocker_mac.cc
|
| @@ -2,7 +2,7 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "content/browser/power_save_blocker.h"
|
| +#include "content/public/browser/power_save_blocker.h"
|
|
|
| #include <IOKit/pwr_mgt/IOPMLib.h>
|
|
|
| @@ -34,10 +34,22 @@ struct PowerSaveBlockerLazyInstanceTraits {
|
| base::LazyInstance<base::Thread, PowerSaveBlockerLazyInstanceTraits>
|
| g_power_thread = LAZY_INSTANCE_INITIALIZER;
|
|
|
| -} // namespace
|
| +class PowerSaveBlockerMac : public PowerSaveBlocker {
|
| + public:
|
| + PowerSaveBlockerMac(PowerSaveBlockerType type, const std::string& reason);
|
| + virtual ~PowerSaveBlockerMac();
|
| +
|
| + private:
|
| + class Delegate;
|
| +
|
| + // A second object with different lifetime than the RAII container.
|
| + scoped_refptr<Delegate> delegate_;
|
|
|
| -class PowerSaveBlocker::Delegate
|
| - : public base::RefCountedThreadSafe<PowerSaveBlocker::Delegate> {
|
| + DISALLOW_COPY_AND_ASSIGN(PowerSaveBlockerMac);
|
| +};
|
| +
|
| +class PowerSaveBlockerMac::Delegate
|
| + : public base::RefCountedThreadSafe<PowerSaveBlockerMac::Delegate> {
|
| public:
|
| Delegate(PowerSaveBlockerType type, const std::string& reason)
|
| : type_(type), reason_(reason), assertion_(kIOPMNullAssertionID) {}
|
| @@ -54,7 +66,7 @@ class PowerSaveBlocker::Delegate
|
| IOPMAssertionID assertion_;
|
| };
|
|
|
| -void PowerSaveBlocker::Delegate::ApplyBlock() {
|
| +void PowerSaveBlockerMac::Delegate::ApplyBlock() {
|
| DCHECK_EQ(base::PlatformThread::CurrentId(),
|
| g_power_thread.Pointer()->thread_id());
|
|
|
| @@ -84,7 +96,7 @@ void PowerSaveBlocker::Delegate::ApplyBlock() {
|
| }
|
| }
|
|
|
| -void PowerSaveBlocker::Delegate::RemoveBlock() {
|
| +void PowerSaveBlockerMac::Delegate::RemoveBlock() {
|
| DCHECK_EQ(base::PlatformThread::CurrentId(),
|
| g_power_thread.Pointer()->thread_id());
|
|
|
| @@ -95,18 +107,27 @@ void PowerSaveBlocker::Delegate::RemoveBlock() {
|
| }
|
| }
|
|
|
| -PowerSaveBlocker::PowerSaveBlocker(PowerSaveBlockerType type,
|
| - const std::string& reason)
|
| +PowerSaveBlockerMac::PowerSaveBlockerMac(PowerSaveBlockerType type,
|
| + const std::string& reason)
|
| : delegate_(new Delegate(type, reason)) {
|
| g_power_thread.Pointer()->message_loop()->PostTask(
|
| FROM_HERE,
|
| base::Bind(&Delegate::ApplyBlock, delegate_));
|
| }
|
|
|
| -PowerSaveBlocker::~PowerSaveBlocker() {
|
| +PowerSaveBlockerMac::~PowerSaveBlockerMac() {
|
| g_power_thread.Pointer()->message_loop()->PostTask(
|
| FROM_HERE,
|
| base::Bind(&Delegate::RemoveBlock, delegate_));
|
| }
|
|
|
| +} // namespace
|
| +
|
| +// static
|
| +scoped_ptr<PowerSaveBlocker> PowerSaveBlocker::Create(
|
| + PowerSaveBlockerType type,
|
| + const std::string& reason) {
|
| + return scoped_ptr<PowerSaveBlocker>(new PowerSaveBlockerMac(type, reason));
|
| +}
|
| +
|
| } // namespace content
|
|
|