Bug 1203151 - Allow disabling of screen wakelocks for video elements. r=baku

This commit is contained in:
Andrew Osmond
2015-09-02 09:18:16 -04:00
parent a76e3cf520
commit c00857914d
4 changed files with 81 additions and 4 deletions

View File

@@ -42,6 +42,7 @@ NS_IMPL_ELEMENT_CLONE(HTMLVideoElement)
HTMLVideoElement::HTMLVideoElement(already_AddRefed<NodeInfo>& aNodeInfo)
: HTMLMediaElement(aNodeInfo)
, mUseScreenWakeLock(true)
{
}
@@ -186,6 +187,19 @@ bool HTMLVideoElement::MozHasAudio() const
return HasAudio();
}
bool HTMLVideoElement::MozUseScreenWakeLock() const
{
MOZ_ASSERT(NS_IsMainThread(), "Should be on main thread.");
return mUseScreenWakeLock;
}
void HTMLVideoElement::SetMozUseScreenWakeLock(bool aValue)
{
MOZ_ASSERT(NS_IsMainThread(), "Should be on main thread.");
mUseScreenWakeLock = aValue;
UpdateScreenWakeLock();
}
JSObject*
HTMLVideoElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
{
@@ -250,14 +264,15 @@ HTMLVideoElement::UpdateScreenWakeLock()
{
bool hidden = OwnerDoc()->Hidden();
if (mScreenWakeLock && (mPaused || hidden)) {
if (mScreenWakeLock && (mPaused || hidden || !mUseScreenWakeLock)) {
ErrorResult rv;
mScreenWakeLock->Unlock(rv);
mScreenWakeLock = nullptr;
return;
}
if (!mScreenWakeLock && !mPaused && !hidden && HasVideo()) {
if (!mScreenWakeLock && !mPaused && !hidden &&
mUseScreenWakeLock && HasVideo()) {
nsRefPtr<power::PowerManagerService> pmService =
power::PowerManagerService::GetInstance();
NS_ENSURE_TRUE_VOID(pmService);