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
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue