| Index: content/browser/power_save_blocker_impl.h
|
| diff --git a/content/browser/power_save_blocker_impl.h b/content/browser/power_save_blocker_impl.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..dcc9e62ff8b0aeff09b581ffee1b6017c151c38d
|
| --- /dev/null
|
| +++ b/content/browser/power_save_blocker_impl.h
|
| @@ -0,0 +1,74 @@
|
| +// Copyright (c) 2013 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.
|
| +
|
| +#ifndef CONTENT_BROWSER_POWER_SAVE_BLOCKER_IMPL_H_
|
| +#define CONTENT_BROWSER_POWER_SAVE_BLOCKER_IMPL_H_
|
| +
|
| +#include <string>
|
| +
|
| +#include "base/macros.h"
|
| +#include "base/memory/ref_counted.h"
|
| +#include "base/memory/weak_ptr.h"
|
| +#include "base/sequenced_task_runner.h"
|
| +#include "base/single_thread_task_runner.h"
|
| +#include "build/build_config.h"
|
| +#include "content/public/browser/power_save_blocker.h"
|
| +
|
| +#if defined(OS_ANDROID)
|
| +#include "ui/android/view_android.h"
|
| +#endif // OS_ANDROID
|
| +
|
| +namespace content {
|
| +
|
| +class WebContents;
|
| +
|
| +class PowerSaveBlockerImpl : public PowerSaveBlocker {
|
| + public:
|
| + PowerSaveBlockerImpl(
|
| + PowerSaveBlockerType type,
|
| + Reason reason,
|
| + const std::string& description,
|
| + scoped_refptr<base::SequencedTaskRunner> ui_task_runner,
|
| + scoped_refptr<base::SingleThreadTaskRunner> blocking_task_runner);
|
| + ~PowerSaveBlockerImpl() override;
|
| +
|
| +#if defined(OS_ANDROID)
|
| + // On Android, the kPowerSaveBlockPreventDisplaySleep type of
|
| + // PowerSaveBlocker should associated with a View, so the blocker can be
|
| + // removed by the platform.
|
| + void InitDisplaySleepBlocker(
|
| + const base::WeakPtr<ui::ViewAndroid>& view_android);
|
| +#endif
|
| +
|
| + private:
|
| + class Delegate;
|
| +
|
| + // Implementations of this class may need a second object with different
|
| + // lifetime than the RAII container, or additional storage. This member is
|
| + // here for that purpose. If not used, just define the class as an empty
|
| + // RefCounted (or RefCountedThreadSafe) like so to make it compile:
|
| + // class PowerSaveBlocker::Delegate
|
| + // : public base::RefCounted<PowerSaveBlocker::Delegate> {
|
| + // private:
|
| + // friend class base::RefCounted<Delegate>;
|
| + // ~Delegate() {}
|
| + // };
|
| + scoped_refptr<Delegate> delegate_;
|
| +
|
| +#if defined(USE_X11)
|
| + // Since display sleep prevention also implies system suspend prevention, for
|
| + // the Linux FreeDesktop API case, there needs to be a second delegate to
|
| + // block system suspend when screen saver / display sleep is blocked.
|
| + scoped_refptr<Delegate> freedesktop_suspend_delegate_;
|
| +#endif
|
| +
|
| + scoped_refptr<base::SequencedTaskRunner> ui_task_runner_;
|
| + scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(PowerSaveBlockerImpl);
|
| +};
|
| +
|
| +} // namespace content
|
| +
|
| +#endif // CONTENT_BROWSER_POWER_SAVE_BLOCKER_IMPL_H_
|
|
|