Changeset 270669 in webkit
- Timestamp:
- Dec 10, 2020, 11:41:15 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 17 edited
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/loader/PrivateClickMeasurement.h (modified) (6 diffs)
-
Source/WebKit/ChangeLog (modified) (1 diff)
-
Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp (modified) (1 diff)
-
Source/WebKit/Platform/ios/UIKitSoftLink.h (added)
-
Source/WebKit/Platform/ios/UIKitSoftLink.mm (added)
-
Source/WebKit/Platform/spi/ios/UIKitSPI.h (modified) (1 diff)
-
Source/WebKit/SourcesCocoa.txt (modified) (1 diff)
-
Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h (modified) (2 diffs)
-
Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h (modified) (1 diff)
-
Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm (modified) (1 diff)
-
Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm (modified) (2 diffs)
-
Source/WebKit/UIProcess/WebPageProxy.cpp (modified) (3 diffs)
-
Source/WebKit/UIProcess/WebPageProxy.h (modified) (2 diffs)
-
Source/WebKit/WebKit.xcodeproj/project.pbxproj (modified) (2 diffs)
-
Tools/ChangeLog (modified) (1 diff)
-
Tools/TestWebKitAPI/SourcesCocoa.txt (modified) (1 diff)
-
Tools/TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm (modified) (1 diff)
-
Tools/TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm (added)
-
Tools/TestWebKitAPI/cocoa/HTTPServer.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r270668 r270669 1 2020-12-10 Alex Christensen <achristensen@webkit.org> 2 3 Accept click measurement data from hosting application 4 https://bugs.webkit.org/show_bug.cgi?id=219763 5 <rdar://problem/72121094> 6 7 Reviewed by John Wilander. 8 9 Covered by an API test. 10 11 * loader/PrivateClickMeasurement.h: 12 (WebCore::PrivateClickMeasurement::PrivateClickMeasurement): 13 (WebCore::PrivateClickMeasurement::sourceID const): 14 (WebCore::PrivateClickMeasurement::sourceDescription const): 15 (WebCore::PrivateClickMeasurement::purchaser const): 16 (WebCore::PrivateClickMeasurement::encode const): 17 (WebCore::PrivateClickMeasurement::decode): 18 (WebCore::PrivateClickMeasurement::sourceID): Deleted. 19 1 20 2020-12-10 Peng Liu <peng.liu6@apple.com> 2 21 -
trunk/Source/WebCore/loader/PrivateClickMeasurement.h
r270456 r270669 236 236 237 237 PrivateClickMeasurement() = default; 238 PrivateClickMeasurement(SourceID sourceID, const SourceSite& sourceSite, const AttributeOnSite& attributeOnSite, WallTime timeOfAdClick = WallTime::now())238 PrivateClickMeasurement(SourceID sourceID, const SourceSite& sourceSite, const AttributeOnSite& attributeOnSite, String&& sourceDescription = { }, String&& purchaser = { }, WallTime timeOfAdClick = WallTime::now()) 239 239 : m_sourceID { sourceID } 240 240 , m_sourceSite { sourceSite } 241 241 , m_attributeOnSite { attributeOnSite } 242 , m_sourceDescription { WTFMove(sourceDescription) } 243 , m_purchaser { WTFMove(purchaser) } 242 244 , m_timeOfAdClick { timeOfAdClick } 243 245 { … … 255 257 Optional<WallTime> earliestTimeToSend() const { return m_earliestTimeToSend; }; 256 258 void setEarliestTimeToSend(WallTime time) { m_earliestTimeToSend = time; } 257 SourceID sourceID(){ return m_sourceID; }259 const SourceID& sourceID() const { return m_sourceID; } 258 260 Optional<AttributionTriggerData> attributionTriggerData() { return m_attributionTriggerData; } 259 261 void setAttribution(AttributionTriggerData&& attributionTriggerData) { m_attributionTriggerData = WTFMove(attributionTriggerData); } 262 263 const String& sourceDescription() const { return m_sourceDescription; } 264 const String& purchaser() const { return m_purchaser; } 260 265 261 266 template<class Encoder> void encode(Encoder&) const; … … 269 274 SourceSite m_sourceSite; 270 275 AttributeOnSite m_attributeOnSite; 276 String m_sourceDescription; 277 String m_purchaser; 271 278 WallTime m_timeOfAdClick; 272 279 … … 278 285 void PrivateClickMeasurement::encode(Encoder& encoder) const 279 286 { 280 encoder << m_sourceID.id << m_sourceSite.registrableDomain << m_attributeOnSite.registrableDomain << m_timeOfAdClick << m_attributionTriggerData << m_earliestTimeToSend; 287 encoder << m_sourceID.id 288 << m_sourceSite.registrableDomain 289 << m_attributeOnSite.registrableDomain 290 << m_sourceDescription 291 << m_purchaser 292 << m_timeOfAdClick 293 << m_attributionTriggerData 294 << m_earliestTimeToSend; 281 295 } 282 296 … … 299 313 return WTF::nullopt; 300 314 315 Optional<String> sourceDescription; 316 decoder >> sourceDescription; 317 if (!sourceDescription) 318 return WTF::nullopt; 319 320 Optional<String> purchaser; 321 decoder >> purchaser; 322 if (!purchaser) 323 return WTF::nullopt; 324 301 325 Optional<WallTime> timeOfAdClick; 302 326 decoder >> timeOfAdClick; … … 314 338 return WTF::nullopt; 315 339 316 PrivateClickMeasurement attribution { SourceID { WTFMove(*sourceID) }, SourceSite { WTFMove(*sourceRegistrableDomain) }, AttributeOnSite { WTFMove(*attributeOnRegistrableDomain) } }; 340 PrivateClickMeasurement attribution { 341 SourceID { WTFMove(*sourceID) }, 342 SourceSite { WTFMove(*sourceRegistrableDomain) }, 343 AttributeOnSite { WTFMove(*attributeOnRegistrableDomain) }, 344 WTFMove(*sourceDescription), 345 WTFMove(*purchaser), 346 WTFMove(*timeOfAdClick) 347 }; 317 348 attribution.m_attributionTriggerData = WTFMove(*attributionTriggerData); 318 349 attribution.m_earliestTimeToSend = WTFMove(*earliestTimeToSend); -
trunk/Source/WebKit/ChangeLog
r270668 r270669 1 2020-12-10 Alex Christensen <achristensen@webkit.org> 2 3 Accept click measurement data from hosting application 4 https://bugs.webkit.org/show_bug.cgi?id=219763 5 <rdar://problem/72121094> 6 7 Reviewed by John Wilander. 8 9 * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: 10 (WebKit::ResourceLoadStatisticsDatabaseStore::buildPrivateClickMeasurementFromDatabase): 11 * Platform/ios/UIKitSoftLink.h: Added. 12 * Platform/ios/UIKitSoftLink.mm: Added. 13 * Platform/spi/ios/UIKitSPI.h: 14 * SourcesCocoa.txt: 15 * UIProcess/API/Cocoa/WKWebViewPrivate.h: 16 * UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h: 17 * UIProcess/API/Cocoa/WKWebViewTesting.mm: 18 (-[WKWebView _setPrivateClickMeasurementOverrideTimerForTesting:completionHandler:]): 19 (-[WKWebView _setPrivateClickMeasurementConversionURLForTesting:completionHandler:]): 20 * UIProcess/API/ios/WKWebViewIOS.mm: 21 (-[WKWebView _setEventAttribution:]): 22 (-[WKWebView _eventAttribution]): 23 * UIProcess/WebPageProxy.cpp: 24 (WebKit::WebPageProxy::didCommitLoadForFrame): 25 (WebKit::WebPageProxy::createNewPage): 26 * UIProcess/WebPageProxy.h: 27 (WebKit::WebPageProxy::setPrivateClickMeasurement): 28 (WebKit::WebPageProxy::privateClickMeasurement const): 29 * WebKit.xcodeproj/project.pbxproj: 30 1 31 2020-12-10 Peng Liu <peng.liu6@apple.com> 2 32 -
trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp
r270197 r270669 2940 2940 auto timeOfAdClick = attributionType == PrivateClickMeasurementAttributionType::Attributed ? statement->getColumnDouble(5) : statement->getColumnDouble(3); 2941 2941 2942 PrivateClickMeasurement attribution(WebCore::PrivateClickMeasurement::SourceID(sourceID), WebCore::PrivateClickMeasurement::SourceSite(RegistrableDomain::uncheckedCreateFromRegistrableDomainString(sourceSiteDomain)), WebCore::PrivateClickMeasurement::AttributeOnSite(RegistrableDomain::uncheckedCreateFromRegistrableDomainString(attributeOnSiteDomain)), WallTime::fromRawSeconds(timeOfAdClick));2942 PrivateClickMeasurement attribution(WebCore::PrivateClickMeasurement::SourceID(sourceID), WebCore::PrivateClickMeasurement::SourceSite(RegistrableDomain::uncheckedCreateFromRegistrableDomainString(sourceSiteDomain)), WebCore::PrivateClickMeasurement::AttributeOnSite(RegistrableDomain::uncheckedCreateFromRegistrableDomainString(attributeOnSiteDomain)), { }, { }, WallTime::fromRawSeconds(timeOfAdClick)); 2943 2943 2944 2944 if (attributionType == PrivateClickMeasurementAttributionType::Attributed) { -
trunk/Source/WebKit/Platform/spi/ios/UIKitSPI.h
r269082 r270669 1348 1348 @end 1349 1349 1350 @interface _UIEventAttribution : NSObject <NSCopying> 1351 @property (nonatomic, assign, readonly) uint8_t sourceIdentifier; 1352 @property (nonatomic, copy, readonly) NSURL *attributeOn; 1353 @property (nonatomic, /*nullable,*/ copy, readonly) NSURL *reportEndpoint; 1354 @property (nonatomic, copy, readonly) NSString *sourceDescription; 1355 @property (nonatomic, copy, readonly) NSString *purchaser; 1356 - (instancetype)initWithSourceIdentifier:(uint8_t)sourceIdentifier attributeOn:(NSURL *)attributeOn sourceDescription:(NSString *)sourceDescription purchaser:(NSString *)purchaser; 1357 - (instancetype)init NS_UNAVAILABLE; 1358 + (instancetype)new NS_UNAVAILABLE; 1359 @end 1360 1350 1361 @interface _UINavigationInteractiveTransitionBase () 1351 1362 - (void)_stopInteractiveTransition; -
trunk/Source/WebKit/SourcesCocoa.txt
r270638 r270669 85 85 Platform/ios/AccessibilityIOS.mm 86 86 Platform/ios/PaymentAuthorizationController.mm 87 Platform/ios/UIKitSoftLink.mm 87 88 88 89 Platform/IPC/cocoa/ConnectionCocoa.mm -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h
r270638 r270669 113 113 @class WKFrameInfo; 114 114 @class WKWebpagePreferences; 115 @class _UIEventAttribution; 115 116 @class _WKApplicationManifest; 116 117 @class _WKFrameHandle; … … 365 366 @interface WKWebView (WKPrivateIOS) 366 367 368 @property (nonatomic, copy, setter=_setEventAttribution:) _UIEventAttribution *_eventAttribution WK_API_AVAILABLE(ios(WK_IOS_TBA)); 369 367 370 @property (nonatomic, readonly) CGRect _contentVisibleRect WK_API_AVAILABLE(ios(10.0)); 368 371 -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h
r269394 r270669 84 84 85 85 - (NSNumber *)_suspendMediaPlaybackCounter WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 86 87 - (void)_setPrivateClickMeasurementOverrideTimerForTesting:(BOOL)overrideTimer completionHandler:(void(^)(void))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 88 - (void)_setPrivateClickMeasurementConversionURLForTesting:(NSURL *)url completionHandler:(void(^)(void))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 89 86 90 @end -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm
r269394 r270669 297 297 } 298 298 299 - (void)_setPrivateClickMeasurementOverrideTimerForTesting:(BOOL)overrideTimer completionHandler:(void(^)(void))completionHandler 300 { 301 _page->setPrivateClickMeasurementOverrideTimerForTesting(overrideTimer, [completionHandler = makeBlockPtr(completionHandler)] { 302 completionHandler(); 303 }); 304 } 305 306 - (void)_setPrivateClickMeasurementConversionURLForTesting:(NSURL *)url completionHandler:(void(^)(void))completionHandler 307 { 308 _page->setPrivateClickMeasurementConversionURLForTesting(url, [completionHandler = makeBlockPtr(completionHandler)] { 309 completionHandler(); 310 }); 311 } 312 299 313 - (void)_didPresentContactPicker 300 314 { -
trunk/Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm
r269710 r270669 63 63 #endif 64 64 65 #include "UIKitSoftLink.h" 66 65 67 #define FORWARD_ACTION_TO_WKCONTENTVIEW(_action) \ 66 68 - (void)_action:(id)sender \ … … 2401 2403 @implementation WKWebView (WKPrivateIOS) 2402 2404 2405 - (void)_setEventAttribution:(_UIEventAttribution *)attribution 2406 { 2407 if (attribution) { 2408 WebCore::PrivateClickMeasurement measurement( 2409 WebCore::PrivateClickMeasurement::SourceID(attribution.sourceIdentifier), 2410 WebCore::PrivateClickMeasurement::SourceSite(attribution.reportEndpoint), 2411 WebCore::PrivateClickMeasurement::AttributeOnSite(attribution.attributeOn), 2412 attribution.sourceDescription, 2413 attribution.purchaser 2414 ); 2415 _page->setPrivateClickMeasurement(WTFMove(measurement)); 2416 } else 2417 _page->setPrivateClickMeasurement(WTF::nullopt); 2418 } 2419 2420 - (_UIEventAttribution *)_eventAttribution 2421 { 2422 auto& measurement = _page->privateClickMeasurement(); 2423 if (!measurement || !measurement->sourceID().isValid()) 2424 return nil; 2425 2426 auto attributeOnURL = URL(URL(), makeString("https://", measurement->attributeOnSite().registrableDomain.string())); 2427 return [[WebKit::alloc_UIEventAttributionInstance() initWithSourceIdentifier:measurement->sourceID().id attributeOn:attributeOnURL sourceDescription:measurement->sourceDescription() purchaser:measurement->purchaser()] autorelease]; 2428 } 2429 2403 2430 - (CGRect)_contentVisibleRect 2404 2431 { -
trunk/Source/WebKit/UIProcess/WebPageProxy.cpp
r270657 r270669 4680 4680 if (frame->isMainFrame()) { 4681 4681 Optional<WebCore::PrivateClickMeasurement> privateClickMeasurement; 4682 if (m_ newPageNavigationPrivateClickMeasurement)4683 privateClickMeasurement = m_ newPageNavigationPrivateClickMeasurement;4682 if (m_privateClickMeasurement) 4683 privateClickMeasurement = m_privateClickMeasurement; 4684 4684 else if (navigation && navigation->privateClickMeasurement()) 4685 4685 privateClickMeasurement = navigation->privateClickMeasurement(); … … 4689 4689 } 4690 4690 } 4691 m_ newPageNavigationPrivateClickMeasurement.reset();4691 m_privateClickMeasurement.reset(); 4692 4692 4693 4693 if (frame->isMainFrame()) { … … 5562 5562 newPage->m_shouldSuppressAppLinksInNextNavigationPolicyDecision = mainFrameURL.host() == request.url().host(); 5563 5563 5564 newPage->m_ newPageNavigationPrivateClickMeasurement = privateClickMeasurement;5564 newPage->m_privateClickMeasurement = privateClickMeasurement; 5565 5565 #if HAVE(APP_SSO) 5566 5566 newPage->m_shouldSuppressSOAuthorizationInNextNavigationPolicyDecision = true; -
trunk/Source/WebKit/UIProcess/WebPageProxy.h
r270638 r270669 673 673 bool delegatesScrolling() const { return m_delegatesScrolling; } 674 674 675 void setPrivateClickMeasurement(Optional<WebCore::PrivateClickMeasurement>&& measurement) { m_privateClickMeasurement = WTFMove(measurement); } 676 const Optional<WebCore::PrivateClickMeasurement>& privateClickMeasurement() const { return m_privateClickMeasurement; } 677 675 678 enum class ActivityStateChangeDispatchMode : bool { Deferrable, Immediate }; 676 679 enum class ActivityStateChangeReplyMode : bool { Asynchronous, Synchronous }; … … 2906 2909 size_t m_suspendMediaPlaybackCounter { 0 }; 2907 2910 2908 Optional<WebCore::PrivateClickMeasurement> m_ newPageNavigationPrivateClickMeasurement;2911 Optional<WebCore::PrivateClickMeasurement> m_privateClickMeasurement; 2909 2912 }; 2910 2913 -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r270666 r270669 5638 5638 DF84CEE2249AA21F009096F6 /* WKPDFHUDView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKPDFHUDView.mm; path = PDF/WKPDFHUDView.mm; sourceTree = "<group>"; }; 5639 5639 DF84CEE3249AA21F009096F6 /* WKPDFHUDView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKPDFHUDView.h; path = PDF/WKPDFHUDView.h; sourceTree = "<group>"; }; 5640 DF8523BA2583176F00AEADD0 /* UIKitSoftLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIKitSoftLink.h; sourceTree = "<group>"; }; 5641 DF8523BB258317A900AEADD0 /* UIKitSoftLink.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = UIKitSoftLink.mm; sourceTree = "<group>"; }; 5640 5642 E105FE5318D7B9DE008F57A8 /* EditingRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditingRange.h; sourceTree = "<group>"; }; 5641 5643 E133FD891423DD7F00FC7BFB /* WebKit.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = WebKit.icns; path = Resources/WebKit.icns; sourceTree = "<group>"; }; … … 9305 9307 A1798B4F2230A0FE000764BD /* PaymentAuthorizationController.h */, 9306 9308 A1798B502230A0FE000764BD /* PaymentAuthorizationController.mm */, 9309 DF8523BA2583176F00AEADD0 /* UIKitSoftLink.h */, 9310 DF8523BB258317A900AEADD0 /* UIKitSoftLink.mm */, 9307 9311 ); 9308 9312 path = ios; -
trunk/Tools/ChangeLog
r270663 r270669 1 2020-12-10 Alex Christensen <achristensen@webkit.org> 2 3 Accept click measurement data from hosting application 4 https://bugs.webkit.org/show_bug.cgi?id=219763 5 <rdar://problem/72121094> 6 7 Reviewed by John Wilander. 8 9 * TestWebKitAPI/SourcesCocoa.txt: 10 * TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm: 11 (testCertificate): 12 * TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm: Added. 13 (-[MockEventAttribution initWithReportEndpoint:attributeOn:]): 14 (TestWebKitAPI::TEST): 15 * TestWebKitAPI/cocoa/HTTPServer.h: 16 1 17 2020-12-10 Chris Dumez <cdumez@apple.com> 2 18 -
trunk/Tools/TestWebKitAPI/SourcesCocoa.txt
r270638 r270669 34 34 cocoa/TestWKWebView.mm 35 35 36 Tests/WebKitCocoa/EventAttribution.mm 36 37 Tests/WebKitCocoa/TLSDeprecation.mm -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm
r269094 r270669 48 48 static bool navigationFinished; 49 49 50 staticRetainPtr<SecCertificateRef> testCertificate()50 RetainPtr<SecCertificateRef> testCertificate() 51 51 { 52 52 auto certificateBytes = TestWebKitAPI::TCPServer::testCertificate(); -
trunk/Tools/TestWebKitAPI/cocoa/HTTPServer.h
r266150 r270669 166 166 } // namespace TestWebKitAPI 167 167 168 RetainPtr<SecCertificateRef> testCertificate(); 168 169 RetainPtr<SecIdentityRef> testIdentity(); 169 170 RetainPtr<SecIdentityRef> testIdentity2();
Note:
See TracChangeset
for help on using the changeset viewer.