Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 07c42006c3448110ecf079e2392b4fba15267ef0
      
https://github.com/WebKit/WebKit/commit/07c42006c3448110ecf079e2392b4fba15267ef0
  Author: Wenson Hsieh <wenson_hs...@apple.com>
  Date:   2022-10-13 (Thu, 13 Oct 2022)

  Changed paths:
    M Source/WTF/wtf/PlatformHave.h
    M Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h
    M Source/WebCore/platform/network/DNS.cpp
    M Source/WebCore/platform/network/DNS.h
    M Source/WebKit/NetworkProcess/NetworkDataTask.cpp
    M Source/WebKit/NetworkProcess/NetworkDataTask.h
    M Source/WebKit/NetworkProcess/NetworkProcess.cpp
    M Source/WebKit/NetworkProcess/NetworkSession.cpp
    M Source/WebKit/NetworkProcess/NetworkSession.h
    M Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h
    M Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm

  Log Message:
  -----------
  Add a mechanism to remember the last IP address of the response for the main 
resource request
https://bugs.webkit.org/show_bug.cgi?id=246128
rdar://100831206

Reviewed by John Wilander.

Add a mechanism to keep track of the last IP address, corresponding to the main 
resource request's
response; this information is stashed in a side table on the network session, 
alongside the existing
map of first party host to CNAME.

* Source/WTF/wtf/PlatformHave.h:

Remove this feature flag, since the oldest macOS version we currently support 
(Big Sur) contains
this SPI.

* Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h:
* Source/WebCore/platform/network/DNS.cpp:
(WebCore::IPAddress::fromString):

Add a helper method to create an `IPAddress` from an IP address string (IPv4 or 
IPv6).

* Source/WebCore/platform/network/DNS.h:
(WebCore::IPAddress::IPAddress):

Add another explicit constructor that takes `WTF::HashTableEmptyValueType`, so 
that we can store
`IPAddress` as a value in a `HashMap`; see below.

(WTF::HashTraits<WebCore::IPAddress>::emptyValue):

Additionally add a `HashTraits` template class for `IPAddress`, which allows us 
to store
`WebCore::IPAddress` as a hash table value by implementing `emptyValue()`.

* Source/WebKit/NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::networkSession const):
* Source/WebKit/NetworkProcess/NetworkDataTask.h:
* Source/WebKit/NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::resetParametersToDefaultValues):
* Source/WebKit/NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::setFirstPartyHostCNAMEDomain):
(WebKit::NetworkSession::firstPartyHostCNAMEDomain):
(WebKit::NetworkSession::resetFirstPartyDNSData):
(WebKit::NetworkSession::setFirstPartyHostIPAddress):
(WebKit::NetworkSession::firstPartyHostIPAddress):
(WebKit::NetworkSession::resetCNAMEDomainData): Deleted.

Rename `resetCNAMEDomainData` to `resetFirstPartyDNSData`, since we now use it 
to clear both first
party CNAME information as well as first party IP address information.

* Source/WebKit/NetworkProcess/NetworkSession.h:
* Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
* Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::lastRemoteIPAddress):

Add a helper function to grab the last resolved IP address of the network data 
task; this is
intended to be used after we get a response.

(WebKit::NetworkDataTaskCocoa::shouldApplyCookiePolicyForThirdPartyCNAMECloaking
 const):
(WebKit::NetworkDataTaskCocoa::updateFirstPartyInfoForSession):

Update the first party IP address, alongside the first party CNAME for the main 
resource.

(WebKit::NetworkDataTaskCocoa::applyCookiePolicyForThirdPartyCNAMECloaking):
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::didReceiveResponse):
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
(WebKit::hasCNAMEAndCookieTransformSPI): Deleted.

Remove this helper function, since we no longer need `-respondsToSelector` 
checks for
`_resolvedCNAMEChain` and `_cookieTransformCallback`.

Canonical link: https://commits.webkit.org/255507@main


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to