|
|
// Copyright © 2022 The CefSharp Authors. All rights reserved.
|
||
|
|
//
|
||
|
|
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
|
||
|
|
|
||
|
|
using System.Threading;
|
||
|
|
using CefSharp.Internals;
|
||
|
|
using CefSharp.OffScreen;
|
||
|
|
using Xunit;
|
||
|
|
using Xunit.Abstractions;
|
||
|
|
|
||
|
|
namespace CefSharp.Test.OffScreen
|
||
|
|
{
|
||
|
|
//NOTE: All Test classes must be part of this collection as it manages the Cef Initialize/Shutdown lifecycle
|
||
|
|
[Collection(CefSharpFixtureCollection.Key)]
|
||
|
|
public class BrowserRefCountTests
|
||
|
|
{
|
||
|
|
private readonly ITestOutputHelper output;
|
||
|
|
private readonly CefSharpFixture fixture;
|
||
|
|
|
||
|
|
public BrowserRefCountTests(ITestOutputHelper output, CefSharpFixture fixture)
|
||
|
|
{
|
||
|
|
this.fixture = fixture;
|
||
|
|
this.output = output;
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void ShouldWork()
|
||
|
|
{
|
||
|
|
var currentCount = BrowserRefCounter.Instance.Count;
|
||
|
|
|
||
|
|
var manualResetEvent = new ManualResetEvent(false);
|
||
|
|
|
||
|
|
var browser = new ChromiumWebBrowser("https://google.com", useLegacyRenderHandler: false);
|
||
|
|
|
||
|
|
browser.LoadingStateChanged += (sender, e) =>
|
||
|
|
{
|
||
|
|
if (!e.IsLoading)
|
||
|
|
{
|
||
|
|
manualResetEvent.Set();
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
manualResetEvent.WaitOne();
|
||
|
|
|
||
|
|
//TODO: Refactor this so reference is injected into browser
|
||
|
|
Assert.Equal(currentCount + 1, BrowserRefCounter.Instance.Count);
|
||
|
|
|
||
|
|
browser.Dispose();
|
||
|
|
|
||
|
|
Cef.WaitForBrowsersToClose(10000);
|
||
|
|
|
||
|
|
output.WriteLine("BrowserRefCounter Log");
|
||
|
|
output.WriteLine(BrowserRefCounter.Instance.GetLog());
|
||
|
|
|
||
|
|
Assert.Equal(0, BrowserRefCounter.Instance.Count);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|