| 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
 | 
| deleted file mode 100644
 | 
| index 581e9b94f3a272be9eac245bde0193e08b75e71c..0000000000000000000000000000000000000000
 | 
| --- a/content/browser/power_save_blocker_mac.cc
 | 
| +++ /dev/null
 | 
| @@ -1,120 +0,0 @@
 | 
| -// Copyright (c) 2012 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 "content/browser/power_save_blocker_impl.h"
 | 
| -
 | 
| -#include <IOKit/pwr_mgt/IOPMLib.h>
 | 
| -
 | 
| -#include "base/bind.h"
 | 
| -#include "base/lazy_instance.h"
 | 
| -#include "base/mac/scoped_cftyperef.h"
 | 
| -#include "base/strings/sys_string_conversions.h"
 | 
| -#include "base/threading/platform_thread.h"
 | 
| -#include "base/threading/thread.h"
 | 
| -
 | 
| -namespace content {
 | 
| -namespace {
 | 
| -
 | 
| -// Power management cannot be done on the UI thread. IOPMAssertionCreate does a
 | 
| -// synchronous MIG call to configd, so if it is called on the main thread the UI
 | 
| -// is at the mercy of another process. See http://crbug.com/79559 and
 | 
| -// http://www.opensource.apple.com/source/IOKitUser/IOKitUser-514.16.31/pwr_mgt.subproj/IOPMLibPrivate.c .
 | 
| -struct PowerSaveBlockerLazyInstanceTraits {
 | 
| -  static const bool kRegisterOnExit = false;
 | 
| -#ifndef NDEBUG
 | 
| -  static const bool kAllowedToAccessOnNonjoinableThread = true;
 | 
| -#endif
 | 
| -
 | 
| -  static base::Thread* New(void* instance) {
 | 
| -    base::Thread* thread = new (instance) base::Thread("PowerSaveBlocker");
 | 
| -    thread->Start();
 | 
| -    return thread;
 | 
| -  }
 | 
| -  static void Delete(base::Thread* instance) { }
 | 
| -};
 | 
| -base::LazyInstance<base::Thread, PowerSaveBlockerLazyInstanceTraits>
 | 
| -    g_power_thread = LAZY_INSTANCE_INITIALIZER;
 | 
| -
 | 
| -}  // namespace
 | 
| -
 | 
| -class PowerSaveBlockerImpl::Delegate
 | 
| -    : public base::RefCountedThreadSafe<PowerSaveBlockerImpl::Delegate> {
 | 
| - public:
 | 
| -  Delegate(PowerSaveBlockerType type, const std::string& description)
 | 
| -      : type_(type),
 | 
| -        description_(description),
 | 
| -        assertion_(kIOPMNullAssertionID) {}
 | 
| -
 | 
| -  // Does the actual work to apply or remove the desired power save block.
 | 
| -  void ApplyBlock();
 | 
| -  void RemoveBlock();
 | 
| -
 | 
| - private:
 | 
| -  friend class base::RefCountedThreadSafe<Delegate>;
 | 
| -  ~Delegate() {}
 | 
| -  PowerSaveBlockerType type_;
 | 
| -  std::string description_;
 | 
| -  IOPMAssertionID assertion_;
 | 
| -};
 | 
| -
 | 
| -void PowerSaveBlockerImpl::Delegate::ApplyBlock() {
 | 
| -  DCHECK_EQ(base::PlatformThread::CurrentId(),
 | 
| -            g_power_thread.Pointer()->GetThreadId());
 | 
| -
 | 
| -  CFStringRef level = NULL;
 | 
| -  // See QA1340 <http://developer.apple.com/library/mac/#qa/qa1340/> for more
 | 
| -  // details.
 | 
| -  switch (type_) {
 | 
| -    case PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension:
 | 
| -      level = kIOPMAssertionTypeNoIdleSleep;
 | 
| -      break;
 | 
| -    case PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep:
 | 
| -      level = kIOPMAssertionTypeNoDisplaySleep;
 | 
| -      break;
 | 
| -    default:
 | 
| -      NOTREACHED();
 | 
| -      break;
 | 
| -  }
 | 
| -  if (level) {
 | 
| -    base::ScopedCFTypeRef<CFStringRef> cf_description(
 | 
| -        base::SysUTF8ToCFStringRef(description_));
 | 
| -    IOReturn result = IOPMAssertionCreateWithName(level, kIOPMAssertionLevelOn,
 | 
| -                                                  cf_description, &assertion_);
 | 
| -    LOG_IF(ERROR, result != kIOReturnSuccess)
 | 
| -        << "IOPMAssertionCreate: " << result;
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -void PowerSaveBlockerImpl::Delegate::RemoveBlock() {
 | 
| -  DCHECK_EQ(base::PlatformThread::CurrentId(),
 | 
| -            g_power_thread.Pointer()->GetThreadId());
 | 
| -
 | 
| -  if (assertion_ != kIOPMNullAssertionID) {
 | 
| -    IOReturn result = IOPMAssertionRelease(assertion_);
 | 
| -    LOG_IF(ERROR, result != kIOReturnSuccess)
 | 
| -        << "IOPMAssertionRelease: " << result;
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -PowerSaveBlockerImpl::PowerSaveBlockerImpl(
 | 
| -    PowerSaveBlockerType type,
 | 
| -    Reason reason,
 | 
| -    const std::string& description,
 | 
| -    scoped_refptr<base::SequencedTaskRunner> ui_task_runner,
 | 
| -    scoped_refptr<base::SingleThreadTaskRunner> blocking_task_runner)
 | 
| -    : delegate_(new Delegate(type, description)),
 | 
| -      ui_task_runner_(ui_task_runner),
 | 
| -      blocking_task_runner_(blocking_task_runner) {
 | 
| -  g_power_thread.Pointer()->message_loop()->PostTask(
 | 
| -      FROM_HERE,
 | 
| -      base::Bind(&Delegate::ApplyBlock, delegate_));
 | 
| -}
 | 
| -
 | 
| -PowerSaveBlockerImpl::~PowerSaveBlockerImpl() {
 | 
| -  g_power_thread.Pointer()->message_loop()->PostTask(
 | 
| -      FROM_HERE,
 | 
| -      base::Bind(&Delegate::RemoveBlock, delegate_));
 | 
| -}
 | 
| -
 | 
| -}  // namespace content
 | 
| 
 |