releases/tests/Paca.Tests/Browser/ChromeMediaSessionAdvancedTests.cs

86 lines
2.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using Paca.Browser;
using Paca.Browser.Media;
using Xunit;
namespace Paca.Tests.Browser;
public class ChromeMediaSessionAdvancedTests
{
[Fact]
public void MediaSessionCoordinator_Generates_Advanced_Control_Scripts()
{
var coordinator = new MediaSessionCoordinator();
var muteScript = coordinator.GenerateMuteToggleScript();
Assert.Contains("media.muted = !media.muted", muteScript);
var seekScript = coordinator.GenerateSeekScript(15.0);
Assert.Contains("currentTime", seekScript);
Assert.Contains("15", seekScript);
var volumeScript = coordinator.GenerateSetVolumeScript(0.75);
Assert.Contains("media.volume = 0.75", volumeScript);
var speedScript = coordinator.GeneratePlaybackRateScript(1.5);
Assert.Contains("media.playbackRate = 1.5", speedScript);
}
[Fact]
public void MediaSessionCoordinator_Mutes_All_Other_Tabs()
{
var coordinator = new MediaSessionCoordinator();
var tab1 = Guid.NewGuid();
var tab2 = Guid.NewGuid();
var tab3 = Guid.NewGuid();
var muteStates = new Dictionary<Guid, bool>
{
[tab1] = false,
[tab2] = false,
[tab3] = false,
};
coordinator.MuteAllOtherTabs(tab1, new[] { tab1, tab2, tab3 }, (id, mute) => muteStates[id] = mute);
Assert.False(muteStates[tab1]);
Assert.True(muteStates[tab2]);
Assert.True(muteStates[tab3]);
}
[Fact]
public void ChromeTabAudioPolicy_Enforces_SingleTabAudio_And_MuteByDefault()
{
var policy = new ChromeTabAudioPolicy(ChromeTabAudioMode.SingleTabAudioOnly);
var currentTab = Guid.NewGuid();
var otherTab1 = Guid.NewGuid();
var otherTab2 = Guid.NewGuid();
var toMute = policy.EvaluateAutoMuteOnNewPlayback(currentTab, new[] { otherTab1, otherTab2 });
Assert.Equal(2, toMute.Count);
Assert.Contains(otherTab1, toMute);
Assert.Contains(otherTab2, toMute);
// Standard mode doesn't auto-mute others
var stdPolicy = new ChromeTabAudioPolicy(ChromeTabAudioMode.Standard);
Assert.Empty(stdPolicy.EvaluateAutoMuteOnNewPlayback(currentTab, new[] { otherTab1, otherTab2 }));
// MuteByDefault mode
var muteByDefaultPolicy = new ChromeTabAudioPolicy(ChromeTabAudioMode.MuteByDefault);
Assert.True(muteByDefaultPolicy.ShouldMuteNewTab("https://youtube.com"));
Assert.False(stdPolicy.ShouldMuteNewTab("https://youtube.com"));
}
[Theory]
[InlineData("다른 탭 음소거")]
[InlineData("모든 다른 탭 음소거")]
[InlineData("mute others")]
public void Omnibox_Matches_MuteOthers_Action(string query)
{
var actions = OmniboxActionEvaluator.GetMatchingActions(query);
Assert.Contains(actions, a => a.ActionId == "action:mute-others");
}
}