Title: [292846] trunk/Source/WebKit
- Revision
- 292846
- Author
- achristen...@apple.com
- Date
- 2022-04-13 17:52:22 -0700 (Wed, 13 Apr 2022)
Log Message
Adjust when _setPrivacyProxyFailClosedForUnreachableNonMainHosts is called
https://bugs.webkit.org/show_bug.cgi?id=237735
Reviewed by Geoff Garen.
This is recommitting http://trac.webkit.org/r291598 but leaving the definition of PrivateRelayed::Yes and ::No
based on whether metrics._privacyStance == nw_connection_privacy_stance_direct instead of nw_connection_privacy_stance_failed.
It has flip flopped several times in the various related commits, but it needs to be nw_connection_privacy_stance_direct.
I manually verified that this fixes <rdar://88965550> without reintroducing <rdar://90677955>.
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
(WebKit::NetworkSessionCocoa::createWebSocketTask):
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (292845 => 292846)
--- trunk/Source/WebKit/ChangeLog 2022-04-14 00:15:54 UTC (rev 292845)
+++ trunk/Source/WebKit/ChangeLog 2022-04-14 00:52:22 UTC (rev 292846)
@@ -1,3 +1,21 @@
+2022-04-13 Alex Christensen <achristen...@webkit.org>
+
+ Adjust when _setPrivacyProxyFailClosedForUnreachableNonMainHosts is called
+ https://bugs.webkit.org/show_bug.cgi?id=237735
+
+ Reviewed by Geoff Garen.
+
+ This is recommitting http://trac.webkit.org/r291598 but leaving the definition of PrivateRelayed::Yes and ::No
+ based on whether metrics._privacyStance == nw_connection_privacy_stance_direct instead of nw_connection_privacy_stance_failed.
+ It has flip flopped several times in the various related commits, but it needs to be nw_connection_privacy_stance_direct.
+ I manually verified that this fixes <rdar://88965550> without reintroducing <rdar://90677955>.
+
+ * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
+ (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
+ * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
+ (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
+ (WebKit::NetworkSessionCocoa::createWebSocketTask):
+
2022-04-13 Elliott Williams <e...@apple.com>
[Xcode] Fix public watchOS workspace build by updating scheme and build settings
Modified: trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm (292845 => 292846)
--- trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm 2022-04-14 00:15:54 UTC (rev 292845)
+++ trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm 2022-04-14 00:52:22 UTC (rev 292846)
@@ -340,6 +340,14 @@
RetainPtr<NSURLRequest> nsRequest = request.nsURLRequest(WebCore::HTTPBodyUpdatePolicy::UpdateHTTPBody);
RetainPtr<NSMutableURLRequest> mutableRequest = adoptNS([nsRequest.get() mutableCopy]);
+ if (parameters.isMainFrameNavigation
+ || parameters.hadMainFrameMainResourcePrivateRelayed
+ || !parameters.topOrigin
+ || request.url().host() == parameters.topOrigin->host()) {
+ if ([mutableRequest respondsToSelector:@selector(_setPrivacyProxyFailClosedForUnreachableNonMainHosts:)])
+ [mutableRequest _setPrivacyProxyFailClosedForUnreachableNonMainHosts:YES];
+ }
+
#if ENABLE(APP_PRIVACY_REPORT)
mutableRequest.get().attribution = request.isAppInitiated() ? NSURLRequestAttributionDeveloper : NSURLRequestAttributionUser;
#endif
Modified: trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm (292845 => 292846)
--- trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm 2022-04-14 00:15:54 UTC (rev 292845)
+++ trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm 2022-04-14 00:52:22 UTC (rev 292846)
@@ -936,7 +936,7 @@
NSURLSessionTaskTransactionMetrics *metrics = taskMetrics.transactionMetrics.lastObject;
#if HAVE(NETWORK_CONNECTION_PRIVACY_STANCE)
- auto privateRelayed = metrics._privacyStance == nw_connection_privacy_stance_failed ? PrivateRelayed::No : PrivateRelayed::Yes;
+ auto privateRelayed = metrics._privacyStance == nw_connection_privacy_stance_direct ? PrivateRelayed::No : PrivateRelayed::Yes;
#else
auto privateRelayed = PrivateRelayed::No;
#endif
@@ -1713,6 +1713,17 @@
appPrivacyReportTestingData().didLoadAppInitiatedRequest(nsRequest.get().attribution == NSURLRequestAttributionDeveloper);
#endif
+ // FIXME: This function can make up to 3 copies of a request.
+ // Reduce that to one if the protocol is null, the request isn't app initiated,
+ // or the main frame main resource was private relayed, then set all properties
+ // on the one copy.
+ if (hadMainFrameMainResourcePrivateRelayed || request.url().host() == clientOrigin.topOrigin.host) {
+ RetainPtr<NSMutableURLRequest> mutableRequest = adoptNS([nsRequest.get() mutableCopy]);
+ if ([mutableRequest respondsToSelector:@selector(_setPrivacyProxyFailClosedForUnreachableNonMainHosts:)])
+ [mutableRequest _setPrivacyProxyFailClosedForUnreachableNonMainHosts:YES];
+ nsRequest = WTFMove(mutableRequest);
+ }
+
auto& sessionSet = sessionSetForPage(webPageProxyID);
RetainPtr<NSURLSessionWebSocketTask> task = [sessionSet.sessionWithCredentialStorage.session webSocketTaskWithRequest:nsRequest.get()];
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes