Title: [293002] branches/safari-613-branch/Source/WebKit
Revision
293002
Author
alanc...@apple.com
Date
2022-04-18 17:50:25 -0700 (Mon, 18 Apr 2022)

Log Message

Cherry-pick r292846. rdar://problem/88965550

    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):

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@292846 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Diff

Modified: branches/safari-613-branch/Source/WebKit/ChangeLog (293001 => 293002)


--- branches/safari-613-branch/Source/WebKit/ChangeLog	2022-04-19 00:50:22 UTC (rev 293001)
+++ branches/safari-613-branch/Source/WebKit/ChangeLog	2022-04-19 00:50:25 UTC (rev 293002)
@@ -1,5 +1,47 @@
 2022-04-18  Kocsen Chung  <kocsen_ch...@apple.com>
 
+        Cherry-pick r292846. rdar://problem/88965550
+
+    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):
+    
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@292846 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    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-18  Kocsen Chung  <kocsen_ch...@apple.com>
+
         Cherry-pick r292401. rdar://problem/83168970
 
     5 Media API tests are flakily timing out on iOS14

Modified: branches/safari-613-branch/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm (293001 => 293002)


--- branches/safari-613-branch/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm	2022-04-19 00:50:22 UTC (rev 293001)
+++ branches/safari-613-branch/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm	2022-04-19 00:50:25 UTC (rev 293002)
@@ -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: branches/safari-613-branch/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm (293001 => 293002)


--- branches/safari-613-branch/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm	2022-04-19 00:50:22 UTC (rev 293001)
+++ branches/safari-613-branch/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm	2022-04-19 00:50:25 UTC (rev 293002)
@@ -930,7 +930,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
@@ -1716,6 +1716,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

Reply via email to