Changeset 240446 in webkit
- Timestamp:
- Jan 24, 2019 1:09:37 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r240444 r240446 1 2019-01-24 Brent Fulgham <bfulgham@apple.com> 2 3 Activate the WebResourceLoadStatisticsStore in the NetworkProcess and deactivate it in the UIProcess. 4 https://bugs.webkit.org/show_bug.cgi?id=193297 5 <rdar://problem/47158841> 6 7 Reviewed by Alex Christensen. 8 9 Trigger logging to the UIProcess when the ResourceLoadObserver is used in the NetworkProcess. 10 11 * Modules/websockets/WebSocket.cpp: 12 (WebCore::WebSocket::connect): Notify NetworkProcess a connection was made to a resource. 13 * loader/ResourceLoadObserver.cpp: 14 (WebCore::ResourceLoadObserver::setLogWebSocketLoadingNotificationCallback): Added. 15 (WebCore::ResourceLoadObserver::setLogSubresourceLoadingNotificationCallback): Added. 16 (WebCore::ResourceLoadObserver::setLogSubresourceRedirectNotificationCallback): Added. 17 (WebCore::ResourceLoadObserver::logSubresourceLoading): Notify NetworkProcess of the load. 18 (WebCore::ResourceLoadObserver::logWebSocketLoading): Ditto. 19 (WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution): Ditto. 20 1 21 2019-01-24 John Wilander <wilander@apple.com> 2 22 -
trunk/Source/WebCore/Modules/websockets/WebSocket.cpp
r240237 r240446 280 280 } 281 281 282 RunLoop::main().dispatch([targetURL = m_url.isolatedCopy(), mainFrameURL = context.url().isolatedCopy(), usesEphemeralSession = context.sessionID().isEphemeral()]() {283 ResourceLoadObserver::shared().logWebSocketLoading(targetURL, mainFrameURL, usesEphemeralSession);282 RunLoop::main().dispatch([targetURL = m_url.isolatedCopy(), mainFrameURL = context.url().isolatedCopy(), sessionID = context.sessionID()]() { 283 ResourceLoadObserver::shared().logWebSocketLoading(targetURL, mainFrameURL, sessionID); 284 284 }); 285 285 -
trunk/Source/WebCore/loader/ResourceLoadObserver.cpp
r240243 r240446 1 1 /* 2 * Copyright (C) 2016-201 8Apple Inc. All rights reserved.2 * Copyright (C) 2016-2019 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 76 76 } 77 77 78 void ResourceLoadObserver::setLogWebSocketLoadingNotificationCallback(WTF::Function<void(PAL::SessionID, const String&, const String&, WallTime)>&& callback) 79 { 80 ASSERT(!m_logWebSocketLoadingNotificationCallback); 81 m_logWebSocketLoadingNotificationCallback = WTFMove(callback); 82 } 83 84 void ResourceLoadObserver::setLogSubresourceLoadingNotificationCallback(WTF::Function<void(PAL::SessionID, const String&, const String&, WallTime)>&& callback) 85 { 86 ASSERT(!m_logSubresourceLoadingNotificationCallback); 87 m_logSubresourceLoadingNotificationCallback = WTFMove(callback); 88 } 89 90 void ResourceLoadObserver::setLogSubresourceRedirectNotificationCallback(WTF::Function<void(PAL::SessionID, const String&, const String&)>&& callback) 91 { 92 ASSERT(!m_logSubresourceRedirectNotificationCallback); 93 m_logSubresourceRedirectNotificationCallback = WTFMove(callback); 94 } 95 78 96 ResourceLoadObserver::ResourceLoadObserver() 79 97 : m_notificationTimer(*this, &ResourceLoadObserver::notifyObserver) … … 123 141 { 124 142 auto& targetStatistics = ensureResourceStatisticsForPrimaryDomain(targetPrimaryDomain); 125 targetStatistics.lastSeen = ResourceLoadStatistics::reduceTimeResolution(WallTime::now()); 143 auto lastSeen = ResourceLoadStatistics::reduceTimeResolution(WallTime::now()); 144 targetStatistics.lastSeen = lastSeen; 126 145 if (targetStatistics.subresourceUnderTopFrameOrigins.add(mainFramePrimaryDomain).isNewEntry) 127 146 shouldCallNotificationCallback = true; 147 148 m_logSubresourceLoadingNotificationCallback(page->sessionID(), targetPrimaryDomain, mainFramePrimaryDomain, lastSeen); 128 149 } 129 150 … … 136 157 if (isNewRedirectToEntry || isNewRedirectFromEntry) 137 158 shouldCallNotificationCallback = true; 159 160 m_logSubresourceRedirectNotificationCallback(page->sessionID(), sourcePrimaryDomain, targetPrimaryDomain); 138 161 } 139 162 … … 142 165 } 143 166 144 void ResourceLoadObserver::logWebSocketLoading(const URL& targetURL, const URL& mainFrameURL, bool usesEphemeralSession)145 { 146 if (!shouldLog( usesEphemeralSession))167 void ResourceLoadObserver::logWebSocketLoading(const URL& targetURL, const URL& mainFrameURL, PAL::SessionID sessionID) 168 { 169 if (!shouldLog(sessionID.isEphemeral())) 147 170 return; 148 171 … … 159 182 return; 160 183 184 auto lastSeen = ResourceLoadStatistics::reduceTimeResolution(WallTime::now()); 185 161 186 auto& targetStatistics = ensureResourceStatisticsForPrimaryDomain(targetPrimaryDomain); 162 targetStatistics.lastSeen = ResourceLoadStatistics::reduceTimeResolution(WallTime::now());187 targetStatistics.lastSeen = lastSeen; 163 188 if (targetStatistics.subresourceUnderTopFrameOrigins.add(mainFramePrimaryDomain).isNewEntry) 164 189 scheduleNotificationIfNeeded(); 190 191 m_logWebSocketLoadingNotificationCallback(sessionID, targetPrimaryDomain, mainFramePrimaryDomain, lastSeen); 165 192 } 166 193 … … 198 225 } 199 226 200 // FIXME(193297): Uncomment this line when ResourceLoadStatistics are no longer gathered in the UI Process. 201 // m_logUserInteractionNotificationCallback(document.sessionID(), domain); 227 m_logUserInteractionNotificationCallback(document.sessionID(), domain); 202 228 #endif 203 229 -
trunk/Source/WebCore/loader/ResourceLoadObserver.h
r240243 r240446 1 1 /* 2 * Copyright (C) 2016-201 7Apple Inc. All rights reserved.2 * Copyright (C) 2016-2019 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 61 61 62 62 void logSubresourceLoading(const Frame*, const ResourceRequest& newRequest, const ResourceResponse& redirectResponse); 63 void logWebSocketLoading(const URL& targetURL, const URL& mainFrameURL, bool usesEphemeralSession);63 void logWebSocketLoading(const URL& targetURL, const URL& mainFrameURL, PAL::SessionID); 64 64 void logUserInteractionWithReducedTimeResolution(const Document&); 65 65 … … 75 75 WEBCORE_EXPORT void setRequestStorageAccessUnderOpenerCallback(WTF::Function<void(const String&, uint64_t, const String&)>&&); 76 76 WEBCORE_EXPORT void setLogUserInteractionNotificationCallback(WTF::Function<void(PAL::SessionID, const String&)>&&); 77 WEBCORE_EXPORT void setLogWebSocketLoadingNotificationCallback(WTF::Function<void(PAL::SessionID, const String&, const String&, WallTime)>&&); 78 WEBCORE_EXPORT void setLogSubresourceLoadingNotificationCallback(WTF::Function<void(PAL::SessionID, const String&, const String&, WallTime)>&&); 79 WEBCORE_EXPORT void setLogSubresourceRedirectNotificationCallback(WTF::Function<void(PAL::SessionID, const String&, const String&)>&&); 77 80 78 81 WEBCORE_EXPORT void notifyObserver(); … … 99 102 HashMap<String, ResourceLoadStatistics> m_resourceStatisticsMap; 100 103 HashMap<String, WTF::WallTime> m_lastReportedUserInteractionMap; 101 WTF::Function<void (Vector<ResourceLoadStatistics>&&)> m_notificationCallback; 102 WTF::Function<void(const String&, uint64_t, const String&)> m_requestStorageAccessUnderOpenerCallback; 103 WTF::Function<void(PAL::SessionID, const String&)> m_logUserInteractionNotificationCallback; 104 Function<void(Vector<ResourceLoadStatistics>&&)> m_notificationCallback; 105 Function<void(const String&, uint64_t, const String&)> m_requestStorageAccessUnderOpenerCallback; 106 Function<void(PAL::SessionID, const String&)> m_logUserInteractionNotificationCallback; 107 Function<void(PAL::SessionID, const String&, const String&, WallTime)> m_logWebSocketLoadingNotificationCallback; 108 Function<void(PAL::SessionID, const String&, const String&, WallTime)> m_logSubresourceLoadingNotificationCallback; 109 Function<void(PAL::SessionID, const String&, const String&)> m_logSubresourceRedirectNotificationCallback; 110 104 111 Timer m_notificationTimer; 105 112 #if ENABLE(RESOURCE_LOAD_STATISTICS) && !RELEASE_LOG_DISABLED -
trunk/Source/WebKit/ChangeLog
r240444 r240446 1 2019-01-24 Brent Fulgham <bfulgham@apple.com> 2 3 Activate the WebResourceLoadStatisticsStore in the NetworkProcess and deactivate it in the UIProcess. 4 https://bugs.webkit.org/show_bug.cgi?id=193297 5 <rdar://problem/47158841> 6 7 Reviewed by Alex Christensen. 8 9 This patch activates the ResourceLoadStatistics code in the NetworkProcess, and turns 10 it off in the UIProcess. It also updates test infrastructure to work with this change 11 in architecture. 12 13 * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: 14 (WebKit::ResourceLoadStatisticsMemoryStore::logSubresourceLoading): Added. 15 (WebKit::ResourceLoadStatisticsMemoryStore::logSubresourceRedirect): Added. 16 (WebKit::ResourceLoadStatisticsMemoryStore::logWebSocketLoading): Added. 17 * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: 18 (WebKit::WebResourceLoadStatisticsStore::logSubresourceLoading): Added. 19 (WebKit::WebResourceLoadStatisticsStore::logSubresourceRedirect): Added. 20 (WebKit::WebResourceLoadStatisticsStore::logWebSocketLoading): Added. 21 (WebKit::WebResourceLoadStatisticsStore::removeAllStorageAccess): 22 (WebKit::WebResourceLoadStatisticsStore::setCacheMaxAgeCap): 23 (WebKit::WebResourceLoadStatisticsStore::setCacheMaxAgeCapForPrevalentResources): Deleted. 24 * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: 25 * NetworkProcess/NetworkConnectionToWebProcess.cpp: 26 (WebKit::NetworkConnectionToWebProcess::logSubresourceLoading): Added. 27 (WebKit::NetworkConnectionToWebProcess::logSubresourceRedirect): Added. 28 (WebKit::NetworkConnectionToWebProcess::logWebSocketLoading): Added. 29 * NetworkProcess/NetworkConnectionToWebProcess.messages.in: 30 * NetworkProcess/NetworkSession.cpp: 31 (WebKit::NetworkSession::setResourceLoadStatisticsEnabled): 32 * UIProcess/WebProcessPool.cpp: 33 (WebKit::WebProcessPool::ensureNetworkProcess): 34 * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: 35 (WebKit::WebsiteDataStore::parameters): 36 * UIProcess/WebsiteData/WebsiteDataStore.cpp: 37 (WebKit::WebsiteDataStore::removeData): 38 (WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled): 39 (WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback): 40 * Webprocess/WebProcess.cpp: 41 (WebKit::WebProcess::initializeWebProcess): Register new ResourceLoadObserver callbacks. 42 1 43 2019-01-24 John Wilander <wilander@apple.com> 2 44 -
trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp
r240360 r240446 639 639 } 640 640 641 void ResourceLoadStatisticsMemoryStore::logWebSocketLoading(const String& targetPrimaryDomain, const String& mainFramePrimaryDomain, WallTime lastSeen) 642 { 643 auto& targetStatistics = ensureResourceStatisticsForPrimaryDomain(targetPrimaryDomain); 644 targetStatistics.lastSeen = lastSeen; 645 if (targetStatistics.subresourceUnderTopFrameOrigins.add(mainFramePrimaryDomain).isNewEntry) 646 scheduleStatisticsProcessingRequestIfNecessary(); 647 } 648 649 void ResourceLoadStatisticsMemoryStore::logSubresourceLoading(const String& targetPrimaryDomain, const String& mainFramePrimaryDomain, WallTime lastSeen) 650 { 651 auto& targetStatistics = ensureResourceStatisticsForPrimaryDomain(targetPrimaryDomain); 652 targetStatistics.lastSeen = lastSeen; 653 if (targetStatistics.subresourceUnderTopFrameOrigins.add(mainFramePrimaryDomain).isNewEntry) 654 scheduleStatisticsProcessingRequestIfNecessary(); 655 } 656 657 void ResourceLoadStatisticsMemoryStore::logSubresourceRedirect(const String& sourcePrimaryDomain, const String& targetPrimaryDomain) 658 { 659 auto& redirectingOriginStatistics = ensureResourceStatisticsForPrimaryDomain(sourcePrimaryDomain); 660 bool isNewRedirectToEntry = redirectingOriginStatistics.subresourceUniqueRedirectsTo.add(targetPrimaryDomain).isNewEntry; 661 auto& targetStatistics = ensureResourceStatisticsForPrimaryDomain(targetPrimaryDomain); 662 bool isNewRedirectFromEntry = targetStatistics.subresourceUniqueRedirectsFrom.add(sourcePrimaryDomain).isNewEntry; 663 664 if (isNewRedirectToEntry || isNewRedirectFromEntry) 665 scheduleStatisticsProcessingRequestIfNecessary(); 666 } 667 641 668 void ResourceLoadStatisticsMemoryStore::logUserInteraction(const String& primaryDomain) 642 669 { -
trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h
r240243 r240446 125 125 void logFrameNavigation(const String& targetPrimaryDomain, const String& mainFramePrimaryDomain, const String& sourcePrimaryDomain, const String& targetHost, const String& mainFrameHost, bool isRedirect, bool isMainFrame); 126 126 void logUserInteraction(const String& primaryDomain); 127 void logWebSocketLoading(const String& targetPrimaryDomain, const String& mainFramePrimaryDomain, WallTime lastSeen); 128 void logSubresourceLoading(const String& targetPrimaryDomain, const String& mainFramePrimaryDomain, WallTime lastSeen); 129 void logSubresourceRedirect(const String& sourcePrimaryDomain, const String& targetPrimaryDomain); 127 130 128 131 void clearUserInteraction(const String& primaryDomain); -
trunk/Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp
r240360 r240446 418 418 } 419 419 420 void WebResourceLoadStatisticsStore::removeAllStorageAccess() 421 { 420 void WebResourceLoadStatisticsStore::removeAllStorageAccess(CompletionHandler<void()>&& completionHandler) 421 { 422 ASSERT(RunLoop::isMain()); 423 424 if (m_websiteDataStore) { 425 m_websiteDataStore->removeAllStorageAccessHandler(WTFMove(completionHandler)); 426 return; 427 } 428 422 429 if (m_networkSession) 423 430 m_networkSession->networkStorageSession().removeAllStorageAccess(); 424 } 425 426 void WebResourceLoadStatisticsStore::removeAllStorageAccess(CompletionHandler<void()>&& completionHandler) 427 { 428 ASSERT(RunLoop::isMain()); 429 430 if (m_websiteDataStore) { 431 m_websiteDataStore->removeAllStorageAccessHandler(WTFMove(completionHandler)); 432 return; 433 } 434 removeAllStorageAccess(); 431 435 432 completionHandler(); 436 433 } … … 502 499 if (m_memoryStore) 503 500 m_memoryStore->logFrameNavigation(targetPrimaryDomain, mainFramePrimaryDomain, sourcePrimaryDomain, targetHost, mainFrameHost, isRedirect, isMainFrame); 501 }); 502 } 503 504 void WebResourceLoadStatisticsStore::logWebSocketLoading(const String& targetPrimaryDomain, const String& mainFramePrimaryDomain, WallTime lastSeen, CompletionHandler<void()>&& completionHandler) 505 { 506 postTask([this, targetPrimaryDomain = targetPrimaryDomain.isolatedCopy(), mainFramePrimaryDomain = mainFramePrimaryDomain.isolatedCopy(), lastSeen, completionHandler = WTFMove(completionHandler)]() mutable { 507 if (m_memoryStore) 508 m_memoryStore->logWebSocketLoading(targetPrimaryDomain, mainFramePrimaryDomain, lastSeen); 509 510 postTaskReply(WTFMove(completionHandler)); 511 }); 512 } 513 514 void WebResourceLoadStatisticsStore::logSubresourceLoading(const String& targetPrimaryDomain, const String& mainFramePrimaryDomain, WallTime lastSeen, CompletionHandler<void()>&& completionHandler) 515 { 516 postTask([this, targetPrimaryDomain = targetPrimaryDomain.isolatedCopy(), mainFramePrimaryDomain = mainFramePrimaryDomain.isolatedCopy(), lastSeen, completionHandler = WTFMove(completionHandler)]() mutable { 517 if (m_memoryStore) 518 m_memoryStore->logSubresourceLoading(targetPrimaryDomain, mainFramePrimaryDomain, lastSeen); 519 520 postTaskReply(WTFMove(completionHandler)); 521 }); 522 } 523 524 void WebResourceLoadStatisticsStore::logSubresourceRedirect(const String& sourcePrimaryDomain, const String& targetPrimaryDomain, CompletionHandler<void()>&& completionHandler) 525 { 526 postTask([this, sourcePrimaryDomain = sourcePrimaryDomain.isolatedCopy(), targetPrimaryDomain = targetPrimaryDomain.isolatedCopy(), completionHandler = WTFMove(completionHandler)]() mutable { 527 if (m_memoryStore) 528 m_memoryStore->logSubresourceRedirect(sourcePrimaryDomain, targetPrimaryDomain); 529 530 postTaskReply(WTFMove(completionHandler)); 504 531 }); 505 532 } … … 1081 1108 } 1082 1109 1083 void WebResourceLoadStatisticsStore::setCacheMaxAgeCapForPrevalentResources(Seconds seconds) 1084 { 1110 void WebResourceLoadStatisticsStore::setCacheMaxAgeCap(Seconds seconds, CompletionHandler<void()>&& completionHandler) 1111 { 1112 ASSERT(RunLoop::isMain()); 1113 ASSERT(seconds >= 0_s); 1114 1115 if (m_websiteDataStore) { 1116 m_websiteDataStore->setCacheMaxAgeCapForPrevalentResources(seconds, WTFMove(completionHandler)); 1117 return; 1118 } 1119 1085 1120 if (m_networkSession) 1086 1121 m_networkSession->networkStorageSession().setCacheMaxAgeCapForPrevalentResources(seconds); 1087 } 1088 1089 void WebResourceLoadStatisticsStore::setCacheMaxAgeCap(Seconds seconds, CompletionHandler<void()>&& completionHandler) 1090 { 1091 ASSERT(RunLoop::isMain()); 1092 ASSERT(seconds >= 0_s); 1093 1094 if (m_websiteDataStore) { 1095 m_websiteDataStore->setCacheMaxAgeCapForPrevalentResources(seconds, WTFMove(completionHandler)); 1096 return; 1097 } 1098 setCacheMaxAgeCapForPrevalentResources(seconds); 1122 1099 1123 completionHandler(); 1100 1124 } -
trunk/Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h
r240360 r240446 92 92 void logUserInteraction(const URL&, CompletionHandler<void()>&&); 93 93 void logUserInteraction(const String& targetPrimaryDomain, CompletionHandler<void()>&&); 94 void logWebSocketLoading(const String& targetPrimaryDomain, const String& mainFramePrimaryDomain, WallTime lastSeen, CompletionHandler<void()>&&); 95 void logSubresourceLoading(const String& targetPrimaryDomain, const String& mainFramePrimaryDomain, WallTime lastSeen, CompletionHandler<void()>&&); 96 void logSubresourceRedirect(const String& sourcePrimaryDomain, const String& targetPrimaryDomain, CompletionHandler<void()>&&); 94 97 void clearUserInteraction(const URL&, CompletionHandler<void()>&&); 95 98 void clearUserInteraction(const String& targetPrimaryDomain, CompletionHandler<void()>&&); … … 125 128 void isGrandfathered(const URL&, CompletionHandler<void(bool)>&&); 126 129 void isGrandfathered(const String&, CompletionHandler<void(bool)>&&); 127 void removeAllStorageAccess();128 130 void removePrevalentDomains(const Vector<String>& domainsToBlock); 129 void setCacheMaxAgeCapForPrevalentResources(Seconds);130 131 void setNotifyPagesWhenDataRecordsWereScanned(bool, CompletionHandler<void()>&&); 131 132 void setSubframeUnderTopFrameOrigin(const URL& subframe, const URL& topFrame, CompletionHandler<void()>&&); -
trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
r240292 r240446 596 596 } 597 597 598 void NetworkConnectionToWebProcess::logWebSocketLoading(PAL::SessionID sessionID, const String& targetPrimaryDomain, const String& mainFramePrimaryDomain, WallTime lastSeen) 599 { 600 #if ENABLE(RESOURCE_LOAD_STATISTICS) 601 if (auto networkSession = networkProcess().networkSession(sessionID)) { 602 if (auto* resourceLoadStatistics = networkSession->resourceLoadStatistics()) 603 resourceLoadStatistics->logWebSocketLoading(targetPrimaryDomain, mainFramePrimaryDomain, lastSeen, [] { }); 604 } 605 #else 606 UNUSED_PARAM(sessionID); 607 UNUSED_PARAM(targetPrimaryDomain); 608 UNUSED_PARAM(mainFramePrimaryDomain); 609 UNUSED_PARAM(lastSeen); 610 #endif 611 } 612 613 void NetworkConnectionToWebProcess::logSubresourceLoading(PAL::SessionID sessionID, const String& targetPrimaryDomain, const String& mainFramePrimaryDomain, WallTime lastSeen) 614 { 615 #if ENABLE(RESOURCE_LOAD_STATISTICS) 616 if (auto networkSession = networkProcess().networkSession(sessionID)) { 617 if (auto* resourceLoadStatistics = networkSession->resourceLoadStatistics()) 618 resourceLoadStatistics->logSubresourceLoading(targetPrimaryDomain, mainFramePrimaryDomain, lastSeen, [] { }); 619 } 620 #else 621 UNUSED_PARAM(sessionID); 622 UNUSED_PARAM(targetPrimaryDomain); 623 UNUSED_PARAM(mainFramePrimaryDomain); 624 UNUSED_PARAM(lastSeen); 625 #endif 626 } 627 628 void NetworkConnectionToWebProcess::logSubresourceRedirect(PAL::SessionID sessionID, const String& sourcePrimaryDomain, const String& targetPrimaryDomain) 629 { 630 #if ENABLE(RESOURCE_LOAD_STATISTICS) 631 if (auto networkSession = networkProcess().networkSession(sessionID)) { 632 if (auto* resourceLoadStatistics = networkSession->resourceLoadStatistics()) 633 resourceLoadStatistics->logSubresourceRedirect(sourcePrimaryDomain, targetPrimaryDomain, [] { }); 634 } 635 #else 636 UNUSED_PARAM(sessionID); 637 UNUSED_PARAM(sourcePrimaryDomain); 638 UNUSED_PARAM(targetPrimaryDomain); 639 #endif 640 } 641 598 642 void NetworkConnectionToWebProcess::addOriginAccessWhitelistEntry(const String& sourceOrigin, const String& destinationProtocol, const String& destinationHost, bool allowDestinationSubdomains) 599 643 { -
trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h
r240243 r240446 196 196 void removeStorageAccessForAllFramesOnPage(PAL::SessionID, uint64_t pageID); 197 197 void logUserInteraction(PAL::SessionID, const String& topLevelOrigin); 198 void logWebSocketLoading(PAL::SessionID, const String& targetPrimaryDomain, const String& mainFramePrimaryDomain, WallTime lastSeen); 199 void logSubresourceLoading(PAL::SessionID, const String& targetPrimaryDomain, const String& mainFramePrimaryDomain, WallTime lastSeen); 200 void logSubresourceRedirect(PAL::SessionID, const String& sourcePrimaryDomain, const String& targetPrimaryDomain); 198 201 199 202 void addOriginAccessWhitelistEntry(const String& sourceOrigin, const String& destinationProtocol, const String& destinationHost, bool allowDestinationSubdomains); -
trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in
r240243 r240446 61 61 #if ENABLE(RESOURCE_LOAD_STATISTICS) 62 62 LogUserInteraction(PAL::SessionID sessionID, String topLevelOrigin) 63 LogWebSocketLoading(PAL::SessionID sessionID, String targetPrimaryDomain, String mainFramePrimaryDomain, WallTime lastSeen) 64 LogSubresourceLoading(PAL::SessionID sessionID, String targetPrimaryDomain, String mainFramePrimaryDomain, WallTime lastSeen) 65 LogSubresourceRedirect(PAL::SessionID sessionID, String sourcePrimaryDomain, String targetPrimaryDomain) 63 66 #endif 64 67 -
trunk/Source/WebKit/NetworkProcess/NetworkSession.cpp
r240292 r240446 93 93 return; 94 94 95 // FIXME(193728): Support ResourceLoadStatistics for ephemeral sessions, too. 96 if (m_sessionID.isEphemeral()) 97 return; 98 95 99 m_resourceLoadStatistics = WebResourceLoadStatisticsStore::create(*this, m_resourceLoadStatisticsDirectory); 96 100 } -
trunk/Source/WebKit/UIProcess/WebProcessPool.cpp
r240443 r240446 556 556 SandboxExtension::createHandleForReadWriteDirectory(parameters.defaultDataStoreParameters.networkSessionParameters.resourceLoadStatisticsDirectory, parameters.defaultDataStoreParameters.networkSessionParameters.resourceLoadStatisticsDirectoryExtensionHandle); 557 557 558 parameters.defaultDataStoreParameters.networkSessionParameters.enableResourceLoadStatistics = false; // FIXME(193297): Turn on when the feature is on. (m_configuration->resourceLoadStatisticsEnabled()?)558 parameters.defaultDataStoreParameters.networkSessionParameters.enableResourceLoadStatistics = true; // FIXME(193705): m_configuration->resourceLoadStatisticsEnabled(); 559 559 560 560 // Add any platform specific parameters -
trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm
r240437 r240446 103 103 WTFMove(resourceLoadStatisticsDirectory), 104 104 WTFMove(resourceLoadStatisticsDirectoryHandle), 105 false // FIXME(193297): Switch tom_configuration->resourceLoadStatisticsEnabled()105 true // FIXME(193705): m_configuration->resourceLoadStatisticsEnabled() 106 106 }; 107 107 -
trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
r240437 r240446 1253 1253 // If we are deleting all of the data types that the resource load statistics store monitors 1254 1254 // we do not need to re-grandfather old data. 1255 auto shouldGrandfather = ((monitoredTypesRaw & deletedTypesRaw) == monitoredTypesRaw) ? ShouldGrandfatherStatistics::No : ShouldGrandfatherStatistics::Yes; 1256 1255 1257 callbackAggregator->addPendingCallback(); 1256 if ((monitoredTypesRaw & deletedTypesRaw) == monitoredTypesRaw) 1257 m_resourceLoadStatistics->scheduleClearInMemoryAndPersistent(ShouldGrandfatherStatistics::No, [callbackAggregator] { 1258 callbackAggregator->removePendingCallback(); 1259 }); 1260 else 1261 m_resourceLoadStatistics->scheduleClearInMemoryAndPersistent(ShouldGrandfatherStatistics::Yes, [callbackAggregator] { 1262 callbackAggregator->removePendingCallback(); 1263 }); 1258 m_resourceLoadStatistics->scheduleClearInMemoryAndPersistent(shouldGrandfather, [callbackAggregator] { 1259 callbackAggregator->removePendingCallback(); 1260 }); 1264 1261 1265 1262 callbackAggregator->addPendingCallback(); … … 2326 2323 2327 2324 if (enabled) { 2328 // FIXME(193297): Remove this assert2329 ASSERT(!m_resourceLoadStatistics);2330 2325 enableResourceLoadStatisticsAndSetTestingCallback(nullptr); 2331 2326 return; 2332 2327 } 2333 2334 // FIXME(193297): Remove these two lines2335 unregisterWebResourceLoadStatisticsStoreAsMessageReceiver();2336 m_resourceLoadStatistics = nullptr;2337 2328 2338 2329 for (auto& processPool : processPools(std::numeric_limits<size_t>::max(), false)) { … … 2396 2387 setStatisticsTestingCallback(WTFMove(callback)); 2397 2388 2398 // FIXME(193297): Remove this check2399 if (m_resourceLoadStatistics)2400 return;2401 2402 2389 resolveDirectoriesIfNecessary(); 2403 2404 // FIXME(193297): Remove these two lines2405 m_resourceLoadStatistics = WebResourceLoadStatisticsStore::create(*this);2406 registerWebResourceLoadStatisticsStoreAsMessageReceiver();2407 2390 2408 2391 for (auto& processPool : processPools(std::numeric_limits<size_t>::max(), false)) { -
trunk/Source/WebKit/WebProcess/WebProcess.cpp
r240292 r240446 389 389 m_networkProcessConnection->connection().send(Messages::NetworkConnectionToWebProcess::LogUserInteraction(sessionID, topLevelOrigin), 0); 390 390 }); 391 392 ResourceLoadObserver::shared().setLogWebSocketLoadingNotificationCallback([this] (PAL::SessionID sessionID, const String& targetPrimaryDomain, const String& mainFramePrimaryDomain, WallTime lastSeen) { 393 m_networkProcessConnection->connection().send(Messages::NetworkConnectionToWebProcess::LogWebSocketLoading(sessionID, targetPrimaryDomain, mainFramePrimaryDomain, lastSeen), 0); 394 }); 395 396 ResourceLoadObserver::shared().setLogSubresourceLoadingNotificationCallback([this] (PAL::SessionID sessionID, const String& targetPrimaryDomain, const String& mainFramePrimaryDomain, WallTime lastSeen) { 397 m_networkProcessConnection->connection().send(Messages::NetworkConnectionToWebProcess::LogSubresourceLoading(sessionID, targetPrimaryDomain, mainFramePrimaryDomain, lastSeen), 0); 398 }); 399 400 ResourceLoadObserver::shared().setLogSubresourceRedirectNotificationCallback([this] (PAL::SessionID sessionID, const String& sourcePrimaryDomain, const String& targetPrimaryDomain) { 401 m_networkProcessConnection->connection().send(Messages::NetworkConnectionToWebProcess::LogSubresourceRedirect(sessionID, sourcePrimaryDomain, targetPrimaryDomain), 0); 402 }); 391 403 #endif 392 404 -
trunk/Tools/ChangeLog
r240444 r240446 1 2019-01-24 Brent Fulgham <bfulgham@apple.com> 2 3 Activate the WebResourceLoadStatisticsStore in the NetworkProcess and deactivate it in the UIProcess. 4 https://bugs.webkit.org/show_bug.cgi?id=193297 5 <rdar://problem/47158841> 6 7 Reviewed by Alex Christensen. 8 9 * WebKitTestRunner/InjectedBundle/TestRunner.cpp: 10 (WTR::TestRunner::installStatisticsDidScanDataRecordsCallback): Simplify test configuration by 11 activating the message used to trigger the callback when it is set. 12 1 13 2019-01-24 John Wilander <wilander@apple.com> 2 14 -
trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
r240156 r240446 1861 1861 { 1862 1862 cacheTestRunnerCallback(StatisticsDidScanDataRecordsCallbackID, callback); 1863 1864 bool notifyPagesWhenDataRecordsWereScanned = !!callback; 1865 1866 // Setting a callback implies we expect to receive callbacks. So register for them. 1867 WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("StatisticsNotifyPagesWhenDataRecordsWereScanned")); 1868 WKRetainPtr<WKBooleanRef> messageBody(AdoptWK, WKBooleanCreate(notifyPagesWhenDataRecordsWereScanned)); 1869 WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), messageName.get(), messageBody.get(), nullptr); 1863 1870 } 1864 1871
Note: See TracChangeset
for help on using the changeset viewer.