From 524265175ae8200d5d07249e50a02a4fb00bb1cb Mon Sep 17 00:00:00 2001 From: Monica Chintala <69160047+monica-ch@users.noreply.github.com> Date: Thu, 17 Nov 2022 13:52:48 -0800 Subject: [PATCH] Add spec for Tracking Prevention. (#2886) * Add Tracking Prevention API spec --- specs/TrackingPrevention.md | 224 ++++++++++++++++++++++ specs/images/TrackingPreventionLevels.png | Bin 0 -> 36260 bytes 2 files changed, 224 insertions(+) create mode 100644 specs/TrackingPrevention.md create mode 100644 specs/images/TrackingPreventionLevels.png diff --git a/specs/TrackingPrevention.md b/specs/TrackingPrevention.md new file mode 100644 index 000000000..f97e142c2 --- /dev/null +++ b/specs/TrackingPrevention.md @@ -0,0 +1,224 @@ +Tracking Prevention +=== + +# Background +The WebView2 team has been asked for an API to control levels of tracking prevention and also to turn off tracking prevention feature in WebView2. + +We are proposing two API's + +CoreWebView2Profile.PreferredTrackingPreventionLevel: This API allows you to control levels of tracking prevention for WebView2 which +are associated with a profile and persisted in the user data folder. However, the level is not respected if tracking prevention feature is +disabled using `CoreWebView2EnvironmentOptions.EnableTrackingPrevention`. That means, if you set the property when the feature is disabled +it is updated and persisted but it will takes effect only if `CoreWebView2EnvironmentOptions.EnableTrackingPrevention` is true. +The levels are similar to Edge: `Off`, `Basic`, `Balanced` and `Strict`. + +For reference, in the screenshot below, this API sets the levels of tracking prevention as a WebView2 API. + +![Edge Tracking Prevention](images/TrackingPreventionLevels.png) + +CoreWebView2EnvironmentOptions.EnableTrackingPrevention: This API allows you to enable/disable the tracking prevention feature. +Default value is true. When this is true, the level of tracking prevention is controlled by the `CoreWebView2Profile.PreferredTrackingPreventionLevel` property. +You can set this property to false to disable the tracking prevention feature for WebView2 when creating environment that also skips the related code and improves the performance. + +# Examples +## EnableTrackingPrevention + +```c# +Create WebView Environment with option that disable tracking prevention feature. + +void CreateEnvironmentWithOption() +{ + CoreWebView2EnvironmentOptions options = new CoreWebView2EnvironmentOptions(); + // If we're displaying app content or otherwise are not worried about tracking, we can + // disable the tracking prevention feature to improve runtime performance. + options.EnableTrackingPrevention = false; + CoreWebView2Environment environment = await CoreWebView2Environment.CreateAsync(BrowserExecutableFolder, UserDataFolder, options); +} +``` + +```cpp +void AppWindow::InitializeWebView() +{ + auto options = Microsoft::WRL::Make(); + Microsoft::WRL::ComPtr options3; + if (options.As(&options3) == S_OK) + { + // If we're displaying app content or otherwise are not worried about tracking, we can + // disable the tracking prevention feature to improve runtime performance. + CHECK_FAILURE(options3->put_EnableTrackingPrevention(FALSE)); + } + // ... other option properties + + HRESULT hr = CreateCoreWebView2EnvironmentWithOptions( + subFolder, m_userDataFolder.c_str(), options.Get(), + Callback( + this, &AppWindow::OnCreateEnvironmentCompleted) + .Get()); +} +``` + +## PreferredTrackingPreventionLevel +Example of code in end user facing UI to change the TrackingPreventionLevel. + +```c# + +void SetTrackingPreventionLevel(CoreWebView2TrackingPreventionLevel value) +{ + CoreWebView2Profile webViewProfile; + if (webView.CoreWebView2 != null) + { + webViewProfile = webView.CoreWebView2.Profile; + WebViewProfile.PreferredTrackingPreventionLevel = value; + MessageBox.Show(this, "Tracking prevention level is set successfully", "Tracking Prevention Level"); + } +} +``` + +```cpp +void SettingsComponent::SetTrackingPreventionLevel( + COREWEBVIEW2_TRACKING_PREVENTION_LEVEL value) +{ + wil::com_ptr webView2_13; + webView2_13 = m_webView.try_query(); + + if (webView2_13) + { + wil::com_ptr profile; + CHECK_FAILURE(webView2_13->get_Profile(&profile)); + + auto profile5 = profile.try_query(); + if (profile5) + { + CHECK_FAILURE(profile5->put_PreferredTrackingPreventionLevel(value)); + MessageBox( + nullptr, + L"Tracking prevention level is set successfully", + L"Tracking Prevention Level", MB_OK); + } + } +} +``` + +# API Details +``` +/// Tracking prevention levels. +[v1_enum] typedef enum COREWEBVIEW2_TRACKING_PREVENTION_LEVEL { + /// Tracking prevention is turned off. + COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_NONE, + /// The least restrictive level of tracking prevention. Set to this level to + /// protect against malicious trackers but allows most other trackers and personalize content and ads. + /// + /// See [Current tracking prevention behavior](/microsoft-edge/web-platform/tracking-prevention#current-tracking-prevention-behavior) + /// for fine-grained information on what is being blocked with this level. This can change with different Edge versions. + COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_BASIC, + /// The default level of tracking prevention. Set to this level to + /// protect against social media tracking in addition to malicious trackers. Content and ads will likely be less personalized. + /// + /// See [Current tracking prevention behavior](/microsoft-edge/web-platform/tracking-prevention#current-tracking-prevention-behavior) + /// for fine-grained information on what is being blocked with this level. This can change with different Edge versions. + COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_BALANCED, + /// The most restrictive level of tracking prevention. Set to this level to protect + /// against malicious trackers and most trackers across sites. Content and ads will likely have minimal personalization. + /// + /// This level blocks the most trackers but could cause some websites to not behave as expected. + /// + /// See [Current tracking prevention behavior](/microsoft-edge/web-platform/tracking-prevention#current-tracking-prevention-behavior) + /// for fine-grained information on what is being blocked with this level. This can change with different Edge versions. + COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_STRICT, +} COREWEBVIEW2_TRACKING_PREVENTION_LEVEL; + +/// Additional options used to create WebView2 Environment. +[uuid(12e494a2-c876-11eb-b8bc-0242ac130003), object, pointer_default(unique)] +interface ICoreWebView2EnvironmentOptions3 : IUnknown { + /// The `EnableTrackingPrevention` property is used to enable/disable tracking prevention feature in WebView2. + /// This property enable/disable tracking prevention for all the WebView2's created in the same environment. + /// By default this feature is enabled to block potentially harmful trackers and trackers from sites that + /// aren't visited before and set to `COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_BALANCED` or whatever value was + /// last changed/persisted on the profile. + /// + /// You can set this property to false to disable the tracking prevention feature if the app only renders + /// content in the WebView2 that is known to be safe. Disabling this feature when creating environment also + /// improves runtime performance by skipping related code. + /// + /// You shouldn't disable this property if WebView2 is being used as a "full browser" with arbitrary navigation + /// and should protect end user privacy. + /// + /// There is `CoreWebView2Profile.PreferredTrackingPreventionLevel` property to control levels of tracking prevention + /// of the WebView2's associated with a same profile. However, you can also disable tracking prevention later using + /// `CoreWebView2Profile.PreferredTrackingPreventionLevel` property and `COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_NONE` value + /// but that doesn't improves runtime performance. + /// See `CoreWebView2Profile.PreferredTrackingPreventionLevel` for more details. + /// + /// Tracking prevention protects users from online tracking by restricting + /// the ability of trackers to access browser-based storage as well as the network. + /// See [Tracking prevention](microsoft-edge/web-platform/tracking-prevention). + [propget] HRESULT EnableTrackingPrevention([out, retval] BOOL* value); + /// Sets the `EnableTrackingPrevention` property. + [propput] HRESULT EnableTrackingPrevention([in] BOOL value); +} + +/// This is the ICoreWebView2 profile. +[uuid(ddc4070a-c873-11eb-b8bc-0242ac130003), object, pointer_default(unique)] +interface ICoreWebView2Profile5: IUnknown { + /// The `PreferredTrackingPreventionLevel` property allows you to control levels of tracking prevention for WebView2 which + /// are associated with a profile. This level would apply to the context of the profile. That is, all WebView2s sharing the same + /// profile will be affected and also the value is persisted in the user data folder. + /// + /// See `COREWEBVIEW2_TRACKING_PREVENTION_LEVEL` for descriptions of levels. + /// + /// If tracking prevention feature is enabled when creating the WebView2 environment, you can also disable + /// tracking prevention later using this property and `COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_NONE` value + /// but that doesn't improves runtime performance. + /// + /// There is `CoreWebView2EnvironmentOptions.EnableTrackingPrevention` property to enable/disable tracking prevention feature + /// for all the WebView2's created in the same environment. If enabled, `PreferredTrackingPreventionLevel` is set to + /// `COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_BALANCED` by default for all the WebView2's and profiles created in the same environment + /// or is set to the level whatever value was last changed/persisted to the profile. If disabled `PreferredTrackingPreventionLevel` + /// is not respected by WebView2. If `PreferredTrackingPreventionLevel` is set when the feature is disabled, the property value get changed and + /// persisted but it will takes effect only if `CoreWebView2EnvironmentOptions.EnableTrackingPrevention` is true. + /// + /// See `CoreWebView2EnvironmentOptions.EnableTrackingPrevention` for more details. + [propget] HRESULT PreferredTrackingPreventionLevel( + [out, retval] COREWEBVIEW2_TRACKING_PREVENTION_LEVEL* value); + /// Set the `PreferredTrackingPreventionLevel` property. + /// + /// If `CoreWebView2EnvironmentOptions.EnableTrackingPrevention` is false, this property will be changed and persisted to the profile but + /// the WebView2 ignores the level silently. + [propput] HRESULT PreferredTrackingPreventionLevel( + [in] COREWEBVIEW2_TRACKING_PREVENTION_LEVEL value); +} +``` + +```c# (but really MIDL3) +namespace Microsoft.Web.WebView2.Core +{ + enum CoreWebView2TrackingPreventionLevel + { + None = 0, + Basic = 1, + Balanced = 2, + Strict = 3, + }; + + // ... + runtimeclass CoreWebView2EnvironmentOptions + { + // ... + [interface_name("Microsoft.Web.WebView2.Core.ICoreWebView2EnvironmentOptions3")] + { + // ICoreWebView2EnvironmentOptions3 members + Boolean EnableTrackingPrevention { get; set; }; + } + } + + runtimeclass CoreWebView2Profile + { + // ... + [interface_name("Microsoft.Web.WebView2.Core.ICoreWebView2Profile5")] + { + // ICoreWebView2Profile5 members + CoreWebView2TrackingPreventionLevel PreferredTrackingPreventionLevel { get; set; }; + } + } +} +``` diff --git a/specs/images/TrackingPreventionLevels.png b/specs/images/TrackingPreventionLevels.png new file mode 100644 index 0000000000000000000000000000000000000000..87f7430d7fff35f56e30dced48efc42b1d273a55 GIT binary patch literal 36260 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

>lCPU*F-)o0gzvtQA9R7Xyy0c<2+Yr{h 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

E(I3` z@!_o?U6d?nZRt#EICo$>b~&v^flbIwCgwyeIs69cFO{kB;qI?`$gLIHi{$K0H4cgH9f>{J!37KAtsvtEC#i`&;Az(rqooG?jjXO4w~ElK&|#=~%L&*KE@XMKtm& z{jDyPj_CNUlwSUv`>aQe$I?C6)EO&c&8d~|7r|6dyudFCjoxR6i5AM%nQ=4HpCfL@ z^c9CiA2D%!j&D^k6+7)T9K2F^P-;wh)DfcHXg+^(m0o>*%+}%XH^}N(c~WOI^rGX1 zc!sW0d|9}OC^3kDhkT?SWlVslfKv3CLdo$Lr;+3D19)o2cVxwm{d@R3oG(n)13We? zWUpk{J(V3=>ibgVSm?`nOysN=RljwL_868e^W4XgI;PQI20eNm;qCHq2Qs%l2BId-3L2rl2Td_nJOT?P4rcGkUp z;YiU^*>_JQ(9*dz>mF+$`_u#L%2a#2tODzXnrz~KTBVw}d;64(yI|b+{7Sl!Ctv$_ znDP)BFSb(K_0vnfYL3Y@7M?_%pfE3+Ml5o54?2uLPKbZ+C6}H>RYy5+*s0g$;jdF* zT7);cy}H5F`SPv*o0PVM6_1ThFeL#zgQ#{tmGU>cq5Wck!5Bg@-t&*hPrhgOlRXXd zz|sBqk@T-j`TgkeuQSN~`0J3XJ2_Y8RU0AUU92D~w%V(Ur~vl$Q3(9pP< zHAW8YwFsC?l$!+(EK@zyxS3y$&QMf5nKT-(H?aTQEDW55EXDyx!@x+f37{3~#F%-e zyB-p0hN|Bz%;5x7)*RY@Wu-5}1jfUqRDObl8dLpm%OnQA<1_8qJp|w8$@(o?88~s-&iZ?a-mc%m^iV&?KWW_-DV@zF&{=u70?4a z3?9+_4wF83cE~K-VnK1zt3#cvhn{kE1#p*l3S-JAcj+Hz+y9vfsuOB8^TnC9Ce`z- zcJzF>bZ8;9C!?MGbaV+XG5-D^U-%a&9OROTQJr=cWH%qj0H&p9VbhOd>*X#l9+(#sAa%FyS zAE>o>K{OYYQNKX+WrRI^Sg}yFpxyhl8eFzQ7cu9;O#KMkR?L%uxLP$W)f3!dZ05&@gVX7}|2Qemih8kQ754T&dT!HA zlVWTK=gyhi9diwy#llWWi6^zF9b0#CV;_!pn6EBkev((t5)4# zP@Bb_4y4gP%JIKXD-ellP=j zLEOL4v#<5lKJ1jlP^Vj>0cJ^_9zn*dq}c4-ck~B#^in$%c(VbydR`^n^q9>>+DpM( z2T3JG5B{y$1Q`WRG}8M~z62WC7#RrQlgK|V6x^pDIg}pR?!dNTi=WL<0|hv(H^>K+ zaHlxA2zH|&i-d8i zgUy0?tE?n*1&?+^eFa9b&3}d7lPgDhZs~yj;n}YhZASD@prBa~KxBq?(^YSu#zVd1 zhB^f(_5oF$UBv??V2XdN6WmW;q_#^5wq09Hoe&rZXMWUN62@biQd$mZUB~r8OURVV z>GdN&Gl*7XsgWzMTvLMeuF@)btW`F5kpJJd9kJz@8M|J47|vmAi)cZWbl zN(5-t@RP(+?iFv{V*9VQ9@&~O_w$RenaAws*3Vf#DQMrFIWN9UHUItWeAR(>>n1G{ zdL8oAO-p}acuw!Bt$Q6T}%IIAZ@PoxW!(>I#<=B+Wj?<{LsLoR zyCzN)oKyGfWm-<%zW;yUKh_5xGXOfr6S%wFYw8qk`yU7S3m&$L&rTYsP$E{lgFU+uueyz7aZtU$PT;zWSHW?1h!zci-;?j;VYW7o2Kj zIqm5Ty(^da=QXj`S9JXZ#>`Ba(?vewU7)aE9PyQPKPPvF-G@g02f$+}C1hl-T$B== zDrZ^tRAO3kWZz4t+!fXQbtV=~uPm3pTD{vPr0U6ysmT$2sg}#Qj{*<6d+XM#dH4LZ*AegVI(z%RS?u;R9tOpz z2WK9<|1`%5dY|2*7@t|dS|1F!h`j9%zUU3#m3X8m68Z3-*|JNCZ*N2D3