Changeset 282110 in webkit


Ignore:
Timestamp:
Sep 7, 2021 3:14:26 PM (3 years ago)
Author:
achristensen@apple.com
Message:

Replace PrivateClickMeasurementNetworkLoader::start with an implementation that doesn't need NetworkSession
https://bugs.webkit.org/show_bug.cgi?id=230015

Reviewed by John Wilander.

This is needed to run this code in a process that doesn't have NetworkSession, which is a class tied closely to WKWebsiteDataStore.
This replaces it with a simple implementation that does the same things:

  1. Uses an ephemeral stateless session that doesn't accept cookies or use credentials.
  2. Does not allow redirects.
  3. Only accepts JSON mime types.
  4. Calls processPCMRequest

We still need to call NetworkSessionCocoa::allowsSpecificHTTPSCertificateForHost to get tests to pass.
Covered by existing tests.

  • NetworkProcess/NetworkLoadParameters.h:
  • NetworkProcess/NetworkResourceLoadParameters.cpp:

(WebKit::NetworkResourceLoadParameters::encode const):
(WebKit::NetworkResourceLoadParameters::decode):

  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::addPrivateClickMeasurementNetworkLoader): Deleted.
(WebKit::NetworkSession::removePrivateClickMeasurementNetworkLoader): Deleted.

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementClient.h:

(WebKit::PCM::Client::~Client):

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementClientImpl.cpp:

(WebKit::PCM::ClientImpl::loadFromNetwork): Deleted.

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementClientImpl.h:
  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.cpp:

(WebKit::PrivateClickMeasurementManager::getTokenPublicKey):
(WebKit::PrivateClickMeasurementManager::getSignedUnlinkableToken):
(WebKit::PrivateClickMeasurementManager::fireConversionRequestImpl):

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementNetworkLoader.cpp:

(WebKit::PCM::NetworkLoader::start):
(WebKit::generateNetworkLoadParameters): Deleted.
(WebKit::PrivateClickMeasurementNetworkLoader::start): Deleted.
(WebKit::PrivateClickMeasurementNetworkLoader::PrivateClickMeasurementNetworkLoader): Deleted.
(WebKit::PrivateClickMeasurementNetworkLoader::~PrivateClickMeasurementNetworkLoader): Deleted.
(WebKit::PrivateClickMeasurementNetworkLoader::fail): Deleted.
(WebKit::PrivateClickMeasurementNetworkLoader::cancel): Deleted.
(WebKit::PrivateClickMeasurementNetworkLoader::willSendRedirectedRequest): Deleted.
(WebKit::PrivateClickMeasurementNetworkLoader::didReceiveResponse): Deleted.
(WebKit::PrivateClickMeasurementNetworkLoader::didReceiveBuffer): Deleted.
(WebKit::PrivateClickMeasurementNetworkLoader::didFinishLoading): Deleted.
(WebKit::PrivateClickMeasurementNetworkLoader::didFailLoading): Deleted.
(WebKit::PrivateClickMeasurementNetworkLoader::didComplete): Deleted.

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementNetworkLoader.h:

(): Deleted.

  • NetworkProcess/PrivateClickMeasurement/cocoa/PrivateClickMeasurementNetworkLoaderCocoa.mm: Added.

(processPCMRequest):
(-[WKNetworkSessionDelegateAllowingOnlyNonRedirectedJSON URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
(-[WKNetworkSessionDelegateAllowingOnlyNonRedirectedJSON URLSession:dataTask:didReceiveResponse:completionHandler:]):
(-[WKNetworkSessionDelegateAllowingOnlyNonRedirectedJSON URLSession:task:didReceiveChallenge:completionHandler:]):
(WebKit::PCM::taskMap):
(WebKit::PCM::statelessSessionWithoutRedirects):
(WebKit::PCM::NetworkLoader::start):

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(processPCMRequest): Deleted.

  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
Location:
trunk/Source/WebKit
Files:
2 added
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r282109 r282110  
     12021-09-07  Alex Christensen  <achristensen@webkit.org>
     2
     3        Replace PrivateClickMeasurementNetworkLoader::start with an implementation that doesn't need NetworkSession
     4        https://bugs.webkit.org/show_bug.cgi?id=230015
     5
     6        Reviewed by John Wilander.
     7
     8        This is needed to run this code in a process that doesn't have NetworkSession, which is a class tied closely to WKWebsiteDataStore.
     9        This replaces it with a simple implementation that does the same things:
     10        1. Uses an ephemeral stateless session that doesn't accept cookies or use credentials.
     11        2. Does not allow redirects.
     12        3. Only accepts JSON mime types.
     13        4. Calls processPCMRequest
     14
     15        We still need to call NetworkSessionCocoa::allowsSpecificHTTPSCertificateForHost to get tests to pass.
     16        Covered by existing tests.
     17
     18        * NetworkProcess/NetworkLoadParameters.h:
     19        * NetworkProcess/NetworkResourceLoadParameters.cpp:
     20        (WebKit::NetworkResourceLoadParameters::encode const):
     21        (WebKit::NetworkResourceLoadParameters::decode):
     22        * NetworkProcess/NetworkSession.h:
     23        (WebKit::NetworkSession::addPrivateClickMeasurementNetworkLoader): Deleted.
     24        (WebKit::NetworkSession::removePrivateClickMeasurementNetworkLoader): Deleted.
     25        * NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementClient.h:
     26        (WebKit::PCM::Client::~Client):
     27        * NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementClientImpl.cpp:
     28        (WebKit::PCM::ClientImpl::loadFromNetwork): Deleted.
     29        * NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementClientImpl.h:
     30        * NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.cpp:
     31        (WebKit::PrivateClickMeasurementManager::getTokenPublicKey):
     32        (WebKit::PrivateClickMeasurementManager::getSignedUnlinkableToken):
     33        (WebKit::PrivateClickMeasurementManager::fireConversionRequestImpl):
     34        * NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementNetworkLoader.cpp:
     35        (WebKit::PCM::NetworkLoader::start):
     36        (WebKit::generateNetworkLoadParameters): Deleted.
     37        (WebKit::PrivateClickMeasurementNetworkLoader::start): Deleted.
     38        (WebKit::PrivateClickMeasurementNetworkLoader::PrivateClickMeasurementNetworkLoader): Deleted.
     39        (WebKit::PrivateClickMeasurementNetworkLoader::~PrivateClickMeasurementNetworkLoader): Deleted.
     40        (WebKit::PrivateClickMeasurementNetworkLoader::fail): Deleted.
     41        (WebKit::PrivateClickMeasurementNetworkLoader::cancel): Deleted.
     42        (WebKit::PrivateClickMeasurementNetworkLoader::willSendRedirectedRequest): Deleted.
     43        (WebKit::PrivateClickMeasurementNetworkLoader::didReceiveResponse): Deleted.
     44        (WebKit::PrivateClickMeasurementNetworkLoader::didReceiveBuffer): Deleted.
     45        (WebKit::PrivateClickMeasurementNetworkLoader::didFinishLoading): Deleted.
     46        (WebKit::PrivateClickMeasurementNetworkLoader::didFailLoading): Deleted.
     47        (WebKit::PrivateClickMeasurementNetworkLoader::didComplete): Deleted.
     48        * NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementNetworkLoader.h:
     49        (): Deleted.
     50        * NetworkProcess/PrivateClickMeasurement/cocoa/PrivateClickMeasurementNetworkLoaderCocoa.mm: Added.
     51        (processPCMRequest):
     52        (-[WKNetworkSessionDelegateAllowingOnlyNonRedirectedJSON URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
     53        (-[WKNetworkSessionDelegateAllowingOnlyNonRedirectedJSON URLSession:dataTask:didReceiveResponse:completionHandler:]):
     54        (-[WKNetworkSessionDelegateAllowingOnlyNonRedirectedJSON URLSession:task:didReceiveChallenge:completionHandler:]):
     55        (WebKit::PCM::taskMap):
     56        (WebKit::PCM::statelessSessionWithoutRedirects):
     57        (WebKit::PCM::NetworkLoader::start):
     58        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
     59        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
     60        (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
     61        (processPCMRequest): Deleted.
     62        * SourcesCocoa.txt:
     63        * WebKit.xcodeproj/project.pbxproj:
     64
    1652021-09-07  Alex Christensen  <achristensen@webkit.org>
    266
  • trunk/Source/WebKit/NetworkProcess/NetworkLoadParameters.h

    r278738 r282110  
    6868    std::optional<NetworkActivityTracker> networkActivityTracker;
    6969    std::optional<NavigatingToAppBoundDomain> isNavigatingToAppBoundDomain { NavigatingToAppBoundDomain::No };
    70     std::optional<WebCore::PrivateClickMeasurement::PcmDataCarried> pcmDataCarried;
    7170};
    7271
  • trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp

    r281277 r282110  
    128128   
    129129    encoder << isNavigatingToAppBoundDomain;
    130     encoder << pcmDataCarried;
    131130}
    132131
     
    330329        return std::nullopt;
    331330    result.isNavigatingToAppBoundDomain = *isNavigatingToAppBoundDomain;
    332 
    333     std::optional<std::optional<WebCore::PrivateClickMeasurement::PcmDataCarried>> pcmDataCarried;
    334     decoder >> pcmDataCarried;
    335     if (!pcmDataCarried)
    336         return std::nullopt;
    337     result.pcmDataCarried = *pcmDataCarried;
    338331   
    339332    return result;
  • trunk/Source/WebKit/NetworkProcess/NetworkSession.h

    r282006 r282110  
    3030#include "NetworkResourceLoadIdentifier.h"
    3131#include "PrefetchCache.h"
    32 #include "PrivateClickMeasurementNetworkLoader.h"
    3332#include "SandboxExtension.h"
    3433#include "ServiceWorkerSoftUpdateLoader.h"
     
    175174#endif
    176175
    177     void addPrivateClickMeasurementNetworkLoader(std::unique_ptr<PrivateClickMeasurementNetworkLoader>&& loader) { m_privateClickMeasurementNetworkLoaders.add(WTFMove(loader)); }
    178     void removePrivateClickMeasurementNetworkLoader(PrivateClickMeasurementNetworkLoader* loader) { m_privateClickMeasurementNetworkLoaders.remove(loader); }
    179 
    180176    virtual void removeNetworkWebsiteData(std::optional<WallTime>, std::optional<HashSet<WebCore::RegistrableDomain>>&&, CompletionHandler<void()>&& completionHandler) { completionHandler(); }
    181177
     
    249245#endif
    250246
    251     HashSet<std::unique_ptr<PrivateClickMeasurementNetworkLoader>> m_privateClickMeasurementNetworkLoaders;
    252247    HashMap<WebPageProxyIdentifier, String> m_attributedBundleIdentifierFromPageIdentifiers;
    253248};
  • trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementClient.h

    r282080 r282110  
    4747public:
    4848    virtual ~Client() { }
    49     using NetworkLoadCallback = CompletionHandler<void(const WebCore::ResourceError&, const WebCore::ResourceResponse&, const RefPtr<JSON::Object>&)>;
    50     virtual void loadFromNetwork(URL&&, RefPtr<JSON::Object>&&, WebCore::PrivateClickMeasurement::PcmDataCarried, NetworkLoadCallback&&) = 0;
    5149    virtual void broadcastConsoleMessage(JSC::MessageLevel, const String&) = 0;
    5250    virtual bool featureEnabled() const = 0;
  • trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementClientImpl.cpp

    r282080 r282110  
    3838    , m_networkProcess(networkProcess) { }
    3939
    40 void ClientImpl::loadFromNetwork(URL&& url, RefPtr<JSON::Object>&& jsonPayload, WebCore::PrivateClickMeasurement::PcmDataCarried pcmDataCarried, NetworkLoadCallback&& completionHandler)
    41 {
    42     if (!featureEnabled())
    43         return completionHandler(WebCore::ResourceError(WebCore::ResourceError::Type::Cancellation), { }, { });
    44 
    45     PrivateClickMeasurementNetworkLoader::start(*m_networkSession, WTFMove(url), WTFMove(jsonPayload), pcmDataCarried, WTFMove(completionHandler));
    46 }
    47 
    4840void ClientImpl::broadcastConsoleMessage(JSC::MessageLevel messageLevel, const String& message)
    4941{
  • trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementClientImpl.h

    r282080 r282110  
    4444
    4545private:
    46     void loadFromNetwork(URL&&, RefPtr<JSON::Object>&&, WebCore::PrivateClickMeasurement::PcmDataCarried, NetworkLoadCallback&&) final;
    4746    void broadcastConsoleMessage(JSC::MessageLevel, const String&) final;
    4847    bool featureEnabled() const final;
  • trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.cpp

    r282109 r282110  
    3030#include "NetworkSession.h"
    3131#include "PrivateClickMeasurementDebugInfo.h"
     32#include "PrivateClickMeasurementNetworkLoader.h"
    3233#include <JavaScriptCore/ConsoleTypes.h>
    3334#include <WebCore/FetchOptions.h>
     
    132133    m_client->broadcastConsoleMessage(MessageLevel::Log, "[Private Click Measurement] About to fire a token public key request."_s);
    133134
    134     m_client->loadFromNetwork(WTFMove(tokenPublicKeyURL), nullptr, pcmDataCarried, [weakThis = makeWeakPtr(*this), this, attribution = WTFMove(attribution), callback = WTFMove(callback)] (auto& error, auto& response, auto& jsonObject) mutable {
     135    PCM::NetworkLoader::start(WTFMove(tokenPublicKeyURL), nullptr, pcmDataCarried, [weakThis = makeWeakPtr(*this), this, attribution = WTFMove(attribution), callback = WTFMove(callback)] (auto& error, auto& response, auto& jsonObject) mutable {
    135136        if (!weakThis)
    136137            return;
     
    150151        callback(WTFMove(attribution), jsonObject->getString("token_public_key"_s));
    151152    });
    152 
    153153}
    154154
     
    176176    m_client->broadcastConsoleMessage(MessageLevel::Log, "[Private Click Measurement] About to fire a unlinkable token signing request."_s);
    177177
    178     m_client->loadFromNetwork(WTFMove(tokenSignatureURL), measurement.tokenSignatureJSON(), pcmDataCarried, [weakThis = makeWeakPtr(*this), this, measurement = WTFMove(measurement)] (auto& error, auto& response, auto& jsonObject) mutable {
     178    PCM::NetworkLoader::start(WTFMove(tokenSignatureURL), measurement.tokenSignatureJSON(), pcmDataCarried, [weakThis = makeWeakPtr(*this), this, measurement = WTFMove(measurement)] (auto& error, auto& response, auto& jsonObject) mutable {
    179179        if (!weakThis)
    180180            return;
     
    358358    m_client->broadcastConsoleMessage(MessageLevel::Log, "[Private Click Measurement] About to fire an attribution request."_s);
    359359
    360     m_client->loadFromNetwork(WTFMove(attributionURL), attribution.attributionReportJSON(), pcmDataCarried, [weakThis = makeWeakPtr(*this), this](auto& error, auto& response, auto&) {
     360    PCM::NetworkLoader::start(WTFMove(attributionURL), attribution.attributionReportJSON(), pcmDataCarried, [weakThis = makeWeakPtr(*this), this](auto& error, auto& response, auto&) {
    361361        if (!weakThis)
    362362            return;
  • trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementNetworkLoader.cpp

    r282080 r282110  
    2727#include "PrivateClickMeasurementNetworkLoader.h"
    2828
    29 #include "NetworkLoad.h"
    30 #include "NetworkSession.h"
    31 #include <WebCore/HTTPHeaderValues.h>
    32 #include <WebCore/MIMETypeRegistry.h>
    33 #include <WebCore/RuntimeApplicationChecks.h>
    34 #include <WebCore/TextResourceDecoder.h>
    35 
    36 #include <wtf/JSONValues.h>
     29#include <WebCore/NotImplemented.h>
    3730
    3831namespace WebKit {
    3932
    40 using namespace WebCore;
     33namespace PCM {
    4134
    42 static NetworkLoadParameters generateNetworkLoadParameters(URL&& url, RefPtr<JSON::Object>&& jsonPayload, PrivateClickMeasurement::PcmDataCarried pcmDataCarried)
     35#if !PLATFORM(COCOA)
     36void NetworkLoader::start(URL&&, RefPtr<JSON::Object>&&, PrivateClickMeasurement::PcmDataCarried, Callback&& completionHandler)
    4337{
    44     String httpMethod = jsonPayload ? "POST"_s : "GET"_s;
     38    notImplemented();
     39    completionHandler({ }, { }, { });
     40}
     41#endif
    4542
    46     ResourceRequest request { WTFMove(url) };
    47     request.setHTTPMethod(httpMethod);
    48     request.setHTTPHeaderField(HTTPHeaderName::CacheControl, WebCore::HTTPHeaderValues::maxAge0());
    49     if (jsonPayload) {
    50         request.setHTTPContentType(WebCore::HTTPHeaderValues::applicationJSONContentType());
    51         request.setHTTPBody(WebCore::FormData::create(jsonPayload->toJSONString().utf8()));
    52     }
    53 
    54     NetworkLoadParameters loadParameters;
    55     loadParameters.request = request;
    56     loadParameters.parentPID = presentingApplicationPID();
    57     loadParameters.storedCredentialsPolicy = StoredCredentialsPolicy::EphemeralStateless;
    58     loadParameters.shouldClearReferrerOnHTTPSToHTTPRedirect = true;
    59     loadParameters.pcmDataCarried = pcmDataCarried;
    60 
    61     return loadParameters;
    62 }
    63 
    64 void PrivateClickMeasurementNetworkLoader::start(NetworkSession& session, URL&& url, RefPtr<JSON::Object>&& jsonPayload, PrivateClickMeasurement::PcmDataCarried pcmDataCarried, Callback&& completionHandler)
    65 {
    66     auto parameters = generateNetworkLoadParameters(WTFMove(url), WTFMove(jsonPayload), pcmDataCarried);
    67     auto loader = std::unique_ptr<PrivateClickMeasurementNetworkLoader>(new PrivateClickMeasurementNetworkLoader(session, WTFMove(parameters), WTFMove(completionHandler)));
    68     session.addPrivateClickMeasurementNetworkLoader(WTFMove(loader));
    69 }
    70 
    71 PrivateClickMeasurementNetworkLoader::PrivateClickMeasurementNetworkLoader(NetworkSession& session, NetworkLoadParameters&& parameters, Callback&& completionHandler)
    72     : m_session(makeWeakPtr(session))
    73     , m_completionHandler(WTFMove(completionHandler))
    74 {
    75     m_networkLoad = makeUnique<NetworkLoad>(*this, nullptr, WTFMove(parameters), *m_session);
    76     m_networkLoad->start();
    77 }
    78 
    79 PrivateClickMeasurementNetworkLoader::~PrivateClickMeasurementNetworkLoader()
    80 {
    81     cancel();
    82 }
    83 
    84 void PrivateClickMeasurementNetworkLoader::fail(ResourceError&& error)
    85 {
    86     if (!m_completionHandler)
    87         return;
    88 
    89     m_completionHandler(WTFMove(error), { }, nullptr);
    90     didComplete();
    91 }
    92 
    93 void PrivateClickMeasurementNetworkLoader::cancel()
    94 {
    95     fail(ResourceError { ResourceError::Type::Cancellation });
    96 }
    97 
    98 void PrivateClickMeasurementNetworkLoader::willSendRedirectedRequest(ResourceRequest&&, ResourceRequest&&, ResourceResponse&&)
    99 {
    100     cancel();
    101 }
    102 
    103 void PrivateClickMeasurementNetworkLoader::didReceiveResponse(ResourceResponse&& response, ResponseCompletionHandler&& completionHandler)
    104 {
    105     if (!MIMETypeRegistry::isSupportedJSONMIMEType(response.mimeType())) {
    106         fail({ errorDomainWebKitInternal, 0, response.url(), "MIME Type is not a JSON MIME type"_s });
    107         completionHandler(PolicyAction::Ignore);
    108         return;
    109     }
    110 
    111     m_response = WTFMove(response);
    112     completionHandler(PolicyAction::Use);
    113 }
    114 
    115 void PrivateClickMeasurementNetworkLoader::didReceiveBuffer(Ref<SharedBuffer>&& buffer, int reportedEncodedDataLength)
    116 {
    117     if (!m_decoder)
    118         m_decoder = TextResourceDecoder::create("application/json"_s, m_response.textEncodingName().isEmpty() ? WebCore::TextEncoding("UTF-8") : WebCore::TextEncoding(m_response.textEncodingName()));
    119 
    120     if (auto size = buffer->size())
    121         m_jsonString.append(m_decoder->decode(buffer->data(), size));
    122 }
    123 
    124 void PrivateClickMeasurementNetworkLoader::didFinishLoading(const WebCore::NetworkLoadMetrics&)
    125 {
    126     if (m_decoder)
    127         m_jsonString.append(m_decoder->flush());
    128 
    129     if (auto jsonValue = JSON::Value::parseJSON(m_jsonString.toString()))
    130         m_completionHandler({ }, m_response, jsonValue->asObject());
    131     else
    132         m_completionHandler({ }, m_response, nullptr);
    133 
    134     didComplete();
    135 }
    136 
    137 void PrivateClickMeasurementNetworkLoader::didFailLoading(const ResourceError& error)
    138 {
    139     fail(ResourceError(error));
    140 }
    141 
    142 void PrivateClickMeasurementNetworkLoader::didComplete()
    143 {
    144     m_networkLoad = nullptr;
    145     if (m_session)
    146         m_session->removePrivateClickMeasurementNetworkLoader(this);
    147 }
     43} // namespace PCM
    14844
    14945} // namespace WebKit
  • trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementNetworkLoader.h

    r282031 r282110  
    2626#pragma once
    2727
    28 #include "NetworkLoad.h"
    29 #include "NetworkLoadClient.h"
    30 #include "NetworkLoadParameters.h"
    31 #include <WebCore/TextResourceDecoder.h>
    3228#include <wtf/CompletionHandler.h>
    33 #include <wtf/WeakPtr.h>
     29#include <wtf/JSONValues.h>
     30
     31namespace WebCore {
     32class ResourceError;
     33class ResourceResponse;
     34}
    3435
    3536namespace WebKit {
    3637
    37 class NetworkSession;
     38namespace PCM {
    3839
    39 class PrivateClickMeasurementNetworkLoader final : public NetworkLoadClient {
     40class NetworkLoader {
    4041    WTF_MAKE_FAST_ALLOCATED;
    4142public:
    4243    using Callback = CompletionHandler<void(const WebCore::ResourceError&, const WebCore::ResourceResponse&, const RefPtr<JSON::Object>&)>;
    43     static void start(NetworkSession&, URL&&, RefPtr<JSON::Object>&&, WebCore::PrivateClickMeasurement::PcmDataCarried, Callback&&);
    44 
    45     ~PrivateClickMeasurementNetworkLoader();
    46 
    47 private:
    48     PrivateClickMeasurementNetworkLoader(NetworkSession&, NetworkLoadParameters&&, Callback&&);
    49 
    50     // NetworkLoadClient.
    51     void didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent) final { }
    52     bool isSynchronous() const final { return false; }
    53     bool isAllowedToAskUserForCredentials() const final { return false; }
    54     void willSendRedirectedRequest(WebCore::ResourceRequest&&, WebCore::ResourceRequest&& redirectRequest, WebCore::ResourceResponse&& redirectResponse) final;
    55     void didReceiveResponse(WebCore::ResourceResponse&&, ResponseCompletionHandler&&) final;
    56     void didReceiveBuffer(Ref<WebCore::SharedBuffer>&&, int reportedEncodedDataLength) final;
    57     void didFinishLoading(const WebCore::NetworkLoadMetrics&) final;
    58     void didFailLoading(const WebCore::ResourceError&) final;
    59 
    60     void fail(WebCore::ResourceError&&);
    61     void cancel();
    62     void didComplete();
    63 
    64     WeakPtr<NetworkSession> m_session;
    65     std::unique_ptr<NetworkLoad> m_networkLoad;
    66     Callback m_completionHandler;
    67 
    68     WebCore::ResourceResponse m_response;
    69     RefPtr<WebCore::TextResourceDecoder> m_decoder;
    70     StringBuilder m_jsonString;
     44    static void start(URL&&, RefPtr<JSON::Object>&&, WebCore::PrivateClickMeasurement::PcmDataCarried, Callback&&);
    7145};
    7246
     47} // namespace PCM
     48
    7349} // namespace WebKit
  • trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h

    r278738 r282110  
    3030#include "NetworkLoadParameters.h"
    3131#include <WebCore/NetworkLoadMetrics.h>
     32#include <WebCore/PrivateClickMeasurement.h>
    3233#include <wtf/RetainPtr.h>
    3334
    3435OBJC_CLASS NSHTTPCookieStorage;
    3536OBJC_CLASS NSURLSessionDataTask;
     37OBJC_CLASS NSMutableURLRequest;
    3638
    3739namespace WebCore {
  • trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm

    r280317 r282110  
    5858#import <WebKitAdditions/NetworkDataTaskCocoaAdditions.h>
    5959#else
    60 static void processPCMRequest(WebCore::PrivateClickMeasurement::PcmDataCarried, NSMutableURLRequest *) { }
    6160static void overrideAttributionContext(NSMutableURLRequest *) { }
    6261#endif
     
    347346
    348347    overrideAttributionContext(mutableRequest.get());
    349 
    350     if (parameters.pcmDataCarried)
    351         processPCMRequest(*parameters.pcmDataCarried, mutableRequest.get());
    352348
    353349    nsRequest = mutableRequest;
  • trunk/Source/WebKit/SourcesCocoa.txt

    r280451 r282110  
    4141NetworkProcess/EntryPoint/Cocoa/Daemon/DaemonEntryPoint.mm
    4242NetworkProcess/EntryPoint/Cocoa/XPCService/NetworkServiceEntryPoint.mm
     43
     44NetworkProcess/PrivateClickMeasurement/cocoa/PrivateClickMeasurementNetworkLoaderCocoa.mm
    4345
    4446NetworkProcess/WebStorage/ios/LocalStorageDatabaseTrackerIOS.mm
  • trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj

    r282054 r282110  
    45564556                5CB930C026E0542F0032B1C0 /* PrivateClickMeasurementClientImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PrivateClickMeasurementClientImpl.cpp; sourceTree = "<group>"; };
    45574557                5CB930C126E054B80032B1C0 /* PrivateClickMeasurementClientImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrivateClickMeasurementClientImpl.h; sourceTree = "<group>"; };
     4558                5CB930F226E7EEE00032B1C0 /* PrivateClickMeasurementNetworkLoaderCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PrivateClickMeasurementNetworkLoaderCocoa.mm; sourceTree = "<group>"; };
    45584559                5CBC9B891C6524A500A8FDCF /* NetworkDataTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkDataTask.h; sourceTree = "<group>"; };
    45594560                5CBC9B8B1C65257300A8FDCF /* NetworkDataTaskCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NetworkDataTaskCocoa.mm; sourceTree = "<group>"; };
     
    92619262                        isa = PBXGroup;
    92629263                        children = (
     9264                                5CB930F126E7EE890032B1C0 /* cocoa */,
    92639265                                5CB930BF26E0542E0032B1C0 /* PrivateClickMeasurementClient.h */,
    92649266                                5CB930C026E0542F0032B1C0 /* PrivateClickMeasurementClientImpl.cpp */,
     
    93529354                        );
    93539355                        path = Cocoa;
     9356                        sourceTree = "<group>";
     9357                };
     9358                5CB930F126E7EE890032B1C0 /* cocoa */ = {
     9359                        isa = PBXGroup;
     9360                        children = (
     9361                                5CB930F226E7EEE00032B1C0 /* PrivateClickMeasurementNetworkLoaderCocoa.mm */,
     9362                        );
     9363                        path = cocoa;
    93549364                        sourceTree = "<group>";
    93559365                };
Note: See TracChangeset for help on using the changeset viewer.