Changeset 242603 in webkit


Ignore:
Timestamp:
Mar 7, 2019 11:16:38 AM (5 years ago)
Author:
wilander@apple.com
Message:

Resource Load Statistics: Log first-party navigations with link decoration
https://bugs.webkit.org/show_bug.cgi?id=195301
<rdar://problem/48569971>

Reviewed by Brent Fulgham.

Source/WebCore:

Test: http/tests/resourceLoadStatistics/log-cross-site-load-with-link-decoration.html

This patch adds two new members to WebCore::ResourceLoadStatistics:

  • topFrameLinkDecorationsFrom, a set of domains
  • gotLinkDecorationFromPrevalentResource, a boolean state
  • loader/ResourceLoadStatistics.cpp:

(WebCore::ResourceLoadStatistics::encode const):
(WebCore::ResourceLoadStatistics::decode):
(WebCore::ResourceLoadStatistics::toString const):
(WebCore::ResourceLoadStatistics::merge):

  • loader/ResourceLoadStatistics.h:

Source/WebKit:

This patch adds a call to the network process' resource load statistics to
log cross-site navigations with link decoration. The logging checks if the
source of the navigation is a prevalent resource and if so, sets the
appropriate flag for the destination.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore):
(WebKit::ResourceLoadStatisticsDatabaseStore::createSchema):
(WebKit::ResourceLoadStatisticsDatabaseStore::logSubresourceRedirect):
(WebKit::ResourceLoadStatisticsDatabaseStore::logCrossSiteLoadWithLinkDecoration):

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::logCrossSiteLoadWithLinkDecoration):

  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::logCrossSiteLoadWithLinkDecoration):

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::committedCrossSiteLoadWithLinkDecoration):

This now receives a completion handler. This is in preparation for
test cases where we need to log such an event and wait for it to
finish before continuing.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::committedCrossSiteLoadWithLinkDecoration):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didCommitLoadForFrame):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::committedCrossSiteLoadWithLinkDecoration):

  • UIProcess/WebProcessPool.h:

LayoutTests:

  • http/tests/resourceLoadStatistics/log-cross-site-load-with-link-decoration-expected.txt: Added.
  • http/tests/resourceLoadStatistics/log-cross-site-load-with-link-decoration.html: Added.
Location:
trunk
Files:
2 added
20 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r242598 r242603  
     12019-03-07  John Wilander  <wilander@apple.com>
     2
     3        Resource Load Statistics: Log first-party navigations with link decoration
     4        https://bugs.webkit.org/show_bug.cgi?id=195301
     5        <rdar://problem/48569971>
     6
     7        Reviewed by Brent Fulgham.
     8
     9        * http/tests/resourceLoadStatistics/log-cross-site-load-with-link-decoration-expected.txt: Added.
     10        * http/tests/resourceLoadStatistics/log-cross-site-load-with-link-decoration.html: Added.
     11
    1122019-03-07  John Wilander  <wilander@apple.com>
    213
  • trunk/Source/WebCore/ChangeLog

    r242601 r242603  
     12019-03-07  John Wilander  <wilander@apple.com>
     2
     3        Resource Load Statistics: Log first-party navigations with link decoration
     4        https://bugs.webkit.org/show_bug.cgi?id=195301
     5        <rdar://problem/48569971>
     6
     7        Reviewed by Brent Fulgham.
     8
     9        Test: http/tests/resourceLoadStatistics/log-cross-site-load-with-link-decoration.html
     10
     11        This patch adds two new members to WebCore::ResourceLoadStatistics:
     12        - topFrameLinkDecorationsFrom, a set of domains
     13        - gotLinkDecorationFromPrevalentResource, a boolean state
     14
     15        * loader/ResourceLoadStatistics.cpp:
     16        (WebCore::ResourceLoadStatistics::encode const):
     17        (WebCore::ResourceLoadStatistics::decode):
     18        (WebCore::ResourceLoadStatistics::toString const):
     19        (WebCore::ResourceLoadStatistics::merge):
     20        * loader/ResourceLoadStatistics.h:
     21
    1222019-03-07  Simon Fraser  <simon.fraser@apple.com>
    223
  • trunk/Source/WebCore/loader/ResourceLoadStatistics.cpp

    r242155 r242603  
    9494    encodeHashSet(encoder, "topFrameUniqueRedirectsTo"_s, "domain"_s, topFrameUniqueRedirectsTo);
    9595    encodeHashSet(encoder, "topFrameUniqueRedirectsFrom"_s, "domain"_s, topFrameUniqueRedirectsFrom);
     96    encodeHashSet(encoder, "topFrameLinkDecorationsFrom"_s, "domain", topFrameLinkDecorationsFrom);
     97    encoder.encodeBool("gotLinkDecorationFromPrevalentResource"_s, gotLinkDecorationFromPrevalentResource);
    9698
    9799    // Subframe stats
     
    216218        for (auto& domain : topFrameUniqueRedirectsFromCounted.values())
    217219            topFrameUniqueRedirectsFrom.add(domain);
     220    }
     221
     222    if (modelVersion >= 16) {
     223        decodeHashSet(decoder, "topFrameLinkDecorationsFrom", "domain", topFrameLinkDecorationsFrom);
     224        if (!decoder.decodeBool("gotLinkDecorationFromPrevalentResource", gotLinkDecorationFromPrevalentResource))
     225            return false;
    218226    }
    219227
     
    423431    appendHashSet(builder, "topFrameUniqueRedirectsTo", topFrameUniqueRedirectsTo);
    424432    appendHashSet(builder, "topFrameUniqueRedirectsFrom", topFrameUniqueRedirectsFrom);
     433    appendHashSet(builder, "topFrameLinkDecorationsFrom", topFrameLinkDecorationsFrom);
     434    appendBoolean(builder, "gotLinkDecorationFromPrevalentResource", gotLinkDecorationFromPrevalentResource);
    425435
    426436    // Subframe stats
     
    497507    mergeHashSet(topFrameUniqueRedirectsTo, other.topFrameUniqueRedirectsTo);
    498508    mergeHashSet(topFrameUniqueRedirectsFrom, other.topFrameUniqueRedirectsFrom);
     509    mergeHashSet(topFrameLinkDecorationsFrom, other.topFrameLinkDecorationsFrom);
     510    gotLinkDecorationFromPrevalentResource |= other.gotLinkDecorationFromPrevalentResource;
    499511
    500512    // Subframe stats
  • trunk/Source/WebCore/loader/ResourceLoadStatistics.h

    r242155 r242603  
    7979    HashSet<RegistrableDomain> topFrameUniqueRedirectsTo;
    8080    HashSet<RegistrableDomain> topFrameUniqueRedirectsFrom;
     81    HashSet<RegistrableDomain> topFrameLinkDecorationsFrom;
     82    bool gotLinkDecorationFromPrevalentResource { false };
    8183
    8284    // Subframe stats
  • trunk/Source/WebKit/ChangeLog

    r242600 r242603  
     12019-03-07  John Wilander  <wilander@apple.com>
     2
     3        Resource Load Statistics: Log first-party navigations with link decoration
     4        https://bugs.webkit.org/show_bug.cgi?id=195301
     5        <rdar://problem/48569971>
     6
     7        Reviewed by Brent Fulgham.
     8
     9        This patch adds a call to the network process' resource load statistics to
     10        log cross-site navigations with link decoration. The logging checks if the
     11        source of the navigation is a prevalent resource and if so, sets the
     12        appropriate flag for the destination.
     13
     14        * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
     15        (WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore):
     16        (WebKit::ResourceLoadStatisticsDatabaseStore::createSchema):
     17        (WebKit::ResourceLoadStatisticsDatabaseStore::logSubresourceRedirect):
     18        (WebKit::ResourceLoadStatisticsDatabaseStore::logCrossSiteLoadWithLinkDecoration):
     19        * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
     20        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
     21        (WebKit::ResourceLoadStatisticsMemoryStore::logCrossSiteLoadWithLinkDecoration):
     22        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
     23        * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
     24        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
     25        (WebKit::WebResourceLoadStatisticsStore::logCrossSiteLoadWithLinkDecoration):
     26        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
     27        * NetworkProcess/NetworkProcess.cpp:
     28        (WebKit::NetworkProcess::committedCrossSiteLoadWithLinkDecoration):
     29            This now receives a completion handler. This is in preparation for
     30            test cases where we need to log such an event and wait for it to
     31            finish before continuing.
     32        * NetworkProcess/NetworkProcess.h:
     33        * NetworkProcess/NetworkProcess.messages.in:
     34        * UIProcess/Network/NetworkProcessProxy.cpp:
     35        (WebKit::NetworkProcessProxy::committedCrossSiteLoadWithLinkDecoration):
     36        * UIProcess/Network/NetworkProcessProxy.h:
     37        * UIProcess/WebPageProxy.cpp:
     38        (WebKit::WebPageProxy::didCommitLoadForFrame):
     39        * UIProcess/WebProcessPool.cpp:
     40        (WebKit::WebProcessPool::committedCrossSiteLoadWithLinkDecoration):
     41        * UIProcess/WebProcessPool.h:
     42
    1432019-03-07  Per Arne Vollan  <pvollan@apple.com>
    244
  • trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp

    r242409 r242603  
    7676constexpr auto topFrameUniqueRedirectsFromExistsQuery = "SELECT EXISTS (SELECT 1 FROM TopFrameUniqueRedirectsFrom WHERE targetDomainID = ? "
    7777    "AND fromDomainID = (SELECT domainID FROM ObservedDomains WHERE registrableDomain = ?))"_s;
     78constexpr auto topFrameLinkDecorationsFromQuery = "INSERT INTO TopFrameLinkDecorationsFrom (fromDomainID, toDomainID) "
     79    "SELECT ?, domainID FROM ObservedDomains WHERE registrableDomain = ?"_s;
     80constexpr auto topFrameLinkDecorationsFromExistsQuery = "SELECT EXISTS (SELECT 1 FROM TopFrameLinkDecorationsFrom WHERE fromDomainID = ? "
     81    "AND toDomainID = (SELECT domainID FROM ObservedDomains WHERE registrableDomain = ?))"_s;
    7882constexpr auto subframeUnderTopFrameDomainsQuery = "INSERT INTO SubframeUnderTopFrameDomains (subFrameDomainID, topFrameDomainID) "
    7983    "SELECT ?, domainID FROM ObservedDomains WHERE registrableDomain = ?"_s;
     
    129133    "FOREIGN KEY(targetDomainID) REFERENCES TopLevelDomains(topLevelDomainID) ON DELETE CASCADE, "
    130134    "FOREIGN KEY(fromDomainID) REFERENCES TopLevelDomains(topLevelDomainID) ON DELETE CASCADE);"_s;
    131    
     135
     136constexpr auto createTopFrameLinkDecorationsFrom = "CREATE TABLE TopFrameLinkDecorationsFrom ("
     137    "fromDomainID INTEGER NOT NULL, toDomainID INTEGER NOT NULL, "
     138    "FOREIGN KEY(fromDomainID) REFERENCES TopLevelDomains(topLevelDomainID) ON DELETE CASCADE, "
     139    "FOREIGN KEY(toDomainID) REFERENCES TopLevelDomains(topLevelDomainID) ON DELETE CASCADE);"_s;
     140
    132141constexpr auto createSubframeUnderTopFrameDomains = "CREATE TABLE SubframeUnderTopFrameDomains ("
    133142    "subFrameDomainID INTEGER NOT NULL, topFrameDomainID INTEGER NOT NULL, "
     
    162171    , m_topFrameUniqueRedirectsFrom(m_database, topFrameUniqueRedirectsFromQuery)
    163172    , m_topFrameUniqueRedirectsFromExists(m_database, topFrameUniqueRedirectsFromExistsQuery)
     173    , m_topFrameLinkDecorationsFrom(m_database, topFrameLinkDecorationsFromQuery)
     174    , m_topFrameLinkDecorationsFromExists(m_database, topFrameLinkDecorationsFromExistsQuery)
    164175    , m_subframeUnderTopFrameDomains(m_database, subframeUnderTopFrameDomainsQuery)
    165176    , m_subframeUnderTopFrameDomainExists(m_database, subframeUnderTopFrameDomainExistsQuery)
     
    260271    }
    261272
     273    if (!m_database.executeCommand(createTopFrameLinkDecorationsFrom)) {
     274        LOG_ERROR("Could not create TopFrameLinkDecorationsFrom table in database (%i) - %s", m_database.lastError(), m_database.lastErrorMsg());
     275        return false;
     276    }
     277   
    262278    if (!m_database.executeCommand(createSubframeUnderTopFrameDomains)) {
    263279        LOG_ERROR("Could not create SubframeUnderTopFrameDomains table in database (%i) - %s", m_database.lastError(), m_database.lastErrorMsg());
     
    967983}
    968984
     985void ResourceLoadStatisticsDatabaseStore::logCrossSiteLoadWithLinkDecoration(const NavigatedFromDomain& fromDomain, const NavigatedToDomain& toDomain)
     986{
     987    ASSERT(!RunLoop::isMain());
     988    ASSERT(fromDomain != toDomain);
     989
     990    auto fromDomainResult = ensureResourceStatisticsForRegistrableDomain(fromDomain);
     991
     992    if (!relationshipExists(m_topFrameLinkDecorationsFromExists, fromDomainResult.second, toDomain)) {
     993        insertDomainRelationship(m_topFrameLinkDecorationsFrom, fromDomainResult.second, toDomain);
     994        scheduleStatisticsProcessingRequestIfNecessary();
     995    }
     996}
     997
    969998void ResourceLoadStatisticsDatabaseStore::setUserInteraction(const RegistrableDomain& domain, bool hadUserInteraction, WallTime mostRecentInteraction)
    970999{
  • trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h

    r242406 r242603  
    9999    void logSubresourceLoading(const SubResourceDomain&, const TopFrameDomain&, WallTime lastSeen) override;
    100100    void logSubresourceRedirect(const RedirectedFromDomain&, const RedirectedToDomain&) override;
     101    void logCrossSiteLoadWithLinkDecoration(const NavigatedFromDomain&, const NavigatedToDomain&) override;
    101102
    102103    void clearUserInteraction(const RegistrableDomain&) override;
     
    175176    WebCore::SQLiteStatement m_topFrameUniqueRedirectsFrom;
    176177    mutable WebCore::SQLiteStatement m_topFrameUniqueRedirectsFromExists;
     178    WebCore::SQLiteStatement m_topFrameLinkDecorationsFrom;
     179    mutable WebCore::SQLiteStatement m_topFrameLinkDecorationsFromExists;
    177180    WebCore::SQLiteStatement m_subframeUnderTopFrameDomains;
    178181    mutable WebCore::SQLiteStatement m_subframeUnderTopFrameDomainExists;
  • trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp

    r242406 r242603  
    4949using namespace WebCore;
    5050
    51 constexpr unsigned statisticsModelVersion { 15 };
     51constexpr unsigned statisticsModelVersion { 16 };
    5252
    5353struct StatisticsLastSeen {
     
    425425}
    426426
     427void ResourceLoadStatisticsMemoryStore::logCrossSiteLoadWithLinkDecoration(const NavigatedFromDomain& fromDomain, const NavigatedToDomain& toDomain)
     428{
     429    ASSERT(!RunLoop::isMain());
     430    ASSERT(fromDomain != toDomain);
     431
     432    auto& toStatistics = ensureResourceStatisticsForRegistrableDomain(toDomain);
     433    toStatistics.topFrameLinkDecorationsFrom.add(fromDomain);
     434   
     435    auto& fromStatistics = ensureResourceStatisticsForRegistrableDomain(fromDomain);
     436    if (fromStatistics.isPrevalentResource)
     437        toStatistics.gotLinkDecorationFromPrevalentResource = true;
     438}
     439
    427440void ResourceLoadStatisticsMemoryStore::clearUserInteraction(const RegistrableDomain& domain)
    428441{
  • trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h

    r242406 r242603  
    104104    void logSubresourceLoading(const SubResourceDomain&, const TopFrameDomain&, WallTime lastSeen) override;
    105105    void logSubresourceRedirect(const RedirectedFromDomain&, const RedirectedToDomain&) override;
     106    void logCrossSiteLoadWithLinkDecoration(const NavigatedFromDomain&, const NavigatedToDomain&) override;
    106107
    107108    void clearUserInteraction(const RegistrableDomain&) override;
  • trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h

    r242406 r242603  
    164164    virtual void logSubresourceLoading(const SubResourceDomain&, const TopFrameDomain&, WallTime lastSeen) = 0;
    165165    virtual void logSubresourceRedirect(const RedirectedFromDomain&, const RedirectedToDomain&) = 0;
     166    virtual void logCrossSiteLoadWithLinkDecoration(const NavigatedFromDomain&, const NavigatedToDomain&) = 0;
    166167
    167168    virtual void clearUserInteraction(const RegistrableDomain&) = 0;
  • trunk/Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp

    r242598 r242603  
    544544}
    545545
     546void WebResourceLoadStatisticsStore::logCrossSiteLoadWithLinkDecoration(const RegistrableDomain& fromDomain, const RegistrableDomain& toDomain, CompletionHandler<void()>&& completionHandler)
     547{
     548    ASSERT(RunLoop::isMain());
     549    ASSERT(fromDomain != toDomain);
     550   
     551    postTask([this, fromDomain = fromDomain.isolatedCopy(), toDomain = toDomain.isolatedCopy(), completionHandler = WTFMove(completionHandler)]() mutable {
     552        if (m_statisticsStore)
     553            m_statisticsStore->logCrossSiteLoadWithLinkDecoration(fromDomain, toDomain);
     554        postTaskReply(WTFMove(completionHandler));
     555    });
     556}
     557
    546558void WebResourceLoadStatisticsStore::clearUserInteraction(const RegistrableDomain& domain, CompletionHandler<void()>&& completionHandler)
    547559{
  • trunk/Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h

    r242598 r242603  
    104104    void logSubresourceLoading(const SubResourceDomain&, const TopFrameDomain&, WallTime lastSeen, CompletionHandler<void()>&&);
    105105    void logSubresourceRedirect(const RedirectedFromDomain&, const RedirectedToDomain&, CompletionHandler<void()>&&);
     106    void logCrossSiteLoadWithLinkDecoration(const NavigatedFromDomain&, const NavigatedToDomain&, CompletionHandler<void()>&&);
    106107    void clearUserInteraction(const TopFrameDomain&, CompletionHandler<void()>&&);
    107108    void deleteWebsiteDataForRegistrableDomainsInAllPersistentDataStores(OptionSet<WebsiteDataType>, Vector<RegistrableDomain>&&, bool shouldNotifyPage, WebCore::IncludeHttpOnlyCookies, CompletionHandler<void(const HashSet<RegistrableDomain>&)>&&);
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp

    r242599 r242603  
    11881188}
    11891189
    1190 void NetworkProcess::committedCrossSiteLoadWithLinkDecoration(PAL::SessionID sessionID, const RegistrableDomain& fromDomain, const RegistrableDomain& toDomain, uint64_t pageID)
     1190void NetworkProcess::committedCrossSiteLoadWithLinkDecoration(PAL::SessionID sessionID, const RegistrableDomain& fromDomain, const RegistrableDomain& toDomain, uint64_t pageID, CompletionHandler<void()>&& completionHandler)
    11911191{
    11921192    if (auto* networkStorageSession = storageSession(sessionID))
     
    11941194    else
    11951195        ASSERT_NOT_REACHED();
     1196   
     1197    if (auto* networkSession = this->networkSession(sessionID)) {
     1198        if (auto* resourceLoadStatistics = networkSession->resourceLoadStatistics())
     1199            resourceLoadStatistics->logCrossSiteLoadWithLinkDecoration(fromDomain, toDomain, WTFMove(completionHandler));
     1200        else
     1201            completionHandler();
     1202    } else {
     1203        ASSERT_NOT_REACHED();
     1204        completionHandler();
     1205    }
    11961206}
    11971207
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.h

    r242599 r242603  
    257257    void setTopFrameUniqueRedirectFrom(PAL::SessionID, const TopFrameDomain&, const RedirectedFromDomain&, CompletionHandler<void()>&&);
    258258    void registrableDomainsWithWebsiteData(PAL::SessionID, OptionSet<WebsiteDataType>, bool shouldNotifyPage, CompletionHandler<void(HashSet<RegistrableDomain>&&)>&&);
    259     void committedCrossSiteLoadWithLinkDecoration(PAL::SessionID, const RegistrableDomain& fromDomain, const RegistrableDomain& toDomain, uint64_t pageID);
     259    void committedCrossSiteLoadWithLinkDecoration(PAL::SessionID, const RegistrableDomain& fromDomain, const RegistrableDomain& toDomain, uint64_t pageID, CompletionHandler<void()>&&);
    260260    void resetCrossSiteLoadsWithLinkDecorationForTesting(PAL::SessionID, CompletionHandler<void()>&&);
    261261#endif
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in

    r242598 r242603  
    133133    SetTopFrameUniqueRedirectFrom(PAL::SessionID sessionID, WebCore::RegistrableDomain topFrameDomain, WebCore::RegistrableDomain redirectedFromDomain) -> () Async
    134134    ResetCacheMaxAgeCapForPrevalentResources(PAL::SessionID sessionID) -> () Async
    135     CommittedCrossSiteLoadWithLinkDecoration(PAL::SessionID sessionID, WebCore::RegistrableDomain fromDomain, WebCore::RegistrableDomain toDomain, uint64_t pageID)
     135    CommittedCrossSiteLoadWithLinkDecoration(PAL::SessionID sessionID, WebCore::RegistrableDomain fromDomain, WebCore::RegistrableDomain toDomain, uint64_t pageID) -> () Async
    136136    ResetCrossSiteLoadsWithLinkDecorationForTesting(PAL::SessionID sessionID) -> () Async
    137137    DeleteCookiesForTesting(PAL::SessionID sessionID, WebCore::RegistrableDomain domain, bool includeHttpOnlyCookies) -> () Async
  • trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp

    r242598 r242603  
    933933}
    934934
     935void NetworkProcessProxy::committedCrossSiteLoadWithLinkDecoration(PAL::SessionID sessionID, const RegistrableDomain& fromDomain, const RegistrableDomain& toDomain, uint64_t pageID, CompletionHandler<void()>&& completionHandler)
     936{
     937    if (!canSendMessage()) {
     938        completionHandler();
     939        return;
     940    }
     941   
     942    sendWithAsyncReply(Messages::NetworkProcess::CommittedCrossSiteLoadWithLinkDecoration(sessionID, fromDomain, toDomain, pageID), WTFMove(completionHandler));
     943}
     944
    935945void NetworkProcessProxy::resetCrossSiteLoadsWithLinkDecorationForTesting(PAL::SessionID sessionID, CompletionHandler<void()>&& completionHandler)
    936946{
  • trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h

    r242598 r242603  
    145145    void setShouldClassifyResourcesBeforeDataRecordsRemoval(PAL::SessionID, bool, CompletionHandler<void()>&&);
    146146    void resetCacheMaxAgeCapForPrevalentResources(PAL::SessionID, CompletionHandler<void()>&&);
     147    void committedCrossSiteLoadWithLinkDecoration(PAL::SessionID, const NavigatedFromDomain&, const NavigatedToDomain&, PageID, CompletionHandler<void()>&&);
    147148    void resetCrossSiteLoadsWithLinkDecorationForTesting(PAL::SessionID, CompletionHandler<void()>&&);
    148149    void deleteCookiesForTesting(PAL::SessionID, const RegistrableDomain&, bool includeHttpOnlyCookies, CompletionHandler<void()>&&);
  • trunk/Source/WebKit/UIProcess/WebPageProxy.cpp

    r242521 r242603  
    40844084            URL requesterURL { URL(), requesterOrigin.toString() };
    40854085            if (!currentDomain.matches(requesterURL))
    4086                 m_process->processPool().sendToNetworkingProcess(Messages::NetworkProcess::CommittedCrossSiteLoadWithLinkDecoration(m_websiteDataStore->sessionID(), RegistrableDomain { requesterURL }, currentDomain, m_pageID));
     4086                m_process->processPool().committedCrossSiteLoadWithLinkDecoration(m_websiteDataStore->sessionID(), RegistrableDomain { requesterURL }, currentDomain, m_pageID);
    40874087        }
    40884088#endif
  • trunk/Source/WebKit/UIProcess/WebProcessPool.cpp

    r242496 r242603  
    24732473    m_networkProcess->clearAdClickAttribution(sessionID, WTFMove(completionHandler));
    24742474}
     2475   
     2476void WebProcessPool::committedCrossSiteLoadWithLinkDecoration(PAL::SessionID sessionID, const RegistrableDomain& fromDomain, const RegistrableDomain& toDomain, uint64_t pageID)
     2477{
     2478#if ENABLE(RESOURCE_LOAD_STATISTICS)
     2479    if (!m_networkProcess)
     2480        return;
     2481
     2482    m_networkProcess->committedCrossSiteLoadWithLinkDecoration(sessionID, fromDomain, toDomain, pageID, [] { });
     2483#else
     2484    UNUSED_PARAM(sessionID);
     2485    UNUSED_PARAM(fromDomain);
     2486    UNUSED_PARAM(toDomain);
     2487    UNUSED_PARAM(pageID);
     2488#endif
     2489}
    24752490
    24762491} // namespace WebKit
  • trunk/Source/WebKit/UIProcess/WebProcessPool.h

    r242496 r242603  
    4545#include "WebContextConnectionClient.h"
    4646#include "WebProcessProxy.h"
     47#include <WebCore/RegistrableDomain.h>
    4748#include <WebCore/SecurityOriginHash.h>
    4849#include <WebCore/SharedStringHash.h>
     
    487488    void dumpAdClickAttribution(PAL::SessionID, CompletionHandler<void(const String&)>&&);
    488489    void clearAdClickAttribution(PAL::SessionID, CompletionHandler<void()>&&);
     490    void committedCrossSiteLoadWithLinkDecoration(PAL::SessionID, const WebCore::RegistrableDomain& fromDomain, const WebCore::RegistrableDomain& toDomain, uint64_t pageID);
    489491
    490492#if PLATFORM(GTK) || PLATFORM(WPE)
Note: See TracChangeset for help on using the changeset viewer.