Skip to content

Commit 6bf4af5

Browse files
Update projects to use latest WebView2 SDK 1.0.2895-prerelease (#256)
* Updates for Win32, WPF, WinForms, UWP and WinUI3 sample apps from 131.0.2895.0 * Updated package version for Win32, WPF and WinForms sample apps to 1.0.2895-prerelease --------- Co-authored-by: WebView2 Github Bot <[email protected]>
1 parent c05049e commit 6bf4af5

22 files changed

+318
-68
lines changed

SampleApps/WebView2APISample/AppWindow.cpp

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1943,6 +1943,66 @@ void AppWindow::RegisterEventHandlers()
19431943
nullptr));
19441944
//! [NewBrowserVersionAvailable]
19451945

1946+
//! [RestartRequested]
1947+
// After the environment is successfully created,
1948+
// register a handler for
1949+
auto exp_env15 = m_webViewEnvironment.try_query<ICoreWebView2ExperimentalEnvironment15>();
1950+
CHECK_FAILURE(exp_env15->add_RestartRequested(
1951+
Callback<ICoreWebView2ExperimentalRestartRequestedEventHandler>(
1952+
[this](
1953+
ICoreWebView2Environment* sender,
1954+
ICoreWebView2ExperimentalRestartRequestedEventArgs* args) -> HRESULT
1955+
{
1956+
COREWEBVIEW2_RESTART_REQUESTED_PRIORITY priority;
1957+
args->get_Priority(&priority);
1958+
if (priority == COREWEBVIEW2_RESTART_REQUESTED_PRIORITY_NORMAL)
1959+
{
1960+
// Remaind user to restart the app when they get a chance.
1961+
// Don't force user to restart.
1962+
MessageBox(
1963+
m_mainWindow, L"Please restart your app when you get a chance",
1964+
L"WebView Restart Requested", MB_OK);
1965+
}
1966+
else if (priority == COREWEBVIEW2_RESTART_REQUESTED_PRIORITY_HIGH)
1967+
{
1968+
// Don't block the event handler with a message box
1969+
RunAsync(
1970+
[this]()
1971+
{
1972+
std::wstring message =
1973+
L"We detected there is a critical update for WebView2 runtime.";
1974+
if (m_webView)
1975+
{
1976+
message += L"Do you want to restart the app? \n\n";
1977+
message +=
1978+
L"Click No if you only want to re-create the webviews. \n";
1979+
message += L"Click Cancel for no action. \n";
1980+
}
1981+
int response = MessageBox(
1982+
m_mainWindow, message.c_str(), L"Critical Update Avaliable",
1983+
m_webView ? MB_YESNOCANCEL : MB_OK);
1984+
1985+
if (response == IDYES)
1986+
{
1987+
RestartApp();
1988+
}
1989+
else if (response == IDNO)
1990+
{
1991+
ReinitializeWebViewWithNewBrowser();
1992+
}
1993+
else
1994+
{
1995+
// do nothing
1996+
}
1997+
});
1998+
}
1999+
2000+
return S_OK;
2001+
})
2002+
.Get(),
2003+
nullptr));
2004+
//! [RestartRequested]
2005+
19462006
//! [ProfileDeleted]
19472007
auto webView2_13 = m_webView.try_query<ICoreWebView2_13>();
19482008
CHECK_FEATURE_RETURN_EMPTY(webView2_13);

SampleApps/WebView2APISample/ScenarioCustomScheme.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,11 @@ using namespace Microsoft::WRL;
1414

1515
ScenarioCustomScheme::ScenarioCustomScheme(AppWindow* appWindow) : m_appWindow(appWindow)
1616
{
17-
CHECK_FAILURE(m_appWindow->GetWebView()->AddWebResourceRequestedFilter(
18-
L"custom-scheme*", COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL));
17+
m_appWindow->GetWebView()->QueryInterface(IID_PPV_ARGS(&m_webView2_22));
18+
CHECK_FEATURE_RETURN_EMPTY(m_webView2_22);
19+
CHECK_FAILURE(m_webView2_22->AddWebResourceRequestedFilterWithRequestSourceKinds(
20+
L"custom-scheme*", COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL,
21+
COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS_DOCUMENT));
1922
CHECK_FAILURE(m_appWindow->GetWebView()->add_WebResourceRequested(
2023
Callback<ICoreWebView2WebResourceRequestedEventHandler>(
2124
[this](ICoreWebView2* sender, ICoreWebView2WebResourceRequestedEventArgs* args)

SampleApps/WebView2APISample/ScenarioCustomScheme.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,7 @@ class ScenarioCustomScheme : public ComponentBase
2020
EventRegistrationToken m_webResourceRequestedToken = {};
2121
EventRegistrationToken m_navigationCompletedToken = {};
2222

23+
wil::com_ptr<ICoreWebView2_22> m_webView2_22;
24+
2325
AppWindow* m_appWindow = nullptr;
2426
};

SampleApps/WebView2APISample/ScenarioCustomSchemeNavigate.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,11 @@ using namespace Microsoft::WRL;
1515
ScenarioCustomSchemeNavigate::ScenarioCustomSchemeNavigate(AppWindow* appWindow)
1616
: m_appWindow(appWindow)
1717
{
18-
CHECK_FAILURE(m_appWindow->GetWebView()->AddWebResourceRequestedFilter(
19-
L"wv2rocks*", COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL));
18+
m_appWindow->GetWebView()->QueryInterface(IID_PPV_ARGS(&m_webView2_22));
19+
CHECK_FEATURE_RETURN_EMPTY(m_webView2_22);
20+
CHECK_FAILURE(m_webView2_22->AddWebResourceRequestedFilterWithRequestSourceKinds(
21+
L"wv2rocks*", COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL,
22+
COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS_DOCUMENT));
2023
CHECK_FAILURE(m_appWindow->GetWebView()->add_WebResourceRequested(
2124
Callback<ICoreWebView2WebResourceRequestedEventHandler>(
2225
[this](ICoreWebView2* sender, ICoreWebView2WebResourceRequestedEventArgs* args)

SampleApps/WebView2APISample/ScenarioCustomSchemeNavigate.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,6 @@ class ScenarioCustomSchemeNavigate : public ComponentBase
2121
EventRegistrationToken m_navigationCompletedToken = {};
2222

2323
AppWindow* m_appWindow = nullptr;
24+
25+
wil::com_ptr<ICoreWebView2_22> m_webView2_22;
2426
};

SampleApps/WebView2APISample/ScenarioFileTypePolicy.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ ScenarioFileTypePolicy::ScenarioFileTypePolicy(AppWindow* appWindow)
1717
{
1818
if (m_webView2)
1919
{
20-
m_webView2Experimental27 = m_webView2.try_query<ICoreWebView2Experimental27>();
2120
m_webView2_2 = m_webView2.try_query<ICoreWebView2_2>();
2221

2322
m_sampleUri = m_appWindow->GetLocalUri(c_samplePath);
@@ -44,18 +43,19 @@ ScenarioFileTypePolicy::ScenarioFileTypePolicy(AppWindow* appWindow)
4443
//! [SuppressPolicyForExtension]
4544
// This example will register the event with two custom rules.
4645
// 1. Suppressing file type policy, security dialog, and allows saving ".eml" files
47-
// directly.
48-
// 2. When the URI is trusted.- Showing customized warning UI when saving ".iso"
49-
// files. It allows to block the saving directly.
46+
// directly; when the URI is trusted.
47+
// 2. Showing customized warning UI when saving ".iso" files. It allows to block
48+
// the saving directly.
5049
bool ScenarioFileTypePolicy::SuppressPolicyForExtension()
5150
{
52-
if (!m_webView2Experimental27)
51+
m_webView2_26 = m_webView2.try_query<ICoreWebView2_26>();
52+
if (!m_webView2_26)
5353
return false;
54-
m_webView2Experimental27->add_SaveFileSecurityCheckStarting(
55-
Callback<ICoreWebView2ExperimentalSaveFileSecurityCheckStartingEventHandler>(
54+
m_webView2_26->add_SaveFileSecurityCheckStarting(
55+
Callback<ICoreWebView2SaveFileSecurityCheckStartingEventHandler>(
5656
[this](
5757
ICoreWebView2* sender,
58-
ICoreWebView2ExperimentalSaveFileSecurityCheckStartingEventArgs* args)
58+
ICoreWebView2SaveFileSecurityCheckStartingEventArgs* args)
5959
-> HRESULT
6060
{
6161
// Get the file extension for file to be saved.
@@ -107,9 +107,9 @@ bool ScenarioFileTypePolicy::SuppressPolicyForExtension()
107107

108108
ScenarioFileTypePolicy::~ScenarioFileTypePolicy()
109109
{
110-
if (m_webView2Experimental27)
110+
if (m_webView2_26)
111111
{
112-
CHECK_FAILURE(m_webView2Experimental27->remove_SaveFileSecurityCheckStarting(
112+
CHECK_FAILURE(m_webView2_26->remove_SaveFileSecurityCheckStarting(
113113
m_saveFileSecurityCheckStartingToken));
114114
}
115115
CHECK_FAILURE(m_webView2_2->remove_DOMContentLoaded(m_DOMcontentLoadedToken));

SampleApps/WebView2APISample/ScenarioFileTypePolicy.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class ScenarioFileTypePolicy : public ComponentBase
2121
AppWindow* m_appWindow;
2222
wil::com_ptr<ICoreWebView2> m_webView2;
2323
wil::com_ptr<ICoreWebView2_2> m_webView2_2;
24-
wil::com_ptr<ICoreWebView2Experimental27> m_webView2Experimental27;
24+
wil::com_ptr<ICoreWebView2_26> m_webView2_26;
2525
EventRegistrationToken m_saveFileSecurityCheckStartingToken = {};
2626
EventRegistrationToken m_DOMcontentLoadedToken = {};
2727
std::wstring m_sampleUri;

SampleApps/WebView2APISample/ScenarioScreenCapture.cpp

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,13 @@ ScenarioScreenCapture::ScenarioScreenCapture(AppWindow* appWindow)
1919
m_sampleUri = m_appWindow->GetLocalUri(c_samplePath);
2020

2121
//! [ScreenCaptureStarting0]
22-
m_webViewExperimental26 = m_webView.try_query<ICoreWebView2Experimental26>();
23-
if (m_webViewExperimental26)
22+
m_webView2_27 = m_webView.try_query<ICoreWebView2_27>();
23+
if (m_webView2_27)
2424
{
25-
m_webViewExperimental26->add_ScreenCaptureStarting(
26-
Callback<ICoreWebView2ExperimentalScreenCaptureStartingEventHandler>(
27-
[this](
28-
ICoreWebView2* sender,
29-
ICoreWebView2ExperimentalScreenCaptureStartingEventArgs* args) -> HRESULT
25+
m_webView2_27->add_ScreenCaptureStarting(
26+
Callback<ICoreWebView2ScreenCaptureStartingEventHandler>(
27+
[this](ICoreWebView2* sender, ICoreWebView2ScreenCaptureStartingEventArgs* args)
28+
-> HRESULT
3029
{
3130
// Get Frame Info
3231
wil::com_ptr<ICoreWebView2FrameInfo> frameInfo;
@@ -121,16 +120,13 @@ ScenarioScreenCapture::ScenarioScreenCapture(AppWindow* appWindow)
121120
.Get(),
122121
nullptr));
123122

124-
m_experimentalFrame6 =
125-
webviewFrame.try_query<ICoreWebView2ExperimentalFrame6>();
123+
m_frame6 = webviewFrame.try_query<ICoreWebView2Frame6>();
126124

127-
m_experimentalFrame6->add_ScreenCaptureStarting(
128-
Callback<
129-
ICoreWebView2ExperimentalFrameScreenCaptureStartingEventHandler>(
125+
m_frame6->add_ScreenCaptureStarting(
126+
Callback<ICoreWebView2FrameScreenCaptureStartingEventHandler>(
130127
[this](
131128
ICoreWebView2Frame* sender,
132-
ICoreWebView2ExperimentalScreenCaptureStartingEventArgs* args)
133-
-> HRESULT
129+
ICoreWebView2ScreenCaptureStartingEventArgs* args) -> HRESULT
134130
{
135131
args->put_Handled(TRUE);
136132

@@ -243,15 +239,15 @@ ScenarioScreenCapture::~ScenarioScreenCapture()
243239
{
244240
m_webView->remove_ContentLoading(m_contentLoadingToken);
245241
m_webView->remove_WebMessageReceived(m_webMessageReceivedToken);
246-
if (m_webViewExperimental26)
242+
if (m_webView2_27)
247243
{
248-
CHECK_FAILURE(m_webViewExperimental26->remove_ScreenCaptureStarting(
249-
m_screenCaptureStartingToken));
244+
CHECK_FAILURE(
245+
m_webView2_27->remove_ScreenCaptureStarting(m_screenCaptureStartingToken));
250246
}
251-
if (m_experimentalFrame6)
247+
if (m_frame6)
252248
{
253-
CHECK_FAILURE(m_experimentalFrame6->remove_ScreenCaptureStarting(
254-
m_frameScreenCaptureStartingToken));
249+
CHECK_FAILURE(
250+
m_frame6->remove_ScreenCaptureStarting(m_frameScreenCaptureStartingToken));
255251
}
256252
if (m_webView4)
257253
{

SampleApps/WebView2APISample/ScenarioScreenCapture.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ class ScenarioScreenCapture : public ComponentBase
2020
AppWindow* m_appWindow = nullptr;
2121
wil::com_ptr<ICoreWebView2> m_webView;
2222
wil::com_ptr<ICoreWebView2_4> m_webView4;
23-
wil::com_ptr<ICoreWebView2Experimental26> m_webViewExperimental26;
24-
wil::com_ptr<ICoreWebView2ExperimentalFrame6> m_experimentalFrame6;
23+
wil::com_ptr<ICoreWebView2_27> m_webView2_27;
24+
wil::com_ptr<ICoreWebView2Frame6> m_frame6;
2525
std::wstring m_sampleUri;
2626
std::map<int, BOOL> m_screenCaptureFrameIdPermission;
2727
BOOL m_mainFramePermission = TRUE;

SampleApps/WebView2APISample/ScenarioWebViewEventMonitor.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -503,9 +503,6 @@ void ScenarioWebViewEventMonitor::EnableWebResourceRequestedEvent(bool enable)
503503
}
504504
else if (enable && m_webResourceRequestedToken.value == 0)
505505
{
506-
m_webviewEventSource->AddWebResourceRequestedFilter(
507-
L"*", COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL);
508-
509506
auto webView2_22 = m_webviewEventSource.try_query<ICoreWebView2_22>();
510507
if (webView2_22)
511508
{

SampleApps/WebView2APISample/SettingsComponent.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ SettingsComponent::SettingsComponent(
4040
m_webView2_14 = m_webView.try_query<ICoreWebView2_14>();
4141
m_webView2_15 = m_webView.try_query<ICoreWebView2_15>();
4242
m_webView2_18 = m_webView.try_query<ICoreWebView2_18>();
43+
m_webView2_22 = m_webView.try_query<ICoreWebView2_22>();
4344

4445
// Copy old settings if desired
4546
if (old)
@@ -1510,8 +1511,10 @@ void SettingsComponent::SetBlockImages(bool blockImages)
15101511
//! [WebResourceRequested0]
15111512
if (m_blockImages)
15121513
{
1513-
m_webView->AddWebResourceRequestedFilter(
1514-
L"*", COREWEBVIEW2_WEB_RESOURCE_CONTEXT_IMAGE);
1514+
CHECK_FEATURE_RETURN_EMPTY(m_webView2_22);
1515+
m_webView2_22->AddWebResourceRequestedFilterWithRequestSourceKinds(
1516+
L"*", COREWEBVIEW2_WEB_RESOURCE_CONTEXT_IMAGE,
1517+
COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS_DOCUMENT);
15151518
CHECK_FAILURE(m_webView->add_WebResourceRequested(
15161519
Callback<ICoreWebView2WebResourceRequestedEventHandler>(
15171520
[this](
@@ -1561,8 +1564,10 @@ void SettingsComponent::SetReplaceImages(bool replaceImages)
15611564
//! [WebResourceRequested1]
15621565
if (m_replaceImages)
15631566
{
1564-
m_webView->AddWebResourceRequestedFilter(
1565-
L"*", COREWEBVIEW2_WEB_RESOURCE_CONTEXT_IMAGE);
1567+
CHECK_FEATURE_RETURN_EMPTY(m_webView2_22);
1568+
m_webView2_22->AddWebResourceRequestedFilterWithRequestSourceKinds(
1569+
L"*", COREWEBVIEW2_WEB_RESOURCE_CONTEXT_IMAGE,
1570+
COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS_DOCUMENT);
15661571
CHECK_FAILURE(m_webView->add_WebResourceRequested(
15671572
Callback<ICoreWebView2WebResourceRequestedEventHandler>(
15681573
[this](

SampleApps/WebView2APISample/SettingsComponent.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ class SettingsComponent : public ComponentBase
6060
wil::com_ptr<ICoreWebView2_14> m_webView2_14;
6161
wil::com_ptr<ICoreWebView2_15> m_webView2_15;
6262
wil::com_ptr<ICoreWebView2_18> m_webView2_18;
63+
wil::com_ptr<ICoreWebView2_22> m_webView2_22;
6364
wil::com_ptr<ICoreWebView2Settings> m_settings;
6465
wil::com_ptr<ICoreWebView2Settings2> m_settings2;
6566
wil::com_ptr<ICoreWebView2Settings3> m_settings3;

SampleApps/WebView2APISample/WebView2APISample.vcxproj

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,12 @@
391391
<CopyFileToFolders Include="assets/ScenarioScreenCaptureIFrame2.html">
392392
<DestinationFolders>$(OutDir)\assets</DestinationFolders>
393393
</CopyFileToFolders>
394+
<CopyFileToFolders Include="assets/ScenarioServiceWorkerSyncRegistrationManager.html">
395+
<DestinationFolders>$(OutDir)\assets</DestinationFolders>
396+
</CopyFileToFolders>
397+
<CopyFileToFolders Include="assets/ScenarioServiceWorkerSyncRegistrationManagerServiceWorker.js">
398+
<DestinationFolders>$(OutDir)\assets</DestinationFolders>
399+
</CopyFileToFolders>
394400
<CopyFileToFolders Include="assets/ScenarioSharedBuffer.html">
395401
<DestinationFolders>$(OutDir)\assets</DestinationFolders>
396402
</CopyFileToFolders>
@@ -480,13 +486,13 @@
480486
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
481487
<ImportGroup Label="ExtensionTargets">
482488
<Import Project="..\packages\Microsoft.Windows.ImplementationLibrary.1.0.220201.1\build\native\Microsoft.Windows.ImplementationLibrary.targets" Condition="Exists('..\packages\Microsoft.Windows.ImplementationLibrary.1.0.220201.1\build\native\Microsoft.Windows.ImplementationLibrary.targets')" />
483-
<Import Project="..\packages\Microsoft.Web.WebView2.1.0.2839-prerelease\build\native\Microsoft.Web.WebView2.targets" Condition="Exists('..\packages\Microsoft.Web.WebView2.1.0.2839-prerelease\build\native\Microsoft.Web.WebView2.targets')" />
489+
<Import Project="..\packages\Microsoft.Web.WebView2.1.0.2895-prerelease\build\native\Microsoft.Web.WebView2.targets" Condition="Exists('..\packages\Microsoft.Web.WebView2.1.0.2895-prerelease\build\native\Microsoft.Web.WebView2.targets')" />
484490
</ImportGroup>
485491
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
486492
<PropertyGroup>
487493
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
488494
</PropertyGroup>
489495
<Error Condition="!Exists('..\packages\Microsoft.Windows.ImplementationLibrary.1.0.220201.1\build\native\Microsoft.Windows.ImplementationLibrary.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Windows.ImplementationLibrary.1.0.220201.1\build\native\Microsoft.Windows.ImplementationLibrary.targets'))" />
490-
<Error Condition="!Exists('..\packages\Microsoft.Web.WebView2.1.0.2839-prerelease\build\native\Microsoft.Web.WebView2.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Web.WebView2.1.0.2839-prerelease\build\native\Microsoft.Web.WebView2.targets'))" />
496+
<Error Condition="!Exists('..\packages\Microsoft.Web.WebView2.1.0.2895-prerelease\build\native\Microsoft.Web.WebView2.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Web.WebView2.1.0.2895-prerelease\build\native\Microsoft.Web.WebView2.targets'))" />
491497
</Target>
492498
</Project>

0 commit comments

Comments
 (0)