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:
Yun Chan 2026-09-14 00:39:44 +09:00
parent a88aafa1e5
commit 0e568f1f0a
975 changed files with 130593 additions and 16783 deletions

View file

@ -234,4 +234,60 @@ public class MobileBrowserCoreTests : IDisposable
Assert.Equal(145.5, video.DurationSeconds);
Assert.Equal("https://video.example.com/thumb.jpg", video.ThumbnailUrl);
}
[Fact]
public void TabManager_FindTabByUrlOrHost_MatchesExactAndSubdomains()
{
var manager = new MobileTabManager();
var tab1 = manager.AddTab("https://m.youtube.com");
var tab2 = manager.AddTab("https://chzzk.naver.com");
// 1. Exact match
var foundExact = manager.FindTabByUrlOrHost("https://m.youtube.com");
Assert.NotNull(foundExact);
Assert.Equal(tab1.Id, foundExact!.Id);
// 2. Host match with different subdomain (www vs m)
var foundSub = manager.FindTabByUrlOrHost("https://www.youtube.com/watch?v=abc");
Assert.NotNull(foundSub);
Assert.Equal(tab1.Id, foundSub!.Id);
// 3. Unrelated domain returns null
var foundNone = manager.FindTabByUrlOrHost("https://m.sooplive.co.kr");
Assert.Null(foundNone);
// 4. Special internal schemes like paca://newtab do not match arbitrary external URLs
var foundNtp = manager.FindTabByUrlOrHost("paca://newtab");
Assert.NotNull(foundNtp);
Assert.True(foundNtp!.IsNewTabPage);
}
[Fact]
public void TabManager_OpenOrSwitchTab_ReusesExistingDomainTabOrNtp()
{
var manager = new MobileTabManager();
// Initial tab is paca://newtab
Assert.Equal(1, manager.Count);
Assert.True(manager.ActiveTab!.IsNewTabPage);
// Opening first URL replaces the empty initial NTP
var (opened1, isExisting1) = manager.OpenOrSwitchTab("https://m.youtube.com");
Assert.Equal(1, manager.Count);
Assert.False(isExisting1);
Assert.Equal("https://m.youtube.com", manager.ActiveTab?.Url);
// Opening a different domain creates a 2nd tab
var (opened2, isExisting2) = manager.OpenOrSwitchTab("https://m.naver.com");
Assert.Equal(2, manager.Count);
Assert.False(isExisting2);
Assert.Equal("https://m.naver.com", manager.ActiveTab?.Url);
// Re-opening youtube domain should NOT create a 3rd tab; it switches to the existing tab
var (switched, isExisting3) = manager.OpenOrSwitchTab("https://www.youtube.com/watch?v=xyz");
Assert.Equal(2, manager.Count);
Assert.True(isExisting3);
Assert.Equal(opened1.Id, switched.Id);
Assert.Equal(opened1.Id, manager.ActiveTab?.Id);
}
}