feat(ads/seo/release): v1.2.0 with live Google Ads, isolated ad profile, ads.txt, and SEO/AEO/GEO optimization
This commit is contained in:
parent
a88aafa1e5
commit
0e568f1f0a
975 changed files with 130593 additions and 16783 deletions
86
tests/Paca.Tests/Browser/ChromeMediaSessionAdvancedTests.cs
Normal file
86
tests/Paca.Tests/Browser/ChromeMediaSessionAdvancedTests.cs
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
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");
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue