Bug 1203151 - Allow disabling of screen wakelocks for video elements. r=baku
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user