Diff
Modified: trunk/Source/WebKit/ChangeLog (283503 => 283504)
--- trunk/Source/WebKit/ChangeLog 2021-10-04 16:46:54 UTC (rev 283503)
+++ trunk/Source/WebKit/ChangeLog 2021-10-04 17:38:45 UTC (rev 283504)
@@ -1,3 +1,44 @@
+2021-10-04 Alex Christensen <[email protected]>
+
+ 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):
+
2021-10-04 Jean-Yves Avenard <[email protected]>
Vorbis decoder can't be instantiated - follow up on Bug 230742
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (283503 => 283504)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2021-10-04 16:46:54 UTC (rev 283503)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2021-10-04 17:38:45 UTC (rev 283504)
@@ -346,7 +346,6 @@
setCacheModel(parameters.cacheModel);
setPrivateClickMeasurementEnabled(parameters.enablePrivateClickMeasurement);
- setPrivateClickMeasurementDebugMode(parameters.enablePrivateClickMeasurementDebugMode);
m_ftpEnabled = parameters.ftpEnabled;
for (auto& supplement : m_supplements.values())
@@ -1352,26 +1351,12 @@
return m_privateClickMeasurementEnabled;
}
-void NetworkProcess::setPrivateClickMeasurementDebugMode(bool enabled)
+void NetworkProcess::setPrivateClickMeasurementDebugMode(PAL::SessionID sessionID, bool enabled)
{
- if (m_privateClickMeasurementDebugModeEnabled == enabled)
- return;
-
- m_privateClickMeasurementDebugModeEnabled = enabled;
-
- String message = enabled ? "[Private Click Measurement] Turned Debug Mode on."_s : "[Private Click Measurement] Turned Debug Mode off."_s;
- for (auto& networkConnectionToWebProcess : m_webProcessConnections.values()) {
- if (networkConnectionToWebProcess->sessionID().isEphemeral())
- continue;
- networkConnectionToWebProcess->broadcastConsoleMessage(MessageSource::PrivateClickMeasurement, MessageLevel::Info, message);
- }
+ if (auto* networkSession = this->networkSession(sessionID))
+ networkSession->setPrivateClickMeasurementDebugMode(enabled);
}
-bool NetworkProcess::privateClickMeasurementDebugModeEnabled() const
-{
- return m_privateClickMeasurementDebugModeEnabled;
-}
-
void NetworkProcess::preconnectTo(PAL::SessionID sessionID, WebPageProxyIdentifier webPageProxyID, WebCore::PageIdentifier webPageID, const URL& url, const String& userAgent, WebCore::StoredCredentialsPolicy storedCredentialsPolicy, std::optional<NavigatingToAppBoundDomain> isNavigatingToAppBoundDomain, LastNavigationWasAppInitiated lastNavigationWasAppInitiated)
{
LOG(Network, "(NetworkProcess) Preconnecting to URL %s (storedCredentialsPolicy %i)", url.string().utf8().data(), (int)storedCredentialsPolicy);
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.h (283503 => 283504)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2021-10-04 16:46:54 UTC (rev 283503)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2021-10-04 17:38:45 UTC (rev 283504)
@@ -285,8 +285,7 @@
void setPrivateClickMeasurementEnabled(bool);
bool privateClickMeasurementEnabled() const;
- void setPrivateClickMeasurementDebugMode(bool);
- bool privateClickMeasurementDebugModeEnabled() const;
+ void setPrivateClickMeasurementDebugMode(PAL::SessionID, bool);
using CacheStorageRootPathCallback = CompletionHandler<void(String&&)>;
void cacheStorageRootPath(PAL::SessionID, CacheStorageRootPathCallback&&);
@@ -620,7 +619,6 @@
HashMap<WebCore::PageIdentifier, Vector<WebCore::UserContentURLPattern>> m_extensionCORSDisablingPatterns;
bool m_privateClickMeasurementEnabled { true };
- bool m_privateClickMeasurementDebugModeEnabled { false };
bool m_ftpEnabled { false };
HashMap<PAL::SessionID, Ref<NetworkStorageManager>> m_storageManagers;
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in (283503 => 283504)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in 2021-10-04 16:46:54 UTC (rev 283503)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in 2021-10-04 17:38:45 UTC (rev 283504)
@@ -146,7 +146,7 @@
SetThirdPartyCNAMEDomainForTesting(PAL::SessionID sessionID, WebCore::RegistrableDomain domain) -> () Async
#endif
- SetPrivateClickMeasurementDebugMode(bool debugMode)
+ SetPrivateClickMeasurementDebugMode(PAL::SessionID sessionID, bool debugMode)
SetSessionIsControlledByAutomation(PAL::SessionID sessionID, bool controlled);
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp (283503 => 283504)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp 2021-10-04 16:46:54 UTC (rev 283503)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp 2021-10-04 17:38:45 UTC (rev 283504)
@@ -71,7 +71,6 @@
encoder << urlSchemesRegisteredAsNoAccess;
encoder << enablePrivateClickMeasurement;
- encoder << enablePrivateClickMeasurementDebugMode;
encoder << ftpEnabled;
encoder << websiteDataStoreParameters;
}
@@ -145,8 +144,6 @@
if (!decoder.decode(result.enablePrivateClickMeasurement))
return false;
- if (!decoder.decode(result.enablePrivateClickMeasurementDebugMode))
- return false;
if (!decoder.decode(result.ftpEnabled))
return false;
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h (283503 => 283504)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h 2021-10-04 16:46:54 UTC (rev 283503)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h 2021-10-04 17:38:45 UTC (rev 283504)
@@ -87,7 +87,6 @@
Vector<String> urlSchemesRegisteredAsNoAccess;
bool enablePrivateClickMeasurement { true };
- bool enablePrivateClickMeasurementDebugMode { false };
bool ftpEnabled { false };
Vector<WebsiteDataStoreParameters> websiteDataStoreParameters;
Modified: trunk/Source/WebKit/NetworkProcess/NetworkSession.cpp (283503 => 283504)
--- trunk/Source/WebKit/NetworkProcess/NetworkSession.cpp 2021-10-04 16:46:54 UTC (rev 283503)
+++ trunk/Source/WebKit/NetworkProcess/NetworkSession.cpp 2021-10-04 17:38:45 UTC (rev 283504)
@@ -117,6 +117,7 @@
, m_standaloneApplicationDomain(parameters.resourceLoadStatisticsParameters.standaloneApplicationDomain)
#endif
, m_privateClickMeasurement(managerOrProxy(*this, networkProcess, parameters))
+ , m_privateClickMeasurementDebugModeEnabled(parameters.enablePrivateClickMeasurementDebugMode)
, m_broadcastChannelRegistry(makeUniqueRef<NetworkBroadcastChannelRegistry>())
, m_testSpeedMultiplier(parameters.testSpeedMultiplier)
, m_allowsServerPreconnect(parameters.allowsServerPreconnect)
@@ -420,6 +421,17 @@
privateClickMeasurement().setPCMFraudPreventionValuesForTesting(WTFMove(unlinkableToken), WTFMove(secretToken), WTFMove(signature), WTFMove(keyID));
}
+void NetworkSession::setPrivateClickMeasurementDebugMode(bool enabled)
+{
+ if (m_privateClickMeasurementDebugModeEnabled == enabled)
+ return;
+
+ m_privateClickMeasurementDebugModeEnabled = enabled;
+
+ auto message = enabled ? "[Private Click Measurement] Turned Debug Mode on."_s : "[Private Click Measurement] Turned Debug Mode off."_s;
+ m_networkProcess->broadcastConsoleMessage(sessionID(), MessageSource::PrivateClickMeasurement, MessageLevel::Info, message);
+}
+
void NetworkSession::firePrivateClickMeasurementTimerImmediatelyForTesting()
{
privateClickMeasurement().startTimerImmediatelyForTesting();
Modified: trunk/Source/WebKit/NetworkProcess/NetworkSession.h (283503 => 283504)
--- trunk/Source/WebKit/NetworkProcess/NetworkSession.h 2021-10-04 16:46:54 UTC (rev 283503)
+++ trunk/Source/WebKit/NetworkProcess/NetworkSession.h 2021-10-04 17:38:45 UTC (rev 283504)
@@ -175,6 +175,8 @@
NetworkLoadScheduler& networkLoadScheduler();
PCM::ManagerInterface& privateClickMeasurement() { return m_privateClickMeasurement.get(); }
+ void setPrivateClickMeasurementDebugMode(bool);
+ bool privateClickMeasurementDebugModeEnabled() const { return m_privateClickMeasurementDebugModeEnabled; }
#if PLATFORM(COCOA)
AppPrivacyReportTestingData& appPrivacyReportTestingData() { return m_appPrivacyReportTestingData; }
@@ -215,6 +217,7 @@
#endif
bool m_isStaleWhileRevalidateEnabled { false };
UniqueRef<PCM::ManagerInterface> m_privateClickMeasurement;
+ bool m_privateClickMeasurementDebugModeEnabled { false };
std::optional<WebCore::PrivateClickMeasurement> m_ephemeralMeasurement;
bool m_isRunningEphemeralMeasurementTest { false };
Modified: trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp (283503 => 283504)
--- trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp 2021-10-04 16:46:54 UTC (rev 283503)
+++ trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp 2021-10-04 17:38:45 UTC (rev 283504)
@@ -89,6 +89,7 @@
encoder << useNetworkLoader;
encoder << allowsHSTSWithUntrustedRootCertificate;
encoder << pcmMachServiceName;
+ encoder << enablePrivateClickMeasurementDebugMode;
encoder << resourceLoadStatisticsParameters;
}
@@ -305,6 +306,11 @@
decoder >> pcmMachServiceName;
if (!pcmMachServiceName)
return std::nullopt;
+
+ std::optional<bool> enablePrivateClickMeasurementDebugMode;
+ decoder >> enablePrivateClickMeasurementDebugMode;
+ if (!enablePrivateClickMeasurementDebugMode)
+ return std::nullopt;
std::optional<ResourceLoadStatisticsParameters> resourceLoadStatisticsParameters;
decoder >> resourceLoadStatisticsParameters;
@@ -361,6 +367,7 @@
, WTFMove(*useNetworkLoader)
, WTFMove(*allowsHSTSWithUntrustedRootCertificate)
, WTFMove(*pcmMachServiceName)
+ , WTFMove(*enablePrivateClickMeasurementDebugMode)
, WTFMove(*resourceLoadStatisticsParameters)
}};
}
Modified: trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h (283503 => 283504)
--- trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h 2021-10-04 16:46:54 UTC (rev 283503)
+++ trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h 2021-10-04 17:38:45 UTC (rev 283504)
@@ -104,6 +104,7 @@
bool useNetworkLoader { false };
bool allowsHSTSWithUntrustedRootCertificate { false };
String pcmMachServiceName;
+ bool enablePrivateClickMeasurementDebugMode { false };
ResourceLoadStatisticsParameters resourceLoadStatisticsParameters;
};
Modified: trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementClientImpl.cpp (283503 => 283504)
--- trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementClientImpl.cpp 2021-10-04 16:46:54 UTC (rev 283503)
+++ trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementClientImpl.cpp 2021-10-04 17:38:45 UTC (rev 283504)
@@ -55,7 +55,7 @@
bool ClientImpl::debugModeEnabled() const
{
return m_networkSession
- && m_networkProcess->privateClickMeasurementDebugModeEnabled()
+ && m_networkSession->privateClickMeasurementDebugModeEnabled()
&& !m_networkSession->sessionID().isEphemeral();
}
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (283503 => 283504)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2021-10-04 16:46:54 UTC (rev 283503)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2021-10-04 17:38:45 UTC (rev 283504)
@@ -557,13 +557,6 @@
#endif
parameters.enablePrivateClickMeasurement = ![defaults objectForKey:WebPreferencesKey::privateClickMeasurementEnabledKey()] || [defaults boolForKey:WebPreferencesKey::privateClickMeasurementEnabledKey()];
-#if PLATFORM(MAC)
- NSString *format = @"Experimental%@";
-#else
- NSString *format = @"WebKitExperimental%@";
-#endif
- parameters.enablePrivateClickMeasurementDebugMode = [defaults boolForKey:[NSString stringWithFormat:format, WebPreferencesKey::privateClickMeasurementDebugModeEnabledKey().createCFString().get()]];
-
parameters.ftpEnabled = [defaults objectForKey:WebPreferencesKey::ftpEnabledKey()] && [defaults boolForKey:WebPreferencesKey::ftpEnabledKey()];
}
Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp (283503 => 283504)
--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp 2021-10-04 16:46:54 UTC (rev 283503)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp 2021-10-04 17:38:45 UTC (rev 283504)
@@ -1255,12 +1255,12 @@
#endif // ENABLE(INTELLIGENT_TRACKING_PREVENTION)
-void NetworkProcessProxy::setPrivateClickMeasurementDebugMode(bool debugMode)
+void NetworkProcessProxy::setPrivateClickMeasurementDebugMode(PAL::SessionID sessionID, bool debugMode)
{
if (!canSendMessage())
return;
- send(Messages::NetworkProcess::SetPrivateClickMeasurementDebugMode(debugMode), 0);
+ send(Messages::NetworkProcess::SetPrivateClickMeasurementDebugMode(sessionID, debugMode), 0);
}
void NetworkProcessProxy::sendProcessWillSuspendImminentlyForTesting()
Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h (283503 => 283504)
--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h 2021-10-04 16:46:54 UTC (rev 283503)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h 2021-10-04 17:38:45 UTC (rev 283504)
@@ -205,7 +205,7 @@
void setDomainsWithCrossPageStorageAccess(HashMap<TopFrameDomain, SubResourceDomain>&&, CompletionHandler<void()>&&);
#endif
- void setPrivateClickMeasurementDebugMode(bool);
+ void setPrivateClickMeasurementDebugMode(PAL::SessionID, bool);
void synthesizeAppIsBackground(bool background);
Modified: trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm (283503 => 283504)
--- trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm 2021-10-04 16:46:54 UTC (rev 283503)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm 2021-10-04 17:38:45 UTC (rev 283504)
@@ -92,6 +92,16 @@
}
#endif
+static bool experimentalFeatureEnabled(const String& key)
+{
+#if PLATFORM(MAC)
+ NSString *format = @"Experimental%@";
+#else
+ NSString *format = @"WebKitExperimental%@";
+#endif
+ return [[NSUserDefaults standardUserDefaults] boolForKey:[NSString stringWithFormat:format, static_cast<NSString *>(key)]];
+}
+
void WebsiteDataStore::platformSetNetworkParameters(WebsiteDataStoreParameters& parameters)
{
ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies));
@@ -192,6 +202,8 @@
parameters.uiProcessCookieStorageIdentifier = m_uiProcessCookieStorageIdentifier;
+ parameters.networkSessionParameters.enablePrivateClickMeasurementDebugMode = experimentalFeatureEnabled(WebPreferencesKey::privateClickMeasurementDebugModeEnabledKey());
+
if (!cookieFile.isEmpty()) {
if (auto handle = SandboxExtension::createHandleForReadWriteDirectory(FileSystem::parentPath(cookieFile)))
parameters.cookieStoragePathExtensionHandle = WTFMove(*handle);
@@ -198,18 +210,6 @@
}
}
-#if HAVE(CFNETWORK_ALTERNATIVE_SERVICE) || HAVE(NETWORK_LOADER)
-static bool experimentalFeatureEnabled(const String& key)
-{
-#if PLATFORM(MAC)
- NSString *format = @"Experimental%@";
-#else
- NSString *format = @"WebKitExperimental%@";
-#endif
- return [[NSUserDefaults standardUserDefaults] boolForKey:[NSString stringWithFormat:format, static_cast<NSString *>(key)]];
-}
-#endif
-
bool WebsiteDataStore::http3Enabled()
{
#if HAVE(CFNETWORK_ALTERNATIVE_SERVICE)
Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp (283503 => 283504)
--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp 2021-10-04 16:46:54 UTC (rev 283503)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp 2021-10-04 17:38:45 UTC (rev 283504)
@@ -1904,7 +1904,7 @@
void WebsiteDataStore::setPrivateClickMeasurementDebugMode(bool enabled)
{
- networkProcess().setPrivateClickMeasurementDebugMode(enabled);
+ networkProcess().setPrivateClickMeasurementDebugMode(sessionID(), enabled);
}
#if ENABLE(INTELLIGENT_TRACKING_PREVENTION)