@@ -23,6 +23,7 @@ SettingsComponent::SettingsComponent(
2323{
2424 CHECK_FAILURE (m_webView->get_Settings (&m_settings));
2525
26+ m_settings2 = m_settings.try_query <ICoreWebView2Settings2>();
2627 // Copy old settings if desired
2728 if (old)
2829 {
@@ -37,16 +38,11 @@ SettingsComponent::SettingsComponent(
3738 CHECK_FAILURE (m_settings->put_IsStatusBarEnabled (setting));
3839 CHECK_FAILURE (old->m_settings ->get_AreDevToolsEnabled (&setting));
3940 CHECK_FAILURE (m_settings->put_AreDevToolsEnabled (setting));
40- wil::com_ptr<ICoreWebView2ExperimentalSettings> experimental_settings_old;
41- experimental_settings_old =
42- old->m_settings .try_query <ICoreWebView2ExperimentalSettings>();
43- wil::com_ptr<ICoreWebView2ExperimentalSettings> experimental_settings_new;
44- experimental_settings_new = m_settings.try_query <ICoreWebView2ExperimentalSettings>();
45- if (experimental_settings_old && experimental_settings_new)
41+ if (old->m_settings2 && m_settings2)
4642 {
4743 LPWSTR user_agent;
48- CHECK_FAILURE (experimental_settings_old ->get_UserAgent (&user_agent));
49- CHECK_FAILURE (experimental_settings_new ->put_UserAgent (user_agent));
44+ CHECK_FAILURE (old-> m_settings2 ->get_UserAgent (&user_agent));
45+ CHECK_FAILURE (m_settings2 ->put_UserAgent (user_agent));
5046 }
5147 SetBlockImages (old->m_blockImages );
5248 SetReplaceImages (old->m_replaceImages );
@@ -55,7 +51,6 @@ SettingsComponent::SettingsComponent(
5551 m_blockedSitesSet = old->m_blockedSitesSet ;
5652 m_blockedSites = std::move (old->m_blockedSites );
5753 }
58-
5954 // ! [NavigationStarting]
6055 // Register a handler for the NavigationStarting event.
6156 // This handler will check the domain being navigated to, and if the domain
@@ -98,16 +93,18 @@ SettingsComponent::SettingsComponent(
9893 }
9994 // ! [IsScriptEnabled]
10095 // ! [UserAgent]
101- static const PCWSTR url_compare_example = L" fourthcoffee.com" ;
102- wil::unique_bstr domain = GetDomainOfUri (uri.get ());
103- const wchar_t * domains = domain.get ();
104-
105- if (wcscmp (url_compare_example, domains) == 0 )
96+ if (m_settings2)
10697 {
107- SetUserAgent (L" example_navigation_ua" );
98+ static const PCWSTR url_compare_example = L" fourthcoffee.com" ;
99+ wil::unique_bstr domain = GetDomainOfUri (uri.get ());
100+ const wchar_t * domains = domain.get ();
101+
102+ if (wcscmp (url_compare_example, domains) == 0 )
103+ {
104+ SetUserAgent (L" example_navigation_ua" );
105+ }
108106 }
109107 // ! [UserAgent]
110-
111108 return S_OK;
112109 })
113110 .Get (),
@@ -244,6 +241,7 @@ bool SettingsComponent::HandleWindowMessage(
244241 }
245242 case ID_SETTINGS_SETUSERAGENT:
246243 {
244+ CHECK_FEATURE_RETURN (m_settings2);
247245 ChangeUserAgent ();
248246 return true ;
249247 }
@@ -478,20 +476,10 @@ bool SettingsComponent::HandleWindowMessage(
478476 // ! [BuiltInErrorPageEnabled]
479477 return true ;
480478 }
481- case ID_SETTINGS_USER_AGENT_STRING:
482- {
483- LPWSTR user_agent;
484- wil::com_ptr<ICoreWebView2ExperimentalSettings> settings;
485- settings = m_settings.try_query <ICoreWebView2ExperimentalSettings>();
486- CHECK_FAILURE (settings->get_UserAgent (&user_agent));
487- CHECK_FAILURE (settings->put_UserAgent (L" example_string" ));
488- return true ;
489- }
490479 }
491480 }
492481 return false ;
493482}
494-
495483// Prompt the user for a list of blocked domains
496484void SettingsComponent::ChangeBlockedSites ()
497485{
@@ -661,36 +649,38 @@ void SettingsComponent::SetReplaceImages(bool replaceImages)
661649// Prompt the user for a new User Agent string
662650void SettingsComponent::ChangeUserAgent ()
663651{
664- wil::com_ptr<ICoreWebView2ExperimentalSettings> experimental_settings;
665- experimental_settings = m_settings.try_query <ICoreWebView2ExperimentalSettings>();
666- LPWSTR user_agent;
667- CHECK_FAILURE (experimental_settings->get_UserAgent (&user_agent));
668- TextInputDialog dialog (
669- m_appWindow->GetMainWindow (), L" User Agent" , L" User agent:" ,
670- L" Enter user agent, or leave blank to restore default." ,
671- m_changeUserAgent ? m_overridingUserAgent.c_str () : user_agent);
672- if (dialog.confirmed )
652+ if (m_settings2)
673653 {
674- SetUserAgent (dialog.input );
654+ LPWSTR user_agent;
655+ CHECK_FAILURE (m_settings2->get_UserAgent (&user_agent));
656+ TextInputDialog dialog (
657+ m_appWindow->GetMainWindow (), L" User Agent" , L" User agent:" ,
658+ L" Enter user agent, or leave blank to restore default." ,
659+ m_changeUserAgent ? m_overridingUserAgent.c_str () : user_agent);
660+ if (dialog.confirmed )
661+ {
662+ SetUserAgent (dialog.input );
663+ }
675664 }
676665}
677666
678667// Register a WebResourceRequested handler which adds a custom User-Agent
679668// HTTP header to all requests.
680669void SettingsComponent::SetUserAgent (const std::wstring& userAgent)
681670{
682- m_overridingUserAgent = userAgent;
683- if (m_overridingUserAgent.empty ())
684- {
685- m_changeUserAgent = false ;
686- }
687- else
671+ if (m_settings2)
688672 {
689- m_changeUserAgent = true ;
690- wil::com_ptr<ICoreWebView2ExperimentalSettings> experimental_settings;
691- experimental_settings = m_settings.try_query <ICoreWebView2ExperimentalSettings>();
692- experimental_settings->put_UserAgent (m_overridingUserAgent.c_str ());
693- }
673+ m_overridingUserAgent = userAgent;
674+ if (m_overridingUserAgent.empty ())
675+ {
676+ m_changeUserAgent = false ;
677+ }
678+ else
679+ {
680+ m_changeUserAgent = true ;
681+ CHECK_FAILURE (m_settings2->put_UserAgent (m_overridingUserAgent.c_str ()));
682+ }
683+ }
694684}
695685
696686void SettingsComponent::CompleteScriptDialogDeferral ()
0 commit comments