Bug 1495064 - part1 : refactor the logic of requesting wakelock. r=jya

HTMLMediaElement::UpdateWakeLock() is responsible for creating and releasing audio wakelock.
HTMLVideoElement::UpdateWakeLock() is responsible for creating and releasing video wakelock.

In addition, each platform would handle system wakelock properly depending on different requests.

Differential Revision: https://phabricator.services.mozilla.com/D7214
This commit is contained in:
alwu
2018-10-02 17:56:21 +00:00
parent 488ac5fe26
commit ab38dd17ca
4 changed files with 54 additions and 29 deletions

View File

@@ -4282,14 +4282,14 @@ HTMLMediaElement::UpdateWakeLock()
Volume() > 0.0 && !mMuted && mIsAudioTrackAudible;
// WakeLock when playing audible media.
if (playing && isAudible) {
WakeLockCreate();
CreateAudioWakeLockIfNeeded();
} else {
WakeLockRelease();
ReleaseAudioWakeLockIfExists();
}
}
void
HTMLMediaElement::WakeLockCreate()
HTMLMediaElement::CreateAudioWakeLockIfNeeded()
{
if (!mWakeLock) {
RefPtr<power::PowerManagerService> pmService =
@@ -4297,13 +4297,14 @@ HTMLMediaElement::WakeLockCreate()
NS_ENSURE_TRUE_VOID(pmService);
ErrorResult rv;
mWakeLock = pmService->NewWakeLock(
NS_LITERAL_STRING("audio-playing"), OwnerDoc()->GetInnerWindow(), rv);
mWakeLock = pmService->NewWakeLock(NS_LITERAL_STRING("audio-playing"),
OwnerDoc()->GetInnerWindow(),
rv);
}
}
void
HTMLMediaElement::WakeLockRelease()
HTMLMediaElement::ReleaseAudioWakeLockIfExists()
{
if (mWakeLock) {
ErrorResult rv;
@@ -4313,6 +4314,12 @@ HTMLMediaElement::WakeLockRelease()
}
}
void
HTMLMediaElement::WakeLockRelease()
{
ReleaseAudioWakeLockIfExists();
}
HTMLMediaElement::OutputMediaStream::OutputMediaStream()
: mNextAvailableTrackID(1)
, mFinishWhenEnded(false)