Skip to content

Commit 9ecaa7d

Browse files
Updated example code to show example usage cases. fixed some minor formatting
1 parent 9c0ea14 commit 9ecaa7d

1 file changed

Lines changed: 41 additions & 10 deletions

File tree

specs/ExtendedNewWindowRequested.md

Lines changed: 41 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,36 @@ EventRegistrationToken m_newWindowRequestedToken = {};
1919
m_webviewEventSource->add_NewWindowRequested(
2020
Callback<ICoreWebView2NewWindowRequestedEventHandler>(
2121
[this](ICoreWebView2* sender, ICoreWebView2NewWindowRequestedEventArgs* args)
22-
-> HRESULT {
23-
wil::com_ptr<ICoreWebView2NewWindowRequestedEventArgs2> args2;
22+
-> HRESULT
23+
{
24+
wil::com_ptr<ICoreWebView2NewWindowRequestedEventArgs2> args2;
2425
25-
if(SUCCEEDED(args->QueryInterface(IID_PPV_ARGS(&args2)))) {
26-
wil::unique_cotaskmem_string name;
27-
CHECK_FAILURE(args2->get_Name(&name));
28-
}
26+
if(SUCCEEDED(args->QueryInterface(IID_PPV_ARGS(&args2))))
27+
{
28+
wil::unique_cotaskmem_string name;
29+
CHECK_FAILURE(args2->get_Name(&name));
30+
31+
wil::unique_cotaskmem_string uri;
32+
CHECK_FAILURE(args->get_Uri(&uri));
33+
34+
// Example usage of how the customer would use the window
35+
// name to handle special cases such as "openInNewBrowser"
36+
// which deviate from the normal handling of a new window.
37+
if (wcscmp(name.get(), L"openInNewBrowser") == 0)
38+
{
39+
ShellExecute(NULL, "open", uri.get(),
40+
NULL, NULL, SW_SHOWNORMAL);
41+
args->put_Handled(true);
42+
}
43+
else
44+
{
45+
HandleNormalNewWindow();
46+
}
47+
}
2948

3049
return S_OK;
31-
})
32-
.Get(),
50+
})
51+
.Get(),
3352
&m_newWindowRequestedToken);
3453
```
3554
@@ -40,7 +59,19 @@ webView.CoreWebView2.NewWindowRequested += WebView_NewWindowRequested;
4059
void WebView_NewWindowRequested(object sender, CoreWebView2NewWindowRequestedEventArgs e)
4160
{
4261
string newWindowName = e.Name;
43-
MessageBox.Show(this, newWindowName);
62+
63+
// Example usage of how the customer would use the window
64+
// name to handle special cases such as "openInNewBrowser"
65+
// which deviate from the normal handling of a new window.
66+
if (newWindowName == "openInNewBrowser")
67+
{
68+
Process.Start(e.Uri);
69+
e.Handled = true;
70+
}
71+
else
72+
{
73+
HandleNormalNewWindow();
74+
}
4475
}
4576
```
4677

@@ -51,7 +82,7 @@ void WebView_NewWindowRequested(object sender, CoreWebView2NewWindowRequestedEve
5182
[uuid(9bcea956-6e1f-43bc-bf02-0a360d73717b), object, pointer_default(unique)]
5283
interface ICoreWebView2NewWindowRequestedEventArgs2 : ICoreWebView2NewWindowRequestedEventArgs {
5384
/// Gets the name of the new window.
54-
[propget] HRESULT Name([out, retval] LPWSTR* name);
85+
[propget] HRESULT Name([out, retval] LPWSTR* value);
5586
}
5687
```
5788

0 commit comments

Comments
 (0)