Skip to content

Commit d2d1e6f

Browse files
committed
WPF/WinForms/OffScreen - Move BrowserSettings Dispose into ManagedCefBrowserAdapter::CreateBrowser
- Improve BrowserSettings disposed check message Follow up to #2643
1 parent 988c8ca commit d2d1e6f

4 files changed

Lines changed: 8 additions & 17 deletions

File tree

CefSharp.Core/ManagedCefBrowserAdapter.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,21 @@ void ManagedCefBrowserAdapter::CreateBrowser(IWindowInfo^ windowInfo, BrowserSet
3030

3131
if (browserSettings->IsDisposed)
3232
{
33-
throw gcnew ObjectDisposedException("browserSettings", "browser settings has already been Disposed and cannot be used.");
33+
throw gcnew ObjectDisposedException("browserSettings", "browser settings has already been Disposed." +
34+
"BrowserSettings created by CefSharp are automatically disposed, to control the lifecycle create and set your own instance.");
3435
}
3536

3637
if (!CefBrowserHost::CreateBrowser(*cefWindowInfoWrapper->GetWindowInfo(), _clientAdapter.get(), addressNative,
3738
*browserSettings->_browserSettings, static_cast<CefRefPtr<CefRequestContext>>(requestContext)))
3839
{
3940
throw gcnew InvalidOperationException("CefBrowserHost::CreateBrowser call failed, review the CEF log file for more details.");
4041
}
42+
43+
//Dispose of BrowserSettings if we created it, if user created then they're responsible
44+
if (browserSettings->FrameworkCreated)
45+
{
46+
delete browserSettings;
47+
}
4148
}
4249

4350
void ManagedCefBrowserAdapter::OnAfterBrowserCreated(IBrowser^ browser)

CefSharp.OffScreen/ChromiumWebBrowser.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -411,11 +411,6 @@ public void CreateBrowser(IWindowInfo windowInfo = null, BrowserSettings browser
411411

412412
managedCefBrowserAdapter.CreateBrowser(windowInfo, browserSettings, (RequestContext)RequestContext, Address);
413413

414-
if (browserSettings.FrameworkCreated)
415-
{
416-
browserSettings.Dispose();
417-
}
418-
419414
browserSettings = null;
420415
}
421416

CefSharp.WinForms/ChromiumWebBrowser.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -672,11 +672,6 @@ private void CreateBrowser()
672672

673673
managedCefBrowserAdapter.CreateBrowser(windowInfo, browserSettings as BrowserSettings, requestContext as RequestContext, Address);
674674

675-
if (browserSettings.FrameworkCreated)
676-
{
677-
browserSettings.Dispose();
678-
}
679-
680675
browserSettings = null;
681676
}
682677
else

CefSharp.Wpf/ChromiumWebBrowser.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1745,12 +1745,6 @@ protected virtual bool CreateOffscreenBrowser(Size size)
17451745
//Workaround for issue https://github.com/cefsharp/CefSharp/issues/2300
17461746
managedCefBrowserAdapter.CreateBrowser(windowInfo, browserSettings as BrowserSettings, requestContext as RequestContext, address: null);
17471747

1748-
//Dispose of BrowserSettings if we created it, if user created then they're responsible
1749-
if (browserSettings.FrameworkCreated)
1750-
{
1751-
browserSettings.Dispose();
1752-
}
1753-
17541748
browserSettings = null;
17551749
}
17561750
browserCreated = true;

0 commit comments

Comments
 (0)