Diff
Modified: trunk/Source/WebKit/ChangeLog (284303 => 284304)
--- trunk/Source/WebKit/ChangeLog 2021-10-16 03:17:19 UTC (rev 284303)
+++ trunk/Source/WebKit/ChangeLog 2021-10-16 04:11:59 UTC (rev 284304)
@@ -1,5 +1,22 @@
2021-10-15 Alex Christensen <[email protected]>
+ Start using adattributiond on iOS
+ https://bugs.webkit.org/show_bug.cgi?id=231829
+
+ Reviewed by Brady Eidson.
+
+ This makes one small change to use adattributiond on iOS by default instead of the network process.
+ The rest of this patch is to keep the tests doing what they used to.
+
+ * UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp:
+ (WKWebsiteDataStoreConfigurationCopyPCMMachServiceName):
+ (WKWebsiteDataStoreConfigurationSetPCMMachServiceName):
+ * UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.h:
+ * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:
+ (WebKit::WebsiteDataStoreConfiguration::WebsiteDataStoreConfiguration):
+
+2021-10-15 Alex Christensen <[email protected]>
+
Use attributedBundleIdentifier instead of applicationBundleIdentifier when present for handling PCM attribution
https://bugs.webkit.org/show_bug.cgi?id=231827
Modified: trunk/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp (284303 => 284304)
--- trunk/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp 2021-10-16 03:17:19 UTC (rev 284303)
+++ trunk/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp 2021-10-16 04:11:59 UTC (rev 284304)
@@ -179,3 +179,13 @@
{
WebKit::toImpl(configuration)->setStaleWhileRevalidateEnabled(enabled);
}
+
+WKStringRef WKWebsiteDataStoreConfigurationCopyPCMMachServiceName(WKWebsiteDataStoreConfigurationRef configuration)
+{
+ return WebKit::toCopiedAPI(WebKit::toImpl(configuration)->pcmMachServiceName());
+}
+
+void WKWebsiteDataStoreConfigurationSetPCMMachServiceName(WKWebsiteDataStoreConfigurationRef configuration, WKStringRef name)
+{
+ WebKit::toImpl(configuration)->setPCMMachServiceName(name ? WebKit::toImpl(name)->string() : String());
+}
Modified: trunk/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.h (284303 => 284304)
--- trunk/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.h 2021-10-16 03:17:19 UTC (rev 284303)
+++ trunk/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.h 2021-10-16 04:11:59 UTC (rev 284304)
@@ -78,6 +78,9 @@
WK_EXPORT bool WKWebsiteDataStoreConfigurationGetStaleWhileRevalidateEnabled(WKWebsiteDataStoreConfigurationRef configuration);
WK_EXPORT void WKWebsiteDataStoreConfigurationSetStaleWhileRevalidateEnabled(WKWebsiteDataStoreConfigurationRef configuration, bool enabled);
+WK_EXPORT WKStringRef WKWebsiteDataStoreConfigurationCopyPCMMachServiceName(WKWebsiteDataStoreConfigurationRef configuration);
+WK_EXPORT void WKWebsiteDataStoreConfigurationSetPCMMachServiceName(WKWebsiteDataStoreConfigurationRef configuration, WKStringRef name);
+
#ifdef __cplusplus
}
#endif
Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp (284303 => 284304)
--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp 2021-10-16 03:17:19 UTC (rev 284303)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp 2021-10-16 04:11:59 UTC (rev 284304)
@@ -51,7 +51,9 @@
#if ENABLE(ARKIT_INLINE_PREVIEW)
setModelElementCacheDirectory(WebsiteDataStore::defaultModelElementCacheDirectory());
#endif
- // FIXME: Give m_pcmMachServiceName a default value and remove PCM::ManagerInterface once rdar://80701098 is closed.
+#if PLATFORM(IOS)
+ setPCMMachServiceName("com.apple.webkit.adattributiond.service");
+#endif
}
}
Modified: trunk/Tools/ChangeLog (284303 => 284304)
--- trunk/Tools/ChangeLog 2021-10-16 03:17:19 UTC (rev 284303)
+++ trunk/Tools/ChangeLog 2021-10-16 04:11:59 UTC (rev 284304)
@@ -1,5 +1,22 @@
2021-10-15 Alex Christensen <[email protected]>
+ Start using adattributiond on iOS
+ https://bugs.webkit.org/show_bug.cgi?id=231829
+
+ Reviewed by Brady Eidson.
+
+ * TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm:
+ (TestWebKitAPI::configurationWithoutUsingDaemon):
+ (TestWebKitAPI::webViewWithoutUsingDaemon):
+ (TestWebKitAPI::runBasicPCMTest):
+ (TestWebKitAPI::TEST):
+ * TestWebKitAPI/Tests/WebKitCocoa/PrivateClickMeasurement.mm:
+ (webViewWithResourceLoadStatisticsEnabledInNetworkProcess):
+ * WebKitTestRunner/TestController.cpp:
+ (WTR::TestController::configureWebsiteDataStoreTemporaryDirectories):
+
+2021-10-15 Alex Christensen <[email protected]>
+
Use attributedBundleIdentifier instead of applicationBundleIdentifier when present for handling PCM attribution
https://bugs.webkit.org/show_bug.cgi?id=231827
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm (284303 => 284304)
--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm 2021-10-16 03:17:19 UTC (rev 284303)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm 2021-10-16 04:11:59 UTC (rev 284304)
@@ -120,6 +120,20 @@
[[NSFileManager defaultManager] removeItemAtURL:adoptNS([[_WKWebsiteDataStoreConfiguration alloc] init]).get()._resourceLoadStatisticsDirectory error:nil];
}
+static RetainPtr<WKWebViewConfiguration> configurationWithoutUsingDaemon()
+{
+ auto dataStoreConfiguration = adoptNS([_WKWebsiteDataStoreConfiguration new]);
+ dataStoreConfiguration.get().pcmMachServiceName = nil;
+ auto configuration = adoptNS([WKWebViewConfiguration new]);
+ configuration.get().websiteDataStore = adoptNS([[WKWebsiteDataStore alloc] _initWithConfiguration:dataStoreConfiguration.get()]).get();
+ return configuration;
+}
+
+static RetainPtr<WKWebView> webViewWithoutUsingDaemon()
+{
+ return adoptNS([[WKWebView alloc] initWithFrame:CGRectZero configuration:configurationWithoutUsingDaemon().get()]);
+}
+
void runBasicPCMTest(WKWebViewConfiguration *configuration, Function<void(WKWebView *, const HTTPServer&)>&& addAttributionToWebView, bool setTestAppBundleID = true)
{
clearState();
@@ -156,7 +170,7 @@
}, HTTPServer::Protocol::Https);
NSURL *serverURL = server.request().URL;
- auto webView = configuration ? adoptNS([[WKWebView alloc] initWithFrame:CGRectZero configuration:configuration]) : adoptNS([WKWebView new]);
+ auto webView = configuration ? adoptNS([[WKWebView alloc] initWithFrame:CGRectZero configuration:configuration]) : webViewWithoutUsingDaemon();
webView.get().navigationDelegate = delegateAllowingAllTLS();
addAttributionToWebView(webView.get(), server);
[[webView configuration].websiteDataStore _setResourceLoadStatisticsEnabled:YES];
@@ -310,7 +324,7 @@
}, HTTPServer::Protocol::Https);
NSURL *serverURL = server.request().URL;
- auto webView = adoptNS([WKWebView new]);
+ auto webView = webViewWithoutUsingDaemon();
webView.get().navigationDelegate = delegateAllowingAllTLS();
[webView _addEventAttributionWithSourceID:42 destinationURL:exampleURL() sourceDescription:@"test source description" purchaser:@"test purchaser" reportEndpoint:serverURL optionalNonce:@"ABCDEFabcdef0123456789" applicationBundleID:@"test.bundle.id" ephemeral:NO];
[[webView configuration].websiteDataStore _setResourceLoadStatisticsEnabled:YES];
@@ -362,7 +376,8 @@
@autoreleasepool {
auto dataStoreConfiguration = adoptNS([_WKWebsiteDataStoreConfiguration new]);
dataStoreConfiguration.get().privateClickMeasurementStorageDirectory = tempDir;
- auto viewConfiguration = adoptNS([WKWebViewConfiguration new]);
+ dataStoreConfiguration.get().pcmMachServiceName = nil;
+ auto viewConfiguration = configurationWithoutUsingDaemon();
auto dataStore = adoptNS([[WKWebsiteDataStore alloc] _initWithConfiguration:dataStoreConfiguration.get()]);
viewConfiguration.get().websiteDataStore = dataStore.get();
runBasicPCMTest(viewConfiguration.get(), [](WKWebView *webView, const HTTPServer& server) {
@@ -506,7 +521,7 @@
TEST(PrivateClickMeasurement, DaemonBasicFunctionality)
{
- auto [tempDir, configuration] = setUpDaemon(adoptNS([WKWebViewConfiguration new]).autorelease());
+ auto [tempDir, configuration] = setUpDaemon(configurationWithoutUsingDaemon().autorelease());
attemptConnectionInProcessWithoutEntitlement();
runBasicPCMTest(configuration, [](WKWebView *webView, const HTTPServer& server) {
[webView _addEventAttributionWithSourceID:42 destinationURL:exampleURL() sourceDescription:@"test source description" purchaser:@"test purchaser" reportEndpoint:server.request().URL optionalNonce:nil applicationBundleID:@"test.bundle.id" ephemeral:NO];