Skip to content

Commit

Permalink
Add DOMContentLoaded
Browse files Browse the repository at this point in the history
  • Loading branch information
AigioL committed Jul 11, 2022
1 parent edd4316 commit 4569c93
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 2 deletions.
10 changes: 10 additions & 0 deletions src/Avalonia.WebView2.Sample/WebView2Compat.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,21 @@ public WebView2Compat()
{
InitializeComponent();
WebView2 = this.FindControl<AvaloniaWebView2>("WebView2");
WebView2.IsVisible = false;
TextBlock = this.FindControl<TextBlock>("TextBlock");
if (!AvaloniaWebView2.IsSupported)
{
TextBlock.Text = "Couldn't find a compatible Webview2 Runtime installation to host WebViews.";
}
else
{
WebView2.DOMContentLoaded += WebView2_DOMContentLoaded;
}
}

void WebView2_DOMContentLoaded(object? sender, CoreWebView2DOMContentLoadedEventArgs e)
{
WebView2.IsVisible = true;
}

private void InitializeComponent()
Expand Down
15 changes: 13 additions & 2 deletions src/Avalonia.WebView2/WebView2.cs
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ void UnsubscribeHandlersAndCloseController(bool browserCrashed = false)
CoreWebView2.SourceChanged -= new EventHandler<CoreWebView2SourceChangedEventArgs>(CoreWebView2_SourceChanged);
CoreWebView2.WebMessageReceived -= new EventHandler<CoreWebView2WebMessageReceivedEventArgs>(CoreWebView2_WebMessageReceived);
CoreWebView2.ContentLoading -= new EventHandler<CoreWebView2ContentLoadingEventArgs>(CoreWebView2_ContentLoading);
CoreWebView2.DOMContentLoaded -= new EventHandler<CoreWebView2DOMContentLoadedEventArgs>(CoreWebView2_DOMContentLoaded);
CoreWebView2.ProcessFailed -= new EventHandler<CoreWebView2ProcessFailedEventArgs>(CoreWebView2_ProcessFailed);
_coreWebView2Controller!.ZoomFactorChanged -= new EventHandler<object>(CoreWebView2Controller_ZoomFactorChanged);
//_coreWebView2Controller.MoveFocusRequested -= new EventHandler<CoreWebView2MoveFocusRequestedEventArgs>(CoreWebView2Controller_MoveFocusRequested);
Expand Down Expand Up @@ -372,7 +373,7 @@ async Task InitCoreWebView2Async(CoreWebView2Environment? environment = null, Co
sender._coreWebView2Controller.ZoomFactor = sender._zoomFactor;
sender._coreWebView2Controller.DefaultBackgroundColor = sender._defaultBackgroundColor;
OnBoundsChanged(EventArgs.Empty);
sender._coreWebView2Controller.IsVisible = false;
sender._coreWebView2Controller.IsVisible = IsVisible;
try
{
sender._coreWebView2Controller.AllowExternalDrop = sender._allowExternalDrop;
Expand All @@ -388,6 +389,7 @@ async Task InitCoreWebView2Async(CoreWebView2Environment? environment = null, Co
sender.CoreWebView2.SourceChanged += new EventHandler<CoreWebView2SourceChangedEventArgs>(sender.CoreWebView2_SourceChanged);
sender.CoreWebView2.WebMessageReceived += new EventHandler<CoreWebView2WebMessageReceivedEventArgs>(sender.CoreWebView2_WebMessageReceived);
sender.CoreWebView2.ContentLoading += new EventHandler<CoreWebView2ContentLoadingEventArgs>(sender.CoreWebView2_ContentLoading);
sender.CoreWebView2.DOMContentLoaded += new EventHandler<CoreWebView2DOMContentLoadedEventArgs>(sender.CoreWebView2_DOMContentLoaded);
sender.CoreWebView2.ProcessFailed += new EventHandler<CoreWebView2ProcessFailedEventArgs>(sender.CoreWebView2_ProcessFailed);
if (sender.Focusable)
sender._coreWebView2Controller.MoveFocus(CoreWebView2MoveFocusReason.Programmatic);
Expand Down Expand Up @@ -839,6 +841,8 @@ void VerifyBrowserNotCrashedGuard()
/// </summary>
/// <seealso cref="E:Microsoft.Web.WebView2.Core.CoreWebView2.ContentLoading" />
public event EventHandler<CoreWebView2ContentLoadingEventArgs>? ContentLoading;

public event EventHandler<CoreWebView2DOMContentLoadedEventArgs>? DOMContentLoaded;
#endif

/// <summary>
Expand Down Expand Up @@ -884,13 +888,20 @@ void CoreWebView2_SourceChanged(object? sender, CoreWebView2SourceChangedEventAr

void CoreWebView2_ContentLoading(object? sender, CoreWebView2ContentLoadingEventArgs e)
{
if (_coreWebView2Controller != null && !_coreWebView2Controller.IsVisible) _coreWebView2Controller.IsVisible = true;
var contentLoading = ContentLoading;
if (contentLoading == null)
return;
contentLoading(this, e);
}

void CoreWebView2_DOMContentLoaded(object? sender, CoreWebView2DOMContentLoadedEventArgs e)
{
var contentLoading = DOMContentLoaded;
if (contentLoading == null)
return;
contentLoading(this, e);
}

void CoreWebView2_ProcessFailed(object? sender, CoreWebView2ProcessFailedEventArgs e)
{
if (e.ProcessFailedKind != CoreWebView2ProcessFailedKind.BrowserProcessExited)
Expand Down

0 comments on commit 4569c93

Please sign in to comment.