@@ -186,9 +186,9 @@ BOOL BrowserWindow::InitInstance(HINSTANCE hInstance, int nCmdShow)
186186 // tabs will be created from this environment and kept isolated from the
187187 // browser UI. This enviroment is created first so the UI can request new
188188 // tabs when it's ready.
189- HRESULT hr = CreateWebView2EnvironmentWithDetails (nullptr , userDataDirectory.c_str (),
190- L" " , Callback<IWebView2CreateWebView2EnvironmentCompletedHandler >(
191- [this ](HRESULT result, IWebView2Environment * env) -> HRESULT
189+ HRESULT hr = CreateCoreWebView2EnvironmentWithDetails (nullptr , userDataDirectory.c_str (),
190+ L" " , Callback<ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler >(
191+ [this ](HRESULT result, ICoreWebView2Environment * env) -> HRESULT
192192 {
193193 RETURN_IF_FAILED (result);
194194
@@ -220,9 +220,9 @@ HRESULT BrowserWindow::InitUIWebViews()
220220
221221 // Create WebView environment for browser UI. A separate data directory is
222222 // used to isolate the browser UI from web content requested by the user.
223- return CreateWebView2EnvironmentWithDetails (nullptr , browserDataDirectory.c_str (),
224- L" " , Callback<IWebView2CreateWebView2EnvironmentCompletedHandler >(
225- [this ](HRESULT result, IWebView2Environment * env) -> HRESULT
223+ return CreateCoreWebView2EnvironmentWithDetails (nullptr , browserDataDirectory.c_str (),
224+ L" " , Callback<ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler >(
225+ [this ](HRESULT result, ICoreWebView2Environment * env) -> HRESULT
226226 {
227227 // Environment is ready, create the WebView
228228 m_uiEnv = env;
@@ -236,26 +236,26 @@ HRESULT BrowserWindow::InitUIWebViews()
236236
237237HRESULT BrowserWindow::CreateBrowserControlsWebView ()
238238{
239- return m_uiEnv->CreateWebView (m_hWnd, Callback<IWebView2CreateWebViewCompletedHandler >(
240- [this ](HRESULT result, IWebView2WebView* webview ) -> HRESULT
239+ return m_uiEnv->CreateCoreWebView2Host (m_hWnd, Callback<ICoreWebView2CreateCoreWebView2HostCompletedHandler >(
240+ [this ](HRESULT result, ICoreWebView2Host* host ) -> HRESULT
241241 {
242242 if (!SUCCEEDED (result))
243243 {
244244 OutputDebugString (L" Controls WebView creation failed\n " );
245245 return result;
246246 }
247247 // WebView created
248- m_controlsWebView = webview;
248+ m_controlsHost = host;
249+ CheckFailure (m_controlsHost->get_CoreWebView2 (&m_controlsWebView), L" " );
249250
250- wil::com_ptr<IWebView2Settings > settings;
251+ wil::com_ptr<ICoreWebView2Settings > settings;
251252 RETURN_IF_FAILED (m_controlsWebView->get_Settings (&settings));
252253 RETURN_IF_FAILED (settings->put_AreDevToolsEnabled (FALSE ));
253- RETURN_IF_FAILED (settings->put_IsFullscreenAllowed (FALSE ));
254254
255- RETURN_IF_FAILED (m_controlsWebView ->add_ZoomFactorChanged (Callback<IWebView2ZoomFactorChangedEventHandler >(
256- [](IWebView2WebView* webview , IUnknown* args) -> HRESULT
255+ RETURN_IF_FAILED (m_controlsHost ->add_ZoomFactorChanged (Callback<ICoreWebView2ZoomFactorChangedEventHandler >(
256+ [](ICoreWebView2Host* host , IUnknown* args) -> HRESULT
257257 {
258- webview ->put_ZoomFactor (1.0 );
258+ host ->put_ZoomFactor (1.0 );
259259 return S_OK;
260260 }
261261 ).Get (), &m_controlsZoomToken));
@@ -272,37 +272,37 @@ HRESULT BrowserWindow::CreateBrowserControlsWebView()
272272
273273HRESULT BrowserWindow::CreateBrowserOptionsWebView ()
274274{
275- return m_uiEnv->CreateWebView (m_hWnd, Callback<IWebView2CreateWebViewCompletedHandler >(
276- [this ](HRESULT result, IWebView2WebView* webview ) -> HRESULT
275+ return m_uiEnv->CreateCoreWebView2Host (m_hWnd, Callback<ICoreWebView2CreateCoreWebView2HostCompletedHandler >(
276+ [this ](HRESULT result, ICoreWebView2Host* host ) -> HRESULT
277277 {
278278 if (!SUCCEEDED (result))
279279 {
280280 OutputDebugString (L" Options WebView creation failed\n " );
281281 return result;
282282 }
283283 // WebView created
284- m_optionsWebView = webview;
284+ m_optionsHost = host;
285+ CheckFailure (m_optionsHost->get_CoreWebView2 (&m_optionsWebView), L" " );
285286
286- wil::com_ptr<IWebView2Settings > settings;
287+ wil::com_ptr<ICoreWebView2Settings > settings;
287288 RETURN_IF_FAILED (m_optionsWebView->get_Settings (&settings));
288289 RETURN_IF_FAILED (settings->put_AreDevToolsEnabled (FALSE ));
289- RETURN_IF_FAILED (settings->put_IsFullscreenAllowed (FALSE ));
290290
291- RETURN_IF_FAILED (m_optionsWebView ->add_ZoomFactorChanged (Callback<IWebView2ZoomFactorChangedEventHandler >(
292- [](IWebView2WebView* webview , IUnknown* args) -> HRESULT
291+ RETURN_IF_FAILED (m_optionsHost ->add_ZoomFactorChanged (Callback<ICoreWebView2ZoomFactorChangedEventHandler >(
292+ [](ICoreWebView2Host* host , IUnknown* args) -> HRESULT
293293 {
294- webview ->put_ZoomFactor (1.0 );
294+ host ->put_ZoomFactor (1.0 );
295295 return S_OK;
296296 }
297297 ).Get (), &m_optionsZoomToken));
298298
299299 // Hide by default
300- RETURN_IF_FAILED (m_optionsWebView ->put_IsVisible (FALSE ));
300+ RETURN_IF_FAILED (m_optionsHost ->put_IsVisible (FALSE ));
301301 RETURN_IF_FAILED (m_optionsWebView->add_WebMessageReceived (m_uiMessageBroker.Get (), &m_optionsUIMessageBrokerToken));
302302
303303 // Hide menu when focus is lost
304- RETURN_IF_FAILED (m_optionsWebView ->add_LostFocus (Callback<IWebView2FocusChangedEventHandler >(
305- [this ](IWebView2WebView * sender, IUnknown* args) -> HRESULT
304+ RETURN_IF_FAILED (m_optionsHost ->add_LostFocus (Callback<ICoreWebView2FocusChangedEventHandler >(
305+ [this ](ICoreWebView2Host * sender, IUnknown* args) -> HRESULT
306306 {
307307 web::json::value jsonObj = web::json::value::parse (L" {}" );
308308 jsonObj[L" message" ] = web::json::value (MG_OPTIONS_LOST_FOCUS);
@@ -326,8 +326,8 @@ HRESULT BrowserWindow::CreateBrowserOptionsWebView()
326326// Lambda is used to capture the instance while satisfying Microsoft::WRL::Callback<T>()
327327void BrowserWindow::SetUIMessageBroker ()
328328{
329- m_uiMessageBroker = Callback<IWebView2WebMessageReceivedEventHandler >(
330- [this ](IWebView2WebView * webview, IWebView2WebMessageReceivedEventArgs * eventArgs) -> HRESULT
329+ m_uiMessageBroker = Callback<ICoreWebView2WebMessageReceivedEventHandler >(
330+ [this ](ICoreWebView2 * webview, ICoreWebView2WebMessageReceivedEventArgs * eventArgs) -> HRESULT
331331 {
332332 wil::unique_cotaskmem_string jsonString;
333333 CheckFailure (eventArgs->get_WebMessageAsJson (&jsonString), L" " ); // Get the message from the UI WebView as JSON formatted string
@@ -363,7 +363,7 @@ void BrowserWindow::SetUIMessageBroker()
363363 }
364364 else
365365 {
366- m_tabs.at (id)->m_contentWebView ->Close ();
366+ m_tabs.at (id)->m_contentHost ->Close ();
367367 it->second = std::move (newTab);
368368 }
369369 }
@@ -428,7 +428,7 @@ void BrowserWindow::SetUIMessageBroker()
428428 case MG_CLOSE_TAB:
429429 {
430430 size_t id = args.at (L" tabId" ).as_number ().to_uint32 ();
431- m_tabs.at (id)->m_contentWebView ->Close ();
431+ m_tabs.at (id)->m_contentHost ->Close ();
432432 m_tabs.erase (id);
433433 }
434434 break ;
@@ -439,18 +439,18 @@ void BrowserWindow::SetUIMessageBroker()
439439 break ;
440440 case MG_SHOW_OPTIONS:
441441 {
442- CheckFailure (m_optionsWebView ->put_IsVisible (TRUE ), L" " );
443- m_optionsWebView ->MoveFocus (WEBVIEW2_MOVE_FOCUS_REASON_PROGRAMMATIC );
442+ CheckFailure (m_optionsHost ->put_IsVisible (TRUE ), L" " );
443+ m_optionsHost ->MoveFocus (CORE_WEBVIEW2_MOVE_FOCUS_REASON_PROGRAMMATIC );
444444 }
445445 break ;
446446 case MG_HIDE_OPTIONS:
447447 {
448- CheckFailure (m_optionsWebView ->put_IsVisible (FALSE ), L" Something went wrong when trying to close the options dropdown." );
448+ CheckFailure (m_optionsHost ->put_IsVisible (FALSE ), L" Something went wrong when trying to close the options dropdown." );
449449 }
450450 break ;
451451 case MG_OPTION_SELECTED:
452452 {
453- m_tabs.at (m_activeTabId)->m_contentWebView ->MoveFocus (WEBVIEW2_MOVE_FOCUS_REASON_PROGRAMMATIC );
453+ m_tabs.at (m_activeTabId)->m_contentHost ->MoveFocus (CORE_WEBVIEW2_MOVE_FOCUS_REASON_PROGRAMMATIC );
454454 }
455455 break ;
456456 case MG_GET_FAVORITES:
@@ -480,18 +480,18 @@ HRESULT BrowserWindow::SwitchToTab(size_t tabId)
480480 size_t previousActiveTab = m_activeTabId;
481481
482482 RETURN_IF_FAILED (m_tabs.at (tabId)->ResizeWebView ());
483- RETURN_IF_FAILED (m_tabs.at (tabId)->m_contentWebView ->put_IsVisible (TRUE ));
483+ RETURN_IF_FAILED (m_tabs.at (tabId)->m_contentHost ->put_IsVisible (TRUE ));
484484 m_activeTabId = tabId;
485485
486486 if (previousActiveTab != INVALID_TAB_ID && previousActiveTab != m_activeTabId)
487487 {
488- RETURN_IF_FAILED (m_tabs.at (previousActiveTab)->m_contentWebView ->put_IsVisible (FALSE ));
488+ RETURN_IF_FAILED (m_tabs.at (previousActiveTab)->m_contentHost ->put_IsVisible (FALSE ));
489489 }
490490
491491 return S_OK;
492492}
493493
494- HRESULT BrowserWindow::HandleTabURIUpdate (size_t tabId, IWebView2WebView * webview)
494+ HRESULT BrowserWindow::HandleTabURIUpdate (size_t tabId, ICoreWebView2 * webview)
495495{
496496 wil::unique_cotaskmem_string source;
497497 RETURN_IF_FAILED (webview->get_Source (&source));
@@ -520,6 +520,22 @@ HRESULT BrowserWindow::HandleTabURIUpdate(size_t tabId, IWebView2WebView* webvie
520520 jsonObj[L" args" ][L" uriToShow" ] = web::json::value (L" browser://history" );
521521 }
522522
523+ RETURN_IF_FAILED (PostJsonToWebView (jsonObj, m_controlsWebView.Get ()));
524+
525+ return S_OK;
526+ }
527+
528+ HRESULT BrowserWindow::HandleTabHistoryUpdate (size_t tabId, ICoreWebView2* webview)
529+ {
530+ wil::unique_cotaskmem_string source;
531+ RETURN_IF_FAILED (webview->get_Source (&source));
532+
533+ web::json::value jsonObj = web::json::value::parse (L" {}" );
534+ jsonObj[L" message" ] = web::json::value (MG_UPDATE_URI);
535+ jsonObj[L" args" ] = web::json::value::parse (L" {}" );
536+ jsonObj[L" args" ][L" tabId" ] = web::json::value::number (tabId);
537+ jsonObj[L" args" ][L" uri" ] = web::json::value (source.get ());
538+
523539 BOOL canGoForward = FALSE ;
524540 RETURN_IF_FAILED (webview->get_CanGoForward (&canGoForward));
525541 jsonObj[L" args" ][L" canGoForward" ] = web::json::value::boolean (canGoForward);
@@ -533,7 +549,7 @@ HRESULT BrowserWindow::HandleTabURIUpdate(size_t tabId, IWebView2WebView* webvie
533549 return S_OK;
534550}
535551
536- HRESULT BrowserWindow::HandleTabNavStarting (size_t tabId, IWebView2WebView * webview)
552+ HRESULT BrowserWindow::HandleTabNavStarting (size_t tabId, ICoreWebView2 * webview)
537553{
538554 web::json::value jsonObj = web::json::value::parse (L" {}" );
539555 jsonObj[L" message" ] = web::json::value (MG_NAV_STARTING);
@@ -543,7 +559,7 @@ HRESULT BrowserWindow::HandleTabNavStarting(size_t tabId, IWebView2WebView* webv
543559 return PostJsonToWebView (jsonObj, m_controlsWebView.Get ());
544560}
545561
546- HRESULT BrowserWindow::HandleTabNavCompleted (size_t tabId, IWebView2WebView * webview, IWebView2NavigationCompletedEventArgs * args)
562+ HRESULT BrowserWindow::HandleTabNavCompleted (size_t tabId, ICoreWebView2 * webview, ICoreWebView2NavigationCompletedEventArgs * args)
547563{
548564 std::wstring getTitleScript (
549565 // Look for a title tag
@@ -602,7 +618,7 @@ HRESULT BrowserWindow::HandleTabNavCompleted(size_t tabId, IWebView2WebView* web
602618 L" })();"
603619 );
604620
605- CheckFailure (webview->ExecuteScript (getTitleScript.c_str (), Callback<IWebView2ExecuteScriptCompletedHandler >(
621+ CheckFailure (webview->ExecuteScript (getTitleScript.c_str (), Callback<ICoreWebView2ExecuteScriptCompletedHandler >(
606622 [this , tabId](HRESULT error, PCWSTR result) -> HRESULT
607623 {
608624 RETURN_IF_FAILED (error);
@@ -617,7 +633,7 @@ HRESULT BrowserWindow::HandleTabNavCompleted(size_t tabId, IWebView2WebView* web
617633 return S_OK;
618634 }).Get ()), L" Can't update title." );
619635
620- CheckFailure (webview->ExecuteScript (getFaviconURI.c_str (), Callback<IWebView2ExecuteScriptCompletedHandler >(
636+ CheckFailure (webview->ExecuteScript (getFaviconURI.c_str (), Callback<ICoreWebView2ExecuteScriptCompletedHandler >(
621637 [this , tabId](HRESULT error, PCWSTR result) -> HRESULT
622638 {
623639 RETURN_IF_FAILED (error);
@@ -646,7 +662,7 @@ HRESULT BrowserWindow::HandleTabNavCompleted(size_t tabId, IWebView2WebView* web
646662 return PostJsonToWebView (jsonObj, m_controlsWebView.Get ());
647663}
648664
649- HRESULT BrowserWindow::HandleTabSecurityUpdate (size_t tabId, IWebView2WebView * webview, IWebView2DevToolsProtocolEventReceivedEventArgs * args)
665+ HRESULT BrowserWindow::HandleTabSecurityUpdate (size_t tabId, ICoreWebView2 * webview, ICoreWebView2DevToolsProtocolEventReceivedEventArgs * args)
650666{
651667 wil::unique_cotaskmem_string jsonArgs;
652668 RETURN_IF_FAILED (args->get_ParameterObjectAsJson (&jsonArgs));
@@ -669,7 +685,7 @@ void BrowserWindow::HandleTabCreated(size_t tabId, bool shouldBeActive)
669685 }
670686}
671687
672- HRESULT BrowserWindow::HandleTabMessageReceived (size_t tabId, IWebView2WebView * webview, IWebView2WebMessageReceivedEventArgs * eventArgs)
688+ HRESULT BrowserWindow::HandleTabMessageReceived (size_t tabId, ICoreWebView2 * webview, ICoreWebView2WebMessageReceivedEventArgs * eventArgs)
673689{
674690 wil::unique_cotaskmem_string jsonString;
675691 RETURN_IF_FAILED (eventArgs->get_WebMessageAsJson (&jsonString));
@@ -808,7 +824,7 @@ HRESULT BrowserWindow::ResizeUIWebViews()
808824 bounds.bottom = bounds.top + GetDPIAwareBound (c_uiBarHeight);
809825 bounds.bottom += 1 ;
810826
811- RETURN_IF_FAILED (m_controlsWebView ->put_Bounds (bounds));
827+ RETURN_IF_FAILED (m_controlsHost ->put_Bounds (bounds));
812828 }
813829
814830 if (m_optionsWebView != nullptr )
@@ -819,7 +835,7 @@ HRESULT BrowserWindow::ResizeUIWebViews()
819835 bounds.bottom = bounds.top + GetDPIAwareBound (c_optionsDropdownHeight);
820836 bounds.left = bounds.right - GetDPIAwareBound (c_optionsDropdownWidth);
821837
822- RETURN_IF_FAILED (m_optionsWebView ->put_Bounds (bounds));
838+ RETURN_IF_FAILED (m_optionsHost ->put_Bounds (bounds));
823839 }
824840
825841 // Workaround for black controls WebView issue in Windows 7
@@ -922,7 +938,7 @@ std::wstring BrowserWindow::GetFilePathAsURI(std::wstring fullPath)
922938 return fileURI;
923939}
924940
925- HRESULT BrowserWindow::PostJsonToWebView (web::json::value jsonObj, IWebView2WebView * webview)
941+ HRESULT BrowserWindow::PostJsonToWebView (web::json::value jsonObj, ICoreWebView2 * webview)
926942{
927943 utility::stringstream_t stream;
928944 jsonObj.serialize (stream);
0 commit comments