I use WebView2 to create an integrated browser compatible with Edge. To construct my webview, I added four listeners who are called when we call the function 'navigate2'.
m_controlsWebView->add_SourceChanged(Microsoft::WRL::Callback<ICoreWebView2SourceChangedEventHandler>(
this, &EdgeBrowser::OnWebViewSourceChanged)
.Get(), &m_sourceChangedToken);
m_controlsWebView->add_ContentLoading(Microsoft::WRL::Callback<ICoreWebView2ContentLoadingEventHandler>(
this, &EdgeBrowser::OnWebViewContentLoading)
.Get(), &m_contentLoadingToken);
m_controlsWebView->add_HistoryChanged(Microsoft::WRL::Callback<ICoreWebView2HistoryChangedEventHandler>(
this, &EdgeBrowser::OnWebViewHistoryChanged)
.Get(), &m_historyChangedToken);
m_controlsWebView->add_NavigationCompleted(Microsoft::WRL::Callback<ICoreWebView2NavigationCompletedEventHandler>(
this, &EdgeBrowser::OnWebViewNavigationCompleted)
.Get(), &m_navigationCompletedToken);
Code of OnWebViewHistoryChanged :
HRESULT EdgeBrowser::OnWebViewHistoryChanged(ICoreWebView2* sender, IUnknown* args) {
GEMLOG(InfoLevel, "HRESULT IntegratedBrowser2::OnWebViewHistoryChanged(ICoreWebView2* sender, IUnknown* args)", "OK")
return S_OK;
}
Code of OnWebViewNavigationCompleted :
HRESULT EdgeBrowser::OnWebViewNavigationCompleted(ICoreWebView2* sender, ICoreWebView2NavigationCompletedEventArgs* args) {
if (args)
{
BOOL succeedeed;
args->get_IsSuccess(&succeedeed);
if (succeedeed == FALSE)
{
COREWEBVIEW2_WEB_ERROR_STATUS error_stats;
args->get_WebErrorStatus(&error_stats);
std::wstring error = this->WebErrorStatusToString(error_stats);
std::string str_error = utils::wStringToString(error, CP_UTF8);
GEMLOG(ErrorLevel, "HRESULT EdgeBrowser::OnWebViewNavigationCompleted(ICoreWebView2* sender, ICoreWebView2NavigationCompletedEventArgs* args)", str_error.c_str())
}
else
{
GEMLOG(InfoLevel, "HRESULT EdgeBrowser::OnWebViewNavigationCompleted(ICoreWebView2* sender, ICoreWebView2NavigationCompletedEventArgs* args)", "OK")
}
}
return S_OK;
}
Once I call the Microsoft function 'navigate2', I notice that the delay between the call of my function OnWebViewHistoryChanged and OnWebViewNavigationCompleted is MORE THAN one minute.
Why ?? What are the different possible reason of this slowdown ?
04-10-2021 15:56:01 0x00002428 (InfoLevel,HRESULT EdgeBrowser::OnWebViewSourceChanged(ICoreWebView2* sender, ICoreWebView2SourceChangedEventArgs* args),) OK
04-10-2021 15:56:01 0x00002428 (InfoLevel,HRESULT EdgeBrowser::OnWebViewContentLoading(ICoreWebView2* sender, ICoreWebView2ContentLoadingEventArgs* args),) The operation completed successfully.
04-10-2021 15:56:01 0x00002428 (InfoLevel,HRESULT EdgeBrowser::OnWebViewHistoryChanged(ICoreWebView2* sender, IUnknown* args),) OK
04-10-2021 15:57:04 0x00002428 (InfoLevel,HRESULT EdgeBrowser::OnWebViewNavigationCompleted(ICoreWebView2* sender, ICoreWebView2NavigationCompletedEventArgs* args),) OK