⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 283504 in webkit


Ignore:
Timestamp:
Oct 4, 2021, 10:38:45 AM (5 years ago)
Author:
achristensen@apple.com
Message:

Enable PCM debug mode per WebsiteDataStore instead of process-global
https://bugs.webkit.org/show_bug.cgi?id=231096

Reviewed by Kate Cheney.

This will make it so we don't need to restart the network process in order to enable or disable debug mode.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::setPrivateClickMeasurementDebugMode):
(WebKit::NetworkProcess::privateClickMeasurementDebugModeEnabled const): Deleted.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::NetworkSession):
(WebKit::NetworkSession::setPrivateClickMeasurementDebugMode):

  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::privateClickMeasurementDebugModeEnabled const):

  • NetworkProcess/NetworkSessionCreationParameters.cpp:

(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):

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

(WebKit::PCM::ClientImpl::debugModeEnabled const):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeNetworkProcess):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::setPrivateClickMeasurementDebugMode):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::experimentalFeatureEnabled):
(WebKit::WebsiteDataStore::platformSetNetworkParameters):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::setPrivateClickMeasurementDebugMode):

Location:
trunk/Source/WebKit
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r283490 r283504  
     12021-10-04  Alex Christensen  <achristensen@webkit.org>
     2
     3        Enable PCM debug mode per WebsiteDataStore instead of process-global
     4        https://bugs.webkit.org/show_bug.cgi?id=231096
     5
     6        Reviewed by Kate Cheney.
     7
     8        This will make it so we don't need to restart the network process in order to enable or disable debug mode.
     9
     10        * NetworkProcess/NetworkProcess.cpp:
     11        (WebKit::NetworkProcess::initializeNetworkProcess):
     12        (WebKit::NetworkProcess::setPrivateClickMeasurementDebugMode):
     13        (WebKit::NetworkProcess::privateClickMeasurementDebugModeEnabled const): Deleted.
     14        * NetworkProcess/NetworkProcess.h:
     15        * NetworkProcess/NetworkProcess.messages.in:
     16        * NetworkProcess/NetworkProcessCreationParameters.cpp:
     17        (WebKit::NetworkProcessCreationParameters::encode const):
     18        (WebKit::NetworkProcessCreationParameters::decode):
     19        * NetworkProcess/NetworkProcessCreationParameters.h:
     20        * NetworkProcess/NetworkSession.cpp:
     21        (WebKit::NetworkSession::NetworkSession):
     22        (WebKit::NetworkSession::setPrivateClickMeasurementDebugMode):
     23        * NetworkProcess/NetworkSession.h:
     24        (WebKit::NetworkSession::privateClickMeasurementDebugModeEnabled const):
     25        * NetworkProcess/NetworkSessionCreationParameters.cpp:
     26        (WebKit::NetworkSessionCreationParameters::encode const):
     27        (WebKit::NetworkSessionCreationParameters::decode):
     28        * NetworkProcess/NetworkSessionCreationParameters.h:
     29        * NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementClientImpl.cpp:
     30        (WebKit::PCM::ClientImpl::debugModeEnabled const):
     31        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
     32        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
     33        * UIProcess/Network/NetworkProcessProxy.cpp:
     34        (WebKit::NetworkProcessProxy::setPrivateClickMeasurementDebugMode):
     35        * UIProcess/Network/NetworkProcessProxy.h:
     36        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
     37        (WebKit::experimentalFeatureEnabled):
     38        (WebKit::WebsiteDataStore::platformSetNetworkParameters):
     39        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
     40        (WebKit::WebsiteDataStore::setPrivateClickMeasurementDebugMode):
     41
    1422021-10-04  Jean-Yves Avenard  <jya@apple.com>
    243
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp

    r283316 r283504  
    347347
    348348    setPrivateClickMeasurementEnabled(parameters.enablePrivateClickMeasurement);
    349     setPrivateClickMeasurementDebugMode(parameters.enablePrivateClickMeasurementDebugMode);
    350349    m_ftpEnabled = parameters.ftpEnabled;
    351350
     
    13531352}
    13541353
    1355 void NetworkProcess::setPrivateClickMeasurementDebugMode(bool enabled)
    1356 {
    1357     if (m_privateClickMeasurementDebugModeEnabled == enabled)
    1358         return;
    1359 
    1360     m_privateClickMeasurementDebugModeEnabled = enabled;
    1361 
    1362     String message = enabled ? "[Private Click Measurement] Turned Debug Mode on."_s : "[Private Click Measurement] Turned Debug Mode off."_s;
    1363     for (auto& networkConnectionToWebProcess : m_webProcessConnections.values()) {
    1364         if (networkConnectionToWebProcess->sessionID().isEphemeral())
    1365             continue;
    1366         networkConnectionToWebProcess->broadcastConsoleMessage(MessageSource::PrivateClickMeasurement, MessageLevel::Info, message);
    1367     }
    1368 }
    1369 
    1370 bool NetworkProcess::privateClickMeasurementDebugModeEnabled() const
    1371 {
    1372     return m_privateClickMeasurementDebugModeEnabled;
     1354void NetworkProcess::setPrivateClickMeasurementDebugMode(PAL::SessionID sessionID, bool enabled)
     1355{
     1356    if (auto* networkSession = this->networkSession(sessionID))
     1357        networkSession->setPrivateClickMeasurementDebugMode(enabled);
    13731358}
    13741359
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.h

    r283316 r283504  
    286286    void setPrivateClickMeasurementEnabled(bool);
    287287    bool privateClickMeasurementEnabled() const;
    288     void setPrivateClickMeasurementDebugMode(bool);
    289     bool privateClickMeasurementDebugModeEnabled() const;
     288    void setPrivateClickMeasurementDebugMode(PAL::SessionID, bool);
    290289
    291290    using CacheStorageRootPathCallback = CompletionHandler<void(String&&)>;
     
    621620
    622621    bool m_privateClickMeasurementEnabled { true };
    623     bool m_privateClickMeasurementDebugModeEnabled { false };
    624622    bool m_ftpEnabled { false };
    625623
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in

    r283316 r283504  
    147147#endif
    148148
    149     SetPrivateClickMeasurementDebugMode(bool debugMode)
     149    SetPrivateClickMeasurementDebugMode(PAL::SessionID sessionID, bool debugMode)
    150150
    151151    SetSessionIsControlledByAutomation(PAL::SessionID sessionID, bool controlled);
  • trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp

    r282881 r283504  
    7272
    7373    encoder << enablePrivateClickMeasurement;
    74     encoder << enablePrivateClickMeasurementDebugMode;
    7574    encoder << ftpEnabled;
    7675    encoder << websiteDataStoreParameters;
     
    146145    if (!decoder.decode(result.enablePrivateClickMeasurement))
    147146        return false;
    148     if (!decoder.decode(result.enablePrivateClickMeasurementDebugMode))
    149         return false;
    150147    if (!decoder.decode(result.ftpEnabled))
    151148        return false;
  • trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h

    r282881 r283504  
    8888
    8989    bool enablePrivateClickMeasurement { true };
    90     bool enablePrivateClickMeasurementDebugMode { false };
    9190    bool ftpEnabled { false };
    9291
  • trunk/Source/WebKit/NetworkProcess/NetworkSession.cpp

    r283383 r283504  
    118118#endif
    119119    , m_privateClickMeasurement(managerOrProxy(*this, networkProcess, parameters))
     120    , m_privateClickMeasurementDebugModeEnabled(parameters.enablePrivateClickMeasurementDebugMode)
    120121    , m_broadcastChannelRegistry(makeUniqueRef<NetworkBroadcastChannelRegistry>())
    121122    , m_testSpeedMultiplier(parameters.testSpeedMultiplier)
     
    421422}
    422423
     424void NetworkSession::setPrivateClickMeasurementDebugMode(bool enabled)
     425{
     426    if (m_privateClickMeasurementDebugModeEnabled == enabled)
     427        return;
     428
     429    m_privateClickMeasurementDebugModeEnabled = enabled;
     430
     431    auto message = enabled ? "[Private Click Measurement] Turned Debug Mode on."_s : "[Private Click Measurement] Turned Debug Mode off."_s;
     432    m_networkProcess->broadcastConsoleMessage(sessionID(), MessageSource::PrivateClickMeasurement, MessageLevel::Info, message);
     433}
     434
    423435void NetworkSession::firePrivateClickMeasurementTimerImmediatelyForTesting()
    424436{
  • trunk/Source/WebKit/NetworkProcess/NetworkSession.h

    r283383 r283504  
    176176    NetworkLoadScheduler& networkLoadScheduler();
    177177    PCM::ManagerInterface& privateClickMeasurement() { return m_privateClickMeasurement.get(); }
     178    void setPrivateClickMeasurementDebugMode(bool);
     179    bool privateClickMeasurementDebugModeEnabled() const { return m_privateClickMeasurementDebugModeEnabled; }
    178180
    179181#if PLATFORM(COCOA)
     
    216218    bool m_isStaleWhileRevalidateEnabled { false };
    217219    UniqueRef<PCM::ManagerInterface> m_privateClickMeasurement;
     220    bool m_privateClickMeasurementDebugModeEnabled { false };
    218221    std::optional<WebCore::PrivateClickMeasurement> m_ephemeralMeasurement;
    219222    bool m_isRunningEphemeralMeasurementTest { false };
  • trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp

    r283295 r283504  
    9090    encoder << allowsHSTSWithUntrustedRootCertificate;
    9191    encoder << pcmMachServiceName;
     92    encoder << enablePrivateClickMeasurementDebugMode;
    9293    encoder << resourceLoadStatisticsParameters;
    9394}
     
    305306    decoder >> pcmMachServiceName;
    306307    if (!pcmMachServiceName)
     308        return std::nullopt;
     309   
     310    std::optional<bool> enablePrivateClickMeasurementDebugMode;
     311    decoder >> enablePrivateClickMeasurementDebugMode;
     312    if (!enablePrivateClickMeasurementDebugMode)
    307313        return std::nullopt;
    308314
     
    362368        , WTFMove(*allowsHSTSWithUntrustedRootCertificate)
    363369        , WTFMove(*pcmMachServiceName)
     370        , WTFMove(*enablePrivateClickMeasurementDebugMode)
    364371        , WTFMove(*resourceLoadStatisticsParameters)
    365372    }};
  • trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h

    r283295 r283504  
    105105    bool allowsHSTSWithUntrustedRootCertificate { false };
    106106    String pcmMachServiceName;
     107    bool enablePrivateClickMeasurementDebugMode { false };
    107108
    108109    ResourceLoadStatisticsParameters resourceLoadStatisticsParameters;
  • trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementClientImpl.cpp

    r282110 r283504  
    5656{
    5757    return m_networkSession
    58         && m_networkProcess->privateClickMeasurementDebugModeEnabled()
     58        && m_networkSession->privateClickMeasurementDebugModeEnabled()
    5959        && !m_networkSession->sessionID().isEphemeral();
    6060}
  • trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm

    r283457 r283504  
    558558
    559559    parameters.enablePrivateClickMeasurement = ![defaults objectForKey:WebPreferencesKey::privateClickMeasurementEnabledKey()] || [defaults boolForKey:WebPreferencesKey::privateClickMeasurementEnabledKey()];
    560 #if PLATFORM(MAC)
    561     NSString *format = @"Experimental%@";
    562 #else
    563     NSString *format = @"WebKitExperimental%@";
    564 #endif
    565     parameters.enablePrivateClickMeasurementDebugMode = [defaults boolForKey:[NSString stringWithFormat:format, WebPreferencesKey::privateClickMeasurementDebugModeEnabledKey().createCFString().get()]];
    566    
    567560    parameters.ftpEnabled = [defaults objectForKey:WebPreferencesKey::ftpEnabledKey()] && [defaults boolForKey:WebPreferencesKey::ftpEnabledKey()];
    568561}
  • trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp

    r283320 r283504  
    12561256#endif // ENABLE(INTELLIGENT_TRACKING_PREVENTION)
    12571257
    1258 void NetworkProcessProxy::setPrivateClickMeasurementDebugMode(bool debugMode)
     1258void NetworkProcessProxy::setPrivateClickMeasurementDebugMode(PAL::SessionID sessionID, bool debugMode)
    12591259{
    12601260    if (!canSendMessage())
    12611261        return;
    12621262
    1263     send(Messages::NetworkProcess::SetPrivateClickMeasurementDebugMode(debugMode), 0);
     1263    send(Messages::NetworkProcess::SetPrivateClickMeasurementDebugMode(sessionID, debugMode), 0);
    12641264}
    12651265
  • trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h

    r283320 r283504  
    206206#endif
    207207
    208     void setPrivateClickMeasurementDebugMode(bool);
     208    void setPrivateClickMeasurementDebugMode(PAL::SessionID, bool);
    209209   
    210210    void synthesizeAppIsBackground(bool background);
  • trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm

    r283374 r283504  
    9393#endif
    9494
     95static bool experimentalFeatureEnabled(const String& key)
     96{
     97#if PLATFORM(MAC)
     98    NSString *format = @"Experimental%@";
     99#else
     100    NSString *format = @"WebKitExperimental%@";
     101#endif
     102    return [[NSUserDefaults standardUserDefaults] boolForKey:[NSString stringWithFormat:format, static_cast<NSString *>(key)]];
     103}
     104
    95105void WebsiteDataStore::platformSetNetworkParameters(WebsiteDataStoreParameters& parameters)
    96106{
     
    193203    parameters.uiProcessCookieStorageIdentifier = m_uiProcessCookieStorageIdentifier;
    194204
     205    parameters.networkSessionParameters.enablePrivateClickMeasurementDebugMode = experimentalFeatureEnabled(WebPreferencesKey::privateClickMeasurementDebugModeEnabledKey());
     206
    195207    if (!cookieFile.isEmpty()) {
    196208        if (auto handle = SandboxExtension::createHandleForReadWriteDirectory(FileSystem::parentPath(cookieFile)))
     
    198210    }
    199211}
    200 
    201 #if HAVE(CFNETWORK_ALTERNATIVE_SERVICE) || HAVE(NETWORK_LOADER)
    202 static bool experimentalFeatureEnabled(const String& key)
    203 {
    204 #if PLATFORM(MAC)
    205     NSString *format = @"Experimental%@";
    206 #else
    207     NSString *format = @"WebKitExperimental%@";
    208 #endif
    209     return [[NSUserDefaults standardUserDefaults] boolForKey:[NSString stringWithFormat:format, static_cast<NSString *>(key)]];
    210 }
    211 #endif
    212212
    213213bool WebsiteDataStore::http3Enabled()
  • trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp

    r283295 r283504  
    19051905void WebsiteDataStore::setPrivateClickMeasurementDebugMode(bool enabled)
    19061906{
    1907     networkProcess().setPrivateClickMeasurementDebugMode(enabled);
     1907    networkProcess().setPrivateClickMeasurementDebugMode(sessionID(), enabled);
    19081908}
    19091909
Note: See TracChangeset for help on using the changeset viewer.