Merge pull request #6472 from Slowlife01/p

Fixes for media control
This commit is contained in:
mr. m
2025-03-15 10:37:19 +01:00
committed by GitHub
2 changed files with 21 additions and 32 deletions

View File

@@ -75,6 +75,12 @@ class ZenMediaController {
}
}
});
window.addEventListener('DOMAudioPlaybackStarted', (event) => {
this.activateMediaControls(event.target.browsingContext.mediaController, event.target);
});
window.addEventListener('DOMAudioPlaybackStopped', () => this.updateMuteState());
}
/**
@@ -151,7 +157,7 @@ class ZenMediaController {
activateMediaControls(mediaController, browser) {
this.updateMuteState();
if (this._currentBrowser?.browserId === browser.browserId) return;
if (!mediaController.isActive || this._currentBrowser?.browserId === browser.browserId) return;
else {
this.deinitMediaController(this._currentMediaController);
this._currentMediaController = mediaController;
@@ -222,25 +228,25 @@ class ZenMediaController {
if (this._currentDuration >= 900_000) return this.mediaProgressBarContainer.setAttribute('hidden', 'true');
else this.mediaProgressBarContainer.removeAttribute('hidden');
if (!this._currentDuration) return;
this.mediaCurrentTime.textContent = this.formatSecondsToTime(this._currentPosition);
this.mediaDuration.textContent = this.formatSecondsToTime(this._currentDuration);
this.mediaProgressBar.value = (this._currentPosition / this._currentDuration) * 100;
if (this._currentMediaController?.isPlaying) {
this._mediaUpdateInterval = setInterval(() => {
if (this._currentMediaController?.isPlaying) {
this._currentPosition += 1;
if (this._currentPosition > this._currentDuration) {
this._currentPosition = this._currentDuration;
}
this.mediaCurrentTime.textContent = this.formatSecondsToTime(this._currentPosition);
this.mediaProgressBar.value = (this._currentPosition / this._currentDuration) * 100;
} else {
clearInterval(this._mediaUpdateInterval);
this._mediaUpdateInterval = null;
this._mediaUpdateInterval = setInterval(() => {
if (this._currentMediaController?.isPlaying) {
this._currentPosition += 1;
if (this._currentPosition > this._currentDuration) {
this._currentPosition = this._currentDuration;
}
}, 1000);
}
this.mediaCurrentTime.textContent = this.formatSecondsToTime(this._currentPosition);
this.mediaProgressBar.value = (this._currentPosition / this._currentDuration) * 100;
} else {
clearInterval(this._mediaUpdateInterval);
this._mediaUpdateInterval = null;
}
}, 1000);
}
/**

View File

@@ -1,17 +0,0 @@
diff --git a/toolkit/actors/AudioPlaybackParent.sys.mjs b/toolkit/actors/AudioPlaybackParent.sys.mjs
index db682fd90b2bb5330497d2cf2158ff4cac6bbc47..4e6f891275d489418b8ea58a10345a1baa3a554c 100644
--- a/toolkit/actors/AudioPlaybackParent.sys.mjs
+++ b/toolkit/actors/AudioPlaybackParent.sys.mjs
@@ -14,10 +14,12 @@ export class AudioPlaybackParent extends JSWindowActorParent {
switch (aMessage.name) {
case "AudioPlayback:Start":
this._hasAudioPlayback = true;
+ browser.ownerGlobal.gZenMediaController.activateMediaControls(this.browsingContext.mediaController, browser);
browser.audioPlaybackStarted();
break;
case "AudioPlayback:Stop":
this._hasAudioPlayback = false;
+ browser.ownerGlobal.gZenMediaController.updateMuteState();
browser.audioPlaybackStopped();
break;
case "AudioPlayback:ActiveMediaBlockStart":