Skip to content

Commit e41b740

Browse files
authored
Update IsSmartScreenRequired.md
1 parent b7d0b7e commit e41b740

File tree

1 file changed

+21
-21
lines changed

1 file changed

+21
-21
lines changed

specs/IsSmartScreenRequired.md

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,22 @@
22

33
[Edge SmartScreen](https://support.microsoft.com/en-us/microsoft-edge/how-can-smartscreen-help-protect-me-in-microsoft-edge-1c9a874a-6826-be5e-45b1-67fa445a74c8) helps end users identify reported phishing and malware websites, and also helps end users make informed decisions about downloads.
44

5-
Currently, developers can use `options->put_AdditionalBrowserArguments(L"--disable-features=msSmartScreenProtection")` to disable SmartScreen in the WebView2 application. It is a startup parameter of the browser process and applies to all WebView2 instances associated with that WebView2Environment. It must be determined when the WebView2Environment is created, and it cannot be modified at runtime.
5+
Currently, developers can use `options->put_AdditionalBrowserArguments(L"--disable-features=msSmartScreenProtection")` to disable SmartScreen in the WebView2 application. It is a startup parameter of the browser process and applies to all WebView2 instances using the same user data folder. It must be determined when the WebView2Environment is created, and it cannot be modified at runtime.
66

77
To support more flexibility we introduce a new API.
88

9-
we have CoreWebView2Settings.IsSmartScreenRequired. Each WebView2 declares if it requires SmartScreen. Some WebView2s may be used to display app content and don't require SmartScreen and others may be rendering arbitrary web content and do need SmartScreen. Having SmartScreen on unnecessarily for app content is a detriment to performance but otherwise not a problem. Having SmartScreen off for arbitrary web content is an issue. We have to turn SmartScreen on or off for all the WebView2s in an environment so if any WebView2 requires SmartScreen then we turn it on for all of them. If WebView2 settings change or WebView2s are closed and then all the WebView2s in an environment don't require SmartScreen, then we can turn SmartScreen off.
9+
We have CoreWebView2Settings.IsReputationCheckingRequired. Each WebView2 declares if it requires SmartScreen. Some WebView2s may be used to display app content and don't require SmartScreen and others may be rendering arbitrary web content and do need SmartScreen. Having SmartScreen on unnecessarily for app content is a detriment to performance but otherwise not a problem. Having SmartScreen off for arbitrary web content is an issue. We have to turn SmartScreen on or off for all WebView2 using the same user data folder so if any WebView2 requires SmartScreen then we turn it on for all of them. If WebView2 settings change or WebView2s are closed and then all WebView2s using the same user data folder don't require SmartScreen, then we can turn SmartScreen off.
1010

1111
It is much easier to indicate if individual WebView2s require SmartScreen than to have an end developer explicitly manage if SmartScreen should be enabled as a whole, especially when its different sets of WebView2s in different processes (like Excel's set of WebView2s and Word's set of WebView2s) all sharing the same user data folder.
1212
In this document we describe the new setting.
1313

1414

1515
# Description
16-
You can use CoreWebView2Settings.IsSmartScreenRequired to control SmartScreen. SmartScreen is enabled or disabled per browser process, so all WebView2 applications sharing the same user data folder path also share SmartScreen being enabled or disabled.
17-
If CoreWebView2Setting.IsSmartScreenRequired is true for any CoreWebView2 in its associated CoreWebView2Environment, then SmartScreen is enabled. If CoreWebView2Setting.IsSmartScreenRequired is false for all CoreWebView2s in their CoreWebView2Environment, then SmartScreen is disabled.
18-
The default value for `IsSmartScreenRequired` is true. When a new WebView is created, the SmartScreen state under the same CoreWebView2Environment will be reset to true.
16+
You can use CoreWebView2Settings.IsReputationCheckingRequired to control SmartScreen. SmartScreen is enabled or disabled per browser process, so all WebView2 applications sharing the same user data folder path also share SmartScreen being enabled or disabled.
17+
If CoreWebView2Setting.IsReputationCheckingRequired is true for any CoreWebView2 using the same user data folder, then SmartScreen is enabled. If CoreWebView2Setting.IsReputationCheckingRequired is false for all CoreWebView2 using the same user data folder, then SmartScreen is disabled.
18+
The default value for `IsReputationCheckingRequired` is true. When a new CoreWebview2 is created, the SmartScreens of all CoreWebviews using the same user data folder are reset to true.
1919

20-
Changes to `IsSmartScreenRequired` take effect on the next navigation or download.
20+
Changes to `IsReputationCheckingRequired` take effect on the next navigation or download.
2121

2222

2323
# Examples
@@ -35,7 +35,7 @@ void SettingsComponent::UpdateSmartScreenRequirementBeforeNavigating(bool isLoca
3535
m_webViewSettings.try_query<ICoreWebView2Settings11>();
3636
if(coreWebView2Settings11)
3737
{
38-
CHECK_FAILURE(coreWebView2Settings11->put_IsSmartScreenRequired(!isLocalContent));
38+
CHECK_FAILURE(coreWebView2Settings11->put_IsReputationCheckingRequired(!isLocalContent));
3939
}
4040
}
4141
```
@@ -44,7 +44,7 @@ void SettingsComponent::UpdateSmartScreenRequirementBeforeNavigating(bool isLoca
4444
void ToggleSmartScreenRequired()
4545
{
4646
var settings = webView2Control.CoreWebView2.Settings;
47-
settings.IsSmartScreenRequired = !settings.IsSmartScreenRequired;
47+
settings.IsReputationCheckingRequired = !settings.IsReputationCheckingRequired;
4848
}
4949
```
5050

@@ -62,20 +62,20 @@ See [API Details](#api-details) section below for API reference.
6262
interface ICoreWebView2Settings11 : ICoreWebView2Settings10 {
6363
/// SmartScreen helps webviews identify reported phishing and malware websites and
6464
/// also helps users make informed decisions about downloads.
65-
/// `IsSmartScreenRequired` is used to control whether SmartScreen enabled or not.
66-
/// SmartScreen is enabled or disabled for all CoreWebView2s in a CoreWebView2Environment.
67-
/// If CoreWebView2Setting.IsSmartScreenRequired is true for any CoreWebView2 associated to the same
68-
/// CoreWebView2Environment, then SmartScreen is enabled. If CoreWebView2Setting.IsSmartScreenRequired
69-
/// is false for all CoreWebView2s in the associated CoreWebView2Environment, then SmartScreen is disabled.
65+
/// `IsReputationCheckingRequired` is used to control whether SmartScreen enabled or not.
66+
/// SmartScreen is enabled or disabled for all CoreWebView2s using the same user data folder.
67+
/// If CoreWebView2Setting.IsReputationCheckingRequired is true for any CoreWebView2 using the same
68+
/// user data folder, then SmartScreen is enabled. If CoreWebView2Setting.IsReputationCheckingRequired
69+
/// is false for all CoreWebView2 using the same user data folder, then SmartScreen is disabled.
7070
/// When it is changed, the change will be applied to all WebViews using the
71-
/// same CoreWebView2Environment on the next navigation or download.
72-
/// The default value for `IsSmartScreenRequired` is true. When a new WebView is created, the SmartScreen
73-
/// state under the same CoreWebView2Environment will be reset to true.
74-
[propget] HRESULT IsSmartScreenRequired([out, retval] BOOL* value);
71+
/// same user data folder on the next navigation or download.
72+
/// The default value for `IsReputationCheckingRequired` is true. When a new CoreWebview2
73+
/// is created, the SmartScreens of all CoreWebviews using the same user data folder are reset to true.
74+
[propget] HRESULT IsReputationCheckingRequired([out, retval] BOOL* value);
7575

7676
/// Sets whether this webview2 instance needs SmartScreen protection for its content.
77-
/// Set the `IsSmartScreenRequired` property.
78-
[propput] HRESULT IsSmartScreenRequired([in] BOOL value);
77+
/// Set the `IsReputationCheckingRequired` property.
78+
[propput] HRESULT IsReputationCheckingRequired([in] BOOL value);
7979
}
8080
```
8181

@@ -87,12 +87,12 @@ namespace Microsoft.Web.WebView2.Core
8787
// ...
8888
[interface_name("Microsoft.Web.WebView2.Core.ICoreWebView2Settings11")]
8989
{
90-
Boolean IsSmartScreenRequired { get; set; };
90+
Boolean IsReputationCheckingRequired { get; set; };
9191
}
9292
}
9393
}
9494
```
9595

9696
# Appendix
9797

98-
We initially considered an API like `CoreWebView2Environment.IsSmartScreenEnabled` that would directly change the value for all the processes. The problem is this is not easy to do for apps like Office who have multiple apps connected to the same browser process. In their case each app has IsSmartScreenEnabled and its hard for the browser process to know which change to the property should win.
98+
We initially considered an API like `CoreWebView2Environment.IsReputationCheckingRequired` that would directly change the value for all the processes. The problem is this is not easy to do for apps like Office who have multiple apps connected to the same browser process. In their case each app has IsReputationCheckingRequiredxf and its hard for the browser process to know which change to the property should win.

0 commit comments

Comments
 (0)